busybox/util-linux
Denys Vlasenko a98db793cf Revert "umount: make -d always active, add -D to suppress it"
This reverts commit 86a03bee1d.

Since now our "mount -oloop" creates AUTOCLEARed loopdevs, we no longer
need our umount to destroy loopdevs to match the usual util-linux behaviour.

Now this revert fixes another, opposite bug: "explicit" mount /dev/loopN
and then umount must not drop loopdevs!

User complaint is as follows:

It seems LOOP_CLR_FD called on a loop-*partition* removes the mapping of
the whole *device* - which results in the following:

root@LEDE:/# loop=$(losetup -f)
root@LEDE:/# echo ${loop}
/dev/loop2
root@LEDE:/# losetup ${loop} /IMAGE
root@LEDE:/# ls -l ${loop}*
brw-------  1 root root     7,   2 Mar  6 20:09 /dev/loop2
root@LEDE:/# partprobe ${loop}
root@LEDE:/# ls -l ${loop}*
brw-------  1 root  root    7,   2 Mar  6 20:09 /dev/loop2
brw-------  1 root  root  259,   8 Mar  6 21:59 /dev/loop2p1
brw-------  1 root  root  259,   9 Mar  6 21:59 /dev/loop2p2
brw-------  1 root  root  259,  10 Mar  6 21:59 /dev/loop2p3
brw-------  1 root  root  259,  11 Mar  6 21:59 /dev/loop2p4
brw-------  1 root  root  259,  12 Mar  6 21:59 /dev/loop2p5
brw-------  1 root  root  259,  13 Mar  6 21:59 /dev/loop2p6
brw-------  1 root  root  259,  14 Mar  6 21:59 /dev/loop2p7
brw-------  1 root  root  259,  15 Mar  6 21:59 /dev/loop2p8
root@LEDE:/# mount ${loop}p8 /MOUNT       # mount loop partition
root@LEDE:/# losetup -a | grep $loop      # loop dev mapping still there
/dev/loop2: 0 /mnt/IMAGE
root@LEDE:/# strace umount /MOUNT 2> /log # unmount loop partition
root@LEDE:/# losetup -a | grep ${loop}    # loop device mapping is gone
root@LEDE:/# grep -i loop /log
open("/dev/loop2p7", O_RDONLY|O_LARGEFILE) = 3
ioctl(3, LOOP_CLR_FD)                   = 0
root@LEDE:/#

The strace was done to figure out, if maybe umount wrongly ioctl()'s the
parent device instead of the partition - it doesn't.

I already wasn't a fan of umount implicitly removing the mapping in the
first place (as I usually setup and release loop devices with `losetup`
and scripts needed to call umount differently in order to work and
outside busybox).

However taking above (kernel-)behaviour into account - umount calling
ioctl(LOOP_CLR_FD) unconditionally potentially causes some nasty side
effects

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-03-16 17:51:06 +01:00
..
volume_id Big cleanup in config help and description 2017-01-10 14:58:54 +01:00
acpid.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
blkdiscard.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
blkid.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
blockdev.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
Config.src Big cleanup in config help and description 2017-01-10 14:58:54 +01:00
dmesg.c Big cleanup in config help and description 2017-01-10 14:58:54 +01:00
fatattr.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
fbset.c Big cleanup in config help and description 2017-01-10 14:58:54 +01:00
fdformat.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
fdisk_aix.c *: make GNU licensing statement forms more regular 2010-08-16 20:14:46 +02:00
fdisk_gpt.c fdisk_gpt: simplify GPT partition name printing 2016-11-27 20:47:01 +01:00
fdisk_osf.c randomconfig fixes 2016-06-19 18:15:33 +02:00
fdisk_sgi.c randomconfig fixes 2016-06-19 18:15:33 +02:00
fdisk_sun.c fdisk_sun: fix partition alignment 2013-02-11 00:22:59 +01:00
fdisk.c fdisk: add typical values of -H and -S to --help 2017-01-19 14:29:42 +01:00
findfs.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
flock.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
freeramdisk.c *: add comment about APPLET_ODDNAME format 2017-01-29 14:57:33 +01:00
fsck_minix.c libbb: consolidate the code to set termios unbuffered mode 2017-01-11 16:17:59 +01:00
fstrim.c make --help texts more uniform 2017-01-21 02:49:58 +01:00
getopt.c make --help texts more uniform 2017-01-21 02:49:58 +01:00
hexdump_xxd.c xxd: make -p output lines actually end with a newline 2017-01-25 17:00:38 +01:00
hexdump.c xxd: implement -p 2017-01-25 16:50:30 +01:00
hwclock.c Big cleanup in config help and description 2017-01-10 14:58:54 +01:00
ipcrm.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
ipcs.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
Kbuild.src Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
losetup.c mount: create loop devices with LO_FLAGS_AUTOCLEAR flag 2017-03-16 16:55:47 +01:00
lspci.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
lsusb.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
mdev.c mdev: create devices from /sys/dev 2016-09-07 14:09:01 +02:00
minix.h more bionic fixes 2016-03-14 19:34:15 +01:00
mkfs_ext2_test.sh mkfs_ext2: use compatible inode sizes; add -I <inodesize>. (by Vladimir) 2009-10-22 12:12:17 +02:00
mkfs_ext2.c *: add comment about APPLET_ODDNAME format 2017-01-29 14:57:33 +01:00
mkfs_ext2.txt mkfs_ext2: use compatible inode sizes; add -I <inodesize>. (by Vladimir) 2009-10-22 12:12:17 +02:00
mkfs_minix.c *: add comment about APPLET_ODDNAME format 2017-01-29 14:57:33 +01:00
mkfs_reiser.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
mkfs_vfat.c *: add comment about APPLET_ODDNAME format 2017-01-29 14:57:33 +01:00
mkswap.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
more.c libbb: consolidate the code to set termios unbuffered mode 2017-01-11 16:17:59 +01:00
mount.c mount: create loop devices with LO_FLAGS_AUTOCLEAR flag 2017-03-16 16:55:47 +01:00
nsenter.c make --help texts more uniform 2017-01-21 02:49:58 +01:00
pivot_root.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
rdate.c rdate: time(NULL) is shorter than time(&var) 2017-01-20 16:07:14 +01:00
rdev.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
readprofile.c Code style fixes, no code changes 2016-11-28 01:22:57 +01:00
rev.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
rtcwake.c make --help texts more uniform 2017-01-21 02:49:58 +01:00
script.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
scriptreplay.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
setarch.c *: add comment about APPLET_ODDNAME format 2017-01-29 14:57:33 +01:00
swaponoff.c *: add comment about APPLET_ODDNAME format 2017-01-29 14:57:33 +01:00
switch_root.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
uevent.c Convert all util-linux/* applets to "new style" applet definitions 2016-11-23 11:46:32 +01:00
umount.c Revert "umount: make -d always active, add -D to suppress it" 2017-03-16 17:51:06 +01:00
unshare.c make --help texts more uniform 2017-01-21 02:49:58 +01:00