mdev: fix non-working device deletion, add a test for that
No binary (build failed)
—
(log yok)
| @@ -37,6 +37,16 @@ brw-rw---- 1 0 0 8,0 sda | |
| "" "" | |
| SKIP= | |
| + | # continuing to use directory structure from prev test |
| + | optional STATIC FEATURE_MDEV_CONF FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME |
| + | testing "mdev deletes /block/sda" \ |
| + | "env - PATH=$PATH ACTION=remove DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
| + | ls -ln mdev.testdir/dev | $FILTER_LS" \ |
| + | "\ |
| + | " \ |
| + | "" "" |
| + | SKIP= |
| + | |
| # continuing to use directory structure from prev test | |
| rm -rf mdev.testdir/dev/* | |
| echo ".* 1:1 666" >mdev.testdir/etc/mdev.conf | |
| @@ -132,6 +132,7 @@ static void make_device(char *path, int delete) | |
| major = -1; | |
| } | |
| } | |
| + | /* else: for delete, -1 still deletes the node, but < -1 suppresses that */ |
| /* Determine device name, type, major and minor */ | |
| device_name = (char*) bb_basename(path); | |
| @@ -279,7 +280,7 @@ static void make_device(char *path, int delete) | |
| if (aliaslink == '!' && s == a+1) { | |
| val = st; | |
| /* "!": suppress node creation/deletion */ | |
| - | major = -1; |
| + | major = -2; |
| } | |
| else if (aliaslink == '>' || aliaslink == '=') { | |
| val = st; | |
| @@ -379,7 +380,7 @@ static void make_device(char *path, int delete) | |
| free(command); | |
| } | |
| - | if (delete && major >= 0) { |
| + | if (delete && major >= -1) { |
| if (ENABLE_FEATURE_MDEV_RENAME && alias) { | |
| if (aliaslink == '>') | |
| unlink(device_name); | |