aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2017-03-16 12:27:49 -0400
committerDavid Howells <dhowells@redhat.com>2017-03-16 12:29:30 -0400
commit65a151094edeb04e8f5f6f1502028e2383e81bb8 (patch)
treee1c79de194d66e4f6c065c54d6e198c0c68ef98c
parent954cd6dc02a65065aecb7150962c0870c5b0e322 (diff)
afs: ->writepage() shouldn't call clear_page_dirty_for_io()
The ->writepage() op shouldn't call clear_page_dirty_for_io() as that has already been called by the caller. Fix afs_writepage() by moving the call out of afs_write_back_from_locked_page() to afs_writepages_region() where it is needed. Signed-off-by: David Howells <dhowells@redhat.com>
-rw-r--r--fs/afs/write.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/afs/write.c b/fs/afs/write.c
index 134de0667898..e5f150bccfb5 100644
--- a/fs/afs/write.c
+++ b/fs/afs/write.c
@@ -231,7 +231,7 @@ flush_conflicting_wb:
231 if (wb->state == AFS_WBACK_PENDING) 231 if (wb->state == AFS_WBACK_PENDING)
232 wb->state = AFS_WBACK_CONFLICTING; 232 wb->state = AFS_WBACK_CONFLICTING;
233 spin_unlock(&vnode->writeback_lock); 233 spin_unlock(&vnode->writeback_lock);
234 if (PageDirty(page)) { 234 if (clear_page_dirty_for_io(page)) {
235 ret = afs_write_back_from_locked_page(wb, page); 235 ret = afs_write_back_from_locked_page(wb, page);
236 if (ret < 0) { 236 if (ret < 0) {
237 afs_put_writeback(candidate); 237 afs_put_writeback(candidate);
@@ -353,8 +353,6 @@ static int afs_write_back_from_locked_page(struct afs_writeback *wb,
353 _enter(",%lx", primary_page->index); 353 _enter(",%lx", primary_page->index);
354 354
355 count = 1; 355 count = 1;
356 if (!clear_page_dirty_for_io(primary_page))
357 BUG();
358 if (test_set_page_writeback(primary_page)) 356 if (test_set_page_writeback(primary_page))
359 BUG(); 357 BUG();
360 358
@@ -542,6 +540,8 @@ static int afs_writepages_region(struct address_space *mapping,
542 wb->state = AFS_WBACK_WRITING; 540 wb->state = AFS_WBACK_WRITING;
543 spin_unlock(&wb->vnode->writeback_lock); 541 spin_unlock(&wb->vnode->writeback_lock);
544 542
543 if (!clear_page_dirty_for_io(page))
544 BUG();
545 ret = afs_write_back_from_locked_page(wb, page); 545 ret = afs_write_back_from_locked_page(wb, page);
546 unlock_page(page); 546 unlock_page(page);
547 put_page(page); 547 put_page(page);