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

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

 



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:
>>
>> I still don't like adding the impure flag because of a whiteout.
>> Impure dir means it contains a copied up object.  In fact a valid (but
>> probably not worthwhile) optimizition would be to remove the impure
>> flag on removal of the last copied up object.
>>
>> What's wrong with testing for (origin || merge) to see if we need to
>> check for whiteouts?
>>
> 
> Fine by me.
> 
> Yi,
> 
> Please note that you cannot use the test OVL_TYPE_ORIGIN(type)
> in ovl_dir_is_real(), because that flag is only set when the lower
> dentry is found by lookup. Instead, you should explicitly check for
> existence of OVL_XATTR_ORIGIN.
> Note that even ovl_get_origin_fh() is too strict, because it discards
> empty (unkown) origin, but for your use case, unknown origin is also
> candidate to contain whiteouts.
> 

I realize that impure flag is not quite suitable. If we use (origin || merge)
to see whether we need to check whiteouts or not, I think we still have a
problem.

Thought: In my current test case, testdir was copyuped when we delete
the test file, so it have OVL_XATTR_ORIGIN (it's OK), but if the testdir
is a merged dir originally, it will not be copied up and the OVL_XATTR_ORIGIN
will not be set.

So, if we want to use (origin || merge), we have to set OVL_XATTR_ORIGIN for
the merged parent dir when it create whiteout, any side effects?

Thanks,
ZhangYi.

--
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