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@xxxxxxxxxx> > Cc: linux-cachefs@xxxxxxxxxx > Signed-off-by: Christian Brauner <christian.brauner@xxxxxxxxxx> > --- 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@xxxxxxxxxx>: > - Ensure that "root" is initialized when cleaning up. > > /* v3 */ > - David Howells <dhowells@xxxxxxxxxx>: > - 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 >