I'm aware that devfs is being removed in 2.6.13, but this patch may still interest maintainers of older versions. I've debugged this problem using kernel version 2.6.8, but a check showed this code is unchanged in 2.6.12. My system is Debian Sarge. During boot using an initrd on a system having / on LVM over RAID, I noticed the following messages on console and in /var/log/kern.log: kernel: Inspecting /boot/System.map-2.6.8-2-686 kernel: Loaded 27390 symbols from /boot/System.map-2.6.8-2-686. kernel: Symbols match kernel version 2.6.8. kernel: No module symbols loaded - kernel modules not enabled. kernel: ould not append to parent for /disc kernel: devfs_mk_dir: invalid argument.<4>devfs_mk_dev: could not append to parent for /disc last message repeated 151 times Cleaned for a missing \n in a printk and with added debug printk's in fs/devfs/base.c, this looks like: kernel: devfs_mk_dir: invalid argument, buf: . kernel: _devfs_append_entry: -EEXIST for :disc kernel: devfs_mk_dev: could not append to parent for /disc (repeated) The last two errors are a consequence of the error in devfs_mk_dir, so can be ignored. The basic problem is that buf is empty when devfs_mk_dir is called. Tracing back I ended up in fs/partitions/check.c, which has the following code in function register_disk: /* No minors to use for partitions */ if (disk->minors == 1) { if (disk->devfs_name[0] != '\0') devfs_add_disk(disk); return; } /* always add handle for the whole disk */ devfs_add_partitioned(disk); This looks unlogical: why does the first statement check for empty disk->devfs_name and is the second one called blindly? Changing the last statement to: if (disk->devfs_name[0] != '\0') devfs_add_partitioned(disk); else printk(KERN_WARNING "%s: No devfs_name for %s.\n", __FUNCTION__, disk->disk_name); resulted in the errors disappearing and the following log output: kernel: register_disk: No devfs_name for md_d0. kernel: register_disk: No devfs_name for md_d64. kernel: register_disk: No devfs_name for md_d128. kernel: register_disk: No devfs_name for md_d192. kernel: register_disk: No devfs_name for md_d4. kernel: register_disk: No devfs_name for md_d68. kernel: register_disk: No devfs_name for md_d132. kernel: register_disk: No devfs_name for md_d196. (repeated to md_d255) The attached patch fixes the problem (and adds the missing \n).
--- fs/partitions/check.c.orig 2005-05-19 12:52:23.000000000 +0200 +++ fs/partitions/check.c 2005-07-29 00:36:04.523385998 +0200 @@ -348,7 +348,8 @@ } /* always add handle for the whole disk */ - devfs_add_partitioned(disk); + if (disk->devfs_name[0] != '\0') + devfs_add_partitioned(disk); /* No such device (e.g., media were just removed) */ if (!get_capacity(disk)) --- fs/devfs/base.c.orig 2005-07-29 00:32:03.329992027 +0200 +++ fs/devfs/base.c 2005-07-29 00:32:52.000008934 +0200 @@ -1644,7 +1644,7 @@ va_start(args, fmt); n = vsnprintf(buf, 64, fmt, args); if (n >= 64 || !buf[0]) { - printk(KERN_WARNING "%s: invalid argument.", __FUNCTION__); + printk(KERN_WARNING "%s: invalid argument.\n", __FUNCTION__); return -EINVAL; }
Attachment:
pgp0Z7rBPgKIy.pgp
Description: PGP signature
- Prev by Date: Re: [2.6 patch] add -Werror-implicit-function-declaration to CFLAGS
- Next by Date: Re: Power consumption HZ100, HZ250, HZ1000: new numbers
- Previous by thread: [patch 1/1] uml: avoid fixing faults while atomic
- Next by thread: [PATCH mm] page fault patches: fix highpte in do_anon_page
- Index(es):