On 3/26/22 15:29, Karl Berry wrote:
why would I want data to be synced and not metadata?

Performance, in apps that don't care about the metadata. Admittedly for dd the use case is rare; it's mostly present so that dd exports all the open flags to the user.

I installed the attached to try to document this better.
From 1efce5663554619db34d2722be7d6e5a14404065 Mon Sep 17 00:00:00 2001
From: Paul Eggert <egg...@cs.ucla.edu>
Date: Wed, 6 Jul 2022 23:42:19 -0500
Subject: [PATCH] dd: doc improvement (Bug#54586)

* doc/coreutils.texi (dd invocation): Explain
fdatasync and fsync better.
---
 doc/coreutils.texi | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index 7bca37b71..e0c87d1ad 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -9466,7 +9466,13 @@ Continue after read errors.
 @cindex synchronized data writes, before finishing
 Synchronize output data just before finishing,
 even if there were write errors.
-This forces a physical write of output data.
+This forces a physical write of output data,
+so that even if power is lost the output data will be preserved.
+If neither this nor @samp{fsync} are specified, output is treated as
+usual with file systems, i.e., output data and metadata may be cached
+in primary memory for some time before the operating system physically
+writes it, and thus output data and metadata may be lost if power is lost.
+@xref{sync invocation}.
 This conversion is a GNU extension to POSIX.
 
 @item fsync
@@ -9474,7 +9480,10 @@ This conversion is a GNU extension to POSIX.
 @cindex synchronized data and metadata writes, before finishing
 Synchronize output data and metadata just before finishing,
 even if there were write errors.
-This forces a physical write of output data and metadata.
+This acts like @samp{fdatasync} except it also preserves output metadata,
+such as the last-modified time of the output file; for this reason it
+may be a bit slower than @samp{fdatasync} although the performance
+difference is typically insignificant for @command{dd}.
 This conversion is a GNU extension to POSIX.
 
 @end table
-- 
2.36.1

Reply via email to