* find device of a known mountpoint @ 2017-03-31 9:00 Rüdiger Meier 2017-03-31 9:19 ` Karel Zak 0 siblings, 1 reply; 9+ messages in thread From: Rüdiger Meier @ 2017-03-31 9:00 UTC (permalink / raw) To: util-linux Hi, I wonder whether we have a command which tells me the device corresponding to a known mount point. I want to avoid grepping the output of mount because it may not unique (regarding mounts on shared bind mounts) and because the original mount point may include symlinks which are canonicalized by the kernel. Example: $ truncate -s100M /tmp/img $ losetup /dev/loop0 /tmp/img $ mkfs.ext2 /dev/loop0 $ mkdir /tmp/mnt $ ln -s /tmp /tmp/xyz/symlink $ mount /dev/loop0 /tmp/xyz/symlink/mnt $ mount | grep loop /dev/loop0 on /tmp/mnt type ext2 ... I need a command which outputs "/dev/loop0" when "/tmp/xyz/symlink/mnt" is given. So far I found df as the only solution (but ugly and maybe GNU-only). And it would succeed for any input file, not only mountpoints. $ df -P /tmp/xyz/symlink/mnt | awk 'NR==2{print $1}' /dev/loop0 Our mountpoint(1) looks like the right tool but prints the device numbers only $ mountpoint -d /tmp/xyz/symlink/mnt 7:0 So how could I do this in a non-ugly way? cu, Rudi ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: find device of a known mountpoint 2017-03-31 9:00 find device of a known mountpoint Rüdiger Meier @ 2017-03-31 9:19 ` Karel Zak 2017-03-31 10:03 ` Rüdiger Meier 2017-03-31 10:09 ` [PATCH] test: fix mountpoint device check in libmount/loop Ruediger Meier 0 siblings, 2 replies; 9+ messages in thread From: Karel Zak @ 2017-03-31 9:19 UTC (permalink / raw) To: Rüdiger Meier; +Cc: util-linux On Fri, Mar 31, 2017 at 11:00:24AM +0200, Rüdiger Meier wrote: > $ truncate -s100M /tmp/img > $ losetup /dev/loop0 /tmp/img > $ mkfs.ext2 /dev/loop0 > > $ mkdir /tmp/mnt > $ ln -s /tmp /tmp/xyz/symlink > > $ mount /dev/loop0 /tmp/xyz/symlink/mnt > $ mount | grep loop > /dev/loop0 on /tmp/mnt type ext2 ... > > > I need a command which outputs "/dev/loop0" when "/tmp/xyz/symlink/mnt" is > given. $ findmnt -no SOURCE /tmp/xyz/symlink/mnt /dev/loop0 Note that for bind mounts there is nothing like primary (original) and secondary mountpoints. It's two ways to the same filesystem. Karel -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: find device of a known mountpoint 2017-03-31 9:19 ` Karel Zak @ 2017-03-31 10:03 ` Rüdiger Meier 2017-03-31 10:41 ` Rüdiger Meier 2017-03-31 10:09 ` [PATCH] test: fix mountpoint device check in libmount/loop Ruediger Meier 1 sibling, 1 reply; 9+ messages in thread From: Rüdiger Meier @ 2017-03-31 10:03 UTC (permalink / raw) To: Karel Zak; +Cc: util-linux On 03/31/2017 11:19 AM, Karel Zak wrote: > On Fri, Mar 31, 2017 at 11:00:24AM +0200, Rüdiger Meier wrote: >> $ truncate -s100M /tmp/img >> $ losetup /dev/loop0 /tmp/img >> $ mkfs.ext2 /dev/loop0 >> >> $ mkdir /tmp/mnt >> $ ln -s /tmp /tmp/xyz/symlink >> >> $ mount /dev/loop0 /tmp/xyz/symlink/mnt >> $ mount | grep loop >> /dev/loop0 on /tmp/mnt type ext2 ... >> >> >> I need a command which outputs "/dev/loop0" when "/tmp/xyz/symlink/mnt" is >> given. > > $ findmnt -no SOURCE /tmp/xyz/symlink/mnt > /dev/loop0 Thank's. Now I remember that you have told me that already one day. :) > > Note that for bind mounts there is nothing like primary (original) > and secondary mountpoints. It's two ways to the same filesystem. Yep in this case the problem was only duplicate mountpoints when you mount something on a subdir a shared bind mount. I'll send a petch for one libmount test. I really hate that systemd defaults to shared ... cu, Rudi ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: find device of a known mountpoint 2017-03-31 10:03 ` Rüdiger Meier @ 2017-03-31 10:41 ` Rüdiger Meier 2017-03-31 10:54 ` Karel Zak 0 siblings, 1 reply; 9+ messages in thread From: Rüdiger Meier @ 2017-03-31 10:41 UTC (permalink / raw) To: Karel Zak; +Cc: util-linux On 03/31/2017 12:03 PM, Rüdiger Meier wrote: > > > On 03/31/2017 11:19 AM, Karel Zak wrote: >> On Fri, Mar 31, 2017 at 11:00:24AM +0200, Rüdiger Meier wrote: >>> $ truncate -s100M /tmp/img >>> $ losetup /dev/loop0 /tmp/img >>> $ mkfs.ext2 /dev/loop0 >>> >>> $ mkdir /tmp/mnt >>> $ ln -s /tmp /tmp/xyz/symlink >>> >>> $ mount /dev/loop0 /tmp/xyz/symlink/mnt >>> $ mount | grep loop >>> /dev/loop0 on /tmp/mnt type ext2 ... >>> >>> >>> I need a command which outputs "/dev/loop0" when >>> "/tmp/xyz/symlink/mnt" is >>> given. >> >> $ findmnt -no SOURCE /tmp/xyz/symlink/mnt >> /dev/loop0 > > Thank's. Now I remember that you have told me that already one day. :) BTW is there also a way to get "findmnt -n -o SOURCE" working if the argument is not a mount point but a regular file on another mount point? (In opposite of my initial question.) I don't like that all these questions here are answered using "df". http://unix.stackexchange.com/questions/90252/how-to-get-mount-point-of-filesystem-containing-given-file http://unix.stackexchange.com/questions/128471/determine-what-device-a-directory-is-located-on cu, Rudi ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: find device of a known mountpoint 2017-03-31 10:41 ` Rüdiger Meier @ 2017-03-31 10:54 ` Karel Zak 2017-03-31 11:20 ` Rüdiger Meier 0 siblings, 1 reply; 9+ messages in thread From: Karel Zak @ 2017-03-31 10:54 UTC (permalink / raw) To: Rüdiger Meier; +Cc: util-linux On Fri, Mar 31, 2017 at 12:41:22PM +0200, Rüdiger Meier wrote: > On 03/31/2017 12:03 PM, Rüdiger Meier wrote: > > > > > > On 03/31/2017 11:19 AM, Karel Zak wrote: > > > On Fri, Mar 31, 2017 at 11:00:24AM +0200, Rüdiger Meier wrote: > > > > $ truncate -s100M /tmp/img > > > > $ losetup /dev/loop0 /tmp/img > > > > $ mkfs.ext2 /dev/loop0 > > > > > > > > $ mkdir /tmp/mnt > > > > $ ln -s /tmp /tmp/xyz/symlink > > > > > > > > $ mount /dev/loop0 /tmp/xyz/symlink/mnt > > > > $ mount | grep loop > > > > /dev/loop0 on /tmp/mnt type ext2 ... > > > > > > > > > > > > I need a command which outputs "/dev/loop0" when > > > > "/tmp/xyz/symlink/mnt" is > > > > given. > > > > > > $ findmnt -no SOURCE /tmp/xyz/symlink/mnt > > > /dev/loop0 > > > > Thank's. Now I remember that you have told me that already one day. :) > > BTW is there also a way to get "findmnt -n -o SOURCE" working if the > argument is not a mount point but a regular file on another mount > point? (In opposite of my initial question.) $ findmnt --target /home/kzak/.bash_profile TARGET SOURCE FSTYPE OPTIONS /home /dev/sda3 ext4 rw,relatime,data=ordered Note that it's probably better to use (for the previous example) the option --mountpoint if you want to be sure that the path is interpreted as mountpoint and never as a regular file. > I don't like that all these questions here are answered using "df". > http://unix.stackexchange.com/questions/90252/how-to-get-mount-point-of-filesystem-containing-given-file > > http://unix.stackexchange.com/questions/128471/determine-what-device-a-directory-is-located-on Well... :-) Karel -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: find device of a known mountpoint 2017-03-31 10:54 ` Karel Zak @ 2017-03-31 11:20 ` Rüdiger Meier 0 siblings, 0 replies; 9+ messages in thread From: Rüdiger Meier @ 2017-03-31 11:20 UTC (permalink / raw) To: Karel Zak; +Cc: util-linux On 03/31/2017 12:54 PM, Karel Zak wrote: >> I don't like that all these questions here are answered using "df". >> http://unix.stackexchange.com/questions/90252/how-to-get-mount-point-of-filesystem-containing-given-file >> >> http://unix.stackexchange.com/questions/128471/determine-what-device-a-directory-is-located-on > > Well... :-) Now I've added findmnt answers there, so I don't need to ask you again next time I need it ;) cu, Rudi ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH] test: fix mountpoint device check in libmount/loop 2017-03-31 9:19 ` Karel Zak 2017-03-31 10:03 ` Rüdiger Meier @ 2017-03-31 10:09 ` Ruediger Meier 2017-03-31 10:57 ` Karel Zak 2017-03-31 11:01 ` Rüdiger Meier 1 sibling, 2 replies; 9+ messages in thread From: Ruediger Meier @ 2017-03-31 10:09 UTC (permalink / raw) To: util-linux; +Cc: Stanislav Brabec From: Ruediger Meier <ruediger.meier@ga-group.nl> This test could fail if the build directory is somehow exoticly mounted (shared bind mounts, symlinks). CC: Stanislav Brabec <sbrabec@suse.cz> Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl> --- tests/ts/libmount/loop | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/tests/ts/libmount/loop b/tests/ts/libmount/loop index 452732f..893d902 100755 --- a/tests/ts/libmount/loop +++ b/tests/ts/libmount/loop @@ -23,12 +23,24 @@ TS_DESC="losetup-loop" ts_init "$*" ts_check_test_command "$TS_CMD_MOUNT" +ts_check_test_command "$TS_CMD_FINDMNT" ts_check_test_command "$TS_CMD_LOSETUP" ts_skip_nonroot ts_check_losetup ts_check_prog "mkfs.ext3" +function verify_mount_dev { + local dev=$1 + local mp=$2 + local dev_mounted=$($TS_CMD_FINDMNT -no SOURCE "$mp") + + if test "$dev" != "$dev_mounted" ; then + echo "Mounted incorrect device: have '$dev_mounted', want '$dev'" >&2 + return 1 + fi +} + # # file-* tests: Backing file is a regular file # @@ -61,10 +73,7 @@ ts_init_subtest "dev-loop" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show $BACKFILE 2>> $TS_OUTPUT ) $TS_CMD_MOUNT $LODEV "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 -MOUNTED_LODEV="$( $TS_CMD_MOUNT | grep "$TS_MOUNTPOINT" | while read LODEV REST ; do echo $LODEV ; done )" -if test "$MOUNTED_LODEV" != "$LODEV" ; then - echo "Mounted incorrect device mounts: $MOUNTED_LODEV, wants: $LODEV" >> $TS_OUTPUT -fi +verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1 udevadm settle @@ -75,10 +84,7 @@ ts_init_subtest "o-loop-val" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT LODEV=$( $TS_CMD_LOSETUP --find 2>> $TS_OUTPUT ) $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 -MOUNTED_LODEV="$( cat /proc/self/mounts | grep "$TS_MOUNTPOINT" | while read LODEV REST ; do echo $LODEV ; done )" -if test "$MOUNTED_LODEV" != "$LODEV" ; then - echo "Mounted incorrect device mounts: $MOUNTED_LODEV, wants: $LODEV" >> $TS_OUTPUT -fi +verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 udevadm settle ts_log "Success" @@ -88,10 +94,7 @@ ts_init_subtest "reuse" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show "$BACKFILE" 2>> $TS_OUTPUT ) $TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 -MOUNTED_LODEV="$( cat /proc/self/mounts | grep "$TS_MOUNTPOINT" | while read LODEV REST ; do echo $LODEV ; done )" -if test "$MOUNTED_LODEV" != "$LODEV" ; then - echo "Mounted incorrect device mounts: $MOUNTED_LODEV, wants: $LODEV" >> $TS_OUTPUT -fi +verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1 udevadm settle -- 1.8.5.6 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] test: fix mountpoint device check in libmount/loop 2017-03-31 10:09 ` [PATCH] test: fix mountpoint device check in libmount/loop Ruediger Meier @ 2017-03-31 10:57 ` Karel Zak 2017-03-31 11:01 ` Rüdiger Meier 1 sibling, 0 replies; 9+ messages in thread From: Karel Zak @ 2017-03-31 10:57 UTC (permalink / raw) To: Ruediger Meier; +Cc: util-linux, Stanislav Brabec On Fri, Mar 31, 2017 at 12:09:46PM +0200, Ruediger Meier wrote: > tests/ts/libmount/loop | 27 +++++++++++++++------------ > 1 file changed, 15 insertions(+), 12 deletions(-) Applied, thanks. -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] test: fix mountpoint device check in libmount/loop 2017-03-31 10:09 ` [PATCH] test: fix mountpoint device check in libmount/loop Ruediger Meier 2017-03-31 10:57 ` Karel Zak @ 2017-03-31 11:01 ` Rüdiger Meier 1 sibling, 0 replies; 9+ messages in thread From: Rüdiger Meier @ 2017-03-31 11:01 UTC (permalink / raw) To: util-linux; +Cc: Stanislav Brabec On 03/31/2017 12:09 PM, Ruediger Meier wrote: > From: Ruediger Meier <ruediger.meier@ga-group.nl> > > This test could fail if the build directory is somehow exoticly > mounted (shared bind mounts, symlinks). > > CC: Stanislav Brabec <sbrabec@suse.cz> > Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl> > --- > tests/ts/libmount/loop | 27 +++++++++++++++------------ > 1 file changed, 15 insertions(+), 12 deletions(-) > > diff --git a/tests/ts/libmount/loop b/tests/ts/libmount/loop > index 452732f..893d902 100755 > --- a/tests/ts/libmount/loop > +++ b/tests/ts/libmount/loop > @@ -23,12 +23,24 @@ TS_DESC="losetup-loop" > ts_init "$*" > > ts_check_test_command "$TS_CMD_MOUNT" > +ts_check_test_command "$TS_CMD_FINDMNT" > ts_check_test_command "$TS_CMD_LOSETUP" > > ts_skip_nonroot > ts_check_losetup > ts_check_prog "mkfs.ext3" > > +function verify_mount_dev { > + local dev=$1 > + local mp=$2 > + local dev_mounted=$($TS_CMD_FINDMNT -no SOURCE "$mp") Regarding your other comments, maybe we should add --mountpoint here. > + > + if test "$dev" != "$dev_mounted" ; then > + echo "Mounted incorrect device: have '$dev_mounted', want '$dev'" >&2 > + return 1 > + fi > +} > + > # > # file-* tests: Backing file is a regular file > # > @@ -61,10 +73,7 @@ ts_init_subtest "dev-loop" > [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT > LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show $BACKFILE 2>> $TS_OUTPUT ) > $TS_CMD_MOUNT $LODEV "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 > -MOUNTED_LODEV="$( $TS_CMD_MOUNT | grep "$TS_MOUNTPOINT" | while read LODEV REST ; do echo $LODEV ; done )" > -if test "$MOUNTED_LODEV" != "$LODEV" ; then > - echo "Mounted incorrect device mounts: $MOUNTED_LODEV, wants: $LODEV" >> $TS_OUTPUT > -fi > +verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 > $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 > $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1 > udevadm settle > @@ -75,10 +84,7 @@ ts_init_subtest "o-loop-val" > [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT > LODEV=$( $TS_CMD_LOSETUP --find 2>> $TS_OUTPUT ) > $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 > -MOUNTED_LODEV="$( cat /proc/self/mounts | grep "$TS_MOUNTPOINT" | while read LODEV REST ; do echo $LODEV ; done )" > -if test "$MOUNTED_LODEV" != "$LODEV" ; then > - echo "Mounted incorrect device mounts: $MOUNTED_LODEV, wants: $LODEV" >> $TS_OUTPUT > -fi > +verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 > $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 > udevadm settle > ts_log "Success" > @@ -88,10 +94,7 @@ ts_init_subtest "reuse" > [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT > LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show "$BACKFILE" 2>> $TS_OUTPUT ) > $TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 > -MOUNTED_LODEV="$( cat /proc/self/mounts | grep "$TS_MOUNTPOINT" | while read LODEV REST ; do echo $LODEV ; done )" > -if test "$MOUNTED_LODEV" != "$LODEV" ; then > - echo "Mounted incorrect device mounts: $MOUNTED_LODEV, wants: $LODEV" >> $TS_OUTPUT > -fi > +verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 > $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 > $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1 > udevadm settle > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2017-03-31 11:20 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-03-31 9:00 find device of a known mountpoint Rüdiger Meier 2017-03-31 9:19 ` Karel Zak 2017-03-31 10:03 ` Rüdiger Meier 2017-03-31 10:41 ` Rüdiger Meier 2017-03-31 10:54 ` Karel Zak 2017-03-31 11:20 ` Rüdiger Meier 2017-03-31 10:09 ` [PATCH] test: fix mountpoint device check in libmount/loop Ruediger Meier 2017-03-31 10:57 ` Karel Zak 2017-03-31 11:01 ` Rüdiger Meier
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.