git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Git bug report - disk errors on Windows after push

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Apr 22, 2022, 09:27 UTC
Message-ID
<220422.868rrx5uju.gmgdl@evledraar.gmail.com>
In-Reply-To
<Yl2h5I0apzWhpVtr@camp.crustytoothpaste.net>
On Mon, Apr 18 2022, brian m. carlson wrote:
Show 34 quoted lines
> [[PGP Signed Part:Undecided]]
> Hey,
>
> On 2022-04-18 at 07:47:07, Attila Csosz wrote:
>> Thank you for filling out a Git bug report!
>> Please answer the following questions to help us understand your issue.
>> 
>> What did you do before the bug happened? (Steps to reproduce your issue)
>> Pushing to a directory directly.
>> 
>> What did you expect to happen? (Expected behavior)
>> Good behavior
>> 
>> What happened instead? (Actual behavior)
>> Disk errors. After pushing to a directory (my origin field is C:\Work for
>> example) the git repository will be corrupted.
>> Moreover causing disk errors not only in the target git bare repository.
>> I've loosed some other files.
>> Cannot be reproduced exactly. However I have decided to report this problem.
>> I've experienced this problem for several years.
>
> There's nothing that Git should be able to do as a normal operating
> system that causes disk errors.  If you're seeing those kinds of errors,
> the likelihood is that your disk is bad and you need to replace it.
>
> Do note that if you're storing your data in a directory managed by a
> cloud syncing service (e.g., Dropbox or OneDrive), then it is known that
> those file systems corrupt Git repositories and you shouldn't use them
> with Git.  That's due to the way they sync data.
>
> However, if this is a regular file system (e.g., NTFS), then Git
> shouldn't be able to cause disk problems, and if it could, that would be
> a serious defect in Windows, so it's almost certainly going to be a
> hardware problem.

I think you're most likely right that this is some local HW issue, but the report doesn't have enough information to say either way.

But generally as we've been discussing at length in various threads related to git's fsync() behavior we can and will corrupt repositories due only to our own (mis)use of FS APIs, i.e. not doing fsyncing and the like correctly, it's been improved a bit recently.

But we're still in a state of not doing it correctly, and/or relying on some implicit assumptions.

For something like an external disk that may have its power cable yanked I'd give it about even odds that it's HW v.s. git's own FS syncing logic being at fault.

We get away with a lot of shenanigans because we're usually on a journaled FS, which e.g. on a FAT32 external volume we won't benefit from.

Attila: I have no idea if this even exists on Windows, but aside from
other suggestions in this thread I'd suggest enabling whatever Window's
equivalent of "sync" mounting is (if it even exists). I.e. to have every
single FS operation by synced to the metal. 

It will make your repository *much much slower*, but it will be safe as far as any logic errors in git vis-a-vis syncing go.

Previous: Neeraj SinghNext: Attila Csosz
Message 8 of 10 in “Git bug report - disk errors on Windows after push”
  1. Attila CsoszApr 18, 2022
  2. brian m. carlsonApr 18, 2022
  3. Attila CsoszApr 19, 2022
  4. brian m. carlsonApr 20, 2022
  5. Neeraj SinghApr 20, 2022
  6. Attila CsoszApr 21, 2022
  7. Neeraj SinghApr 21, 2022
  8. Ævar Arnfjörð BjarmasonApr 22, 2022
  9. Attila CsoszApr 22, 2022
  10. Junio C HamanoApr 22, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.