Messages in this thread | | | Date | Thu, 11 Apr 2013 15:21:10 +0400 | From | "Maxim V. Patlasov" <> | Subject | Re: [fuse-devel] [PATCH 0/5] fuse: close file synchronously |
| |
Hi Miklos,
Any feedback would be highly appreciated.
Thanks, Maxim
12/20/2012 04:30 PM, Maxim Patlasov пишет: > Hi, > > There is a long-standing demand for syncronous behaviour of fuse_release: > > http://sourceforge.net/mailarchive/message.php?msg_id=19343889 > http://sourceforge.net/mailarchive/message.php?msg_id=29814693 > > A few months ago Avati and me explained why such a feature would be useful: > > http://sourceforge.net/mailarchive/message.php?msg_id=29889055 > http://sourceforge.net/mailarchive/message.php?msg_id=29867423 > > In short, the problem is that fuse_release (that's called on last user > close(2)) sends FUSE_RELEASE to userspace and returns without waiting for > ACK from userspace. Consequently, there is a gap when user regards the > file released while userspace fuse is still working on it. An attempt to > access the file from another node leads to complicated synchronization > problems because the first node still "holds" the file. > > The patch-set resolves the problem by making fuse_release synchronous: > wait for ACK from userspace for FUSE_RELEASE if the feature is ON. > > To keep single-threaded userspace implementations happy the patch-set > ensures that by the time fuse_release_common calls fuse_file_put, no > more in-flight I/O exists. Asynchronous fuse callbacks (like > fuse_readpages_end) cannot trigger FUSE_RELEASE anymore. Hence, we'll > never block in contexts other than close(). > > Thanks, > Maxim > > --- > > Maxim Patlasov (5): > fuse: add close_wait flag to fuse_conn > fuse: cosmetic rework of fuse_send_readpages > fuse: wait for end of IO on release > fuse: enable close_wait feature > fuse: fix synchronous case of fuse_file_put() > > > fs/fuse/file.c | 82 ++++++++++++++++++++++++++++++++++++++------- > fs/fuse/fuse_i.h | 3 ++ > fs/fuse/inode.c | 5 ++- > include/uapi/linux/fuse.h | 7 +++- > 4 files changed, 82 insertions(+), 15 deletions(-) >
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |