diff --git a/lib/device/device_id.c b/lib/device/device_id.c index 4b7214b60..74edae05c 100644 --- a/lib/device/device_id.c +++ b/lib/device/device_id.c @@ -689,7 +689,8 @@ int device_ids_write(struct cmd_context *cmd) } if ((dir_fd = open(dirpath, O_RDONLY)) < 0) { - fclose(fp); + if (fclose(fp)) + log_sys_debug("fclose", tmpfile); ret = 0; goto out; } @@ -782,9 +783,10 @@ static void _device_ids_update_try(struct cmd_context *cmd) if (!lock_devices_file_try(cmd, LOCK_EX, &held)) { log_debug("Skip devices file update (busy)."); } else { - if (device_ids_version_unchanged(cmd)) - device_ids_write(cmd); - else + if (device_ids_version_unchanged(cmd)) { + if (!device_ids_write(cmd)) + stack; + } else log_debug("Skip devices file update (changed)."); } if (!held) diff --git a/lib/label/label.c b/lib/label/label.c index 8cbed7dd8..f305ac735 100644 --- a/lib/label/label.c +++ b/lib/label/label.c @@ -582,7 +582,8 @@ retry_open: if (di == -1) { log_error("Failed to set bcache fd."); - close(fd); + if (close(fd)) + log_sys_debug("close", name); dev->bcache_fd = -1; return 0; } @@ -1592,7 +1593,8 @@ int label_scan_reopen_rw(struct device *dev) if (!bcache_change_fd(dev->bcache_di, fd)) { log_error("Failed to change to rw fd %s di %d fd %d.", dev_name(dev), dev->bcache_di, fd); - close(fd); + if (close(fd)) + log_sys_debug("close", dev_name(dev)); return 0; } diff --git a/tools/toollib.c b/tools/toollib.c index c8540b005..b9be54ebb 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -5770,7 +5770,8 @@ do_command: } /* TODO: when vgcreate uses only existing PVs this doesn't change and can be skipped */ - device_ids_write(cmd); + if (!device_ids_write(cmd)) + stack; /* * Don't keep devs open excl in bcache because the excl will prevent