chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
core: rework device state logic
[elogind.git]
/
src
/
core
/
swap.c
diff --git
a/src/core/swap.c
b/src/core/swap.c
index f73a8e6debb2de0657a2e4f60b79a75a38775996..de3a5d8b10f1755c23a941bd5e3dae654f569398 100644
(file)
--- a/
src/core/swap.c
+++ b/
src/core/swap.c
@@
-331,7
+331,7
@@
static int swap_load(Unit *u) {
return swap_verify(s);
}
return swap_verify(s);
}
-static int swap_
add_one
(
+static int swap_
setup_unit
(
Manager *m,
const char *what,
const char *what_proc_swaps,
Manager *m,
const char *what,
const char *what_proc_swaps,
@@
-356,8
+356,10
@@
static int swap_add_one(
if (u &&
SWAP(u)->from_proc_swaps &&
if (u &&
SWAP(u)->from_proc_swaps &&
- !path_equal(SWAP(u)->parameters_proc_swaps.what, what_proc_swaps))
+ !path_equal(SWAP(u)->parameters_proc_swaps.what, what_proc_swaps)) {
+ log_error("Swap %s appeared twice with different device paths %s and %s", e, SWAP(u)->parameters_proc_swaps.what, what_proc_swaps);
return -EEXIST;
return -EEXIST;
+ }
if (!u) {
delete = true;
if (!u) {
delete = true;
@@
-372,7
+374,7
@@
static int swap_add_one(
SWAP(u)->what = strdup(what);
if (!SWAP(u)->what) {
SWAP(u)->what = strdup(what);
if (!SWAP(u)->what) {
- r =
log_oom()
;
+ r =
-ENOMEM
;
goto fail;
}
goto fail;
}
@@
-400,7
+402,6
@@
static int swap_add_one(
p->priority = priority;
unit_add_to_dbus_queue(u);
p->priority = priority;
unit_add_to_dbus_queue(u);
-
return 0;
fail:
return 0;
fail:
@@
-412,7
+413,7
@@
fail:
return r;
}
return r;
}
-static int swap_process_new
_swap
(Manager *m, const char *device, int prio, bool set_flags) {
+static int swap_process_new(Manager *m, const char *device, int prio, bool set_flags) {
_cleanup_udev_device_unref_ struct udev_device *d = NULL;
struct udev_list_entry *item = NULL, *first = NULL;
const char *dn;
_cleanup_udev_device_unref_ struct udev_device *d = NULL;
struct udev_list_entry *item = NULL, *first = NULL;
const char *dn;
@@
-421,7
+422,7
@@
static int swap_process_new_swap(Manager *m, const char *device, int prio, bool
assert(m);
assert(m);
- r = swap_
add_one
(m, device, device, prio, set_flags);
+ r = swap_
setup_unit
(m, device, device, prio, set_flags);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-437,7
+438,7
@@
static int swap_process_new_swap(Manager *m, const char *device, int prio, bool
/* Add the main device node */
dn = udev_device_get_devnode(d);
if (dn && !streq(dn, device))
/* Add the main device node */
dn = udev_device_get_devnode(d);
if (dn && !streq(dn, device))
- swap_
add_one
(m, dn, device, prio, set_flags);
+ swap_
setup_unit
(m, dn, device, prio, set_flags);
/* Add additional units for all symlinks */
first = udev_device_get_devlinks_list_entry(d);
/* Add additional units for all symlinks */
first = udev_device_get_devlinks_list_entry(d);
@@
-458,7
+459,7
@@
static int swap_process_new_swap(Manager *m, const char *device, int prio, bool
st.st_rdev != udev_device_get_devnum(d))
continue;
st.st_rdev != udev_device_get_devnum(d))
continue;
- swap_
add_one
(m, p, device, prio, set_flags);
+ swap_
setup_unit
(m, p, device, prio, set_flags);
}
return r;
}
return r;
@@
-1084,15
+1085,17
@@
static int swap_load_proc_swaps(Manager *m, bool set_flags) {
if (k == EOF)
break;
if (k == EOF)
break;
- log_warning("Failed to parse /proc/swaps:%u", i);
+ log_warning("Failed to parse /proc/swaps:%u
.
", i);
continue;
}
d = cunescape(dev);
if (!d)
continue;
}
d = cunescape(dev);
if (!d)
- return -ENOMEM;
+ return log_oom();
+
+ device_found_node(m, d, true, DEVICE_FOUND_SWAP, set_flags);
- k = swap_process_new
_swap
(m, d, prio, set_flags);
+ k = swap_process_new(m, d, prio, set_flags);
if (k < 0)
r = k;
}
if (k < 0)
r = k;
}
@@
-1144,6
+1147,9
@@
static int swap_dispatch_io(sd_event_source *source, int fd, uint32_t revents, v
break;
}
break;
}
+ if (swap->what)
+ device_found_node(m, swap->what, false, DEVICE_FOUND_SWAP, true);
+
} else if (swap->just_activated) {
/* New swap entry */
} else if (swap->just_activated) {
/* New swap entry */
@@
-1291,7
+1297,7
@@
fail:
return r;
}
return r;
}
-int swap_process_
new_device
(Manager *m, struct udev_device *dev) {
+int swap_process_
device_new
(Manager *m, struct udev_device *dev) {
struct udev_list_entry *item = NULL, *first = NULL;
_cleanup_free_ char *e = NULL;
const char *dn;
struct udev_list_entry *item = NULL, *first = NULL;
_cleanup_free_ char *e = NULL;
const char *dn;
@@
-1334,7
+1340,7
@@
int swap_process_new_device(Manager *m, struct udev_device *dev) {
return r;
}
return r;
}
-int swap_process_
removed_devic
e(Manager *m, struct udev_device *dev) {
+int swap_process_
device_remov
e(Manager *m, struct udev_device *dev) {
const char *dn;
int r = 0;
Swap *s;
const char *dn;
int r = 0;
Swap *s;