Re: [PATCH 2.6.0-test8] MODULE_ALIAS_BLOCK

From: Rusty Russell
Date: Wed Oct 22 2003 - 23:43:30 EST


In message <20031021232022.A19672@xxxxxxxxxxxxxxxxxx> you write:
>
> Hi Rusty,
>
> Automatic loading of the loop device does not work under 2.6.0-test8
> unless the loop device is explicitly mentioned in /etc/modules.conf.
> This shows up when doing a kernel make install: mkinitrd uses the
> loopback device.
>
> This is because loop.c does not have MODULE_ALIAS_BLOCKDEV.
> After adding that, the following problem shows: a mismatch between
> the use of request_module in drivers/block/genhd.c:
>
> request_module("block-major-%d", MAJOR(dev));
>
> and the definition of MODULE_ALIAS_BLOCK in blkdev.h:
>
> MODULE_ALIAS("block-major-" __stringify(major) "-*")
>
> The following patch applies to 2.6.0-test8. I tested under (mostly) RH9 that
> automatic loading of loop.ko works with this patch but not without it.
> The only other user of MODULE_ALIAS_BLOCK, floppy.c, also worked for
> me with this patch, no idea whether it works without.

Hmm. Disagree with your change, prefer to go the other way. Sure,
block drivers generally don't care about the minor, but (1) they might
one day, and (2) this matches with the way char devices are handled.

Linus, please apply.

Name: Block Alias Fix in genhd.c
Author: Rusty Russell
Status: Trivial

D: MODULE_ALIAS_BLOCK and genhd.c's request_module() don't match,
D: which breaks autoloading of loop devices.

diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .2035-linux-2.6.0-test8-bk2/drivers/block/genhd.c .2035-linux-2.6.0-test8-bk2.updated/drivers/block/genhd.c
--- .2035-linux-2.6.0-test8-bk2/drivers/block/genhd.c 2003-10-09 18:02:51.000000000 +1000
+++ .2035-linux-2.6.0-test8-bk2.updated/drivers/block/genhd.c 2003-10-23 14:09:35.000000000 +1000
@@ -296,7 +296,7 @@ extern int blk_dev_init(void);

static struct kobject *base_probe(dev_t dev, int *part, void *data)
{
- request_module("block-major-%d", MAJOR(dev));
+ request_module("block-major-%d-%d", MAJOR(dev), MINOR(dev));
return NULL;
}



--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/