On Tue, 2017-05-23 at 17:54 +0800, Yan, Zheng wrote: > Ceph needs to flush dirty page in the order in which in which snap > context they belong to. Dirty pages belong to older snap context > should be flushed earlier. writepage_nounlock() can not flush a > page, it should redirty the page. > > Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > Signed-off-by: "Yan, Zheng" <zyan@xxxxxxxxxx> > --- > fs/ceph/addr.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c > index ff25239..1880125 100644 > --- a/fs/ceph/addr.c > +++ b/fs/ceph/addr.c > @@ -551,8 +551,9 @@ static int writepage_nounlock(struct page *page, struct writeback_control *wbc) > dout("writepage %p page %p snapc %p not writeable - noop\n", > inode, page, snapc); > /* we should only noop if called by kswapd */ > - WARN_ON((current->flags & PF_MEMALLOC) == 0); > + WARN_ON(!(current->flags & PF_MEMALLOC)); > ceph_put_snap_context(oldest); > + redirty_page_for_writepage(wbc, page); > goto out; > } > ceph_put_snap_context(oldest); Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html