Skip to contentSkip to conversation

2.5.67-mm1

DISCUSSION Alistair Strachan 3 participants 6 messages Apr 8, 2003 – Apr 9, 2003

lore
Share & tools
lore
#0 lore raw

Hi,

Quoted 6 lines

. sparc64 is now using gcc-3.x, so there is a patch here to make
gcc-2.95 the minimum required version.

. A few rmap-speedup patches reduce the rmap CPU tax by 25-30% on a P4

. Various other cleaups, speedups and fixups.

On attempting to boot this kernel, I get the following just before init:

Kernel panic: VFS: Unable to mount root fs on 03:05

2.5.67 base works fine. I discovered that reverting the following patches allows me to boot. I can increase the granularity of my search if nothing comes immediately to mind:

aggregated-disk-stats.patch
dynamic-hd_struct-allocation-fixes.patch
dynamic-hd_struct-allocation.patch

I reverted the aggregated-xx patch because it depends on the dynamic hd_struct work in a single line;

+ struct hd_struct *hd = gp->part[n];

Therefore it may not be this patch that is the source of the problem, but I backed it out anyway.

Cheers,
Alistair Strachan.

#1 lore raw
Quoted 4 lines · Alistair Strachan

On attempting to boot this kernel, I get the following just before init:

Kernel panic: VFS: Unable to mount root fs on 03:05
Quoted 8 lines

2.5.67 base works fine. I discovered that reverting the following patches allows me to boot. I can increase the granularity of my search if nothing comes immediately to mind:

aggregated-disk-stats.patch
dynamic-hd_struct-allocation-fixes.patch
dynamic-hd_struct-allocation.patch

Ah, good detective work, thanks. It looks like the hd_struct dynamic allocation patch has broken devfs partition discovery somehow.

#2 lore raw
Quoted 8 lines · Andrew Morton
Quoted 7 lines · Alistair Strachan

On attempting to boot this kernel, I get the following just before init:

Kernel panic: VFS: Unable to mount root fs on 03:05

2.5.67 base works fine. I discovered that reverting the following patches allows me to boot. I can increase the granularity of my search if nothing comes immediately to mind:

Quoted 6 lines
Quoted 3 lines

aggregated-disk-stats.patch
dynamic-hd_struct-allocation-fixes.patch
dynamic-hd_struct-allocation.patch

Ah, good detective work, thanks. It looks like the hd_struct dynamic allocation patch has broken devfs partition discovery somehow.

Thanks.. I am going to look now. Must have broken something in devfs.

- Badari

#3 lore raw

Hi,

Quoted 8 lines · Badari Pulavarty
Quoted 3 lines · Andrew Morton

Ah, good detective work, thanks. It looks like the hd_struct dynamic allocation patch has broken devfs partition discovery somehow.

Thanks.. I am going to look now. Must have broken something in devfs.

- Badari

Sorry for the delay, I've only just woken up. I applied the patch, it wouldn't compile, you missed the following (I think obvious) chunk:

fs/partitions/check.c 2003-04-09 07:51:26 +0100 renamed from fs/partitions/check.c.old 2003-04-09 07:49:29 +0100 +1 -1
@@ -160,7 +160,7 @@
 {
 #ifdef CONFIG_DEVFS_FS
        devfs_handle_t dir;
-       struct hd_struct *p = dev->part;
+       struct hd_struct **p = dev->part;
        char devname[16];
 
        if (p[part-1]->de)

With that in place, it compiled without warning and the machine now boots with the dynamic hd_struct work + aggregate stats patch.

Thanks for your time.

Cheers,
Alistair.

#4 lore raw
Quoted 16 lines · Alistair Strachan

Sorry for the delay, I've only just woken up. I applied the patch, it wouldn't compile, you missed the following (I think obvious) chunk:

fs/partitions/check.c 2003-04-09 07:51:26 +0100 renamed from fs/partitions/check.c.old 2003-04-09 07:49:29 +0100 +1 -1
@@ -160,7 +160,7 @@
 {
 #ifdef CONFIG_DEVFS_FS
        devfs_handle_t dir;
-       struct hd_struct *p = dev->part;
+       struct hd_struct **p = dev->part;
        char devname[16];
 
        if (p[part-1]->de)
Quoted 4 lines

With that in place, it compiled without warning and the machine now boots with the dynamic hd_struct work + aggregate stats patch.

Thanks for your time.

Thank you for testing it with devfs.

- Badari

#5 lore raw
In reply to Andrew Morton
Quoted 8 lines · Andrew Morton
Quoted 7 lines · Alistair Strachan

On attempting to boot this kernel, I get the following just before init:

Kernel panic: VFS: Unable to mount root fs on 03:05

2.5.67 base works fine. I discovered that reverting the following patches allows me to boot. I can increase the granularity of my search if nothing comes immediately to mind:

Quoted 6 lines
Quoted 3 lines

aggregated-disk-stats.patch
dynamic-hd_struct-allocation-fixes.patch
dynamic-hd_struct-allocation.patch

Ah, good detective work, thanks. It looks like the hd_struct dynamic allocation patch has broken devfs partition discovery somehow.

Okay !! My bad.

Here is the patch for 2.5.67-mm1. Could you try and let me know ?

Thanks,
Badari

fs/partitions/check.c +4 -5
@@ -163,13 +163,13 @@ static void devfs_register_partition(str
 	struct hd_struct *p = dev->part;
 	char devname[16];
 
-	if (p[part-1].de)
+	if (p[part-1]->de)
 		return;
 	dir = dev->de;
 	if (!dir)
 		return;
 	sprintf(devname, "part%d", part);
-	p[part-1].de = devfs_register (dir, devname, 0,
+	p[part-1]->de = devfs_register (dir, devname, 0,
 				    dev->major, dev->first_minor + part,
 				    S_IFBLK | S_IRUSR | S_IWUSR,
 				    dev->fops, NULL);
@@ -281,14 +281,13 @@ void add_partition(struct gendisk *disk,
 	memset(p, 0, sizeof(struct hd_struct));
 	p->start_sect = start;
 	p->nr_sects = len;
+	p->partno = part;
+	disk->part[part-1] = p;
 	devfs_register_partition(disk, part);
 	snprintf(p->kobj.name,KOBJ_NAME_LEN,"%s%d",disk->kobj.name,part);
 	p->kobj.parent = &disk->kobj;
 	p->kobj.ktype = &ktype_part;
 	kobject_register(&p->kobj);
-
-	p->partno = part;
-	disk->part[part-1] = p;
 }
 
 static void disk_sysfs_symlinks(struct gendisk *disk)