Age | Commit message (Collapse) | Author | Lines |
|
Check for __KERNEL__ instead of __linux__ and use the standard int
types instead of the linux specific ones.
|
|
FUSE_CFLAGS defines -D_FILE_OFFSET_BITS=64. There are three problems
with this:
(1) A larger program using libfuse might have modules compiled with
and without FUSE_CFLAGS, which, if LFS is not enabled and the platform
is 32 bit, would result in a fatal mix of 32 and 64 bit off_t. (This
would, of course, be a bug, but I think there is a better way to
detect this -- see below)
(2) Programs may need to be adjusted to support LFS. It's the
intention of the LFS standard that the _programmer_ enables LFS once
the program has been checked/adjusted.
(3) _FILE_OFFSET_BITS does not need to be defined at all on 64 bit
Linux. 64 bit off_t is the default there.
So I think it's better not to force -D_FILE_OFFSET_BITS=64, and
because of (3) I also think you shouldn't test for it.
However off_t must still be 64 bits, so how to enforce that? C1X will
define static assertions[1], and these can be used to check the size
of off_t.
Not all compilers support static assertions yet, although several do.
Therefore I have surrounded the static assertion with a conservative
check that the compiler is GCC >= 4.6. In the long run, this test can
be removed and you can just use 'static_assert'.
|
|
Change the type of fuse_ino_t from 'unsigned long' to 'uint64_t'. This only
changes the size on 32bit architectures.
|
|
when storing a newly allocated string for format "%s", free the previous value
stored at that location.
Reported by Marco Schuster
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This switches the -o no_readdirplus option to a tristate
string: -o readdirplus=(yes|no|auto)
Telling the kernel to always use readdirplus is beneficial to
filesystems (e.g. GlusterFS) where the cost to perform readdir
and readdirplus are identical.
The default remains "auto" (if supported).
|
|
Make requested poll events available to the filesystem. If the requested
eventsare not available, then this field is zero.
|
|
This patch implements readdirplus support in FUSE usersapce. It adds
a new fuse lowlevel operations fuse_lowleve_ops::readdir_plus,
corespoding mount options and helper functions to maintain buffer.
[From: Eric Wong <normalperson@yhbt.net>]
This makes our terminology consistent with NFS and
our kernel module, as well as reducing user/developer
confusion in the command-line.
Note: I'm keeping "fuse_add_direntry_plus" since that is
less standardized in its use than "readdirplus" for now.
Signed-off-by: Feng Shuo <steve.shuo.feng@gmail.com>
|
|
Use <linux/types.h> for linux and define types used for other operating systems
using <stdint.h> types.
|
|
Several caching logic changes have been made on the kernel side
to better support network-based fuse filesystems. These include
kernel side mtime checking and read path cache revalidation. The
new caching logic is enabled through the FUSE_AUTO_INVAL_DATA
init flag. Export this to the user via the '[no_]auto_inval_data'
mount option.
Signed-off-by: Feng Shuo <steve.shuo.feng@gmail.com>
|
|
Add missing flags that userspace derived from the protocol version number. This
makes the protocol more flexible.
|
|
|
|
This means that now NULL is a valid path for operations that take a file
descriptor if the file was unlinked and hard_remove option is specified.
|
|
|
|
|
|
Change the version numbers.
This is going to be a new major version of the library breaking backward
compatibility on the binary level as well as the source level.
|
|
fallocate filesystem operation preallocates media space for the given file.
If fallocate returns success then any subsequent write to the given range
never fails with 'not enough space' error.
|
|
Use the ISO C standard compliant form instead of the gcc extension in the
interface definition.
|
|
If the filesystem sets this flag then ->utimens() will receive UTIME_OMIT and
UTIME_NOW values as specified in utimensat(2).
|
|
This partially reverts commit 4b2157c44e6ad7e692fcffb7450143e83151d36b.
Remove mmap/munmap suppor as this missed the interface changes for Linux-3.3
(API version 7.18).
Only revert the mmap/munmap bits and leave the retrieve_reply API fix in place
as well as the optimization in fuse_send_data_iov_fallback().
|
|
Update documentation for forget and related methods
|
|
libfuse part to allow a FUSE file-system to tell the kernel when a
file or directory is deleted. If the specified dentry has the
specified inode number, the kernel will unhash it.
Signed-off-by: John Muir <john@jmuir.com>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
|
|
Currently this is only useful for CUSE. Also update retrieve_reply()
method.
|
|
Reported by Antonio SJ Musumeci
|
|
Low level API: lock argument of fuse_reply_lock should have a
'const' qualifier.
Reported by Shachar Sharon
|
|
This fixes problems with emulating flock() with POSIX locking.
Reported by Sebastian Pipping.
As with lock/setlk/getlk most filesystems don't need to implement
this, as the kernel takes care of file locking. The only reason to
implement locking operations is for network filesystems which want
file locking to work between clients.
|
|
This works similar to "noforget" except that eventually the node will
be allowed to expire from the cache.
|
|
modified: include/fuse.h
|
|
...with the help of vim :set spell
modified: FAQ
modified: include/fuse.h
modified: include/fuse_common.h
modified: include/fuse_opt.h
modified: lib/fuse_kern_chan.c
modified: util/fusermount.c
|
|
Fix the ambiguity of ioctl ABI on the kernel/userspace boundary
for 32bit vs. 64bit userspace
|
|
Add ->forget_multi() operation to the lowlevel API. The filesystem
may implement this to process multiple forget requests in one call
|
|
This allows forget requests to be processed faster and doesn't require
a modification to fuse filesystems. Reported by Terje Malmedal
|
|
|
|
Reported-by: Goswin von Brederlow <goswin-v-b@web.de>
|
|
Add a new read_buf() method to the highlevel API. This allows
returning a generic buffer from the read method, which in turn allows
zero copy reads.
|
|
Add new write_buf() method to the highlevel API. Similarly to the
lowlevel write_buf() method, this allows implementing zero copy
writes.
|
|
Store the first fuse_buf inside fuse_bufvec. This makes
initialization of fuse_bufvec simpler for the common case of a single
fuse_buf. If multiple fuse_buf's are needed then fuse_bufvec needs to
be dynamically allocated.
|
|
|