Re: [PATCH v2 05/11] ovl: lookup redirect by file handle

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

 



On Wed, Apr 26, 2017 at 11:40 AM, Amir Goldstein <amir73il@xxxxxxxxx> wrote:

> Just to see that I understand you correctly.
>
> I am now working on storing the following:
>
> /*
>  * The tuple origin.{fh,layer,uuid} is a universal unique identifier
>  * for a copy up origin, where:
>  * origin.fh    - exported file handle of the lower file
>  * origin.root - exported file handle of the lower layer root
>  * origin.uuid  - uuid of the lower filesystem

I wouldn't even store origin.root.

>  *
>  * origin.{fh,root} are stored in format of a variable length binary blob
>  * with struct ovl_fh header (total blob size up to 20 bytes).
>  * uuid is stored in raw format (16 bytes) as published by sb->s_uuid.
>  */
>
> I intend to implement lookup as follows:
> - compare(origin.uuid, same_lower_sb->s_uuid)
> # layer root dentries cannot be DCACHE_DISCONNECTED, so
> # exportfs_decode_fh ignores mnt arg and returns the cached dentry
> - root = exportfs_decode_fh(lowerstack[0].mnt, origin.root)
> - find layer where lowerstack[layer].dentry == root
> - this = exportfs_decode_fh(lowerstack[layer].mnt, origin.fh)
>
> is_subdir() is NOT needed for decoding the layer root
> is_subdir() is optional for decoding the lower file, because
> it is not needed to identify the layer

Hmm, we can just force exportfs_decode_fh() to return a connected
dentry (return false from *acceptable() if the dentry is disconnected)
before going on to iterate the layers to see which one contains it.

Thanks,
Miklos



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux