From 2b69c8280c8b29cdeb78b8e92e20ed35f730d319 Mon Sep 17 00:00:00 2001 From: Jeff Layton Date: Wed, 5 Jul 2017 15:26:48 -0400 Subject: mm: drop "wait" parameter from write_one_page() The callers all set it to 1. Also, make it clear that this function will not set any sort of AS_* error, and that the caller must do so if necessary. No existing caller uses this on normal files, so none of them need it. Also, add __must_check here since, in general, the callers need to handle an error here in some fashion. Link: http://lkml.kernel.org/r/20170525103303.6524-1-jlayton@redhat.com Signed-off-by: Jeff Layton Reviewed-by: Ross Zwisler Reviewed-by: Jan Kara Reviewed-by: Matthew Wilcox Reviewed-by: Christoph Hellwig Signed-off-by: Andrew Morton --- fs/jfs/jfs_metapage.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'fs/jfs') diff --git a/fs/jfs/jfs_metapage.c b/fs/jfs/jfs_metapage.c index 489aaa1403e5..744fa3c079e6 100644 --- a/fs/jfs/jfs_metapage.c +++ b/fs/jfs/jfs_metapage.c @@ -711,7 +711,7 @@ void force_metapage(struct metapage *mp) get_page(page); lock_page(page); set_page_dirty(page); - write_one_page(page, 1); + write_one_page(page); clear_bit(META_forcewrite, &mp->flag); put_page(page); } @@ -756,7 +756,7 @@ void release_metapage(struct metapage * mp) set_page_dirty(page); if (test_bit(META_sync, &mp->flag)) { clear_bit(META_sync, &mp->flag); - write_one_page(page, 1); + write_one_page(page); lock_page(page); /* write_one_page unlocks the page */ } } else if (mp->lsn) /* discard_metapage doesn't remove it */ -- cgit v1.2.3 From 11ab83190828cb7b2cbb26467f2eecf74f0214c3 Mon Sep 17 00:00:00 2001 From: Dave Kleikamp Date: Wed, 5 Jul 2017 15:26:49 -0400 Subject: JFS: do not ignore return code from write_one_page() There are a couple places where jfs calls write_one_page() where clean recovery is not possible. In these cases, the file system should be marked dirty. To do this, it is now necessary to store the superblock in the metapage structure. Link: http://lkml.kernel.org/r/db45ab67-55c7-08ff-6776-f76b3bf5cbf5@oracle.com Signed-off-by: Dave Kleikamp Cc: Jeff Layton Cc: Ross Zwisler Cc: Jan Kara Cc: Matthew Wilcox Cc: Christoph Hellwig Cc: Stephen Rothwell Signed-off-by: Andrew Morton Signed-off-by: Jeff Layton --- fs/jfs/jfs_metapage.c | 7 +++++-- fs/jfs/jfs_metapage.h | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'fs/jfs') diff --git a/fs/jfs/jfs_metapage.c b/fs/jfs/jfs_metapage.c index 744fa3c079e6..7cc1c85f4508 100644 --- a/fs/jfs/jfs_metapage.c +++ b/fs/jfs/jfs_metapage.c @@ -664,6 +664,7 @@ struct metapage *__get_metapage(struct inode *inode, unsigned long lblock, INCREMENT(mpStat.pagealloc); mp = alloc_metapage(GFP_NOFS); mp->page = page; + mp->sb = inode->i_sb; mp->flag = 0; mp->xflag = COMMIT_PAGE; mp->count = 1; @@ -711,7 +712,8 @@ void force_metapage(struct metapage *mp) get_page(page); lock_page(page); set_page_dirty(page); - write_one_page(page); + if (write_one_page(page)) + jfs_error(mp->sb, "write_one_page() failed\n"); clear_bit(META_forcewrite, &mp->flag); put_page(page); } @@ -756,7 +758,8 @@ void release_metapage(struct metapage * mp) set_page_dirty(page); if (test_bit(META_sync, &mp->flag)) { clear_bit(META_sync, &mp->flag); - write_one_page(page); + if (write_one_page(page)) + jfs_error(mp->sb, "write_one_page() failed\n"); lock_page(page); /* write_one_page unlocks the page */ } } else if (mp->lsn) /* discard_metapage doesn't remove it */ diff --git a/fs/jfs/jfs_metapage.h b/fs/jfs/jfs_metapage.h index a869fb4a20d6..8b0ee514eb84 100644 --- a/fs/jfs/jfs_metapage.h +++ b/fs/jfs/jfs_metapage.h @@ -38,6 +38,7 @@ struct metapage { /* implementation */ struct page *page; + struct super_block *sb; unsigned int logical_size; /* Journal management */ -- cgit v1.2.3