From: Lennart Poettering Date: Fri, 29 Sep 2017 12:19:22 +0000 (+0200) Subject: dissect: automatically mark partitions read-only that have a read-only file system X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=6c78120a2db66990f872fa03dd14dd77d452e57d;p=elogind.git dissect: automatically mark partitions read-only that have a read-only file system Specifically, squashfs and iso9660 are always read-only, hence make sure we never even think about mounting them writable. --- diff --git a/src/basic/mount-util.c b/src/basic/mount-util.c index adf60c7ee..d8850bf83 100644 --- a/src/basic/mount-util.c +++ b/src/basic/mount-util.c @@ -578,6 +578,19 @@ bool fstype_is_api_vfs(const char *fstype) { return nulstr_contains(table, fstype); } +bool fstype_is_ro(const char *fstype) { + + /* All Linux file systems that are necessarily read-only */ + + static const char table[] = + "DM_verity_hash\0" + "iso9660\0" + "squashfs\0" + ; + + return nulstr_contains(table, fstype); +} + int repeat_unmount(const char *path, int flags) { bool done = false; diff --git a/src/basic/mount-util.h b/src/basic/mount-util.h index 571a0eb50..3b026c1b5 100644 --- a/src/basic/mount-util.h +++ b/src/basic/mount-util.h @@ -49,6 +49,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, endmntent); bool fstype_is_network(const char *fstype); #endif // 0 bool fstype_is_api_vfs(const char *fstype); +bool fstype_is_ro(const char *fsype); union file_handle_union { struct file_handle handle;