From 0aa6c429897e75d55ca6e7f3f104f397e158914b Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Mon, 7 Apr 2014 12:09:11 +0200 Subject: mount: apply "nofail" to MNT_ERR_NOSOURCE libmount error fstab: UUID=nonexist /mnt/nonexist1 ext4 nofail 0 1 # mount -av mount: can't find UUID=nonexist .. this is bug of course. Reported-by: Patrick McLean Signed-off-by: Karel Zak --- libmount/src/context.c | 5 +++++ sys-utils/mount.c | 2 ++ 2 files changed, 7 insertions(+) diff --git a/libmount/src/context.c b/libmount/src/context.c index 5a88bcdcc..8dca3c12a 100644 --- a/libmount/src/context.c +++ b/libmount/src/context.c @@ -712,6 +712,11 @@ void *mnt_context_get_mtab_userdata(struct libmnt_context *cxt) * @cxt: mount context * @source: mount source (device, directory, UUID, LABEL, ...) * + * Note that libmount does not interpret "nofail" (MNT_MS_NOFAIL) + * mount option. The real return code is always returned, when + * the device does not exist then it's usually MNT_ERR_NOSOURCE + * from libmount or ENOENT, ENOTDIR, ENOTBLK, ENXIO from moun(2). + * * Returns: 0 on success, negative number in case of error. */ int mnt_context_set_source(struct libmnt_context *cxt, const char *source) diff --git a/sys-utils/mount.c b/sys-utils/mount.c index 29fb2f2c9..97365b168 100644 --- a/sys-utils/mount.c +++ b/sys-utils/mount.c @@ -431,6 +431,8 @@ try_readonly: warnx(_("you must specify the filesystem type")); return MOUNT_EX_USAGE; case -MNT_ERR_NOSOURCE: + if (uflags & MNT_MS_NOFAIL) + return MOUNT_EX_SUCCESS; if (src) warnx(_("can't find %s"), src); else -- cgit v1.2.1