From: <sa...@ar...> - 2005-10-28 09:43:37
|
Hi, we currently want to integrate a cache for read and write operations. We must use hash tables via a global structure to get private structure for= each file handle. Could it be possible to add a private data field in the fuse_file_info stru= cture? E.g. so future versions of FUSE could look so: /** Information about open files */ struct fuse_file_info { /** Open flags. Available in open() and release() */ int flags; /** File handle. May be filled in by filesystem in open(). = =20 Available in all other file operations */ unsigned long fh; /** In case of a write operation indicates if this was caused by a = =20 writepage */ int writepage; /** Can be filled in by open, to use direct I/O on this file. = =20 Introduced in version 2.4 */ unsigned int direct_io : 1; /** Can be filled in by open, to indicate, that cached file data = =20 need not be invalidated. Introduced in version 2.4 */ unsigned int keep_cache : 1; /* Private data */ void *private_data; }; So we could save our private data in the "void *private_data" variable, so = for each read/write operation we can get=20 directly our cache structure for each individual file handle. We tried to patch the fuse source code to implement this ourself, but when = trying FUSE, for each open we got "Invalid=20 argument": unique: 4, error: 0 (Success), outsize: 112 unique: 5, opcode: OPENDIR (27), nodeid: 1, insize: 48 unique: 5, error: 0 (Success), outsize: 36 fuse: writing device: Invalid argument unique: 6, opcode: GETATTR (3), nodeid: 1, insize: 40 OPEN[1] flags: 0x8000 unique: 8, error: 0 (Success), outsize: 36 fuse: writing device: Invalid argument --=20 Best regards, Stephan FERRARO NOOFS Core Developper - http://www.noofs.org/ GnuPG public key: gpg --keyserver www.keyserver.net --recv-key 94B2664F |
From: Miklos S. <mi...@sz...> - 2005-10-28 09:56:34
|
> we currently want to integrate a cache for read and write > operations. We must use hash tables via a global structure to get > private structure for each file handle. > > Could it be possible to add a private data field in the > fuse_file_info structure? It's already there: the 'fh' field. Don't let the type confuse you, an unsigned long can hold a pointer as well as an integer. I'll add this to the FAQ. Miklos |