From ae8d398bdc16c76451ebf108a2ead3e83d35ce89 Mon Sep 17 00:00:00 2001 From: Steven Whitehouse Date: Tue, 2 Aug 2011 13:13:20 +0100 Subject: [PATCH] --- yaml --- r: 269992 b: refs/heads/master c: 1d4ec642d9f00d4c531b1a4ae0613091ec1f8e9b h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/gfs2/super.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 105089dc9990..f06800319cb1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 75549186edf1515062fe2fcbfbd92bd99659afba +refs/heads/master: 1d4ec642d9f00d4c531b1a4ae0613091ec1f8e9b diff --git a/trunk/fs/gfs2/super.c b/trunk/fs/gfs2/super.c index b7beadd9ba4c..afb87615c014 100644 --- a/trunk/fs/gfs2/super.c +++ b/trunk/fs/gfs2/super.c @@ -768,30 +768,30 @@ static int gfs2_write_inode(struct inode *inode, struct writeback_control *wbc) goto do_flush; unlock_required = 1; } - ret = gfs2_trans_begin(sdp, RES_DINODE, 0); - if (ret) - goto do_unlock; ret = gfs2_meta_inode_buffer(ip, &bh); if (ret == 0) { di = (struct gfs2_dinode *)bh->b_data; atime.tv_sec = be64_to_cpu(di->di_atime); atime.tv_nsec = be32_to_cpu(di->di_atime_nsec); if (timespec_compare(&inode->i_atime, &atime) > 0) { - gfs2_trans_add_bh(ip->i_gl, bh, 1); - gfs2_dinode_out(ip, bh->b_data); + ret = gfs2_trans_begin(sdp, RES_DINODE, 0); + if (ret == 0) { + gfs2_trans_add_bh(ip->i_gl, bh, 1); + gfs2_dinode_out(ip, bh->b_data); + gfs2_trans_end(sdp); + } } brelse(bh); } - gfs2_trans_end(sdp); -do_unlock: if (unlock_required) gfs2_glock_dq_uninit(&gh); do_flush: if (wbc->sync_mode == WB_SYNC_ALL) gfs2_log_flush(GFS2_SB(inode), ip->i_gl); - filemap_fdatawrite(metamapping); if (bdi->dirty_exceeded) gfs2_ail1_flush(sdp, wbc); + else + filemap_fdatawrite(metamapping); if (!ret && (wbc->sync_mode == WB_SYNC_ALL)) ret = filemap_fdatawait(metamapping); if (ret)