https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=229616
--- Comment #3 from Thomas Hurst <[email protected]> --- So, did a bit of research to see what everyone else is doing. NetBSD: * Checks close() on output * fsync() on output if it's stdout (where close() may simply decrement a refcount) OpenBSD: * Does not close() at all * Supports conv=fsync Illumos: * Checks close() on output, and also fclose(stdout) * Supports conv=fsync and fdatasync * Supports oflag=sync and dsync for synchronous writes Coreutils: * Checks close() on both input and output * Checks ferror()/fclose() on stdout if arg parsing fails * Supports conv=fsync and fdatasync * Supports oflag=sync, dsync, and direct * EINTR-checking loops for close() and f*sync() So FreeBSD's bit of an outlier, being the only dd without any fsync support at all, and calling close() explicitly but not checking it succeeds. I'm thinking we could do a hybrid of NetBSD and OpenBSD's approaches: 1. Check close() 2. Also check fsync() if output is stdout 3. Add conv=fsync support Other options might be nice to have, but aren't needed to ensure data is on stable storage after dd is finished, which is the most important point. -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "[email protected]"
