From: Boaz Harrosh <bharrosh@panasas.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: axboe@kernel.dk, lucho@ionkov.net, tytso@mit.edu,
sage@inktank.com, ericvh@gmail.com, mfasheh@suse.com,
dedekind1@gmail.com, adrian.hunter@intel.com,
dhowells@redhat.com, sfrench@samba.org, jlbec@evilplan.org,
rminnich@sandia.gov, linux-cifs@vger.kernel.org, jack@suse.cz,
martin.petersen@oracle.com, neilb@suse.de, david@fromorbit.com,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-mtd@lists.infradead.org, linux-fsdevel@vger.kernel.org,
v9fs-developer@lists.sourceforge.net, ceph-devel@vger.kernel.org,
linux-ext4@vger.kernel.org, linux-afs@lists.infradead.org,
ocfs2-devel@oss.oracle.com
Subject: Re: [PATCH 3/3] fs: Fix remaining filesystems to wait for stable page writeback
Date: Thu, 1 Nov 2012 11:43:26 -0700 [thread overview]
Message-ID: <5092C2CE.7070209@panasas.com> (raw)
In-Reply-To: <20121101075829.16153.92036.stgit@blackbox.djwong.org>
On 11/01/2012 12:58 AM, Darrick J. Wong wrote:
> Fix up the filesystems that provide their own ->page_mkwrite handlers to
> provide stable page writes if necessary.
>
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
> fs/9p/vfs_file.c | 1 +
> fs/afs/write.c | 4 ++--
> fs/ceph/addr.c | 1 +
> fs/cifs/file.c | 1 +
> fs/ocfs2/mmap.c | 1 +
> fs/ubifs/file.c | 4 ++--
> 6 files changed, 8 insertions(+), 4 deletions(-)
>
>
> diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
> index c2483e9..aa253f0 100644
> --- a/fs/9p/vfs_file.c
> +++ b/fs/9p/vfs_file.c
> @@ -620,6 +620,7 @@ v9fs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> lock_page(page);
> if (page->mapping != inode->i_mapping)
> goto out_unlock;
> + wait_on_stable_page_write(page);
>
Good god thanks, yes please ;-)
> return VM_FAULT_LOCKED;
> out_unlock:
> diff --git a/fs/afs/write.c b/fs/afs/write.c
> index 9aa52d9..39eb2a4 100644
> --- a/fs/afs/write.c
> +++ b/fs/afs/write.c
> @@ -758,7 +758,7 @@ int afs_page_mkwrite(struct vm_area_struct *vma, struct page *page)
afs, is it not a network filesystem? which means that it has it's own emulated none-block-device
BDI, registered internally. So if you do need stable pages someone should call
bdi_require_stable_pages()
But again since it is a network filesystem I don't see how it is needed, and/or it might be
taken care of already.
> #ifdef CONFIG_AFS_FSCACHE
> fscache_wait_on_page_write(vnode->cache, page);
> #endif
> -
> + wait_on_stable_page_write(page);
> _leave(" = 0");
> - return 0;
> + return VM_FAULT_LOCKED;
> }
> diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
CEPH for sure has it's own "emulated none-block-device BDI". This one is also
a pure networking filesystem.
And it already does what it needs to do with wait_on_writeback().
So i do not think you should touch CEPH
> index 6690269..e9734bf 100644
> --- a/fs/ceph/addr.c
> +++ b/fs/ceph/addr.c
> @@ -1208,6 +1208,7 @@ static int ceph_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> set_page_dirty(page);
> up_read(&mdsc->snap_rwsem);
> ret = VM_FAULT_LOCKED;
> + wait_on_stable_page_write(page);
> } else {
> if (ret == -ENOMEM)
> ret = VM_FAULT_OOM;
> diff --git a/fs/cifs/file.c b/fs/cifs/file.c
Cifs also self-BDI network filesystem, but
> index edb25b4..a8770bf 100644
> --- a/fs/cifs/file.c
> +++ b/fs/cifs/file.c
> @@ -2997,6 +2997,7 @@ cifs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> struct page *page = vmf->page;
>
> lock_page(page);
It waits by locking the page, that's cifs naive way of waiting for writeback
> + wait_on_stable_page_write(page);
Instead it could do better and not override page_mkwrite at all, and all it needs
to do is call bdi_require_stable_pages() at it's own registered BDI
> return VM_FAULT_LOCKED;
> }
>
> diff --git a/fs/ocfs2/mmap.c b/fs/ocfs2/mmap.c
> index 47a87dd..a0027b1 100644
> --- a/fs/ocfs2/mmap.c
> +++ b/fs/ocfs2/mmap.c
> @@ -124,6 +124,7 @@ static int __ocfs2_page_mkwrite(struct file *file, struct buffer_head *di_bh,
> fsdata);
> BUG_ON(ret != len);
> ret = VM_FAULT_LOCKED;
> + wait_on_stable_page_write(page);
> out:
> return ret;
> }
> diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
> index 5bc7781..cb0d3aa 100644
> --- a/fs/ubifs/file.c
> +++ b/fs/ubifs/file.c
> @@ -1522,8 +1522,8 @@ static int ubifs_vm_page_mkwrite(struct vm_area_struct *vma,
> ubifs_release_dirty_inode_budget(c, ui);
> }
>
> - unlock_page(page);
> - return 0;
> + wait_on_stable_page_write(page);
ubifs has it's special ubi block device. So someone needs to call bdi_require_stable_pages()
for this to work.
I think that here too. The existing code, like cifs, calls page_lock, as a way of
waiting for writeback.
So this is certainly not finished.
> + return VM_FAULT_LOCKED;
>
> out_unlock:
> unlock_page(page);
>
Cheers
Boaz
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: Boaz Harrosh <bharrosh@panasas.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: <axboe@kernel.dk>, <lucho@ionkov.net>, <tytso@mit.edu>,
<sage@inktank.com>, <ericvh@gmail.com>, <mfasheh@suse.com>,
<dedekind1@gmail.com>, <adrian.hunter@intel.com>,
<dhowells@redhat.com>, <sfrench@samba.org>, <jlbec@evilplan.org>,
<rminnich@sandia.gov>, <linux-cifs@vger.kernel.org>,
<jack@suse.cz>, <martin.petersen@oracle.com>, <neilb@suse.de>,
<david@fromorbit.com>, <linux-kernel@vger.kernel.org>,
<linux-mm@kvack.org>, <linux-mtd@lists.infradead.org>,
<linux-fsdevel@vger.kernel.org>,
<v9fs-developer@lists.sourceforge.net>,
<ceph-devel@vger.kernel.org>, <linux-ext4@vger.kernel.org>,
<linux-afs@lists.infradead.org>, <ocfs2-devel@oss.oracle.com>
Subject: Re: [PATCH 3/3] fs: Fix remaining filesystems to wait for stable page writeback
Date: Thu, 1 Nov 2012 11:43:26 -0700 [thread overview]
Message-ID: <5092C2CE.7070209@panasas.com> (raw)
In-Reply-To: <20121101075829.16153.92036.stgit@blackbox.djwong.org>
On 11/01/2012 12:58 AM, Darrick J. Wong wrote:
> Fix up the filesystems that provide their own ->page_mkwrite handlers to
> provide stable page writes if necessary.
>
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
> fs/9p/vfs_file.c | 1 +
> fs/afs/write.c | 4 ++--
> fs/ceph/addr.c | 1 +
> fs/cifs/file.c | 1 +
> fs/ocfs2/mmap.c | 1 +
> fs/ubifs/file.c | 4 ++--
> 6 files changed, 8 insertions(+), 4 deletions(-)
>
>
> diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
> index c2483e9..aa253f0 100644
> --- a/fs/9p/vfs_file.c
> +++ b/fs/9p/vfs_file.c
> @@ -620,6 +620,7 @@ v9fs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> lock_page(page);
> if (page->mapping != inode->i_mapping)
> goto out_unlock;
> + wait_on_stable_page_write(page);
>
Good god thanks, yes please ;-)
> return VM_FAULT_LOCKED;
> out_unlock:
> diff --git a/fs/afs/write.c b/fs/afs/write.c
> index 9aa52d9..39eb2a4 100644
> --- a/fs/afs/write.c
> +++ b/fs/afs/write.c
> @@ -758,7 +758,7 @@ int afs_page_mkwrite(struct vm_area_struct *vma, struct page *page)
afs, is it not a network filesystem? which means that it has it's own emulated none-block-device
BDI, registered internally. So if you do need stable pages someone should call
bdi_require_stable_pages()
But again since it is a network filesystem I don't see how it is needed, and/or it might be
taken care of already.
> #ifdef CONFIG_AFS_FSCACHE
> fscache_wait_on_page_write(vnode->cache, page);
> #endif
> -
> + wait_on_stable_page_write(page);
> _leave(" = 0");
> - return 0;
> + return VM_FAULT_LOCKED;
> }
> diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
CEPH for sure has it's own "emulated none-block-device BDI". This one is also
a pure networking filesystem.
And it already does what it needs to do with wait_on_writeback().
So i do not think you should touch CEPH
> index 6690269..e9734bf 100644
> --- a/fs/ceph/addr.c
> +++ b/fs/ceph/addr.c
> @@ -1208,6 +1208,7 @@ static int ceph_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> set_page_dirty(page);
> up_read(&mdsc->snap_rwsem);
> ret = VM_FAULT_LOCKED;
> + wait_on_stable_page_write(page);
> } else {
> if (ret == -ENOMEM)
> ret = VM_FAULT_OOM;
> diff --git a/fs/cifs/file.c b/fs/cifs/file.c
Cifs also self-BDI network filesystem, but
> index edb25b4..a8770bf 100644
> --- a/fs/cifs/file.c
> +++ b/fs/cifs/file.c
> @@ -2997,6 +2997,7 @@ cifs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> struct page *page = vmf->page;
>
> lock_page(page);
It waits by locking the page, that's cifs naive way of waiting for writeback
> + wait_on_stable_page_write(page);
Instead it could do better and not override page_mkwrite at all, and all it needs
to do is call bdi_require_stable_pages() at it's own registered BDI
> return VM_FAULT_LOCKED;
> }
>
> diff --git a/fs/ocfs2/mmap.c b/fs/ocfs2/mmap.c
> index 47a87dd..a0027b1 100644
> --- a/fs/ocfs2/mmap.c
> +++ b/fs/ocfs2/mmap.c
> @@ -124,6 +124,7 @@ static int __ocfs2_page_mkwrite(struct file *file, struct buffer_head *di_bh,
> fsdata);
> BUG_ON(ret != len);
> ret = VM_FAULT_LOCKED;
> + wait_on_stable_page_write(page);
> out:
> return ret;
> }
> diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
> index 5bc7781..cb0d3aa 100644
> --- a/fs/ubifs/file.c
> +++ b/fs/ubifs/file.c
> @@ -1522,8 +1522,8 @@ static int ubifs_vm_page_mkwrite(struct vm_area_struct *vma,
> ubifs_release_dirty_inode_budget(c, ui);
> }
>
> - unlock_page(page);
> - return 0;
> + wait_on_stable_page_write(page);
ubifs has it's special ubi block device. So someone needs to call bdi_require_stable_pages()
for this to work.
I think that here too. The existing code, like cifs, calls page_lock, as a way of
waiting for writeback.
So this is certainly not finished.
> + return VM_FAULT_LOCKED;
>
> out_unlock:
> unlock_page(page);
>
Cheers
Boaz
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: Boaz Harrosh <bharrosh@panasas.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: lucho@ionkov.net, jack@suse.cz, neilb@suse.de,
david@fromorbit.com, linux-kernel@vger.kernel.org,
dhowells@redhat.com, linux-mm@kvack.org,
linux-mtd@lists.infradead.org, linux-afs@lists.infradead.org,
linux-cifs@vger.kernel.org, v9fs-developer@lists.sourceforge.net,
linux-ext4@vger.kernel.org, sage@inktank.com, ericvh@gmail.com,
mfasheh@suse.com, jlbec@evilplan.org, ceph-devel@vger.kernel.org,
axboe@kernel.dk, tytso@mit.edu, martin.petersen@oracle.com,
dedekind1@gmail.com, adrian.hunter@intel.com, sfrench@samba.org,
linux-fsdevel@vger.kernel.org, rminnich@sandia.gov,
ocfs2-devel@oss.oracle.com
Subject: Re: [PATCH 3/3] fs: Fix remaining filesystems to wait for stable page writeback
Date: Thu, 1 Nov 2012 11:43:26 -0700 [thread overview]
Message-ID: <5092C2CE.7070209@panasas.com> (raw)
In-Reply-To: <20121101075829.16153.92036.stgit@blackbox.djwong.org>
On 11/01/2012 12:58 AM, Darrick J. Wong wrote:
> Fix up the filesystems that provide their own ->page_mkwrite handlers to
> provide stable page writes if necessary.
>
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
> fs/9p/vfs_file.c | 1 +
> fs/afs/write.c | 4 ++--
> fs/ceph/addr.c | 1 +
> fs/cifs/file.c | 1 +
> fs/ocfs2/mmap.c | 1 +
> fs/ubifs/file.c | 4 ++--
> 6 files changed, 8 insertions(+), 4 deletions(-)
>
>
> diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
> index c2483e9..aa253f0 100644
> --- a/fs/9p/vfs_file.c
> +++ b/fs/9p/vfs_file.c
> @@ -620,6 +620,7 @@ v9fs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> lock_page(page);
> if (page->mapping != inode->i_mapping)
> goto out_unlock;
> + wait_on_stable_page_write(page);
>
Good god thanks, yes please ;-)
> return VM_FAULT_LOCKED;
> out_unlock:
> diff --git a/fs/afs/write.c b/fs/afs/write.c
> index 9aa52d9..39eb2a4 100644
> --- a/fs/afs/write.c
> +++ b/fs/afs/write.c
> @@ -758,7 +758,7 @@ int afs_page_mkwrite(struct vm_area_struct *vma, struct page *page)
afs, is it not a network filesystem? which means that it has it's own emulated none-block-device
BDI, registered internally. So if you do need stable pages someone should call
bdi_require_stable_pages()
But again since it is a network filesystem I don't see how it is needed, and/or it might be
taken care of already.
> #ifdef CONFIG_AFS_FSCACHE
> fscache_wait_on_page_write(vnode->cache, page);
> #endif
> -
> + wait_on_stable_page_write(page);
> _leave(" = 0");
> - return 0;
> + return VM_FAULT_LOCKED;
> }
> diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
CEPH for sure has it's own "emulated none-block-device BDI". This one is also
a pure networking filesystem.
And it already does what it needs to do with wait_on_writeback().
So i do not think you should touch CEPH
> index 6690269..e9734bf 100644
> --- a/fs/ceph/addr.c
> +++ b/fs/ceph/addr.c
> @@ -1208,6 +1208,7 @@ static int ceph_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> set_page_dirty(page);
> up_read(&mdsc->snap_rwsem);
> ret = VM_FAULT_LOCKED;
> + wait_on_stable_page_write(page);
> } else {
> if (ret == -ENOMEM)
> ret = VM_FAULT_OOM;
> diff --git a/fs/cifs/file.c b/fs/cifs/file.c
Cifs also self-BDI network filesystem, but
> index edb25b4..a8770bf 100644
> --- a/fs/cifs/file.c
> +++ b/fs/cifs/file.c
> @@ -2997,6 +2997,7 @@ cifs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> struct page *page = vmf->page;
>
> lock_page(page);
It waits by locking the page, that's cifs naive way of waiting for writeback
> + wait_on_stable_page_write(page);
Instead it could do better and not override page_mkwrite at all, and all it needs
to do is call bdi_require_stable_pages() at it's own registered BDI
> return VM_FAULT_LOCKED;
> }
>
> diff --git a/fs/ocfs2/mmap.c b/fs/ocfs2/mmap.c
> index 47a87dd..a0027b1 100644
> --- a/fs/ocfs2/mmap.c
> +++ b/fs/ocfs2/mmap.c
> @@ -124,6 +124,7 @@ static int __ocfs2_page_mkwrite(struct file *file, struct buffer_head *di_bh,
> fsdata);
> BUG_ON(ret != len);
> ret = VM_FAULT_LOCKED;
> + wait_on_stable_page_write(page);
> out:
> return ret;
> }
> diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
> index 5bc7781..cb0d3aa 100644
> --- a/fs/ubifs/file.c
> +++ b/fs/ubifs/file.c
> @@ -1522,8 +1522,8 @@ static int ubifs_vm_page_mkwrite(struct vm_area_struct *vma,
> ubifs_release_dirty_inode_budget(c, ui);
> }
>
> - unlock_page(page);
> - return 0;
> + wait_on_stable_page_write(page);
ubifs has it's special ubi block device. So someone needs to call bdi_require_stable_pages()
for this to work.
I think that here too. The existing code, like cifs, calls page_lock, as a way of
waiting for writeback.
So this is certainly not finished.
> + return VM_FAULT_LOCKED;
>
> out_unlock:
> unlock_page(page);
>
Cheers
Boaz
WARNING: multiple messages have this Message-ID (diff)
From: Boaz Harrosh <bharrosh@panasas.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: <axboe@kernel.dk>, <lucho@ionkov.net>, <tytso@mit.edu>,
<sage@inktank.com>, <ericvh@gmail.com>, <mfasheh@suse.com>,
<dedekind1@gmail.com>, <adrian.hunter@intel.com>,
<dhowells@redhat.com>, <sfrench@samba.org>, <jlbec@evilplan.org>,
<rminnich@sandia.gov>, <linux-cifs@vger.kernel.org>,
<jack@suse.cz>, <martin.petersen@oracle.com>, <neilb@suse.de>,
<david@fromorbit.com>, <linux-kernel@vger.kernel.org>,
<linux-mm@kvack.org>, <linux-mtd@lists.infradead.org>,
<linux-fsdevel@vger.kernel.org>,
<v9fs-developer@lists.sourceforge.net>,
<ceph-devel@vger.kernel.org>, <linux-ext4@vger.kernel.org>,
<linux-afs@lists.infradead.org>, <ocfs2-devel@oss.oracle.com>
Subject: Re: [PATCH 3/3] fs: Fix remaining filesystems to wait for stable page writeback
Date: Thu, 1 Nov 2012 11:43:26 -0700 [thread overview]
Message-ID: <5092C2CE.7070209@panasas.com> (raw)
In-Reply-To: <20121101075829.16153.92036.stgit@blackbox.djwong.org>
On 11/01/2012 12:58 AM, Darrick J. Wong wrote:
> Fix up the filesystems that provide their own ->page_mkwrite handlers to
> provide stable page writes if necessary.
>
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
> fs/9p/vfs_file.c | 1 +
> fs/afs/write.c | 4 ++--
> fs/ceph/addr.c | 1 +
> fs/cifs/file.c | 1 +
> fs/ocfs2/mmap.c | 1 +
> fs/ubifs/file.c | 4 ++--
> 6 files changed, 8 insertions(+), 4 deletions(-)
>
>
> diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
> index c2483e9..aa253f0 100644
> --- a/fs/9p/vfs_file.c
> +++ b/fs/9p/vfs_file.c
> @@ -620,6 +620,7 @@ v9fs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> lock_page(page);
> if (page->mapping != inode->i_mapping)
> goto out_unlock;
> + wait_on_stable_page_write(page);
>
Good god thanks, yes please ;-)
> return VM_FAULT_LOCKED;
> out_unlock:
> diff --git a/fs/afs/write.c b/fs/afs/write.c
> index 9aa52d9..39eb2a4 100644
> --- a/fs/afs/write.c
> +++ b/fs/afs/write.c
> @@ -758,7 +758,7 @@ int afs_page_mkwrite(struct vm_area_struct *vma, struct page *page)
afs, is it not a network filesystem? which means that it has it's own emulated none-block-device
BDI, registered internally. So if you do need stable pages someone should call
bdi_require_stable_pages()
But again since it is a network filesystem I don't see how it is needed, and/or it might be
taken care of already.
> #ifdef CONFIG_AFS_FSCACHE
> fscache_wait_on_page_write(vnode->cache, page);
> #endif
> -
> + wait_on_stable_page_write(page);
> _leave(" = 0");
> - return 0;
> + return VM_FAULT_LOCKED;
> }
> diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
CEPH for sure has it's own "emulated none-block-device BDI". This one is also
a pure networking filesystem.
And it already does what it needs to do with wait_on_writeback().
So i do not think you should touch CEPH
> index 6690269..e9734bf 100644
> --- a/fs/ceph/addr.c
> +++ b/fs/ceph/addr.c
> @@ -1208,6 +1208,7 @@ static int ceph_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> set_page_dirty(page);
> up_read(&mdsc->snap_rwsem);
> ret = VM_FAULT_LOCKED;
> + wait_on_stable_page_write(page);
> } else {
> if (ret == -ENOMEM)
> ret = VM_FAULT_OOM;
> diff --git a/fs/cifs/file.c b/fs/cifs/file.c
Cifs also self-BDI network filesystem, but
> index edb25b4..a8770bf 100644
> --- a/fs/cifs/file.c
> +++ b/fs/cifs/file.c
> @@ -2997,6 +2997,7 @@ cifs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
> struct page *page = vmf->page;
>
> lock_page(page);
It waits by locking the page, that's cifs naive way of waiting for writeback
> + wait_on_stable_page_write(page);
Instead it could do better and not override page_mkwrite at all, and all it needs
to do is call bdi_require_stable_pages() at it's own registered BDI
> return VM_FAULT_LOCKED;
> }
>
> diff --git a/fs/ocfs2/mmap.c b/fs/ocfs2/mmap.c
> index 47a87dd..a0027b1 100644
> --- a/fs/ocfs2/mmap.c
> +++ b/fs/ocfs2/mmap.c
> @@ -124,6 +124,7 @@ static int __ocfs2_page_mkwrite(struct file *file, struct buffer_head *di_bh,
> fsdata);
> BUG_ON(ret != len);
> ret = VM_FAULT_LOCKED;
> + wait_on_stable_page_write(page);
> out:
> return ret;
> }
> diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
> index 5bc7781..cb0d3aa 100644
> --- a/fs/ubifs/file.c
> +++ b/fs/ubifs/file.c
> @@ -1522,8 +1522,8 @@ static int ubifs_vm_page_mkwrite(struct vm_area_struct *vma,
> ubifs_release_dirty_inode_budget(c, ui);
> }
>
> - unlock_page(page);
> - return 0;
> + wait_on_stable_page_write(page);
ubifs has it's special ubi block device. So someone needs to call bdi_require_stable_pages()
for this to work.
I think that here too. The existing code, like cifs, calls page_lock, as a way of
waiting for writeback.
So this is certainly not finished.
> + return VM_FAULT_LOCKED;
>
> out_unlock:
> unlock_page(page);
>
Cheers
Boaz
next prev parent reply other threads:[~2012-11-01 18:43 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-01 7:58 [RFC PATCH v2 0/3] mm/fs: Implement faster stable page writes on filesystems Darrick J. Wong
2012-11-01 7:58 ` Darrick J. Wong
2012-11-01 7:58 ` [PATCH 1/3] bdi: Track users that require stable page writes Darrick J. Wong
2012-11-01 7:58 ` Darrick J. Wong
2012-11-01 13:31 ` Jan Kara
2012-11-01 13:31 ` Jan Kara
2012-11-01 13:31 ` Jan Kara
2012-11-01 18:21 ` Boaz Harrosh
2012-11-01 18:21 ` Boaz Harrosh
2012-11-01 18:21 ` Boaz Harrosh
2012-11-01 18:21 ` Boaz Harrosh
2012-11-01 18:57 ` Darrick J. Wong
2012-11-01 18:57 ` Darrick J. Wong
2012-11-01 18:57 ` Darrick J. Wong
2012-11-01 22:56 ` Boaz Harrosh
2012-11-01 22:56 ` Boaz Harrosh
2012-11-01 22:56 ` Boaz Harrosh
2012-11-01 22:56 ` Boaz Harrosh
[not found] ` <5092FE22.30906-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org>
2012-11-01 23:15 ` Jan Kara
2012-11-01 23:15 ` Jan Kara
2012-11-01 23:15 ` Jan Kara
2012-11-01 23:15 ` Jan Kara
2012-11-01 7:58 ` [PATCH 2/3] mm: Only enforce stable page writes if the backing device requires it Darrick J. Wong
2012-11-01 7:58 ` Darrick J. Wong
[not found] ` <20121101075821.16153.38301.stgit-yuuUpGxbzT9UbpRmUfBrXUB+6BGkLq7r@public.gmane.org>
2012-11-01 13:28 ` Jan Kara
2012-11-01 13:28 ` Jan Kara
2012-11-01 13:28 ` Jan Kara
2012-11-01 13:28 ` Jan Kara
2012-11-01 7:58 ` [PATCH 3/3] fs: Fix remaining filesystems to wait for stable page writeback Darrick J. Wong
2012-11-01 7:58 ` Darrick J. Wong
[not found] ` <20121101075829.16153.92036.stgit-yuuUpGxbzT9UbpRmUfBrXUB+6BGkLq7r@public.gmane.org>
2012-11-01 12:36 ` Jan Kara
2012-11-01 12:36 ` Jan Kara
2012-11-01 12:36 ` Jan Kara
2012-11-01 12:36 ` Jan Kara
2012-11-01 18:43 ` Boaz Harrosh [this message]
2012-11-01 18:43 ` Boaz Harrosh
2012-11-01 18:43 ` Boaz Harrosh
2012-11-01 18:43 ` Boaz Harrosh
2012-11-01 20:22 ` Jeff Layton
2012-11-01 20:22 ` Jeff Layton
2012-11-01 20:22 ` Jeff Layton
2012-11-01 20:22 ` Jeff Layton
2012-11-01 22:23 ` Boaz Harrosh
2012-11-01 22:23 ` Boaz Harrosh
2012-11-01 22:23 ` Boaz Harrosh
2012-11-01 22:23 ` Boaz Harrosh
2012-11-01 22:47 ` Darrick J. Wong
2012-11-01 22:47 ` Darrick J. Wong
2012-11-01 22:47 ` Darrick J. Wong
2012-11-02 0:36 ` Jeff Layton
2012-11-02 0:36 ` Jeff Layton
2012-11-02 0:36 ` Jeff Layton
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=5092C2CE.7070209@panasas.com \
--to=bharrosh@panasas.com \
--cc=adrian.hunter@intel.com \
--cc=axboe@kernel.dk \
--cc=ceph-devel@vger.kernel.org \
--cc=darrick.wong@oracle.com \
--cc=david@fromorbit.com \
--cc=dedekind1@gmail.com \
--cc=dhowells@redhat.com \
--cc=ericvh@gmail.com \
--cc=jack@suse.cz \
--cc=jlbec@evilplan.org \
--cc=linux-afs@lists.infradead.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-mtd@lists.infradead.org \
--cc=lucho@ionkov.net \
--cc=martin.petersen@oracle.com \
--cc=mfasheh@suse.com \
--cc=neilb@suse.de \
--cc=ocfs2-devel@oss.oracle.com \
--cc=rminnich@sandia.gov \
--cc=sage@inktank.com \
--cc=sfrench@samba.org \
--cc=tytso@mit.edu \
--cc=v9fs-developer@lists.sourceforge.net \
/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: link
Be 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.