linux/fs/fuse
Anand V. Avati 0b05b18381 fuse: implement NFS-like readdirplus support
This patch implements readdirplus support in FUSE, similar to NFS.
The payload returned in the readdirplus call contains
'fuse_entry_out' structure thereby providing all the necessary inputs
for 'faking' a lookup() operation on the spot.

If the dentry and inode already existed (for e.g. in a re-run of ls -l)
then just the inode attributes timeout and dentry timeout are refreshed.

With a simple client->network->server implementation of a FUSE based
filesystem, the following performance observations were made:

Test: Performing a filesystem crawl over 20,000 files with

sh# time ls -lR /mnt

Without readdirplus:
Run 1: 18.1s
Run 2: 16.0s
Run 3: 16.2s

With readdirplus:
Run 1: 4.1s
Run 2: 3.8s
Run 3: 3.8s

The performance improvement is significant as it avoided 20,000 upcalls
calls (lookup). Cache consistency is no worse than what already is.

Signed-off-by: Anand V. Avati <avati@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
2013-01-24 16:21:25 +01:00
..
control.c fuse: mark variables uninitialized 2012-09-03 17:44:06 +02:00
cuse.c cuse: fix uninitialized variable warnings 2013-01-17 13:05:52 +01:00
dev.c fuse: implement NFS-like readdirplus support 2013-01-24 16:21:25 +01:00
dir.c fuse: implement NFS-like readdirplus support 2013-01-24 16:21:25 +01:00
file.c fuse: make fuse_file_fallocate() static 2013-01-17 13:09:47 +01:00
fuse_i.h fuse: implement NFS-like readdirplus support 2013-01-24 16:21:25 +01:00
inode.c fuse: implement NFS-like readdirplus support 2013-01-24 16:21:25 +01:00
Kconfig fuse: Move CUSE Kconfig entry from fs/Kconfig into fs/fuse/Kconfig 2013-01-17 13:08:45 +01:00
Makefile CUSE: implement CUSE - Character device in Userspace 2009-06-09 11:24:11 +02:00