summaryrefslogtreecommitdiffstats
path: root/fs/cachefiles/daemon.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2021-10-21 08:50:10 +0100
committerDavid Howells <dhowells@redhat.com>2022-01-07 13:42:35 +0000
commit07a90e97400c15967c8754fa271ba24d9df71ab5 (patch)
treed404b7656e01a298cff29b5206135c563989be17 /fs/cachefiles/daemon.c
parent169379eaef933ca98c279257cacb313a02f9984d (diff)
downloadlinux-07a90e97400c15967c8754fa271ba24d9df71ab5.tar.gz
linux-07a90e97400c15967c8754fa271ba24d9df71ab5.tar.bz2
linux-07a90e97400c15967c8754fa271ba24d9df71ab5.zip
cachefiles: Implement culling daemon commands
Implement the ability for the userspace daemon to try and cull a file or directory in the cache. Two daemon commands are implemented: (1) The "inuse" command. This queries if a file is in use or whether it can be deleted. It checks the S_KERNEL_FILE flag on the inode referred to by the specified filename. (2) The "cull" command. This asks for a file or directory to be removed, where removal means either unlinking it or moving it to the graveyard directory for userspace to dismantle. Changes ======= ver #2: - Fix logging of wrong error[1]. - Need to unmark an inode we've moved to the graveyard before unlocking. Signed-off-by: David Howells <dhowells@redhat.com> Reviewed-by: Jeff Layton <jlayton@kernel.org> cc: linux-cachefs@redhat.com Link: https://lore.kernel.org/r/20211203094950.GA2480@kili/ [1] Link: https://lore.kernel.org/r/163819643179.215744.13641580295708315695.stgit@warthog.procyon.org.uk/ # v1 Link: https://lore.kernel.org/r/163906945705.143852.8177595531814485350.stgit@warthog.procyon.org.uk/ # v2 Link: https://lore.kernel.org/r/163967155792.1823006.1088936326902550910.stgit@warthog.procyon.org.uk/ # v3 Link: https://lore.kernel.org/r/164021555037.640689.9472627499842585255.stgit@warthog.procyon.org.uk/ # v4
Diffstat (limited to 'fs/cachefiles/daemon.c')
-rw-r--r--fs/cachefiles/daemon.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/cachefiles/daemon.c b/fs/cachefiles/daemon.c
index 337597a4e30c..985c3f3e6767 100644
--- a/fs/cachefiles/daemon.c
+++ b/fs/cachefiles/daemon.c
@@ -574,7 +574,7 @@ static int cachefiles_daemon_cull(struct cachefiles_cache *cache, char *args)
goto notdir;
cachefiles_begin_secure(cache, &saved_cred);
- ret = -ENOANO; // PLACEHOLDER: Do culling
+ ret = cachefiles_cull(cache, path.dentry, args);
cachefiles_end_secure(cache, saved_cred);
path_put(&path);
@@ -645,7 +645,7 @@ static int cachefiles_daemon_inuse(struct cachefiles_cache *cache, char *args)
goto notdir;
cachefiles_begin_secure(cache, &saved_cred);
- ret = -ENOANO; // PLACEHOLDER: Check if in use
+ ret = cachefiles_check_in_use(cache, path.dentry, args);
cachefiles_end_secure(cache, saved_cred);
path_put(&path);