mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-23 17:34:00 +03:00
shutdown: fsync() before detaching loopback devices
This is a follow-up for cae1e8fb88
: we
also call the detach ioctls in the shutdown code, hence add the fsync()s
there too, just to be safe.
This commit is contained in:
parent
e59d030ff8
commit
4534b32c73
@ -387,8 +387,15 @@ static int delete_loopback(const char *device) {
|
||||
assert(device);
|
||||
|
||||
fd = open(device, O_RDONLY|O_CLOEXEC);
|
||||
if (fd < 0)
|
||||
if (fd < 0) {
|
||||
log_debug_errno(errno, "Failed to open loopback device %s: %m", device);
|
||||
return errno == ENOENT ? 0 : -errno;
|
||||
}
|
||||
|
||||
/* Loopback block devices don't sync in-flight blocks when we clear the fd, hence sync explicitly
|
||||
* first */
|
||||
if (fsync(fd) < 0)
|
||||
log_debug_errno(errno, "Failed to sync loop block device %s, ignoring: %m", device);
|
||||
|
||||
if (ioctl(fd, LOOP_CLR_FD, 0) < 0) {
|
||||
if (errno == ENXIO) /* Nothing bound, didn't do anything */
|
||||
|
Loading…
Reference in New Issue
Block a user