Fixes #6591.
return nulstr_contains(table, fstype);
}
+bool fstype_is_api_vfs(const char *fstype) {
+ static const char table[] =
+ "autofs\0"
+ "bpf\0"
+ "cgroup\0"
+ "cgroup2\0"
+ "configfs\0"
+ "cpuset\0"
+ "debugfs\0"
+ "devpts\0"
+ "devtmpfs\0"
+ "efivarfs\0"
+ "hugetlbfs\0"
+ "mqueue\0"
+ "proc\0"
+ "pstore\0"
+ "ramfs\0"
+ "securityfs\0"
+ "sysfs\0"
+ "tmpfs\0"
+ "tracefs\0"
+ ;
+
+ return nulstr_contains(table, fstype);
+}
+
int repeat_unmount(const char *path, int flags) {
bool done = false;
#define _cleanup_endmntent_ _cleanup_(endmntentp)
bool fstype_is_network(const char *fstype);
+bool fstype_is_api_vfs(const char *fstype);
union file_handle_union {
struct file_handle handle;
#include "fd-util.h"
#include "fileio.h"
#include "fstab-util.h"
+#include "mount-util.h"
#include "pager.h"
#include "parse-util.h"
#include "path-util.h"
return -EINVAL;
}
- if (arg_transport == BUS_TRANSPORT_LOCAL) {
+ if (arg_mount_type && (fstype_is_api_vfs(arg_mount_type) || fstype_is_network(arg_mount_type))) {
+ arg_mount_what = strdup(argv[optind]);
+ if (!arg_mount_what)
+ return log_oom();
+
+ } else if (arg_transport == BUS_TRANSPORT_LOCAL) {
_cleanup_free_ char *u = NULL, *p = NULL;
u = fstab_node_to_udev_node(argv[optind]);