Re: [PATCH v5 2/4] ovl: allocate anonymous devs for lowerdirs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Nov 2, 2017 at 2:27 PM, Vivek Goyal <vgoyal@xxxxxxxxxx> wrote:
> On Wed, Nov 01, 2017 at 06:41:51PM +0200, Amir Goldstein wrote:
>
> [..]
>> >> I can't remember if there was a reason for not allocating anonymous bdev
>> >> for upper
>> >
>> > That's a good point.
>> >
>> >> or if it just because we did not need it to guaranty uniqueness
>> >> of st_dev/st_ino *among* overlay inodes
>> >
>> > Even for lower, st_dev will be unique for different lower on non same-fs,
>> > right. IOW, when it come to uniqueness of st_dev/st_ino pair, among
>> > overlay inodes, lower and upper should have same requirements.
>> >
>> >> while guarantying constant
>> >> st_dev/st_ino across copy up.
>> >
>> > Hmm..., I did not get this point. Over copy up, atleast st_ino will change
>> > for non-samefs case.
>> >
>> > I will spend more time on patch.
>> >
>>
>> Urgh! It took me a while to remember the reason why system wide uniqueness
>> is important for lower but less for upper.
>> An upper object has the same content as the "real" object and they have the
>> same st_ino/st_dev so its ok that diff will skip comparing them.
>> A copy-up object does not have the same content as the lower "real" object,
>> so if it has the same st_ino/st_dev as real object, diff will skip compare and
>> we have a problem.
>
> I am not sure I understand this.  So you are doing a diff between a file
> on overlayfs and same file accessed outside overlayfs?
>

Yes.

> If a file is on lower, then it has not been modified and diff skipping
> it makes perfect sense?

Yes.

But!
With constant st_ino/st_dev across copy up (the next patch)
the overlay object still has the lower inode st_dev/st_inode also *after*
copy up and modification. Now if you diff overlay file and lower
file diff will say they are equal, but in fact they have a different content.

This is how I phrased this in latest patch set per your request:

-----------------------
[V6 4/9] ovl: return anonymous st_dev for lower inodes

For non-samefs setup, to make sure that st_dev/st_ino pair
is unique across the system, we return a unique anonymous
st_dev for stat(2) of lower layer inode.

We need to make this change before fixing constant st_dev/st_ino across
copy up for non-samefs. Otherwise, we can end up with two objects
in the system, the real lower inode and the overlay inode which
have same st_dev/st_ino value, but different content.


Hope this is clear.

Amir.
--
To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux