[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

BenH: can you give me a hint for this? :)



[NOTE1: My kernel was rsynced I dunno how many times from the physics
        muenchen.de repository, and it is a 2.6.2-rc1-ben1 ]

[NOTE2: All of the following, I did by compiling, and testing/readin
        output by debugging. Is there any faster way of testing a kernel
	when debuggin it?? :-?  ]


Right,

tired of fighting against the kernel, I just went straight into it and
had a peek around some functions. I found out that, somehow, my kernel
is NOT even trying to mount with xfs support! It is compiled IN the
kernel, not as a module, and the goddamit kernel just goes silly and
dismissed me.

I did some dirty kernel debugin like this:


void __init mount_block_root(char *name, int flags)
{
	char *fs_names = __getname();
	char *p;
	char b[BDEVNAME_SIZE];

	get_fs_names(fs_names);
	
retry:
	printk("\n!!!!  FS_NAMES1 [%s]\n", fs_names);
	for (p = fs_names; *p; p += strlen(p)+1) {
		printk("\n!!!!!  Trying to mount as %s\n", name, p);
		//int err = do_mount_root(name, "xfs", flags, root_mount_data);
		int err = do_mount_root(name, p, flags, root_mount_data);
		switch (err) {
			case 0:
				printk("\n!!!!!  OUT\n");
				goto out;
			case -EACCES:
				flags |= MS_RDONLY;
				printk("\n!!!!!  RETRY\n");
				goto retry;
			case -EINVAL:
				printk("\n!!!!!  CONTINUE\n");
				continue;
		}
	        /*
		 * Allow the user to distinguish between failed open
		 * and bad superblock on root device.
		 */
		__bdevname(ROOT_DEV, b);
		printk("VFS: Cannot open root device \"%s\" or %s\n",
				root_device_name, b);
		printk("Please append a correct \"root=\" boot option\n");

		panic("VFS: Unable to mount root fs on %s", b);
	}
	panic("VFS: Unable to mount root fs on %s", __bdevname(ROOT_DEV, b));
out:
	printk("\n!!!!  FS_NAMES2 [%s]\n", fs_names);
	putname(fs_names);
}


and the thing printed stuff trying to mount /dev/root as:

	EXT3
	EXT2
	ISO9660   (!!! what the hec !!!)
	HFSPLUS
	HFS

and then, it panics.

I then, hardwired the xfs option, as all of you can see in this
"""patch""" XXDD, and the DAMM thing BOOTS!!!!!!!!

So, basically, everything is OK, but it is refusing to boot because
although I compiled in the XFS filesystem support, it doesnŽt come up
when doing get_fs_names(fs_names);

I can gess the problem goes through to fs/filesystems.c, where the
function get_filesystems_list somehow is failing to get all the
filesystems supported by the kernel???

Anyone knows why??  BenH?? :))) Can you give me a hint here?


Thanks so much!!

--
 .''`.  
: :'  :     J. Javier Maestro
`. `'`   <jjmaestro@computer.org>
  `-    http://rigel.homelinux.com/



Reply to: