GFS2: Update gfs2_get_block_type() to use rbm
authorSteven Whitehouse <swhiteho@redhat.com>
Fri, 3 Aug 2012 10:10:30 +0000 (11:10 +0100)
committerSteven Whitehouse <swhiteho@redhat.com>
Mon, 24 Sep 2012 09:46:59 +0000 (10:46 +0100)
Use the new gfs2_rbm_from_block() function to replace an open
coded version of the same code.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/rgrp.c

index bd3b926949d0fcef673ef17d25b130fee72b2943..0c1be38f8370faed0fb3647aeee87694f5f5efe3 100644 (file)
@@ -1824,27 +1824,14 @@ void gfs2_inplace_release(struct gfs2_inode *ip)
 
 static unsigned char gfs2_get_block_type(struct gfs2_rgrpd *rgd, u64 block)
 {
-       struct gfs2_bitmap *bi = NULL;
-       u32 length, rgrp_block, buf_block;
-       unsigned int buf;
-       unsigned char type;
-
-       length = rgd->rd_length;
-       rgrp_block = block - rgd->rd_data0;
-
-       for (buf = 0; buf < length; buf++) {
-               bi = rgd->rd_bits + buf;
-               if (rgrp_block < (bi->bi_start + bi->bi_len) * GFS2_NBBY)
-                       break;
-       }
-
-       gfs2_assert(rgd->rd_sbd, buf < length);
-       buf_block = rgrp_block - bi->bi_start * GFS2_NBBY;
+       struct gfs2_rbm rbm = { .rgd = rgd, };
+       int ret;
 
-       type = gfs2_testbit(rgd, bi->bi_bh->b_data + bi->bi_offset,
-                          bi->bi_len, buf_block);
+       ret = gfs2_rbm_from_block(&rbm, block);
+       WARN_ON_ONCE(ret != 0);
 
-       return type;
+       return gfs2_testbit(rgd, rbm.bi->bi_bh->b_data + rbm.bi->bi_offset,
+                           rbm.bi->bi_len, rbm.offset);
 }