]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libmount: propagate first error of multiple filesystem types
authorJohn Keeping <jkeeping@inmusicbrands.com>
Tue, 6 Aug 2024 17:17:29 +0000 (18:17 +0100)
committerKarel Zak <kzak@redhat.com>
Fri, 3 Jan 2025 11:42:39 +0000 (12:42 +0100)
Use the same error handling logic as do_mount_by_pattern() to better
handle the case where EROFS is returned from the first filesystem in a
list but subsequent filesystems overwrite this status with, for example,
ENODEV.

This allows read-only devices to mount without the user needing to
explicitly specify "ro" while specifying a list of potential
filesystems, some of which may not be available.

Signed-off-by: John Keeping <jkeeping@inmusicbrands.com>
(cherry picked from commit e2b3f9915333b6e423e1f47d3f5e7cc6ea0ff482)

libmount/src/context_mount.c

index a75d1ed526a95f6670eb64eb3223016cf06e152b..22892f3f6700c1064c4d6731daf3db0a1246803b 100644 (file)
@@ -626,7 +626,7 @@ static int do_mount_by_types(struct libmnt_context *cxt, const char *types)
                        rc = do_mount(cxt, p);
                p = end ? end + 1 : NULL;
                free(autotype);
-       } while (!is_success_status(cxt) && p);
+       } while (!is_termination_status(cxt) && p);
 
        free(p0);
        return rc;