ceph: redirty page when writepage_nounlock() skips unwritable page
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. if writepage_nounlock() can not flush a page, it should redirty the page. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: "Yan, Zheng" <zyan@redhat.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
f2b0c45f09
commit
fa71fefb30
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue