X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fllite%2Frw.c;h=2243aab4c1a3623f8ecf85464911ecaebe5119ac;hp=065fbc7eeab000a1eb7a82d48e7f54ff72a674d7;hb=c5361360e51de22a59d4427327bddf9fd398f352;hpb=8d935e6d3137bc4678ca2f22c1a30d34474cf677 diff --git a/lustre/llite/rw.c b/lustre/llite/rw.c index 065fbc7..2243aab 100644 --- a/lustre/llite/rw.c +++ b/lustre/llite/rw.c @@ -1130,7 +1130,7 @@ out_unlock: return; } -int ll_writepage(struct page *vmpage, struct writeback_control *unused) +int ll_writepage(struct page *vmpage, struct writeback_control *wbc) { struct inode *inode = vmpage->mapping->host; struct lu_env *env; @@ -1177,21 +1177,18 @@ int ll_writepage(struct page *vmpage, struct writeback_control *unused) cl_2queue_init_page(queue, page); result = cl_io_submit_rw(env, io, CRT_WRITE, queue, CRP_NORMAL); - cl_page_list_disown(env, io, &queue->c2_qin); if (result != 0) { /* - * There is no need to clear PG_writeback, as - * cl_io_submit_rw() calls completion callback - * on failure. - */ - /* * Re-dirty page on error so it retries write, * but not in case when IO has actually * occurred and completed with an error. */ - if (!PageError(vmpage)) - set_page_dirty(vmpage); + if (!PageError(vmpage)) { + redirty_page_for_writepage(wbc, vmpage); + result = 0; + } } + cl_page_list_disown(env, io, &queue->c2_qin); LASSERT(!cl_page_is_owned(page, io)); lu_ref_del(&page->cp_reference, "writepage", cfs_current());