[Pkg-iscsi-maintainers] Bug#765431: open-iscsi: umountiscsi.sh script does not properly check while traverse sysfs structure
dmitry
dmitry at bti.secna.ru
Mon Oct 20 03:28:45 UTC 2014
Hello !
17.10.2014 00:44, Ritesh Raj Sarraf пишет:
> On Thursday 16 October 2014 09:10 AM, Dmitry Danilov wrote:
>>>
>> Yes, as I see, BLOCK_FILE variable should serves that.
>
> Sorry. But I'm not understanding this correct. Are you saying we
> don't need the
> patch ?
>
> --
> Ritesh Raj Sarraf
> RESEARCHUT -http://www.researchut.com
> "Necessity is the mother of invention."
>
I think we need a patch.
Let's look at problem again:
What we have:
system:
root at archive:~# uname -a
Linux archive 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64
GNU/Linux
root at archive:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.6 (wheezy)
Release: 7.6
Codename: wheezy
mounted partitions:
root at archive:~# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs
(rw,relatime,size=10240k,nr_inodes=62130,mode=755)
devpts on /dev/pts type devpts
(rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs
(rw,nosuid,noexec,relatime,size=50896k,mode=755)
/dev/disk/by-uuid/51c02def-2358-4270-a76d-3161633a1b22 on / type ext4
(rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered)
tmpfs on /run/lock type tmpfs
(rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs
(rw,nosuid,nodev,noexec,relatime,size=296960k)
/dev/sdb1 on /mnt/sites_backup type ext4
(rw,relatime,user_xattr,acl,barrier=1,data=ordered,_netdev)
/dev/sda1 on /mnt/sites_backup#2 type ext4
(rw,relatime,user_xattr,barrier=1,stripe=128,data=ordered,_netdev)
Trying to restart|stop open-iscsi as if we have a new configured
target:
root at archive:~# /etc/init.d/open-iscsi restart
[....] Unmounting iscsi-backed filesystems: Unmounting all devices
marked _netdevumount: /: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[warn] Could not unmount / ... (warning).
failed!
invoke-rc.d: initscript umountiscsi.sh, action "stop" failed.
[FAIL] Couldn't unmount all iSCSI devices. Cannot stop iSCSI service
... failed!
root at archive:~#
From initscript errors : umountiscsi trying to unmount "/" partition --
Why?
Inspect the situation:
Adding -x parameter to umountiscsi.sh
And try to restart service:
root at archive:~# /etc/init.d/open-iscsi restart
Look on exerpt output(full report in attached file):
Here (the cause of problem):
+ [ -d /sys/devices/platform/host4/iscsi_host ]
+ [ -d /sys/devices/platform/host4/session1/target4:0:0 ]
+ sed s/.*block\///
+ echo /sys/devices/platform/host4/session1/target*/*:*/block/*
+ BLOCK_DEV=*
+ awk /^\/dev\/*/ { print $2; }
+ DOS_PARTITIONS=/
+ umount /
umount: /: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
+ exit_status=1
I think, shell expansion leds to that, so that is why I suggest code to
test BLOCK_DEV
variable as empty 'directory' in sysfs i.e. :
+ if ! [ -d $BLOCK_FILE ]; then
+ continue
+ fi
And another view to the same problem:
Code snippet for debug purposes (taken from 'umountiscsi.sh' file)
contains only traverse sysfs section:
root at archive:~# cat traverse.sh
#!/bin/sh -x
for HOST_DIR in /sys/devices/platform/host*; do
if ! [ -d $HOST_DIR/iscsi_host* ]; then
continue
fi
for SESSION_DIR in $HOST_DIR/session*; do
if ! [ -d $SESSION_DIR/target* ]; then
continue
fi
for BLOCK_FILE in $SESSION_DIR/target*/*\:*/block/*; do
BLOCK_DEV=`echo "$BLOCK_FILE" | sed 's/.*block\///'`
DOS_PARTITIONS="`awk "/^\/dev\/$BLOCK_DEV/ { print \\$2; }" <
/proc/mounts`"
echo DEBUG:${BLOCK_FILE}
echo DEBUG:${DOS_PARTITIONS}
for DEVICE in $DOS_PARTITIONS; do
#log_progress_msg $DEVICE
#echo $DEVICE
echo umount ${DEVICE}
exit_status=$?
if ! [ $exit_status -eq 0 ]; then
umount_fail=1
log_warning_msg "Could not unmount $DEVICE"
fi
done
done
done
done
Output with trace mode i.e. bin/sh -x:
root at archive:~# ./traverse.sh
+ [ -d /sys/devices/platform/host4/iscsi_host ]
+ [ -d /sys/devices/platform/host4/session1/target4:0:0 ]
+ sed s/.*block\///
+ echo /sys/devices/platform/host4/session1/target*/*:*/block/*
+ BLOCK_DEV=*
+ awk /^\/dev\/*/ { print $2; }
+ DOS_PARTITIONS=/
+ echo DEBUG:/sys/devices/platform/host4/session1/target*/*:*/block/*
DEBUG:/sys/devices/platform/host4/session1/target*/*:*/block/*
+ echo DEBUG:/
DEBUG:/
+ echo umount /
umount /
+ exit_status=0
+ [ 0 -eq 0 ]
+ [ -d /sys/devices/platform/host5/iscsi_host ]
+ [ -d /sys/devices/platform/host5/session2/target5:0:0 ]
+ sed s/.*block\///
+ echo
/sys/devices/platform/host5/session2/target5:0:0/5:0:0:0/block/sdb
+ BLOCK_DEV=sdb
+ awk /^\/dev\/sdb/ { print $2; }
+ DOS_PARTITIONS=
+ echo
DEBUG:/sys/devices/platform/host5/session2/target5:0:0/5:0:0:0/block/sdb
DEBUG:/sys/devices/platform/host5/session2/target5:0:0/5:0:0:0/block/sdb
+ echo DEBUG:
DEBUG:
+ [ -d /sys/devices/platform/host6/iscsi_host ]
+ [ -d /sys/devices/platform/host6/session3/target6:0:0 ]
+ sed s/.*block\///
+ echo
/sys/devices/platform/host6/session3/target6:0:0/6:0:0:0/block/sda
+ BLOCK_DEV=sda
+ awk /^\/dev\/sda/ { print $2; }
+ DOS_PARTITIONS=
+ echo
DEBUG:/sys/devices/platform/host6/session3/target6:0:0/6:0:0:0/block/sda
DEBUG:/sys/devices/platform/host6/session3/target6:0:0/6:0:0:0/block/sda
+ echo DEBUG:
DEBUG:
root at archive:~#
Output without dash trace mode:
root at archive:~# ./traverse.sh
DEBUG:/sys/devices/platform/host4/session1/target*/*:*/block/*
DEBUG:/
umount /
DEBUG:/sys/devices/platform/host5/session2/target5:0:0/5:0:0:0/block/sdb
DEBUG:
DEBUG:/sys/devices/platform/host6/session3/target6:0:0/6:0:0:0/block/sda
DEBUG:
root at archive:~#
--
Dmitry Danilov.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: debug-open-iscsi-initscript.txt
URL: <http://lists.alioth.debian.org/pipermail/pkg-iscsi-maintainers/attachments/20141020/f7fefb57/attachment.txt>
More information about the Pkg-iscsi-maintainers
mailing list