Browse Source

added helper script for block device mounting

suites/experimental
Ralph Rönnquist 4 months ago
parent
commit
710729d170
Signed by: rrq GPG Key ID: 7729547634107541
  1. 42
      fusedisk

42
fusedisk

@ -0,0 +1,42 @@
#!/bin/sh
#
# Set up a fusefile as a disk device using device mapper.
# Note that this requires root access.
if [ $(id -u) != 0 ] ; then
echo "block device set up requires root." >&2
exit 1
fi
# fuse blkdev mounting needs to sniff an existing but unmounted block
# device node for setup. However the device mapping has an empty table
# and the content is only accessible via the fuse mount that links it
# to the fusefile process. The device node (major:minor) are still
# considered in use by the kernel and, and the device node is "open"
# while mounted.
[ -e /dev/mapper/control ] || modprobe dm_mod || exit 1
# Create up to N fusedisk named as fusedisk0..fusediskN, the device
# mapper also creates its dm-X device nodes and we also force
# /dev/mapper/$NAME nodes for them.
N=15
DEV=
for I in $(seq 0 $N) ; do
NAME=fusedisk$I
C="$(dmsetup info --noheadings -c -o open $NAME 2>/dev/null)"
if [ "$C" != "1" ] ; then
if [ -z "$C" ] ; then
dmsetup create $NAME --notable || exit 1
dmsetup mknodes $NAME || exit 1
fi
DEV=/dev/mapper/$NAME
break
fi
done
if [ -z "$DEV" ] ; then
echo "** No more fusedisk devices" >&2
exit 1
fi
echo "using $DEV for $*" | logger -t fusedisk
exec fusefile -oblkdev,fsname=$DEV -oallow_other $*
Loading…
Cancel
Save