diff options
author | Maxim Patlasov <MPatlasov@parallels.com> | 2013-10-02 21:38:54 +0400 |
---|---|---|
committer | Miklos Szeredi <mszeredi@suse.cz> | 2013-11-05 10:11:29 +0100 |
commit | ce128de6260f86a990ed44a697f26d0859684f28 (patch) | |
tree | e0fb91f2aa9feddf4715eefcbd30965ce9bbcb24 /fs/fuse/file.c | |
parent | 41b6e41fc609753a9386d24295f7ed03b28c4601 (diff) | |
download | linux-ce128de6260f86a990ed44a697f26d0859684f28.tar.gz linux-ce128de6260f86a990ed44a697f26d0859684f28.tar.bz2 linux-ce128de6260f86a990ed44a697f26d0859684f28.zip |
fuse: writepages: protect secondary requests from fuse file release
All async fuse requests must be supplied with extra reference to a fuse
file. This is necessary to ensure that the fuse file is not released until
all in-flight requests are completed. Fuse secondary writeback requests
must obey this rule as well.
Signed-off-by: Maxim Patlasov <MPatlasov@parallels.com>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Diffstat (limited to 'fs/fuse/file.c')
-rw-r--r-- | fs/fuse/file.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index e6fdd59a7906..7e70506297bc 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -1505,6 +1505,7 @@ static void fuse_writepage_end(struct fuse_conn *fc, struct fuse_req *req) struct fuse_req *next = req->misc.write.next; req->misc.write.next = next->misc.write.next; next->misc.write.next = NULL; + next->ff = fuse_file_get(req->ff); list_add(&next->writepages_entry, &fi->writepages); /* |