From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752981AbbGENkx (ORCPT ); Sun, 5 Jul 2015 09:40:53 -0400 Received: from mout.web.de ([212.227.17.12]:63901 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751236AbbGENkp (ORCPT ); Sun, 5 Jul 2015 09:40:45 -0400 Message-ID: <559933D1.7010102@users.sourceforge.net> Date: Sun, 05 Jul 2015 15:40:33 +0200 From: SF Markus Elfring User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Joel Becker , Mark Fasheh , ocfs2-devel@oss.oracle.com CC: LKML , kernel-janitors@vger.kernel.org, Julia Lawall Subject: [PATCH 10/11] ocfs2: Less function calls in ocfs2_replay_journal() after error detection References: <5307CAA2.8060406@users.sourceforge.net> <530A086E.8010901@users.sourceforge.net> <530A72AA.3000601@users.sourceforge.net> <530B5FB6.6010207@users.sourceforge.net> <530C5E18.1020800@users.sourceforge.net> <530CD2C4.4050903@users.sourceforge.net> <530CF8FF.8080600@users.sourceforge.net> <530DD06F.4090703@users.sourceforge.net> <5317A59D.4@users.sourceforge.net> <5455FC05.4010606@users.sourceforge.net> <55992DF0.5030205@users.sourceforge.net> In-Reply-To: <55992DF0.5030205@users.sourceforge.net> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:NhT4zSepVBfa/IeOXzsiIIkOdU2iZxmRY0UNet/1Y0wtQ4MslOo KOhkIIob5Rj1tOufZw59ioZtjHq0KvlFsG3BiSTZQOItZJH6tvH2MGC4UZUYNqVMpwJdBI/ rMooUdrQqaFhZ0omPXpXnhNcgkuKS8JB/Q8sgCZ3CY9tbKhmtrWcKyR8IvDBXPHHhZB4inH xHMKomRO262VX6oIkfw/A== X-UI-Out-Filterresults: notjunk:1;V01:K0:earUPTYin5g=:x6Xq3ZZ1N84ccnDKsolDvd BD352gv4jycVD6KzV+kstXkD8h9fwQo36ln+2dxAD9C2kor+SOXlq3qruDM2jwRK13akojBHK XLNGgzarlT38+uFdRgjd181L8cpFBINRVU9Y/5pUn2kEbJSn/C+trEdjPS7BMAL+rDECaHJhK 8rgnBwzaDI17J/lmqVBYyMeJvE/IHRQZVEifQrd0W+E3F/y2oWjUpDHRN4U64PvVejmXEYfCO agTMM0kt39k1bh46YMoNJDfr7e4UpXBS3THedGIkM1kTZTY4WbjvkR2rEY4WhmX1k7YyOTW5r 2mKCU2CesN0k8hra2Pj8lvM1NS0qaX2pvNIChg84yY3uPJPCewUl2g+jowdQPA7t3vIZKaAp7 WQVHLqHsLs3nqs0sK062KBVI9zOTgX7id+d0L9AeifhQIVoCWkyymm85/chbxocYkqAPC2dBz 7AjJbag8zizctfix78bNnMW0kmQkJklKZWC+QANYsf7p7glC1PJ08bRJCSx/8b5EdWyx/riCE VqQpZKvAn0rJjr4Y+8y0syVbH5A5DANbX138bXhUwki7np0DghZPx9eU+wdhkz+hx6CZqB+w+ GBJ8kn4RwSvyDq8Ep/+UopenOyvX+lqsFZ0hqruRPAafzpcFRP6d/JUXs5c7Vj/vW2MatcaQ6 5bEc/xrdxUNcT4T7Xmd1CwUP4cgq85jPCneqwhWkdZvgEP0A+L9yZQsQeiPXt9wlz1QA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Sun, 5 Jul 2015 12:23:37 +0200 The functions brelse() and iput() were called in one case by the ocfs2_replay_journal() function during error handling even if the passed variables contained still a pointer which did not refer to valid data. * Return directly if a call of the ocfs2_read_journal_inode() function failed at the beginning. * Rename jump labels according to the Linux coding style convention. * Delete the variable "got_lock" then. Signed-off-by: Markus Elfring --- fs/ocfs2/journal.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index c343e36..7bb50f4 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c @@ -1544,7 +1544,6 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb, int slot_num) { int status; - int got_lock = 0; unsigned int flags; struct inode *inode = NULL; struct ocfs2_dinode *fe; @@ -1555,7 +1554,7 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb, status = ocfs2_read_journal_inode(osb, slot_num, &bh, &inode); if (status) { mlog_errno(status); - goto done; + return status; } fe = (struct ocfs2_dinode *)bh->b_data; @@ -1576,7 +1575,7 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb, osb->slot_recovery_generations[slot_num], slot_reco_gen); osb->slot_recovery_generations[slot_num] = slot_reco_gen; status = -EBUSY; - goto done; + goto put_inode; } /* Continue with recovery as the journal has not yet been recovered */ @@ -1586,9 +1585,8 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb, trace_ocfs2_replay_journal_lock_err(status); if (status != -ERESTARTSYS) mlog(ML_ERROR, "Could not lock journal!\n"); - goto done; + goto put_inode; } - got_lock = 1; fe = (struct ocfs2_dinode *) bh->b_data; @@ -1599,7 +1597,7 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb, trace_ocfs2_replay_journal_skip(node_num); /* Refresh recovery generation for the slot */ osb->slot_recovery_generations[slot_num] = slot_reco_gen; - goto done; + goto unlock_inode; } /* we need to run complete recovery for offline orphan slots */ @@ -1614,14 +1612,14 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb, status = ocfs2_force_read_journal(inode); if (status < 0) { mlog_errno(status); - goto done; + goto unlock_inode; } journal = jbd2_journal_init_inode(inode); if (journal == NULL) { mlog(ML_ERROR, "Linux journal layer error\n"); status = -EIO; - goto done; + goto unlock_inode; } status = jbd2_journal_load(journal); @@ -1630,7 +1628,7 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb, if (!igrab(inode)) BUG(); jbd2_journal_destroy(journal); - goto done; + goto unlock_inode; } ocfs2_clear_journal_error(osb->sb, journal, slot_num); @@ -1665,11 +1663,10 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb, printk(KERN_NOTICE "ocfs2: End replay journal (node %d, slot %d) on "\ "device (%u,%u)\n", node_num, slot_num, MAJOR(osb->sb->s_dev), MINOR(osb->sb->s_dev)); -done: +unlock_inode: /* drop the lock on this nodes journal */ - if (got_lock) - ocfs2_inode_unlock(inode, 1); - + ocfs2_inode_unlock(inode, 1); +put_inode: iput(inode); brelse(bh); -- 2.4.5