linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bodo Eggert <7eggert@gmx.de>
To: Miklos Szeredi <miklos@szeredi.hu>,
	matthew@wil.cx, bhalevy@panasas.com, arjan@infradead.org,
	mikulas@artax.karlin.mff.cuni.cz, jaharkes@cs.cmu.edu,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	nfsv4@ietf.org, pavel@ucw.cz
Subject: Re: Finding hardlinks
Date: Sat, 06 Jan 2007 00:54:28 +0100	[thread overview]
Message-ID: <E1H2ytI-0000p2-Qg@be1.lrz> (raw)
In-Reply-To: 7zXMb-5g5-27@gated-at.bofh.it

Miklos Szeredi <miklos@szeredi.hu> wrote:

>> > Well, sort of.  Samefile without keeping fds open doesn't have any
>> > protection against the tree changing underneath between first
>> > registering a file and later opening it.  The inode number is more
>> 
>> You only need to keep one-file-per-hardlink-group open during final
>> verification, checking that inode hashing produced reasonable results.
> 
> What final verification?  I wasn't just talking about 'tar' but all
> cases where st_ino might be used to check the identity of two files at
> possibly different points in time.
> 
> Time A:    remember identity of file X
> Time B:    check if identity of file Y matches that of file X
> 
> With samefile() if you open X at A, and keep it open till B, you can
> accumulate large numbers of open files and the application can fail.
> 
> If you don't keep an open file, just remember the path, then renaming
> X will foil the later identity check.  Changing the file at this path
> between A and B can even give you a false positive.  This applies to
> 'tar' as well as the other uses.

If you open Y, this open file descriptor will guarantee that no distinct
file will have the same inode number while all hardliked files must have
the same inode number. (AFAIK)

Now you will check this against the list of hardlink candidates using the
stored inode number. If the inode number has changed, this will result in
a false negative. If you removed X, recreated it with the same inode number
and linked that to Y, you'll get a false positive (which could be identified
by the [mc]time changes).

Samefile without keeping the files open will result in the same false
positive as open+fstat+stat, while samefile with keeping the files open
will occasionally overflow the files table, Therefore I think it's not
worth while introducing samefile as long as the inode is unique for open
files. OTOH you'll want to keep the inode number as stable as possible,
since it's the only sane way to find sets of hardlinked files and some
important programs may depend on it.
-- 
Ich danke GMX dafür, die Verwendung meiner Adressen mittels per SPF
verbreiteten Lügen zu sabotieren.

