From: Christoph Hellwig <hch@lst.de> To: Jeff King <peff@peff.net> Cc: Christoph Hellwig <hch@lst.de>, git@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH] enable core.fsyncObjectFiles by default Date: Wed, 17 Jan 2018 22:10:11 +0100 Message-ID: <20180117211011.GA355@lst.de> (raw) In-Reply-To: <20180117205509.GA14828@sigill.intra.peff.net> On Wed, Jan 17, 2018 at 03:55:09PM -0500, Jeff King wrote: > I'm definitely sympathetic, and I've contemplated a patch like this a > few times. But I'm not sure we're "safe by default" here after this > patch. In particular: > > 1. This covers only loose objects. We generally sync pack writes > already, so we're covered there. But we do not sync ref updates at > all, which we'd probably want to in a default-safe setup (a common > post-crash symptom I've seen is zero-length ref files). I've not seen them myself yet, but yes, they need an fsync. > 2. Is it sufficient to fsync() the individual file's descriptors? > We often do other filesystem operations (like hardlinking or > renaming) that also need to be committed to disk before an > operation can be considered saved. No, for metadata operations we need to fsync the directory as well. > 3. Related to (2), we often care about the order of metadata commits. > E.g., a common sequence is: > > a. Write object contents to tempfile. > > b. rename() or hardlink tempfile to final name. > > c. Write object name into ref.lock file. > > d. rename() ref.lock to ref > > If we see (d) but not (b), then the result is a corrupted > repository. Is this guaranteed by ext4 journaling with > data=ordered? It is not generally guranteed by Linux file system semantics. Various file system will actually start writeback of file data before rename, but not actually wait on it.
next prev parent reply index Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-01-17 18:48 Christoph Hellwig 2018-01-17 19:04 ` Junio C Hamano 2018-01-17 19:35 ` Christoph Hellwig 2018-01-17 20:05 ` Andreas Schwab 2018-01-17 19:37 ` Matthew Wilcox 2018-01-17 19:42 ` Christoph Hellwig 2018-01-17 21:44 ` Ævar Arnfjörð Bjarmason 2018-01-17 22:07 ` Linus Torvalds 2018-01-17 22:25 ` Linus Torvalds 2018-01-17 23:16 ` Ævar Arnfjörð Bjarmason 2018-01-17 23:42 ` Linus Torvalds 2018-01-17 23:52 ` Theodore Ts'o 2018-01-17 23:57 ` Linus Torvalds 2018-01-18 16:27 ` Christoph Hellwig 2018-01-19 19:08 ` Junio C Hamano 2018-01-20 22:14 ` Theodore Ts'o 2018-01-20 22:27 ` Junio C Hamano 2018-01-22 15:09 ` Ævar Arnfjörð Bjarmason 2018-01-22 18:09 ` Theodore Ts'o 2018-01-23 0:47 ` Jeff King 2018-01-23 5:45 ` Theodore Ts'o 2018-01-23 16:17 ` Jeff King 2018-01-23 0:25 ` Jeff King 2018-01-21 21:32 ` Chris Mason 2020-09-17 11:06 ` Ævar Arnfjörð Bjarmason 2020-09-17 11:28 ` [RFC PATCH 0/2] should core.fsyncObjectFiles fsync the dir entry + docs Ævar Arnfjörð Bjarmason 2020-09-17 11:28 ` [RFC PATCH 1/2] sha1-file: fsync() loose dir entry when core.fsyncObjectFiles Ævar Arnfjörð Bjarmason 2020-09-17 13:16 ` Jeff King 2020-09-17 15:09 ` Christoph Hellwig 2020-09-17 14:09 ` Christoph Hellwig 2020-09-17 14:55 ` Jeff King 2020-09-17 14:56 ` Christoph Hellwig 2020-09-17 15:37 ` Junio C Hamano 2020-09-17 17:12 ` Jeff King 2020-09-17 20:37 ` Taylor Blau 2020-09-22 10:42 ` Ævar Arnfjörð Bjarmason 2020-09-17 20:21 ` Johannes Sixt 2020-09-22 8:24 ` Ævar Arnfjörð Bjarmason 2020-11-19 11:38 ` Johannes Schindelin 2020-09-17 11:28 ` [RFC PATCH 2/2] core.fsyncObjectFiles: make the docs less flippant Ævar Arnfjörð Bjarmason 2020-09-17 14:12 ` Christoph Hellwig 2020-09-17 15:43 ` Junio C Hamano 2020-09-17 20:15 ` Johannes Sixt 2020-10-08 8:13 ` Johannes Schindelin 2020-10-08 15:57 ` Ævar Arnfjörð Bjarmason 2020-10-08 18:53 ` Junio C Hamano 2020-10-09 10:44 ` Johannes Schindelin 2020-09-17 19:21 ` Marc Branchaud 2020-09-17 14:14 ` [PATCH] enable core.fsyncObjectFiles by default Christoph Hellwig 2020-09-17 15:30 ` Junio C Hamano 2018-01-17 20:55 ` Jeff King 2018-01-17 21:10 ` Christoph Hellwig [this message] -- strict thread matches above, loose matches on Subject: below -- 2015-06-23 21:57 [PATCH] Enable " Stefan Beller 2015-06-23 22:21 ` Junio C Hamano 2015-06-23 23:29 ` Theodore Ts'o 2015-06-24 5:32 ` Junio C Hamano 2015-06-24 14:30 ` Theodore Ts'o 2015-06-24 1:07 ` Duy Nguyen 2015-06-24 3:37 ` Jeff King 2015-06-24 5:20 ` Junio C Hamano
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180117211011.GA355@lst.de \ --to=hch@lst.de \ --cc=git@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=peff@peff.net \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Mailing List Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/git/0 git/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 git git/ https://lore.kernel.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git