aboutsummaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/gfs2/glock.c12
-rw-r--r--fs/gfs2/inode.c2
-rw-r--r--fs/gfs2/ops_inode.c1
-rw-r--r--fs/gfs2/page.c3
4 files changed, 7 insertions, 11 deletions
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index 7f362d0c3f7..0381d4cc414 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -1965,19 +1965,13 @@ static int examine_bucket(glock_examiner examiner, struct gfs2_sbd *sdp,
static void scan_glock(struct gfs2_glock *gl)
{
if (gfs2_glmutex_trylock(gl)) {
- if (gl->gl_ops == &gfs2_inode_glops) {
- struct gfs2_inode *ip = gl->gl_object;
- if (ip == NULL) {
- struct gfs2_sbd *sdp = gl->gl_sbd;
- gfs2_assert_withdraw(sdp, gl->gl_state == LM_ST_UNLOCKED);
- goto out_schedule;
- }
- }
+ if (gl->gl_ops == &gfs2_inode_glops)
+ goto out;
if (queue_empty(gl, &gl->gl_holders) &&
gl->gl_state != LM_ST_UNLOCKED &&
demote_ok(gl))
goto out_schedule;
-
+out:
gfs2_glmutex_unlock(gl);
}
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index 6499c4f9107..f4c48395208 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -325,6 +325,7 @@ int gfs2_change_nlink(struct gfs2_inode *ip, int diff)
uint32_t nlink;
int error;
+ BUG_ON(ip->i_di.di_nlink != ip->i_inode.i_nlink);
nlink = ip->i_di.di_nlink + diff;
/* If we are reducing the nlink count, but the new value ends up being
@@ -341,6 +342,7 @@ int gfs2_change_nlink(struct gfs2_inode *ip, int diff)
ip->i_di.di_nlink = nlink;
ip->i_di.di_ctime = get_seconds();
+ ip->i_inode.i_nlink = nlink;
gfs2_trans_add_bh(ip->i_gl, dibh, 1);
gfs2_dinode_out(&ip->i_di, dibh->b_data);
diff --git a/fs/gfs2/ops_inode.c b/fs/gfs2/ops_inode.c
index 8895baafc64..caecafe0469 100644
--- a/fs/gfs2/ops_inode.c
+++ b/fs/gfs2/ops_inode.c
@@ -250,6 +250,7 @@ out:
gfs2_holder_uninit(ghs + 1);
if (!error) {
+ atomic_inc(&inode->i_count);
d_instantiate(dentry, inode);
mark_inode_dirty(inode);
}
diff --git a/fs/gfs2/page.c b/fs/gfs2/page.c
index a8165a693b5..b93caf294b9 100644
--- a/fs/gfs2/page.c
+++ b/fs/gfs2/page.c
@@ -256,8 +256,7 @@ void gfs2_page_add_databufs(struct gfs2_inode *ip, struct page *page,
struct buffer_head *bh;
unsigned int start, end;
- for (bh = head, start = 0;
- bh != head || !start;
+ for (bh = head, start = 0; bh != head || !start;
bh = bh->b_this_page, start = end) {
end = start + bsize;
if (end <= from || start >= to)