diff options
author | Karel Zak <kzak@redhat.com> | 2012-08-01 11:14:21 -0400 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2012-08-01 11:14:21 -0400 |
commit | 808fd6bc68e00a686f8eed7e31f682a9128bdf9b (patch) | |
tree | 923d44a70f587257f67e0393d2e479a5b482e98c | |
parent | 4dac21d1e8ff31c3b01f7f29e7cf877e89f09eaa (diff) | |
download | nfs-utils-808fd6bc68e00a686f8eed7e31f682a9128bdf9b.tar.gz nfs-utils-808fd6bc68e00a686f8eed7e31f682a9128bdf9b.tar.xz nfs-utils-808fd6bc68e00a686f8eed7e31f682a9128bdf9b.zip |
umount.nfs: ignore non-nfs filesystems
# umount.nfs /boot; echo $?
umount.nfs: /boot: device is busy
32
expected and fixed behavior:
# umount.nfs /boot; echo $?
# umount.nfs: /boot: is not an NFS filesystem
1
Note that the function mnt_context_set_fstype_pattern() has never
been used for mtab/fstab evaluation. It's usable only for "umount -a"
and for "mount -t" operations.
Reported-by: NeilBrown <neilb@suse.de>
Signed-off-by: Karel Zak <kzak@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r-- | utils/mount/mount_libmount.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/utils/mount/mount_libmount.c b/utils/mount/mount_libmount.c index 5c1116a..ddf61b2 100644 --- a/utils/mount/mount_libmount.c +++ b/utils/mount/mount_libmount.c @@ -210,8 +210,6 @@ static int umount_main(struct libmnt_context *cxt, int argc, char **argv) if (mnt_context_set_target(cxt, spec)) goto err; - if (mnt_context_set_fstype_pattern(cxt, "nfs,nfs4")) /* restrict filesystems */ - goto err; /* read mtab/fstab, evaluate permissions, etc. */ rc = mnt_context_prepare_umount(cxt); @@ -221,6 +219,14 @@ static int umount_main(struct libmnt_context *cxt, int argc, char **argv) goto err; } + if (mnt_context_get_fstype(cxt) && + !mnt_match_fstype(mnt_context_get_fstype(cxt), "nfs,nfs4")) { + + nfs_error(_("%s: %s: is not an NFS filesystem"), progname, spec); + ret = EX_USAGE; + goto err; + } + opts = retrieve_mount_options(mnt_context_get_fs(cxt)); if (!mnt_context_is_lazy(cxt)) { @@ -244,6 +250,7 @@ static int umount_main(struct libmnt_context *cxt, int argc, char **argv) /* strange, no entry in mtab or /proc not mounted */ nfs_umount23(spec, "tcp,v3"); } + ret = EX_FILEIO; rc = mnt_context_do_umount(cxt); /* call umount(2) syscall */ mnt_context_finalize_mount(cxt); /* mtab update */ |