From: Lennart Poettering Date: Fri, 29 Sep 2017 12:23:17 +0000 (+0200) Subject: dissect: split list of discard-supporting fs out into mount-util.c X-Git-Tag: v235~37^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=154d22695ad6f131f0e2f99b895b3b1038c10eea;p=platform%2Fupstream%2Fsystemd.git dissect: split list of discard-supporting fs out into mount-util.c Let's manage the list of file systems that do a specific thing at one place, following similar naming. No functional changes. --- diff --git a/src/basic/mount-util.c b/src/basic/mount-util.c index 843d266..9069280 100644 --- a/src/basic/mount-util.c +++ b/src/basic/mount-util.c @@ -591,6 +591,18 @@ bool fstype_is_ro(const char *fstype) { return nulstr_contains(table, fstype); } +bool fstype_can_discard(const char *fstype) { + + static const char table[] = + "btrfs\0" + "ext4\0" + "vfat\0" + "xfs\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 3ec0e7d..1e066d8 100644 --- a/src/basic/mount-util.h +++ b/src/basic/mount-util.h @@ -46,6 +46,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, endmntent); bool fstype_is_network(const char *fstype); bool fstype_is_api_vfs(const char *fstype); bool fstype_is_ro(const char *fsype); +bool fstype_can_discard(const char *fstype); union file_handle_union { struct file_handle handle; diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index b02b289..243a46f 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -684,7 +684,7 @@ static int mount_partition( p = where; /* If requested, turn on discard support. */ - if (STR_IN_SET(fstype, "btrfs", "ext4", "vfat", "xfs") && + if (fstype_can_discard(fstype) && ((flags & DISSECT_IMAGE_DISCARD) || ((flags & DISSECT_IMAGE_DISCARD_ON_LOOP) && is_loop_device(m->node)))) options = "discard";