diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c index f7c972fbed6ae08666d52c762f3f23b49d927965..0a6426e4568f4c61a1fddbdd1c8ec7ec69e45f0e 100644 --- a/fs/ocfs2/suballoc.c +++ b/fs/ocfs2/suballoc.c @@ -1266,12 +1266,14 @@ static int ocfs2_test_bg_bit_allocatable(struct buffer_head *bg_bh, int nr) { struct ocfs2_group_desc *bg = (struct ocfs2_group_desc *) bg_bh->b_data; + struct journal_head *jh; int ret; if (ocfs2_test_bit(nr, (unsigned long *)bg->bg_bitmap)) return 0; - if (!buffer_jbd(bg_bh)) + jh = jbd2_journal_grab_journal_head(bg_bh); + if (!jh) return 1; jbd_lock_bh_state(bg_bh); @@ -1282,6 +1284,8 @@ static int ocfs2_test_bg_bit_allocatable(struct buffer_head *bg_bh, ret = 1; jbd_unlock_bh_state(bg_bh); + jbd2_journal_put_journal_head(jh); + return ret; }