From: Xiubo Li Date: Sun, 24 Apr 2022 09:35:53 +0000 (+0800) Subject: ceph: redirty the page for wirtepage if fails X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=adfd6da2be304900011d841b6c09f18e3892d3e8;p=ceph-client.git ceph: redirty the page for wirtepage if fails When run out of memories we should redirty the page before failing the writepage. Or we will hit BUG_ON(folio_get_private(folio)) in ceph_dirty_folio(). URL: https://tracker.ceph.com/issues/55421 Reviewed-by: Jeff Layton Signed-off-by: Xiubo Li --- diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 261bc8bb2ab8..656bc0ca7a78 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -606,8 +606,10 @@ static int writepage_nounlock(struct page *page, struct writeback_control *wbc) CEPH_OSD_OP_WRITE, CEPH_OSD_FLAG_WRITE, snapc, ceph_wbc.truncate_seq, ceph_wbc.truncate_size, true); - if (IS_ERR(req)) + if (IS_ERR(req)) { + redirty_page_for_writepage(wbc, page); return PTR_ERR(req); + } set_page_writeback(page); if (caching)