diff --git a/libmount/src/context.c b/libmount/src/context.c index 2d9795e23..b7278a42d 100644 --- a/libmount/src/context.c +++ b/libmount/src/context.c @@ -716,6 +716,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 4c5f0e528..74a1a84f2 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