Browse Source

libblkid: check fsync() return code

Since 39f5af2598 libblkid uses
O_NONBLOCK. Now it's more obvious that check fsync() (and close())
return value after write() is always a good idea ...

Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2074486
Signed-off-by: Karel Zak <kzak@redhat.com>
pull/1660/head
Karel Zak 4 months ago
parent
commit
133a0d70f6
  1. 3
      libblkid/src/probe.c
  2. 8
      misc-utils/wipefs.c

3
libblkid/src/probe.c

@ -1414,7 +1414,8 @@ int blkid_do_wipe(blkid_probe pr, int dryrun)
/* wipen on device */
if (write_all(fd, buf, len))
return -1;
fsync(fd);
if (fsync(fd) != 0)
return -1;
} else {
#ifdef HAVE_LINUX_BLKZONED_H
uint64_t zone_mask = ~(pr->zone_size - 1);

8
misc-utils/wipefs.c

@ -593,7 +593,9 @@ static int do_wipe(struct wipe_control *ctl)
if (need_force)
warnx(_("Use the --force option to force erase."));
fsync(blkid_probe_get_fd(pr));
if (fsync(blkid_probe_get_fd(pr)) != 0)
err(EXIT_FAILURE, _("%s: cannot flush modified buffers"),
ctl->devname);
#ifdef BLKRRPART
if (reread && (mode & O_EXCL)) {
@ -613,7 +615,9 @@ static int do_wipe(struct wipe_control *ctl)
}
#endif
close(blkid_probe_get_fd(pr));
if (close(blkid_probe_get_fd(pr)) != 0)
err(EXIT_FAILURE, _("%s: close device failed"), ctl->devname);
blkid_free_probe(pr);
free(backup);
return 0;

Loading…
Cancel
Save