Skip to content

Commit f9031db

Browse files
author
msuhanov
committed
Improve the handling of block devices with '/' in their names.
1 parent 6fecf68 commit f9031db

File tree

4 files changed

+7
-1
lines changed

4 files changed

+7
-1
lines changed

userspace/initramfs/01wrtblk_all

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/sh
22

33
# Mark all available block devices as read-only (except loop devices)
4-
for device in /dev/*; do
4+
for device in /dev/* /dev/*/*; do
55
if [ ! -h "$device" ] && [ -b "$device" ] && [ ! -z ${device##/dev/loop*} ]; then
66
# Check if medium is present
77
if blockdev --getsz "$device" > /dev/null 2>&1; then

userspace/tools/wrtblk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ bdev="$1"
99
blockdev --setro "/dev/$bdev" || logger "wrtblk: blockdev --setro /dev/$bdev failed!"
1010

1111
# Mark a parent block device as read-only
12+
bdev=$(echo "$bdev" | sed 's/\//!/g')
1213
syspath=$(echo /sys/block/*/"$bdev")
1314
[ "$syspath" = "/sys/block/*/$bdev" ] && exit
1415
dir=${syspath%/*}
1516
parent=${dir##*/}
17+
parent=$(echo "$parent" | sed 's/!/\//g')
1618
[ -b "/dev/$parent" ] || exit
1719
blockdev --setro "/dev/$parent" || logger "wrtblk: blockdev --setro /dev/$parent failed!"

userspace/tools/wrtblk-disable

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ bdev="$1"
99
blockdev --setrw "/dev/$bdev" || logger "wrtblk: blockdev --setrw /dev/$bdev failed!"
1010

1111
# Mark a parent block device as read-write
12+
bdev=$(echo "$bdev" | sed 's/\//!/g')
1213
syspath=$(echo /sys/block/*/"$bdev")
1314
[ "$syspath" = "/sys/block/*/$bdev" ] && exit
1415
dir=${syspath%/*}
1516
parent=${dir##*/}
17+
parent=$(echo "$parent" | sed 's/!/\//g')
1618
[ -b "/dev/$parent" ] || exit
1719
blockdev --setrw "/dev/$parent" || logger "wrtblk: blockdev --setrw /dev/$parent failed!"

userspace/tools/wrtblk-ioerr

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ bdev="$1"
99
blockdev --setro "/dev/$bdev" || logger "wrtblk: blockdev --setro /dev/$bdev failed!"
1010

1111
# Mark all child block devices as read-only
12+
bdev=$(echo "$bdev" | sed 's/\//!/g')
1213
for child in /sys/block/"$bdev"/*/dev; do
1314
dir=${child%/*}
1415
partition=${dir##*/}
1516
[ "$partition" = '*' ] && break
17+
partition=$(echo "$partition" | sed 's/!/\//g')
1618
[ -b "/dev/$partition" ] || continue
1719
blockdev --setro "/dev/$partition" || logger "wrtblk: blockdev --setro /dev/$partition failed!"
1820
done

0 commit comments

Comments
 (0)