chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
swap: create .wants symlink to 'auto' swap devices
[elogind.git]
/
src
/
core
/
umount.c
diff --git
a/src/core/umount.c
b/src/core/umount.c
index f0f2711295e9c6536288f232ec3c277f8c37ae93..1e95ad70dd0beb85394c23fab0b6e25f9075ee7e 100644
(file)
--- a/
src/core/umount.c
+++ b/
src/core/umount.c
@@
-219,7
+219,8
@@
static int loopback_list_get(MountPoint **head) {
}
if (udev_enumerate_add_match_subsystem(e, "block") < 0 ||
}
if (udev_enumerate_add_match_subsystem(e, "block") < 0 ||
- udev_enumerate_add_match_sysname(e, "loop*") < 0) {
+ udev_enumerate_add_match_sysname(e, "loop*") < 0 ||
+ udev_enumerate_add_match_sysattr(e, "loop/backing_file", NULL) < 0) {
r = -EIO;
goto finish;
}
r = -EIO;
goto finish;
}
@@
-233,7
+234,6
@@
static int loopback_list_get(MountPoint **head) {
udev_list_entry_foreach(item, first) {
MountPoint *lb;
struct udev_device *d;
udev_list_entry_foreach(item, first) {
MountPoint *lb;
struct udev_device *d;
- const char *backing;
char *loop;
const char *dn;
char *loop;
const char *dn;
@@
-242,12
+242,6
@@
static int loopback_list_get(MountPoint **head) {
goto finish;
}
goto finish;
}
- backing = udev_device_get_sysattr_value(d, "loop/backing_file");
- if (!backing) {
- udev_device_unref(d);
- continue;
- }
-
if (!(dn = udev_device_get_devnode(d))) {
udev_device_unref(d);
continue;
if (!(dn = udev_device_get_devnode(d))) {
udev_device_unref(d);
continue;
@@
-385,25
+379,23
@@
static int delete_loopback(const char *device) {
}
static int delete_dm(dev_t devnum) {
}
static int delete_dm(dev_t devnum) {
- int fd, r;
- struct dm_ioctl dm;
+ _cleanup_close_ int fd = -1;
+ int r;
+ struct dm_ioctl dm = {
+ .version = {DM_VERSION_MAJOR,
+ DM_VERSION_MINOR,
+ DM_VERSION_PATCHLEVEL},
+ .data_size = sizeof(dm),
+ .dev = devnum,
+ };
assert(major(devnum) != 0);
assert(major(devnum) != 0);
- if ((fd = open("/dev/mapper/control", O_RDWR|O_CLOEXEC)) < 0)
+ fd = open("/dev/mapper/control", O_RDWR|O_CLOEXEC);
+ if (fd < 0)
return -errno;
return -errno;
- zero(dm);
- dm.version[0] = DM_VERSION_MAJOR;
- dm.version[1] = DM_VERSION_MINOR;
- dm.version[2] = DM_VERSION_PATCHLEVEL;
-
- dm.data_size = sizeof(dm);
- dm.dev = devnum;
-
r = ioctl(fd, DM_DEV_REMOVE, &dm);
r = ioctl(fd, DM_DEV_REMOVE, &dm);
- close_nointr_nofail(fd);
-
return r >= 0 ? 0 : -errno;
}
return r >= 0 ? 0 : -errno;
}
@@
-426,7
+418,7
@@
static int mount_points_list_umount(MountPoint **head, bool *changed, bool log_e
*
* Mount points can be stacked. If a mount
* point is stacked below / or /usr, we
*
* Mount points can be stacked. If a mount
* point is stacked below / or /usr, we
- * cann
n
ot umount or remount it directly,
+ * cannot umount or remount it directly,
* since there is no way to refer to the
* underlying mount. There's nothing we can do
* about it for the general case, but we can
* since there is no way to refer to the
* underlying mount. There's nothing we can do
* about it for the general case, but we can