Subject: Re: large inode numbers
To: None <tech-kern@NetBSD.org>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: tech-kern
Date: 12/16/2003 22:01:34
> Nit: there are union mounts, and there is unionfs. They are different.
True. Are they different in this respect?
> unionfs does not guarantee unique inode numbers, as it can't.
Or rather, it's not willing to go to the trouble to do so. It could in
principle maintain a mapping table, and to avoid occasional breaking of
the sorts of code already named here, it really should.
> Files either exist in the upper or the lower file system (as seen
> through unionfs), so to have unique inode numbers, the two file
> systems would have to be coordinated.
...or unionfs would have to map inumbers as they pass through it, which
is what it really ought to be doing (not that I can't understand why it
doesn't, of course).
> More damaging to the concept of unique inode numbers is the fact that
> the inode number of a file can change. If it is only on the lower
> file system, then it is written, it will be moved up to the upper
> file system. The two versions of the file can have different inode
> numbers, so stat(2) calls at different times will give different
> answers.
Now _that_ could confuse code: fstat()ting the same fd gives different
inumbers at different times! Above, I'd suggested that perhaps unionfs
should shift all inumbers over one bit, with a 0 low bit being one
layer and a 1 low bit being the other - but that doesn't address this
problem; I don't really see any choice except a mapping table.
Ugh.
/~\ The ASCII der Mouse
\ / Ribbon Campaign
X Against HTML mouse@rodents.montreal.qc.ca
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B