Sorry for the delay in reply.

Confidence in stable posix implementations could come from:

- hardlink backups being the default for nearly 10 years before the previously
  mentioned patch disabled them after a series of bug reports coming
  exclusively from Windows users. 
- generally more dependencies on hardlinks on such systems by different
  tools which make cache coherency bugs (theory) like issue 4546 less
  likely.
  
Getting a repro for this bug has been tough. Do you have any ideas for
alternative directions here?

Excerpts from Augie Fackler's message of 2017-02-14 10:39:00 -0500:
> On Tue, Feb 14, 2017 at 01:31:02AM -0800, Jeroen Vaelen wrote:
> > # HG changeset patch
> > # User Jeroen Vaelen <jer...@fb.com>
> > # Date 1487064458 28800
> > #      Tue Feb 14 01:27:38 2017 -0800
> > # Node ID c7fb7ac39a12c8683518bb7db7e1a93346e017e0
> > # Parent  a0e3d808690d57d1c9dff840e0b8ee099526397b
> > transaction: enable hardlink backups for non-windows systems
> >
> > 07a92bbd02e5 disabled hardlink backups entirely because they can cause 
> > trouble
> > with CIFS on Windows (see issue 4546). This changeset limits that 
> > restriction
> > to Windows systems. Ideally we check for CIFS, because e.g. NTFS does 
> > support
> > hardlinks. But this at least gives us cheaper transactional backups for 
> > posix,
> > which is a step forward.
> 
> I'm hesitant to take this because as of 10.12 macOS is pushing people
> towards CIFS instead of AFP, so this issue feels more likely to come
> up there. Also, isn't it possible to mount CIFS volumes in the
> filesystem space on Linux? Do we have any reason for confidence this
> is only a problem in the Windows CIFS client, and not a problem in the
> server?
> 
> Thanks!
> 
> >
> > Note: the test changes were originally introduced in 07a92bbd02e5.
> >
> > diff --git a/mercurial/util.py b/mercurial/util.py
> > --- a/mercurial/util.py
> > +++ b/mercurial/util.py
> > @@ -1084,9 +1084,9 @@
> >          if checkambig:
> >              oldstat = checkambig and filestat(dest)
> >          unlink(dest)
> > -    # hardlinks are problematic on CIFS, quietly ignore this flag
> > -    # until we find a way to work around it cleanly (issue4546)
> > -    if False and hardlink:
> > +    # quietly ignore the hardlink flag on Windows due to CIFS limitations
> > +    # (see discussion on issue 4546)
> > +    if hardlink and pycompat.osname != 'nt':
> >          try:
> >              oslink(src, dest)
> >              return
> > diff --git a/tests/test-hardlinks.t b/tests/test-hardlinks.t
> > --- a/tests/test-hardlinks.t
> > +++ b/tests/test-hardlinks.t
> > @@ -166,7 +166,7 @@
> >    1 r2/.hg/store/00manifest.i
> >    1 r2/.hg/store/data/d1/f2.i
> >    2 r2/.hg/store/data/f1.i
> > -  1 r2/.hg/store/fncache
> > +  2 r2/.hg/store/fncache
> >
> >    $ hg -R r2 verify
> >    checking changesets
> > @@ -191,7 +191,7 @@
> >    1 r2/.hg/store/00manifest.i
> >    1 r2/.hg/store/data/d1/f2.i
> >    1 r2/.hg/store/data/f1.i
> > -  1 r2/.hg/store/fncache
> > +  2 r2/.hg/store/fncache
> >
> >
> >    $ cd r3
> > https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel 
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to