chiark / gitweb /
[PATCH] Add format modifier for devfs like naming
authorarnd@arndb.de <arnd@arndb.de>
Tue, 25 Nov 2003 07:41:40 +0000 (23:41 -0800)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 04:13:04 +0000 (21:13 -0700)
On Monday 24 November 2003 01:29, Greg KH wrote:
> I think with the ability to capture the output of the CALLOUT rule,
> combined with the ability to put format modifiers in the CALLOUT program
> string, we now have everything in place to emulate the existing devfs
> naming scheme.  Anyone want to verify this or not?

I would prefer to have the ability of creating partition nodes in devfs
style built-in to udev. Devfs used to call the whole disk e.g.
"/dev/dasd/0123/disk" and the partitions "/dev/dasd/0123/part[1-3]".
This can obviously be done with a CALLOUT rule, but its common enough
to make it a format modifier. AFAIK, this scheme has been used for
ide, scsi and dasd disks, which is about 99% of all disks ever connected
to Linux.

namedev.c

index 391da7efcacc59f053a1e5f737efefe2d03e74ad..d183a3632980e9e4b07a69e4e3865668d1ae5bb7 100644 (file)
--- a/namedev.c
+++ b/namedev.c
@@ -527,6 +527,15 @@ static void apply_format(struct udevice *udev, unsigned char *string)
                                strcat(pos, udev->kernel_number);
                                dbg("substitute kernel number '%s'", udev->kernel_number);
                                break;
                                strcat(pos, udev->kernel_number);
                                dbg("substitute kernel number '%s'", udev->kernel_number);
                                break;
+                       case 'D':
+                               if (strlen(udev->kernel_number) == 0) {
+                                       strcat(pos, "disk");
+                                       break;
+                               }
+                               strcat(pos, "part");
+                               strcat(pos, udev->kernel_number);
+                               dbg("substitute kernel number '%s'", udev->kernel_number);
+                               break;
                        case 'm':
                                sprintf(pos, "%u", udev->minor);
                                dbg("substitute minor number '%u'", udev->minor);
                        case 'm':
                                sprintf(pos, "%u", udev->minor);
                                dbg("substitute minor number '%u'", udev->minor);