lkml.org 
[lkml]   [2020]   [May]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subject[RFC PATCH 30/61] cachefiles: Split cachefiles_drop_object() up a bit
From
Date
Split cachefiles_drop_object() up a bit to make it easier to modify later.

Signed-off-by: David Howells <dhowells@redhat.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("");

\
 
 \ /
  Last update: 2020-05-04 19:12    [W:0.373 / U:0.388 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site