From: Kay Sievers <kay.sievers@vrfy.org>
To: linux-hotplug@vger.kernel.org
Subject: Re: [PATCH] allow to specify node permissions in the rule
Date: Fri, 12 Mar 2004 02:20:21 +0000 [thread overview]
Message-ID: <20040312022021.GA2208@vrfy.org> (raw)
In-Reply-To: <20040307011223.GA22054@vrfy.org>
[-- Attachment #1: Type: text/plain, Size: 572 bytes --]
On Thu, Mar 11, 2004 at 05:07:57PM -0800, Greg KH wrote:
> On Thu, Mar 11, 2004 at 03:18:43AM +0100, Kay Sievers wrote:
> > > Any chance on being able to add a test for this kind of stuff to the
> > > udev-test.pl script?
> >
> > Sure, not brilliant but seems to work :)
> > Only numeric id's are supported so far.
>
> Nice, that's a good start. Now we need to check the major:minor values
> too somehow...
I better do it immediately, before you put it in the empty TODO :)
Patch is a bit big, cause spaces are changed to tabs to get
space for the longer names.
Kay
[-- Attachment #2: 01-Mm-test.patch --]
[-- Type: text/plain, Size: 23919 bytes --]
===== test/udev-test.pl 1.46 vs edited =====
--- 1.46/test/udev-test.pl Thu Mar 11 04:14:35 2004
+++ edited/test/udev-test.pl Fri Mar 12 03:11:00 2004
@@ -33,30 +33,30 @@
my @tests = (
{
- desc => "label test of scsi disc",
- subsys => "block",
- devpath => "block/sda",
- expected => "boot_disk" ,
- conf => <<EOF
+ desc => "label test of scsi disc",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name=> "boot_disk" ,
+ conf => <<EOF
BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="boot_disk%n"
KERNEL="ttyUSB0", NAME="visor"
EOF
},
{
- desc => "label test of scsi partition",
- subsys => "block",
- devpath => "block/sda/sda1",
- expected => "boot_disk1" ,
- conf => <<EOF
+ desc => "label test of scsi partition",
+ subsys => "block",
+ devpath => "block/sda/sda1",
+ exp_name=> "boot_disk1" ,
+ conf => <<EOF
BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="boot_disk%n"
EOF
},
{
- desc => "label test of pattern match",
- subsys => "block",
- devpath => "block/sda/sda1",
- expected => "boot_disk1" ,
- conf => <<EOF
+ desc => "label test of pattern match",
+ subsys => "block",
+ devpath => "block/sda/sda1",
+ exp_name=> "boot_disk1" ,
+ conf => <<EOF
BUS="scsi", SYSFS{vendor}="?IBM-ESXS", NAME="boot_disk%n-1"
BUS="scsi", SYSFS{vendor}="IBM-ESXS?", NAME="boot_disk%n-2"
BUS="scsi", SYSFS{vendor}="IBM-ES??", NAME="boot_disk%n"
@@ -64,169 +64,169 @@
EOF
},
{
- desc => "label test of multiple sysfs files",
- subsys => "block",
- devpath => "block/sda/sda1",
- expected => "boot_disk1" ,
- conf => <<EOF
+ desc => "label test of multiple sysfs files",
+ subsys => "block",
+ devpath => "block/sda/sda1",
+ exp_name => "boot_disk1" ,
+ conf => <<EOF
BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", NAME="boot_diskX%n"
BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", NAME="boot_disk%n"
EOF
},
{
- desc => "label test of max sysfs files",
- subsys => "block",
- devpath => "block/sda/sda1",
- expected => "boot_disk1" ,
- conf => <<EOF
+ desc => "label test of max sysfs files",
+ subsys => "block",
+ devpath => "block/sda/sda1",
+ exp_name => "boot_disk1" ,
+ conf => <<EOF
BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", SYSFS{scsi_level}="4", SYSFS{rev}="B245", SYSFS{type}="2", SYSFS{queue_depth}="32", NAME="boot_diskXX%n"
BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", SYSFS{scsi_level}="4", SYSFS{rev}="B245", SYSFS{type}="0", NAME="boot_disk%n"
EOF
},
{
- desc => "catch device by *",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "visor/0" ,
- conf => <<EOF
+ desc => "catch device by *",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "visor/0" ,
+ conf => <<EOF
KERNEL="ttyUSB*", NAME="visor/%n"
EOF
},
{
- desc => "catch device by * - take 2",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "visor/0" ,
- conf => <<EOF
+ desc => "catch device by * - take 2",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "visor/0" ,
+ conf => <<EOF
KERNEL="*USB1", NAME="bad"
KERNEL="*USB0", NAME="visor/%n"
EOF
},
{
- desc => "catch device by ?",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "visor/0" ,
- conf => <<EOF
+ desc => "catch device by ?",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "visor/0" ,
+ conf => <<EOF
KERNEL="ttyUSB??*", NAME="visor/%n-1"
KERNEL="ttyUSB??", NAME="visor/%n-2"
KERNEL="ttyUSB?", NAME="visor/%n"
EOF
},
{
- desc => "catch device by character class",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "visor/0" ,
- conf => <<EOF
+ desc => "catch device by character class",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "visor/0" ,
+ conf => <<EOF
KERNEL="ttyUSB[A-Z]*", NAME="visor/%n-1"
KERNEL="ttyUSB?[0-9]", NAME="visor/%n-2"
KERNEL="ttyUSB[0-9]*", NAME="visor/%n"
EOF
},
{
- desc => "replace kernel name",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "visor" ,
- conf => <<EOF
+ desc => "replace kernel name",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "visor" ,
+ conf => <<EOF
KERNEL="ttyUSB0", NAME="visor"
EOF
},
{
- desc => "Handle comment lines in config file (and replace kernel name)",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "visor" ,
- conf => <<EOF
+ desc => "Handle comment lines in config file (and replace kernel name)",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "visor" ,
+ conf => <<EOF
# this is a comment
KERNEL="ttyUSB0", NAME="visor"
EOF
},
{
- desc => "Handle comment lines in config file with whitespace (and replace kernel name)",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "visor" ,
- conf => <<EOF
+ desc => "Handle comment lines in config file with whitespace (and replace kernel name)",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "visor" ,
+ conf => <<EOF
# this is a comment with whitespace before the comment
KERNEL="ttyUSB0", NAME="visor"
EOF
},
{
- desc => "Handle empty lines in config file (and replace kernel name)",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "visor" ,
- conf => <<EOF
+ desc => "Handle empty lines in config file (and replace kernel name)",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "visor" ,
+ conf => <<EOF
KERNEL="ttyUSB0", NAME="visor"
EOF
},
{
- desc => "subdirectory handling",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "sub/direct/ory/visor" ,
- conf => <<EOF
+ desc => "subdirectory handling",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "sub/direct/ory/visor" ,
+ conf => <<EOF
KERNEL="ttyUSB0", NAME="sub/direct/ory/visor"
EOF
},
{
- desc => "place on bus of scsi partition",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "first_disk3" ,
- conf => <<EOF
+ desc => "place on bus of scsi partition",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "first_disk3" ,
+ conf => <<EOF
BUS="scsi", PLACE="0:0:0:0", NAME="first_disk%n"
EOF
},
{
- desc => "test NAME substitution chars",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "Major:8:minor:3:kernelnumber:3:bus:0:0:0:0" ,
- conf => <<EOF
+ desc => "test NAME substitution chars",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "Major:8:minor:3:kernelnumber:3:bus:0:0:0:0" ,
+ conf => <<EOF
BUS="scsi", PLACE="0:0:0:0", NAME="Major:%M:minor:%m:kernelnumber:%n:bus:%b"
EOF
},
{
- desc => "test NAME substitution chars (with length limit)",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "M8-m3-n3-b0:0-sIBM" ,
- conf => <<EOF
+ desc => "test NAME substitution chars (with length limit)",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "M8-m3-n3-b0:0-sIBM" ,
+ conf => <<EOF
BUS="scsi", PLACE="0:0:0:0", NAME="M%M-m%m-n%n-b%3b-s%3s{vendor}"
EOF
},
{
- desc => "old style SYSFS_ attribute",
- subsys => "block",
- devpath => "block/sda",
- expected => "good" ,
- conf => <<EOF
+ desc => "old style SYSFS_ attribute",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "good" ,
+ conf => <<EOF
BUS="scsi", SYSFS_vendor="IBM-ESXS", NAME="good"
EOF
},
{
- desc => "sustitution of sysfs value (%s{file})",
- subsys => "block",
- devpath => "block/sda",
- expected => "disk-IBM-ESXS-sda" ,
- conf => <<EOF
+ desc => "sustitution of sysfs value (%s{file})",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "disk-IBM-ESXS-sda" ,
+ conf => <<EOF
BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="disk-%s{vendor}-%k"
KERNEL="ttyUSB0", NAME="visor"
EOF
},
{
- desc => "program result substitution",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "special-device-3" ,
- conf => <<EOF
+ desc => "program result substitution",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "special-device-3" ,
+ conf => <<EOF
BUS="scsi", PROGRAM="/bin/echo -n special-device", RESULT="-special-*", NAME="%c-1-%n"
BUS="scsi", PROGRAM="/bin/echo -n special-device", RESULT="special--*", NAME="%c-2-%n"
BUS="scsi", PROGRAM="/bin/echo -n special-device", RESULT="special-device-", NAME="%c-3-%n"
@@ -235,225 +235,225 @@
EOF
},
{
- desc => "program result substitution",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "test-0:0:0:0" ,
- conf => <<EOF
+ desc => "program result substitution",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "test-0:0:0:0" ,
+ conf => <<EOF
BUS="scsi", PROGRAM="/bin/echo -n test-%b", RESULT="test-0:0*", NAME="%c"
EOF
},
{
- desc => "program with escaped format char (tricky: callout returns format char!)",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "escape-3" ,
- conf => <<EOF
+ desc => "program with escaped format char (tricky: callout returns format char!)",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "escape-3" ,
+ conf => <<EOF
BUS="scsi", PROGRAM="/bin/echo -n escape-%%n", KERNEL="sda3", NAME="%c"
EOF
},
{
- desc => "program with lots of arguments",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "foo9" ,
- conf => <<EOF
+ desc => "program with lots of arguments",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "foo9" ,
+ conf => <<EOF
BUS="scsi", PROGRAM="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL="sda3", NAME="%c{7}"
EOF
},
{
- desc => "program with subshell",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "bar9" ,
- conf => <<EOF
+ desc => "program with subshell",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "bar9" ,
+ conf => <<EOF
BUS="scsi", PROGRAM="/bin/sh -c 'echo foo3 foo4 foo5 foo6 foo7 foo8 foo9 | sed s/foo9/bar9/'", KERNEL="sda3", NAME="%c{7}"
EOF
},
{
- desc => "program arguments combined with apostrophes",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "foo7" ,
- conf => <<EOF
+ desc => "program arguments combined with apostrophes",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "foo7" ,
+ conf => <<EOF
BUS="scsi", PROGRAM="/bin/echo -n 'foo3 foo4' 'foo5 foo6 foo7 foo8'", KERNEL="sda3", NAME="%c{5}"
EOF
},
{
- desc => "characters before the %c{N} substitution",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "my-foo9" ,
- conf => <<EOF
+ desc => "characters before the %c{N} substitution",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "my-foo9" ,
+ conf => <<EOF
BUS="scsi", PROGRAM="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL="sda3", NAME="my-%c{7}"
EOF
},
{
- desc => "substitute the second to last argument",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "my-foo8" ,
- conf => <<EOF
+ desc => "substitute the second to last argument",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "my-foo8" ,
+ conf => <<EOF
BUS="scsi", PROGRAM="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL="sda3", NAME="my-%c{6}"
EOF
},
{
- desc => "program result substitution (numbered part of)",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "link1" ,
- conf => <<EOF
+ desc => "program result substitution (numbered part of)",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "link1" ,
+ conf => <<EOF
BUS="scsi", PROGRAM="/bin/echo -n node link1 link2", RESULT="node *", NAME="%c{1}", SYMLINK="%c{2} %c{3}"
EOF
},
{
- desc => "program result substitution (numbered part of+)",
- subsys => "block",
- devpath => "block/sda/sda3",
- expected => "link3" ,
- conf => <<EOF
+ desc => "program result substitution (numbered part of+)",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ exp_name => "link3" ,
+ conf => <<EOF
BUS="scsi", PROGRAM="/bin/echo -n node link1 link2 link3 link4", RESULT="node *", NAME="%c{1}", SYMLINK="%c{2+}"
EOF
},
{
- desc => "invalid program for device with no bus",
- subsys => "tty",
- devpath => "class/tty/console",
- expected => "TTY" ,
- conf => <<EOF
+ desc => "invalid program for device with no bus",
+ subsys => "tty",
+ devpath => "class/tty/console",
+ exp_name => "TTY" ,
+ conf => <<EOF
BUS="scsi", PROGRAM="/bin/echo -n foo", RESULT="foo", NAME="foo"
KERNEL="console", NAME="TTY"
EOF
},
{
- desc => "valid program for device with no bus",
- subsys => "tty",
- devpath => "class/tty/console",
- expected => "foo" ,
- conf => <<EOF
+ desc => "valid program for device with no bus",
+ subsys => "tty",
+ devpath => "class/tty/console",
+ exp_name => "foo" ,
+ conf => <<EOF
PROGRAM="/bin/echo -n foo", RESULT="foo", NAME="foo"
KERNEL="console", NAME="TTY"
EOF
},
{
- desc => "invalid label for device with no bus",
- subsys => "tty",
- devpath => "class/tty/console",
- expected => "TTY" ,
- conf => <<EOF
+ desc => "invalid label for device with no bus",
+ subsys => "tty",
+ devpath => "class/tty/console",
+ exp_name => "TTY" ,
+ conf => <<EOF
BUS="foo", SYSFS{dev}="5:1", NAME="foo"
KERNEL="console", NAME="TTY"
EOF
},
{
- desc => "valid label for device with no bus",
- subsys => "tty",
- devpath => "class/tty/console",
- expected => "foo" ,
- conf => <<EOF
+ desc => "valid label for device with no bus",
+ subsys => "tty",
+ devpath => "class/tty/console",
+ exp_name => "foo" ,
+ conf => <<EOF
SYSFS{dev}="5:1", NAME="foo"
KERNEL="console", NAME="TTY"
EOF
},
{
- desc => "program and bus type match",
- subsys => "block",
- devpath => "block/sda",
- expected => "scsi-0:0:0:0" ,
- conf => <<EOF
+ desc => "program and bus type match",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "scsi-0:0:0:0" ,
+ conf => <<EOF
BUS="usb", PROGRAM="/bin/echo -n usb-%b", NAME="%c"
BUS="scsi", PROGRAM="/bin/echo -n scsi-%b", NAME="%c"
BUS="foo", PROGRAM="/bin/echo -n foo-%b", NAME="%c"
EOF
},
{
- desc => "symlink creation (same directory)",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "visor0" ,
- conf => <<EOF
+ desc => "symlink creation (same directory)",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "visor0" ,
+ conf => <<EOF
KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK="visor%n"
EOF
},
{
- desc => "symlink creation (relative link back)",
- subsys => "block",
- devpath => "block/sda/sda2",
- expected => "1/2/a/b/symlink" ,
- conf => <<EOF
+ desc => "symlink creation (relative link back)",
+ subsys => "block",
+ devpath => "block/sda/sda2",
+ exp_name => "1/2/a/b/symlink" ,
+ conf => <<EOF
BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/node", SYMLINK="1/2/a/b/symlink"
EOF
},
{
- desc => "symlink creation (relative link forward)",
- subsys => "block",
- devpath => "block/sda/sda2",
- expected => "1/2/symlink" ,
- conf => <<EOF
+ desc => "symlink creation (relative link forward)",
+ subsys => "block",
+ devpath => "block/sda/sda2",
+ exp_name => "1/2/symlink" ,
+ conf => <<EOF
BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/symlink"
EOF
},
{
- desc => "symlink creation (relative link back and forward)",
- subsys => "block",
- devpath => "block/sda/sda2",
- expected => "1/2/c/d/symlink" ,
- conf => <<EOF
+ desc => "symlink creation (relative link back and forward)",
+ subsys => "block",
+ devpath => "block/sda/sda2",
+ exp_name => "1/2/c/d/symlink" ,
+ conf => <<EOF
BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/c/d/symlink"
EOF
},
{
- desc => "multiple symlinks",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "second-0" ,
- conf => <<EOF
+ desc => "multiple symlinks",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "second-0" ,
+ conf => <<EOF
KERNEL="ttyUSB0", NAME="visor", SYMLINK="first-%n second-%n third-%n"
EOF
},
{
- desc => "create all possible partitions",
- subsys => "block",
- devpath => "block/sda",
- expected => "boot_disk15" ,
- conf => <<EOF
+ desc => "create all possible partitions",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "boot_disk15" ,
+ conf => <<EOF
BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME{all_partitions}="boot_disk"
EOF
},
{
- desc => "sysfs parent hierarchy",
- subsys => "tty",
- devpath => "class/tty/ttyUSB0",
- expected => "visor" ,
- conf => <<EOF
+ desc => "sysfs parent hierarchy",
+ subsys => "tty",
+ devpath => "class/tty/ttyUSB0",
+ exp_name => "visor" ,
+ conf => <<EOF
SYSFS{idProduct}="2008", NAME="visor"
EOF
},
{
- desc => "name test with ! in the name",
- subsys => "block",
- devpath => "block/rd!c0d0",
- expected => "rd/c0d0" ,
- conf => <<EOF
+ desc => "name test with ! in the name",
+ subsys => "block",
+ devpath => "block/rd!c0d0",
+ exp_name => "rd/c0d0" ,
+ conf => <<EOF
BUS="scsi", NAME="%k"
KERNEL="ttyUSB0", NAME="visor"
EOF
},
{
- desc => "name test with ! in the name, but no matching rule",
- subsys => "block",
- devpath => "block/rd!c0d0",
- expected => "rd/c0d0" ,
- conf => <<EOF
+ desc => "name test with ! in the name, but no matching rule",
+ subsys => "block",
+ devpath => "block/rd!c0d0",
+ exp_name => "rd/c0d0" ,
+ conf => <<EOF
KERNEL="ttyUSB0", NAME="visor"
EOF
},
{
- desc => "ID rule",
- subsys => "block",
- devpath => "block/sda",
- expected => "scsi-0:0:0:0",
- conf => <<EOF
+ desc => "ID rule",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "scsi-0:0:0:0",
+ conf => <<EOF
BUS="usb", ID="0:0:0:0", NAME="not-scsi"
BUS="scsi", ID="0:0:0:1", NAME="no-match"
BUS="scsi", ID=":0", NAME="short-id"
@@ -462,11 +462,11 @@
EOF
},
{
- desc => "ID wildcard all",
- subsys => "block",
- devpath => "block/sda",
- expected => "scsi-0:0:0:0",
- conf => <<EOF
+ desc => "ID wildcard all",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "scsi-0:0:0:0",
+ conf => <<EOF
BUS="scsi", ID="*:1", NAME="no-match"
BUS="scsi", ID="*:0:1", NAME="no-match"
BUS="scsi", ID="*:0:0:1", NAME="no-match"
@@ -475,62 +475,73 @@
EOF
},
{
- desc => "ID wildcard partial",
- subsys => "block",
- devpath => "block/sda",
- expected => "scsi-0:0:0:0",
- conf => <<EOF
+ desc => "ID wildcard partial",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "scsi-0:0:0:0",
+ conf => <<EOF
BUS="scsi", ID="*:0", NAME="scsi-0:0:0:0"
BUS="scsi", ID="0:0:0:0", NAME="bad"
EOF
},
{
- desc => "ID wildcard partial 2",
- subsys => "block",
- devpath => "block/sda",
- expected => "scsi-0:0:0:0",
- conf => <<EOF
+ desc => "ID wildcard partial 2",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "scsi-0:0:0:0",
+ conf => <<EOF
BUS="scsi", ID="*:0:0:0", NAME="scsi-0:0:0:0"
BUS="scsi", ID="0:0:0:0", NAME="bad"
EOF
},
{
- desc => "ignore SYSFS attribute whitespace",
- subsys => "block",
- devpath => "block/sda",
- expected => "ignored",
- conf => <<EOF
+ desc => "ignore SYSFS attribute whitespace",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "ignored",
+ conf => <<EOF
BUS="scsi", SYSFS{whitespace_test}="WHITE SPACE", NAME="ignored"
EOF
},
{
- desc => "do not ignore SYSFS attribute whitespace",
- subsys => "block",
- devpath => "block/sda",
- expected => "matched-with-space",
- conf => <<EOF
+ desc => "do not ignore SYSFS attribute whitespace",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "matched-with-space",
+ conf => <<EOF
BUS="scsi", SYSFS{whitespace_test}="WHITE SPACE ", NAME="wrong-to-ignore"
BUS="scsi", SYSFS{whitespace_test}="WHITE SPACE ", NAME="matched-with-space"
EOF
},
{
- desc => "SYMLINK only rule",
- subsys => "block",
- devpath => "block/sda",
- expected => "symlink-only2",
- conf => <<EOF
+ desc => "SYMLINK only rule",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "symlink-only2",
+ conf => <<EOF
BUS="scsi", KERNEL="sda", SYMLINK="symlink-only1"
BUS="scsi", KERNEL="sda", SYMLINK="symlink-only2"
BUS="scsi", KERNEL="sda", NAME="link", SYMLINK="symlink0"
EOF
},
{
- desc => "permissions test",
- subsys => "block",
- devpath => "block/sda",
- expected => "node",
- perms => "5000::0444",
- conf => <<EOF
+ desc => "permissions test",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "node",
+ perms => "5000::0444",
+ conf => <<EOF
+BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000", MODE="0444"
+EOF
+ },
+ {
+ desc => "major/minor number test",
+ subsys => "block",
+ devpath => "block/sda",
+ exp_name => "node",
+ perms => "5000::0444",
+ exp_majorminor => "8:0",
+ conf => <<EOF
BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000", MODE="0444"
EOF
},
@@ -560,17 +571,18 @@
sub run_test {
my ($config, $number) = @_;
-
+
print "TEST $number: $config->{desc}\n";
- print "device \'$config->{devpath}\' expecting node \'$config->{expected}\'\n";
+ print "device \'$config->{devpath}\' expecting node \'$config->{exp_name}\'\n";
udev("add", $config->{subsys}, $config->{devpath}, \$config->{conf});
- if (-e "$PWD/$udev_root$config->{expected}") {
+ if (-e "$PWD/$udev_root$config->{exp_name}") {
+
+ my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
+ $atime, $mtime, $ctime, $blksize, $blocks) = stat("$PWD/$udev_root$config->{exp_name}");
+
if (defined($config->{perms})) {
my $wrong = 0;
- my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
- $atime, $mtime, $ctime, $blksize, $blocks) = stat("$PWD/$udev_root$config->{expected}");
-
$config->{perms} =~ m/^(.*):(.*):(.*)$/;
if ($1 ne "") {
if ($uid != $1) { $wrong = 1; };
@@ -586,6 +598,25 @@
printf "created permissions are : %i:%i:%#o\n", $uid, $gid, $mode & 07777;
}
}
+
+ if (defined($config->{exp_majorminor})) {
+ my $major = ($rdev >> 8) & 0xfff;
+ my $minor = ($rdev & 0xff) | (($rdev >> 12) & 0xfff00);
+
+ my $wrong = 0;
+ $config->{exp_majorminor} =~ m/^(.*):(.*)$/;
+ if ($1 ne "") {
+ if ($major != $1) { $wrong = 1; };
+ }
+ if ($2 ne "") {
+ if ($minor != $2) { $wrong = 1; };
+ }
+ if ($wrong == 1) {
+ printf "expected major:minor is: %i:%i\n", $1, $2;
+ printf "created major:minor is : %i:%i\n", $major, $minor;
+ }
+ }
+
print "add: ok ";
} else {
print "add: error\n";
@@ -595,8 +626,8 @@
}
udev("remove", $config->{subsys}, $config->{devpath}, \$config->{conf});
- if ((-e "$PWD/$udev_root$config->{expected}") ||
- (-l "$PWD/$udev_root$config->{expected}")) {
+ if ((-e "$PWD/$udev_root$config->{exp_name}") ||
+ (-l "$PWD/$udev_root$config->{exp_name}")) {
print "remove: error\n\n";
system("tree $udev_root");
$error++;
next prev parent reply other threads:[~2004-03-12 2:20 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-07 1:12 [PATCH] allow to specify node permissions in the rule Kay Sievers
2004-03-10 22:41 ` Greg KH
2004-03-11 2:18 ` Kay Sievers
2004-03-12 1:07 ` Greg KH
2004-03-12 2:20 ` Kay Sievers [this message]
2004-03-12 10:43 ` Olaf Hering
2004-03-12 11:19 ` Kay Sievers
2004-03-12 11:30 ` Olaf Hering
2004-03-12 11:35 ` Kay Sievers
2004-03-12 16:43 ` Greg KH
2004-03-12 17:44 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040312022021.GA2208@vrfy.org \
--to=kay.sievers@vrfy.org \
--cc=linux-hotplug@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.