mirror of
https://github.com/systemd/systemd.git
synced 2025-02-04 21:47:31 +03:00
commit
ed66590d15
@ -338,6 +338,16 @@ bool fstype_is_api_vfs(const char *fstype) {
|
||||
"tracefs");
|
||||
}
|
||||
|
||||
bool fstype_is_blockdev_backed(const char *fstype) {
|
||||
const char *x;
|
||||
|
||||
x = startswith(fstype, "fuse.");
|
||||
if (x)
|
||||
fstype = x;
|
||||
|
||||
return !streq(fstype, "9p") && !fstype_is_network(fstype) && !fstype_is_api_vfs(fstype);
|
||||
}
|
||||
|
||||
bool fstype_is_ro(const char *fstype) {
|
||||
/* All Linux file systems that are necessarily read-only */
|
||||
return STR_IN_SET(fstype,
|
||||
|
@ -14,6 +14,7 @@ int path_is_mount_point(const char *path, const char *root, int flags);
|
||||
|
||||
bool fstype_is_network(const char *fstype);
|
||||
bool fstype_is_api_vfs(const char *fstype);
|
||||
bool fstype_is_blockdev_backed(const char *fstype);
|
||||
bool fstype_is_ro(const char *fsype);
|
||||
bool fstype_can_discard(const char *fstype);
|
||||
bool fstype_can_uid_gid(const char *fstype);
|
||||
|
@ -364,7 +364,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"At most two arguments required.");
|
||||
|
||||
if (arg_mount_type && (fstype_is_api_vfs(arg_mount_type) || fstype_is_network(arg_mount_type))) {
|
||||
if (arg_mount_type && !fstype_is_blockdev_backed(arg_mount_type)) {
|
||||
arg_mount_what = strdup(argv[optind]);
|
||||
if (!arg_mount_what)
|
||||
return log_oom();
|
||||
@ -1463,7 +1463,7 @@ static int run(int argc, char* argv[]) {
|
||||
if (arg_action == ACTION_UMOUNT)
|
||||
return action_umount(bus, argc, argv);
|
||||
|
||||
if ((!arg_mount_type || !fstype_is_network(arg_mount_type))
|
||||
if ((!arg_mount_type || fstype_is_blockdev_backed(arg_mount_type))
|
||||
&& !path_is_normalized(arg_mount_what)) {
|
||||
log_error("Path contains non-normalized components: %s", arg_mount_what);
|
||||
return -EINVAL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user