Re: [PATCH v3 5/5] ovl: consistent st_ino/d_ino

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

 



On Wed, Jun 21, 2017 at 11:05 AM, Amir Goldstein <amir73il@xxxxxxxxx> wrote:
> On Wed, Jun 21, 2017 at 11:53 AM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>> On Wed, Jun 21, 2017 at 10:49 AM, Amir Goldstein <amir73il@xxxxxxxxx> wrote:
>>> On Wed, Jun 21, 2017 at 11:45 AM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>>>> On Wed, Jun 21, 2017 at 10:38 AM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>>>>> On Wed, Jun 21, 2017 at 10:20 AM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>>>>>
>>>>>> Right.  The problem is when dir becomes impure due to rename between
>>>>>> two getdents(2) calls.  We can't call ovl_dir_reset() because the
>>>>>> offset is not zero.  We could do a "cache with head cut off" starting
>>>>>> from the current offset in the dir and finish with that.  Yeah, it's
>>>>>> probably less complexity than trying to intercept the actor...
>>>>>
>>>>> On the other hand, we'll need to accommodate the native directory
>>>>> indexing (i.e. seekdir(3) hell) in the cache, which is going to add to
>>>>> complexity.  Ugh.
>>>>
>>>> Another idea:  we are allowed to omit directory entries added after
>>>> the opendir/rewinddir.  So if there was a simple way to filter out
>>>> newly added entries which have origin then we are fine.
>>>>
>>>
>
> Following up on your idea:
> - check in ovl_iterate() if version has changed and if dir became impure
> - if it did, populate od->cache, but keep the dir od->is_real
> - iterate upper cache entries and call ovl_cache_update_ino()
> - Then actor of real dir iterator can use the cache to ommit entries or use
>   p->ino from cache if p->real_ino match real d_ino, but differs from p->ino.

For non-merge dirs we can have a simplified cache just containing the
entries with origin, recreated when the version changes or updated in
rename, whichever is simpler.  A non-merge dir will never become a
merge one, so we can keep the handling separate.

Thanks,
Miklos
--
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