From: Maxim Patlasov <MPatlasov@parallels.com> To: miklos@szeredi.hu Cc: riel@redhat.com, dev@parallels.com, xemul@parallels.com, fuse-devel@lists.sourceforge.net, bfoster@redhat.com, linux-kernel@vger.kernel.org, jbottomley@parallels.com, linux-mm@kvack.org, viro@zeniv.linux.org.uk, linux-fsdevel@vger.kernel.org, akpm@linux-foundation.org, fengguang.wu@intel.com, devel@openvz.org, mgorman@suse.de Subject: [PATCH 08/16] fuse: Flush files on wb close Date: Sat, 29 Jun 2013 21:45:04 +0400 [thread overview] Message-ID: <20130629174458.20175.11065.stgit@maximpc.sw.ru> (raw) In-Reply-To: <20130629172211.20175.70154.stgit@maximpc.sw.ru> From: Pavel Emelyanov <xemul@openvz.org> Any write request requires a file handle to report to the userspace. Thus when we close a file (and free the fuse_file with this info) we have to flush all the outstanding dirty pages. filemap_write_and_wait() is enough because every page under fuse writeback is accounted in ff->count. This delays actual close until all fuse wb is completed. In case of "write cache" turned off, the flush is ensured by fuse_vma_close(). Signed-off-by: Maxim Patlasov <MPatlasov@parallels.com> --- fs/fuse/file.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/fs/fuse/file.c b/fs/fuse/file.c index f53697c..799bf46 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -291,6 +291,12 @@ static int fuse_open(struct inode *inode, struct file *file) static int fuse_release(struct inode *inode, struct file *file) { + struct fuse_conn *fc = get_fuse_conn(inode); + + /* see fuse_vma_close() for !writeback_cache case */ + if (fc->writeback_cache) + filemap_write_and_wait(file->f_mapping); + if (test_bit(FUSE_I_MTIME_UPDATED, &get_fuse_inode(inode)->state)) fuse_flush_mtime(file, true);
WARNING: multiple messages have this Message-ID (diff)
From: Maxim Patlasov <MPatlasov@parallels.com> To: miklos@szeredi.hu Cc: riel@redhat.com, dev@parallels.com, xemul@parallels.com, fuse-devel@lists.sourceforge.net, bfoster@redhat.com, linux-kernel@vger.kernel.org, jbottomley@parallels.com, linux-mm@kvack.org, viro@zeniv.linux.org.uk, linux-fsdevel@vger.kernel.org, akpm@linux-foundation.org, fengguang.wu@intel.com, devel@openvz.org, mgorman@suse.de Subject: [PATCH 08/16] fuse: Flush files on wb close Date: Sat, 29 Jun 2013 21:45:04 +0400 [thread overview] Message-ID: <20130629174458.20175.11065.stgit@maximpc.sw.ru> (raw) In-Reply-To: <20130629172211.20175.70154.stgit@maximpc.sw.ru> From: Pavel Emelyanov <xemul@openvz.org> Any write request requires a file handle to report to the userspace. Thus when we close a file (and free the fuse_file with this info) we have to flush all the outstanding dirty pages. filemap_write_and_wait() is enough because every page under fuse writeback is accounted in ff->count. This delays actual close until all fuse wb is completed. In case of "write cache" turned off, the flush is ensured by fuse_vma_close(). Signed-off-by: Maxim Patlasov <MPatlasov@parallels.com> --- fs/fuse/file.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/fs/fuse/file.c b/fs/fuse/file.c index f53697c..799bf46 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -291,6 +291,12 @@ static int fuse_open(struct inode *inode, struct file *file) static int fuse_release(struct inode *inode, struct file *file) { + struct fuse_conn *fc = get_fuse_conn(inode); + + /* see fuse_vma_close() for !writeback_cache case */ + if (fc->writeback_cache) + filemap_write_and_wait(file->f_mapping); + if (test_bit(FUSE_I_MTIME_UPDATED, &get_fuse_inode(inode)->state)) fuse_flush_mtime(file, true); -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2013-06-29 17:45 UTC|newest] Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-06-29 17:41 [PATCH v5 00/16] fuse: An attempt to implement a write-back cache policy Maxim Patlasov 2013-06-29 17:41 ` Maxim Patlasov 2013-06-29 17:42 ` [PATCH 01/16] fuse: Linking file to inode helper Maxim Patlasov 2013-06-29 17:42 ` Maxim Patlasov 2013-06-29 17:42 ` [PATCH 02/16] fuse: Getting file for writeback helper Maxim Patlasov 2013-06-29 17:42 ` Maxim Patlasov 2013-06-29 17:42 ` [PATCH 03/16] fuse: Prepare to handle short reads Maxim Patlasov 2013-06-29 17:42 ` Maxim Patlasov 2013-06-29 17:42 ` Maxim Patlasov 2013-06-29 17:42 ` [PATCH 04/16] fuse: Prepare to handle multiple pages in writeback Maxim Patlasov 2013-06-29 17:42 ` Maxim Patlasov 2013-06-29 17:42 ` [PATCH 05/16] fuse: Connection bit for enabling writeback Maxim Patlasov 2013-06-29 17:42 ` Maxim Patlasov 2013-06-29 17:44 ` [PATCH 06/16] fuse: Trust kernel i_size only - v4 Maxim Patlasov 2013-06-29 17:44 ` Maxim Patlasov 2013-06-29 17:44 ` [PATCH 07/16] fuse: Trust kernel i_mtime only Maxim Patlasov 2013-06-29 17:44 ` Maxim Patlasov 2013-07-11 16:14 ` [PATCH 07/16] fuse: Trust kernel i_mtime only -v2 Maxim Patlasov 2013-06-29 17:45 ` Maxim Patlasov [this message] 2013-06-29 17:45 ` [PATCH 08/16] fuse: Flush files on wb close Maxim Patlasov 2013-07-11 16:18 ` [PATCH 08/16] fuse: Flush files on wb close -v2 Maxim Patlasov 2013-06-29 17:45 ` [PATCH 09/16] fuse: restructure fuse_readpage() Maxim Patlasov 2013-06-29 17:45 ` Maxim Patlasov 2013-06-29 17:45 ` Maxim Patlasov 2013-06-29 17:45 ` [PATCH 10/16] fuse: Implement writepages callback Maxim Patlasov 2013-06-29 17:45 ` Maxim Patlasov 2013-07-19 16:50 ` Miklos Szeredi 2013-07-19 16:50 ` Miklos Szeredi 2013-08-02 15:40 ` Maxim Patlasov 2013-08-02 15:40 ` Maxim Patlasov 2013-08-02 15:40 ` Maxim Patlasov 2013-08-06 16:25 ` Miklos Szeredi 2013-08-06 16:25 ` Miklos Szeredi 2013-08-06 16:26 ` Eric Boxer 2013-08-09 15:02 ` Maxim Patlasov 2013-08-09 15:02 ` Maxim Patlasov 2013-08-09 15:02 ` Maxim Patlasov 2013-08-30 10:12 ` Miklos Szeredi 2013-08-30 10:12 ` Miklos Szeredi 2013-08-30 10:12 ` Miklos Szeredi 2013-08-30 14:50 ` Maxim Patlasov 2013-08-30 14:50 ` Maxim Patlasov 2013-08-30 14:50 ` Maxim Patlasov 2013-09-03 10:31 ` Miklos Szeredi 2013-09-03 10:31 ` Miklos Szeredi 2013-09-03 10:31 ` Miklos Szeredi 2013-09-03 16:02 ` Maxim Patlasov 2013-09-03 16:02 ` Maxim Patlasov 2013-09-03 16:02 ` Maxim Patlasov 2013-06-29 17:45 ` [PATCH 11/16] fuse: Implement write_begin/write_end callbacks Maxim Patlasov 2013-06-29 17:45 ` Maxim Patlasov 2013-06-29 17:46 ` [PATCH 12/16] fuse: fuse_writepage_locked() should wait on writeback Maxim Patlasov 2013-06-29 17:46 ` Maxim Patlasov 2013-06-29 17:46 ` [PATCH 13/16] fuse: fuse_flush() " Maxim Patlasov 2013-06-29 17:46 ` Maxim Patlasov 2013-06-29 17:46 ` [PATCH 14/16] fuse: Fix O_DIRECT operations vs cached writeback misorder - v2 Maxim Patlasov 2013-06-29 17:46 ` Maxim Patlasov 2013-06-29 17:47 ` [PATCH 15/16] fuse: Turn writeback cache on Maxim Patlasov 2013-06-29 17:47 ` Maxim Patlasov 2013-06-29 17:48 ` [PATCH 16/16] mm: strictlimit feature Maxim Patlasov 2013-06-29 17:48 ` Maxim Patlasov 2013-07-01 21:16 ` Andrew Morton 2013-07-01 21:16 ` Andrew Morton 2013-07-02 8:33 ` Maxim Patlasov 2013-07-02 8:33 ` Maxim Patlasov 2013-07-02 8:33 ` Maxim Patlasov 2013-07-02 17:44 ` [PATCH] mm: strictlimit feature -v2 Maxim Patlasov 2013-07-02 17:44 ` Maxim Patlasov 2013-07-02 19:38 ` Andrew Morton 2013-07-02 19:38 ` Andrew Morton 2013-07-03 11:01 ` Maxim Patlasov 2013-07-03 11:01 ` Maxim Patlasov 2013-07-03 11:01 ` Maxim Patlasov 2013-07-03 23:16 ` Jan Kara 2013-07-03 23:16 ` Jan Kara 2013-07-03 23:16 ` Jan Kara 2013-07-05 13:14 ` Maxim Patlasov 2013-07-05 13:14 ` Maxim Patlasov 2013-07-05 13:14 ` Maxim Patlasov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20130629174458.20175.11065.stgit@maximpc.sw.ru \ --to=mpatlasov@parallels.com \ --cc=akpm@linux-foundation.org \ --cc=bfoster@redhat.com \ --cc=dev@parallels.com \ --cc=devel@openvz.org \ --cc=fengguang.wu@intel.com \ --cc=fuse-devel@lists.sourceforge.net \ --cc=jbottomley@parallels.com \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mgorman@suse.de \ --cc=miklos@szeredi.hu \ --cc=riel@redhat.com \ --cc=viro@zeniv.linux.org.uk \ --cc=xemul@parallels.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.