GIT: unionfs2-2.6.27.y: Unionfs: revalidation code cleanup and refactoring
Erez Zadok
ezk at fsl.cs.sunysb.edu
Thu Aug 12 23:17:48 EDT 2010
commit dd67dcc23eb3a5f81cca4105e9f2160652be2979
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Fri Feb 15 17:18:48 2008 -0500
Unionfs: revalidation code cleanup and refactoring
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
diff --git a/fs/unionfs/dentry.c b/fs/unionfs/dentry.c
index cd15243..afa2120 100644
--- a/fs/unionfs/dentry.c
+++ b/fs/unionfs/dentry.c
@@ -18,6 +18,39 @@
#include "union.h"
+
+static inline void __dput_lowers(struct dentry *dentry, int start, int end)
+{
+ struct dentry *lower_dentry;
+ int bindex;
+
+ if (start < 0)
+ return;
+ for (bindex = start; bindex <= end; bindex++) {
+ lower_dentry = unionfs_lower_dentry_idx(dentry, bindex);
+ if (!lower_dentry)
+ continue;
+ unionfs_set_lower_dentry_idx(dentry, bindex, NULL);
+ dput(lower_dentry);
+ }
+}
+
+static inline void __iput_lowers(struct inode *inode, int start, int end)
+{
+ struct inode *lower_inode;
+ int bindex;
+
+ if (start < 0)
+ return;
+ for (bindex = start; bindex <= end; bindex++) {
+ lower_inode = unionfs_lower_inode_idx(inode, bindex);
+ if (!lower_inode)
+ continue;
+ unionfs_set_lower_inode_idx(inode, bindex, NULL);
+ iput(lower_inode);
+ }
+}
+
/*
* Revalidate a single dentry.
* Assume that dentry's info node is locked.
@@ -72,15 +105,7 @@ static bool __unionfs_d_revalidate_one(struct dentry *dentry,
/* Free the pointers for our inodes and this dentry. */
bstart = dbstart(dentry);
bend = dbend(dentry);
- if (bstart >= 0) {
- struct dentry *lower_dentry;
- for (bindex = bstart; bindex <= bend; bindex++) {
- lower_dentry =
- unionfs_lower_dentry_idx(dentry,
- bindex);
- dput(lower_dentry);
- }
- }
+ __dput_lowers(dentry, bstart, bend);
set_dbstart(dentry, -1);
set_dbend(dentry, -1);
@@ -90,17 +115,7 @@ static bool __unionfs_d_revalidate_one(struct dentry *dentry,
bstart = ibstart(dentry->d_inode);
bend = ibend(dentry->d_inode);
- if (bstart >= 0) {
- struct inode *lower_inode;
- for (bindex = bstart; bindex <= bend;
- bindex++) {
- lower_inode =
- unionfs_lower_inode_idx(
- dentry->d_inode,
- bindex);
- iput(lower_inode);
- }
- }
+ __iput_lowers(dentry->d_inode, bstart, bend);
kfree(UNIONFS_I(dentry->d_inode)->lower_inodes);
UNIONFS_I(dentry->d_inode)->lower_inodes = NULL;
ibstart(dentry->d_inode) = -1;
More information about the unionfs-cvs
mailing list