From 8407a5d0183d9513349754f1eac86e2fdec8bd76 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 16 May 2010 18:13:58 +0200 Subject: [PATCH] swap: don't add mount links for swap devices --- swap.c | 3 +++ unit.c | 2 +- util.c | 10 ++++++++++ util.h | 2 ++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/swap.c b/swap.c index 174ce1dc..bd49e1ea 100644 --- a/swap.c +++ b/swap.c @@ -70,6 +70,9 @@ int swap_add_one_mount_link(Swap *s, Mount *m) { m->meta.load_state != UNIT_LOADED) return 0; + if (is_device_path(s->what)) + return 0; + if (!path_startswith(s->what, m->where)) return 0; diff --git a/unit.c b/unit.c index ee0c120b..1959b1b9 100644 --- a/unit.c +++ b/unit.c @@ -1864,7 +1864,7 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) { /* Adds in links to the device node that this unit is based on */ - if (!path_startswith(what, "/dev/") && !path_startswith(what, "/sys/")) + if (!is_device_path(what)) return 0; if (!(e = unit_name_build_escape(what+1, NULL, ".device"))) diff --git a/util.c b/util.c index 5e3654d1..f7d538aa 100644 --- a/util.c +++ b/util.c @@ -1927,6 +1927,16 @@ bool is_clean_exit(int code, int status) { return false; } +bool is_device_path(const char *path) { + + /* Returns true on paths that refer to a device, either in + * sysfs or in /dev */ + + return + path_startswith(path, "/dev/") || + path_startswith(path, "/sys/"); +} + static const char *const ioprio_class_table[] = { [IOPRIO_CLASS_NONE] = "none", [IOPRIO_CLASS_RT] = "realtime", diff --git a/util.h b/util.h index d0fc319e..a77a952e 100644 --- a/util.h +++ b/util.h @@ -231,6 +231,8 @@ ssize_t loop_read(int fd, void *buf, size_t nbytes); int path_is_mount_point(const char *path); +bool is_device_path(const char *path); + extern char * __progname; const char *ioprio_class_to_string(int i); -- 2.39.5