Re: [PATCH v2 00/14] fuse: An attempt to implement a write-back cachepolicy

From: Maxim V. Patlasov
Date: Tue Nov 27 2012 - 02:56:39 EST


Hi Feng,

11/27/2012 05:04 AM, Feng Shuo ÐÐÑÐÑ:
Hi Maxim,

I'm new to fuse but have some experience with NFS. From my
understanding after reviewing your patchset, it seems only work with
local file system or a distributed file system whose file is never
modified (could be grown but no or very few modified) because it
doesn't exam the pre/post status of the writing object (e.g. a file).
So if a file is modified outside, fuse might not get any chance to
handle it...... Correct me if I got wrong since I'm really new to
fuse. :-)

This topic was discussed when Pavel sent initial version of patches (you can find it in fuse-devel archives). Brian asked:

Would this pose a problem for a filesystem in which the size of the
inode can change remotely (i.e., not visible to the local instance of
fuse)? I haven't tested this, but it seems like it could be an issue
based on the implementation.

And Pavel replied:

Yes, it will. The model of i_size management I implemented here is based
on an assumption that the userspace is just a storage for data and should
catch up with the kernel i_size value. In order to make it possible for user
space to update i_size in kernel we'd have to implement some (probably)
tricky algorithm, I haven't yet thought about it.

The patch-set follows the model "trust kernel i_size only". This works fine at least in case of userspace fuse wtih exclusive write semantics. In case of mutual concurrent internal/external read/write access, sysad should not turn the feature on (it's turned off by default). I wouldn't like to complicate the patch-set further adding bits for that case. This area is opened for future enhancements :)

Thanks,
Maxim
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/