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-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html