Re: [RFC PATCH V2] ovl:fix rmdir problem on impure dir

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

 



On Tue, Jun 20, 2017 at 9:10 AM, zhangyi (F) <yi.zhang@xxxxxxxxxx> wrote:
> On 2017/6/19 20:07, Amir Goldstein Wrote:
>> On Mon, Jun 19, 2017 at 2:44 PM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>>> On Mon, Jun 19, 2017 at 1:19 PM, zhangyi (F) <yi.zhang@xxxxxxxxxx> wrote:
>>>> On 2017/6/19 16:28, Amir Goldstein wrote:
>>>>> On Mon, Jun 19, 2017 at 10:59 AM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>>>>>> On Mon, Jun 19, 2017 at 6:00 AM, zhangyi (F) <yi.zhang@xxxxxxxxxx> wrote:
>>>
>>> It's done for the root of the overlay by Amir's patchset, but that
>>> probably should be done generically for all merged directories not
>>> already having an origin marking.   It could be done at lookup time,
>>> or at whiteout time.  Not sure which is better.
>>>
>>
>> Checking merge dir origin is something I planned to do anyway, because
>> it is needed for NFS export (only verified lower can be indexed).
>> In fact, I already did it, but yanked it out of the current series because
>> it is not needed for indexing non-dirs, see:
>> https://github.com/amir73il/linux/commit/9af404799ba4ba4d08e147c7d54f6bcef0527bc9#diff-643262c1d5b2cba0bc9500e531831c12R481
>>
>> On top of my current ovl-hardlinks branch, the following change in lookup
>> would get the required origin mark on merge dirs and code will
>> be inline with upcoming NFS export changes:
>>
>> @@ -416,6 +478,17 @@ struct dentry *ovl_lookup(struct inode *dir,
>> struct dentry *dentry,
>>                 if (err)
>>                         goto out_put;
>>
>> +               /* Verify that uppermost lower matches the copy up origin fh */
>> +               if (this && upperdentry && !ctr &&
>> +                   ovl_indexdir(dentry->d_sb))) {
>> +                       err = ovl_verify_set_origin(upperdentry, lowerpath.mnt,
>> +                                               this, "merge", true);
>> +                       if (err && err != -ENODATA) {
>> +                               dput(this);
>> +                               break;
>> +                       }
>> +               }
>> +
>>                 if (!this)
>>                         continue;
>>
>
> It looks good to me. Do you have a plan to push this code? I can fix this whiteout
> problem base on it.
>

My plans were to defer it to next-next (v4.14) merge cycle along with
NFS export.

I suggest that you post a fix to the whiteout problem based on (MERGE
|| ORIGIN),
disregarding the issue of pre kernel v4.12 upper layers (MERGE && !ORIGIN).

After my current patch set lands on linux-next, or even after v4.13-rc1, we
can decide if it is worth while to merge the extra hunk above for the sake of
fixing whiteout problem with pre v4.12 upper layers.

Does your use case have to deal with migrating existing upper layers?

BTW, does you use case also care about other types of lower layer changes?
As part of the work for overlayfs snapshots and NFS export, I also plan to
post patches to follow renamed lower dir to their new location, instead of
treating the upper dir as !MERGE, see:
https://github.com/amir73il/linux/commits/ovl-verify-dir

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