[Linux-cachefs] [PATCH v3] cachefiles: do not yet allow on idmapped mounts

Christian Brauner christian.brauner at ubuntu.com
Wed Mar 24 07:42:11 UTC 2021


On Fri, Mar 19, 2021 at 12:41:47PM +0100, Christian Brauner wrote:
> Based on discussions (e.g. in [1]) my understanding of cachefiles and
> the cachefiles userspace daemon is that it creates a cache on a local
> filesystem (e.g. ext4, xfs etc.) for a network filesystem. The way this
> is done is by writing "bind" to /dev/cachefiles and pointing it to the
> directory to use as the cache.
> Currently this directory can technically also be an idmapped mount but
> cachefiles aren't yet fully aware of such mounts and thus don't take the
> idmapping into account when creating cache entries. This could leave
> users confused as the ownership of the files wouldn't match to what they
> expressed in the idmapping. Block cache files on idmapped mounts until
> the fscache rework is done and we have ported it to support idmapped
> mounts.
> 
> [1]: https://lore.kernel.org/lkml/20210303161528.n3jzg66ou2wa43qb@wittgenstein
> Cc: David Howells <dhowells at redhat.com>
> Cc: linux-cachefs at redhat.com
> Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
> ---

Hey David,

Are you happy with this now, and could I possibly get your Ack on this,
please? And also, are you routing this to Linus (preferably before v5.12
is out) or do you want me to take it?

Christian

> /* v2 */
> - Christian Brauner <christian.brauner at ubuntu.com>:
>   - Ensure that "root" is initialized when cleaning up.
> 
> /* v3 */
> - David Howells <dhowells at redhat.com>:
>   - Reformulate commit message to avoid paragraphs with duplicated
>     content.
>   - Add a pr_warn() when cachefiles are supposed to be created on
>     idmapped mounts.
> ---
>  fs/cachefiles/bind.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/fs/cachefiles/bind.c b/fs/cachefiles/bind.c
> index dfb14dbddf51..38bb7764b454 100644
> --- a/fs/cachefiles/bind.c
> +++ b/fs/cachefiles/bind.c
> @@ -118,6 +118,12 @@ static int cachefiles_daemon_add_cache(struct cachefiles_cache *cache)
>  	cache->mnt = path.mnt;
>  	root = path.dentry;
>  
> +	ret = -EINVAL;
> +	if (mnt_user_ns(path.mnt) != &init_user_ns) {
> +		pr_warn("File cache on idmapped mounts not supported");
> +		goto error_unsupported;
> +	}
> +
>  	/* check parameters */
>  	ret = -EOPNOTSUPP;
>  	if (d_is_negative(root) ||
> 
> base-commit: 1e28eed17697bcf343c6743f0028cc3b5dd88bf0
> -- 
> 2.27.0
> 




More information about the Linux-cachefs mailing list