http://david.woodhou.se/why-not-spf.html

  parent reply	other threads:[~2007-01-05 23:54 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <7vc91-5DA-11@gated-at.bofh.it>
     [not found] ` <7vfJT-64R-3@gated-at.bofh.it>
     [not found]   ` <7x0n7-2Dk-5@gated-at.bofh.it>
     [not found]     ` <7x0na-2Dk-21@gated-at.bofh.it>
     [not found]       ` <7x5mR-2wX-3@gated-at.bofh.it>
     [not found]         ` <7x9Ad-18O-35@gated-at.bofh.it>
     [not found]           ` <7yXEy-UI-39@gated-at.bofh.it>
     [not found]             ` <7yYKa-2Ds-3@gated-at.bofh.it>
     [not found]               ` <7zcWP-7ET-5@gated-at.bofh.it>
     [not found]                 ` <7zdzA-jc-27@gated-at.bofh.it>
     [not found]                   ` <7zdJh-xh-37@gated-at.bofh.it>
2007-01-05 22:36                     ` RFC: Stable inodes for inode-less filesystems (was: Finding hardlinks) Bodo Eggert
     [not found]                   ` <7zeP5-2ic-15@gated-at.bofh.it>
     [not found]                     ` <7zgH9-5my-17@gated-at.bofh.it>
     [not found]                       ` <7zJSM-14t-9@gated-at.bofh.it>
     [not found]                         ` <7zSW5-6cj-9@gated-at.bofh.it>
     [not found]                           ` <7zX9l-4rS-7@gated-at.bofh.it>
     [not found]                             ` <7zXMb-5g5-27@gated-at.bofh.it>
2007-01-05 23:54                               ` Bodo Eggert [this message]
2006-12-20  9:03 Finding hardlinks Mikulas Patocka
2006-12-20 11:44 ` Miklos Szeredi
2006-12-20 16:36   ` Mikulas Patocka
2006-12-20 16:50     ` Miklos Szeredi
2006-12-20 19:54       ` Al Viro
2006-12-20 20:12         ` Mikulas Patocka
2006-12-31 15:02         ` Mikulas Patocka
2006-12-21 18:58   ` Jan Harkes
2006-12-21 23:49     ` Mikulas Patocka
2006-12-22  5:05       ` Jan Harkes
2006-12-23 10:18       ` Arjan van de Ven
2006-12-23 14:00         ` Mikulas Patocka
2006-12-28  9:06           ` Benny Halevy
2006-12-28 10:05             ` Arjan van de Ven
2006-12-28 15:24               ` Benny Halevy
2006-12-28 19:58                 ` Miklos Szeredi
2007-01-02 19:15                   ` Pavel Machek
2007-01-02 20:41                     ` Miklos Szeredi
2007-01-02 20:50                       ` Mikulas Patocka
2007-01-02 21:10                         ` Miklos Szeredi
2007-01-02 21:37                           ` Mikulas Patocka
2007-01-03 11:56                       ` Pavel Machek
2007-01-03 12:33                         ` Miklos Szeredi
2007-01-03 12:42                           ` Pavel Machek
2007-01-11 23:43                             ` Denis Vlasenko
2007-01-03 12:45                           ` Martin Mares
2007-01-03 13:54                           ` Matthew Wilcox
2007-01-03 15:51                             ` Miklos Szeredi
2007-01-03 19:04                               ` Mikulas Patocka
2007-01-04 22:59                               ` Pavel Machek
2007-01-05  8:43                                 ` Miklos Szeredi
2007-01-05 13:12                                   ` Pavel Machek
2007-01-05 13:55                                     ` Miklos Szeredi
2007-01-05 14:08                                       ` Mikulas Patocka
2007-01-05 15:09                                         ` Miklos Szeredi
2007-01-05 15:15                                           ` Miklos Szeredi
2007-01-08 11:27                                             ` Pavel Machek
2007-01-08  5:57                                           ` Mikulas Patocka
2007-01-08  8:49                                             ` Miklos Szeredi
2007-01-08 11:29                                               ` Pavel Machek
2007-01-08 12:00                                                 ` Miklos Szeredi
2007-01-08 13:26                                                   ` Martin Mares
2007-01-08 13:39                                                     ` Miklos Szeredi
2007-01-09 16:26                                                   ` Steven Rostedt
2007-01-09 19:53                                                     ` Frank van Maarseveen
2007-01-09 20:11                                                       ` Steven Rostedt
2007-01-11 10:07                                                       ` Pádraig Brady
2007-01-05 17:30                                   ` Frank van Maarseveen
2006-12-28 18:14               ` Mikulas Patocka
2006-12-29 10:34                 ` Trond Myklebust
2006-12-30  1:04                   ` Mikulas Patocka
2007-01-01  2:30                     ` Nikita Danilov
2007-01-01 22:58                       ` Mikulas Patocka
2007-01-01 23:05                         ` Nikita Danilov
2007-01-01 23:22                           ` Mikulas Patocka
2007-01-04 13:59                             ` Nikita Danilov
2007-01-02 23:14                     ` Trond Myklebust
2007-01-02 23:50                       ` Mikulas Patocka
2006-12-28 13:22             ` Jeff Layton
2006-12-28 15:12               ` Benny Halevy
2006-12-28 15:54                 ` Jeff Layton
2006-12-28 16:26                   ` Jan Engelhardt
2006-12-28 18:17                 ` Mikulas Patocka
2006-12-28 20:07                   ` Halevy, Benny
2006-12-29 10:12                 ` Trond Myklebust
2006-12-31 21:19                   ` Halevy, Benny
2007-01-02 23:20                     ` Trond Myklebust
2007-01-02 23:46                     ` Trond Myklebust
2007-01-11 23:35             ` Denis Vlasenko
2006-12-29 10:02           ` Pavel Machek
2007-01-01 22:47             ` Mikulas Patocka
2007-01-01 23:53               ` Jan Harkes
2007-01-02  0:04                 ` Mikulas Patocka
2007-01-03 18:58                   ` Frank van Maarseveen
2007-01-03 19:17                     ` Mikulas Patocka
2007-01-03 19:26                       ` Frank van Maarseveen
2007-01-03 19:31                         ` Mikulas Patocka
2007-01-03 20:26                           ` Frank van Maarseveen
2007-01-12  0:00                             ` Denis Vlasenko
2007-01-03 22:30                           ` Pavel Machek
2007-01-03 21:09                     ` Bryan Henderson
2007-01-03 22:01                       ` Frank van Maarseveen
2007-01-03 23:43                         ` Mikulas Patocka
2007-01-04  0:12                           ` Frank van Maarseveen
2007-01-08  6:19                             ` Mikulas Patocka

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=E1H2ytI-0000p2-Qg@be1.lrz \
    --to=7eggert@gmx.de \
    --cc=arjan@infradead.org \
    --cc=bhalevy@panasas.com \
    --cc=jaharkes@cs.cmu.edu \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthew@wil.cx \
    --cc=miklos@szeredi.hu \
    --cc=mikulas@artax.karlin.mff.cuni.cz \
    --cc=nfsv4@ietf.org \
    --cc=pavel@ucw.cz \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).