summaryrefslogtreecommitdiffstats
path: root/fs/gfs2/super.c
diff options
context:
space:
mode:
authorSrinivasa Ds <srinivasa@in.ibm.com>2006-11-30 15:04:55 +0530
committerSteven Whitehouse <swhiteho@redhat.com>2006-11-30 10:37:36 -0500
commit0da3585e1ef650d3224b4d6f9799558d1d99fa1e (patch)
tree4261980ac1afe51fe2e017f60d50f73d646e0296 /fs/gfs2/super.c
parent77386e1f662f104680da7885d32e068e4b11b882 (diff)
downloadlinux-0da3585e1ef650d3224b4d6f9799558d1d99fa1e.tar.gz
linux-0da3585e1ef650d3224b4d6f9799558d1d99fa1e.tar.bz2
linux-0da3585e1ef650d3224b4d6f9799558d1d99fa1e.zip
[GFS2] Mount problem with the GFS2 code
While mounting the gfs2 filesystem,our test team had a problem and we got this error message. ======================================================= GFS2: fsid=: Trying to join cluster "lock_nolock", "dasde1" GFS2: fsid=dasde1.0: Joined cluster. Now mounting FS... GFS2: not a GFS2 filesystem GFS2: fsid=dasde1.0: can't read superblock: -22 ========================================================================== On debugging further we found that problem is while reading the super block(gfs2_read_super) and comparing the magic number in it. When I replace the submit_bio() call(present in gfs2_read_super) with the sb_getblk() and ll_rw_block(), mount operation succeded. On further analysis we found that before calling submit_bio(), bio->bi_sector was set to "sector" variable. This "sector" variable has the same value of bh->b_blocknr(block number). Hence there is a need to multiply this valuwith (blocksize >> 9)(9 because,sector size 2^9,samething happens in ll_rw_block also, before calling submit_bio()). So I have developed the patch which solves this problem. Please let me know your comments. ================================================================ Signed-off-by: Srinivasa DS <srinivasa@in.ibm.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/super.c')
-rw-r--r--fs/gfs2/super.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index 1408c5f31379..3b2272742796 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -199,7 +199,7 @@ struct page *gfs2_read_super(struct super_block *sb, sector_t sector)
return NULL;
}
- bio->bi_sector = sector;
+ bio->bi_sector = sector * (sb->s_blocksize >> 9);
bio->bi_bdev = sb->s_bdev;
bio_add_page(bio, page, PAGE_SIZE, 0);