From: Christian Brauner <brauner@kernel.org>
To: David Howells <dhowells@redhat.com>, linux-cachefs@redhat.com
Cc: linux-fsdevel@vger.kernel.org,
Amir Goldstein <amir73il@gmail.com>,
Christian Brauner <christian.brauner@ubuntu.com>
Subject: [PATCH v2 2/2] cachefiles: extend ro check to private mount
Date: Wed, 7 Apr 2021 11:02:08 +0200 [thread overview]
Message-ID: <20210407090208.876920-2-brauner@kernel.org> (raw)
In-Reply-To: <20210407090208.876920-1-brauner@kernel.org>
From: Christian Brauner <christian.brauner@ubuntu.com>
So far cachefiles only verified that the superblock wasn't read-only but
didn't check whether the mount was. This made sense when we did not use
a private mount because the read-only state could change at any point.
Now that we have a private mount and mount properties can't change
behind our back extend the read-only check to include the vfsmount.
The __mnt_is_readonly() helper will check both the mount and the
superblock. Note that before we checked root->d_sb and now we check
mnt->mnt_sb but since we have a matching <vfsmount, dentry> pair here
this is only syntactical change, not a semantic one.
Here's how this works:
mount -o ro --bind /var/cache/fscache/ /var/cache/fscache/
systemctl start cachefilesd
Job for cachefilesd.service failed because the control process exited with error code.
See "systemctl status cachefilesd.service" and "journalctl -xe" for details.
dmesg | grep CacheFiles
[ 2.922514] CacheFiles: Loaded
[ 272.206907] CacheFiles: Failed to register: -30
errno 30
EROFS 30 Read-only file system
Cc: David Howells <dhowells@redhat.com>
Cc: linux-cachefs@redhat.com
Cc: linux-fsdevel@vger.kernel.org
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
---
/* v2 */
patch introduced
---
fs/cachefiles/bind.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/fs/cachefiles/bind.c b/fs/cachefiles/bind.c
index bbace3e51f52..cb8dd9ecc090 100644
--- a/fs/cachefiles/bind.c
+++ b/fs/cachefiles/bind.c
@@ -141,8 +141,13 @@ static int cachefiles_daemon_add_cache(struct cachefiles_cache *cache)
!root->d_sb->s_op->sync_fs)
goto error_unsupported;
+ /*
+ * Verify our mount and superblock aren't read-only.
+ * Note, while our private mount is guaranteed to not change anymore
+ * the superblock may still go read-only later.
+ */
ret = -EROFS;
- if (sb_rdonly(root->d_sb))
+ if (__mnt_is_readonly(cache->mnt))
goto error_unsupported;
/* determine the security of the on-disk cache as this governs
--
2.27.0
next prev parent reply other threads:[~2021-04-07 9:02 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-07 9:02 [PATCH v2 1/2] cachefiles: use private mounts in cache->mnt Christian Brauner
2021-04-07 9:02 ` Christian Brauner [this message]
2021-04-07 10:30 ` [PATCH v2 2/2] cachefiles: extend ro check to private mount Amir Goldstein
2021-04-07 11:50 ` Christian Brauner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210407090208.876920-2-brauner@kernel.org \
--to=brauner@kernel.org \
--cc=amir73il@gmail.com \
--cc=christian.brauner@ubuntu.com \
--cc=dhowells@redhat.com \
--cc=linux-cachefs@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.