From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1948656AbdE0BPC (ORCPT ); Fri, 26 May 2017 21:15:02 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:24999 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S944937AbdEZUt2 (ORCPT ); Fri, 26 May 2017 16:49:28 -0400 Subject: Re: [PATCH] JFS: do not ignore return code from write_one_page() From: Dave Kleikamp To: Andrew Morton Cc: Jeff Layton , Stephen Rothwell , Linux-Next Mailing List , Linux Kernel Mailing List , Ross Zwisler , Jan Kara , Matthew Wilcox , Christoph Hellwig References: <20170526124324.058c3d2a@canb.auug.org.au> <1495793788.2926.4.camel@redhat.com> Message-ID: <6a709681-3f25-b4b7-4eb3-942f86e712d5@oracle.com> Date: Fri, 26 May 2017 15:48:51 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Source-IP: userv0021.oracle.com [156.151.31.71] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Andrew, Do you want to pick this up into akpm-current? I could push it through the jfs tree, but without the change to write_one_page(), my version of the patch would need a manual merge. It'd be a simple one, so maybe that's not a big deal. Thanks, Shaggy On 05/26/2017 03:45 PM, Dave Kleikamp wrote: > 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. > > Signed-off-by: Dave Kleikamp > --- > fs/jfs/jfs_metapage.c | 7 +++++-- > fs/jfs/jfs_metapage.h | 1 + > 2 files changed, 6 insertions(+), 2 deletions(-) > > 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 */ >