[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <158861232027.340223.4423626519002421674.stgit@warthog.procyon.org.uk>
Date: Mon, 04 May 2020 18:12:00 +0100
From: David Howells <dhowells@...hat.com>
To: Trond Myklebust <trondmy@...merspace.com>,
Anna Schumaker <anna.schumaker@...app.com>,
Steve French <sfrench@...ba.org>,
Jeff Layton <jlayton@...hat.com>
Cc: dhowells@...hat.com, Matthew Wilcox <willy@...radead.org>,
Alexander Viro <viro@...iv.linux.org.uk>,
linux-afs@...ts.infradead.org, linux-nfs@...r.kernel.org,
linux-cifs@...r.kernel.org, ceph-devel@...r.kernel.org,
v9fs-developer@...ts.sourceforge.net,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [RFC PATCH 30/61] cachefiles: Split cachefiles_drop_object() up a bit
Split cachefiles_drop_object() up a bit to make it easier to modify later.
Signed-off-by: David Howells <dhowells@...hat.com>
---
fs/cachefiles/interface.c | 58 ++++++++++++++++++++++++++++++---------------
1 file changed, 39 insertions(+), 19 deletions(-)
diff --git a/fs/cachefiles/interface.c b/fs/cachefiles/interface.c
index daa4f316d104..47596b58c2da 100644
--- a/fs/cachefiles/interface.c
+++ b/fs/cachefiles/interface.c
@@ -192,6 +192,42 @@ static void cachefiles_update_object(struct fscache_object *_object)
_leave("");
}
+/*
+ * Commit changes to the object as we drop it.
+ */
+static void cachefiles_commit_object(struct cachefiles_object *object,
+ struct cachefiles_cache *cache)
+{
+}
+
+/*
+ * Finalise and object and close the VFS structs that we have.
+ */
+static void cachefiles_clean_up_object(struct cachefiles_object *object,
+ struct cachefiles_cache *cache,
+ bool invalidate)
+{
+ if (invalidate && &object->fscache != cache->cache.fsdef) {
+ _debug("- inval object OBJ%x", object->fscache.debug_id);
+ cachefiles_delete_object(cache, object);
+ } else {
+ cachefiles_commit_object(object, cache);
+ }
+
+ /* close the filesystem stuff attached to the object */
+ if (object->backing_file)
+ fput(object->backing_file);
+ object->backing_file = NULL;
+
+ if (object->backer != object->dentry)
+ dput(object->backer);
+ object->backer = NULL;
+
+ cachefiles_unmark_inode_in_use(object, object->dentry);
+ dput(object->dentry);
+ object->dentry = NULL;
+}
+
/*
* discard the resources pinned by an object and effect retirement if
* requested
@@ -223,25 +259,9 @@ static void cachefiles_drop_object(struct fscache_object *_object,
* before we set it up.
*/
if (object->dentry) {
- if (invalidate && _object != cache->cache.fsdef) {
- _debug("- inval object OBJ%x", object->fscache.debug_id);
- cachefiles_begin_secure(cache, &saved_cred);
- cachefiles_delete_object(cache, object);
- cachefiles_end_secure(cache, saved_cred);
- }
-
- /* close the filesystem stuff attached to the object */
- if (object->backing_file)
- fput(object->backing_file);
- object->backing_file = NULL;
-
- if (object->backer != object->dentry)
- dput(object->backer);
- object->backer = NULL;
-
- cachefiles_unmark_inode_in_use(object, object->dentry);
- dput(object->dentry);
- object->dentry = NULL;
+ cachefiles_begin_secure(cache, &saved_cred);
+ cachefiles_clean_up_object(object, cache, invalidate);
+ cachefiles_end_secure(cache, saved_cred);
}
_leave("");
Powered by blists - more mailing lists