shutdown: fsync() before detaching loopback devices
This is a follow-up for cae1e8fb88c5a6b0960a2d0be3df8755f0c78462: 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 a new issue