Skip to contentSkip to conversation

sb_read problem in hpfs

PATCH In review Chris Mason 2 participants 2 messages Feb 20, 2002 Hpfs filesystem

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sb_read problem in hpfs

Hi guys,

hpfs_read_super triggers calls to sb_bread (through hpfs_map_sector) before setting s_blocksize. This leads to a BUG() in grow_buffers.

This patch was tested lightly, hpfs_read_super completes properly when an hpfs FS is not present.

-chris

fs/hpfs/super.c Tue, 19 Feb 2002 22:28:37 -0500 renamed from fs/hpfs/super.c Tue, 19 Feb 2002 08:55:47 -0500 +2 -2
@@ -410,6 +410,8 @@
 	/*s->s_hpfs_mounting = 1;*/
 	dev = s->s_dev;
 	set_blocksize(dev, 512);
+	s->s_blocksize = 512;
+	s->s_blocksize_bits = 9;
 	s->s_hpfs_fs_size = -1;
 	if (!(bootblock = hpfs_map_sector(s, 0, &bh0, 0))) goto bail1;
 	if (!(superblock = hpfs_map_sector(s, 16, &bh1, 1))) goto bail2;
@@ -436,8 +438,6 @@
 
 	/* Fill superblock stuff */
 	s->s_magic = HPFS_SUPER_MAGIC;
-	s->s_blocksize = 512;
-	s->s_blocksize_bits = 9;
 	s->s_op = &hpfs_sops;
 
 	s->s_hpfs_root = superblock->root;
#1 lore raw
Quoted 5 lines · Chris Mason

Hi guys,

hpfs_read_super triggers calls to sb_bread (through hpfs_map_sector) before setting s_blocksize. This leads to a BUG() in grow_buffers.

Fsck. Merge problems when backporting to 2.4 - thanks for spotting. Yes, patch is correct. I'll look through the rest of thing and see what else is missing.

Quoted 27 lines

This patch was tested lightly, hpfs_read_super completes properly when an hpfs FS is not present.

(quoted diff) +0 -1
-chris
fs/hpfs/super.c Tue, 19 Feb 2002 22:28:37 -0500 renamed from fs/hpfs/super.c Tue, 19 Feb 2002 08:55:47 -0500 +2 -2
@@ -410,6 +410,8 @@
 	/*s->s_hpfs_mounting = 1;*/
 	dev = s->s_dev;
 	set_blocksize(dev, 512);
+	s->s_blocksize = 512;
+	s->s_blocksize_bits = 9;
 	s->s_hpfs_fs_size = -1;
 	if (!(bootblock = hpfs_map_sector(s, 0, &bh0, 0))) goto bail1;
 	if (!(superblock = hpfs_map_sector(s, 16, &bh1, 1))) goto bail2;
@@ -436,8 +438,6 @@
 
 	/* Fill superblock stuff */
 	s->s_magic = HPFS_SUPER_MAGIC;
-	s->s_blocksize = 512;
-	s->s_blocksize_bits = 9;
 	s->s_op = &hpfs_sops;
 
 	s->s_hpfs_root = superblock->root;