summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Becker <joel.becker@oracle.com>2009-02-13 02:41:59 +0300
committerJoel Becker <joel.becker@oracle.com>2009-09-05 03:07:49 +0400
commit292dd27ec76b96cebcef576f330ab121f59ccf05 (patch)
treed98f4d359f610e7dad53eb5b68fdb1517a043fb3
parent66fb345ddd2d343e36692da0ff66126d7a99dc1b (diff)
downloadlinux-292dd27ec76b96cebcef576f330ab121f59ccf05.tar.xz
ocfs2: move ip_created_trans to struct ocfs2_caching_info
Similar ip_last_trans, ip_created_trans tracks the creation of a journal managed inode. This specifically tracks what transaction created the inode. This is so the code can know if the inode has ever been written to disk. This behavior is desirable for any journal managed object. We move it to struct ocfs2_caching_info as ci_created_trans so that any object using ocfs2_caching_info can rely on this behavior. Signed-off-by: Joel Becker <joel.becker@oracle.com>
-rw-r--r--fs/ocfs2/inode.c1
-rw-r--r--fs/ocfs2/inode.h4
-rw-r--r--fs/ocfs2/journal.h6
-rw-r--r--fs/ocfs2/ocfs2.h3
-rw-r--r--fs/ocfs2/super.c1
-rw-r--r--fs/ocfs2/uptodate.c4
6 files changed, 9 insertions, 10 deletions
diff --git a/fs/ocfs2/inode.c b/fs/ocfs2/inode.c
index a47750dea059..8a9e7085e99f 100644
--- a/fs/ocfs2/inode.c
+++ b/fs/ocfs2/inode.c
@@ -1147,7 +1147,6 @@ void ocfs2_clear_inode(struct inode *inode)
/* Clear all other flags. */
oi->ip_flags = 0;
- oi->ip_created_trans = 0;
oi->ip_dir_start_lookup = 0;
oi->ip_blkno = 0ULL;
diff --git a/fs/ocfs2/inode.h b/fs/ocfs2/inode.h
index 2cae2514e7fb..67392f60629d 100644
--- a/fs/ocfs2/inode.h
+++ b/fs/ocfs2/inode.h
@@ -60,10 +60,6 @@ struct ocfs2_inode_info
u32 ip_dir_start_lookup;
- /* next two are protected by trans_inc_lock */
- /* which transaction were we created on? Zero if none. */
- unsigned long ip_created_trans;
-
struct ocfs2_caching_info ip_metadata_cache;
struct ocfs2_extent_map ip_extent_map;
diff --git a/fs/ocfs2/journal.h b/fs/ocfs2/journal.h
index d4ac19739d7c..0bb6754c73f4 100644
--- a/fs/ocfs2/journal.h
+++ b/fs/ocfs2/journal.h
@@ -129,9 +129,9 @@ static inline int ocfs2_inode_is_new(struct inode *inode)
return 0;
spin_lock(&trans_inc_lock);
ret = !(time_after(OCFS2_SB(inode->i_sb)->journal->j_trans_id,
- OCFS2_I(inode)->ip_created_trans));
+ INODE_CACHE(inode)->ci_created_trans));
if (!ret)
- OCFS2_I(inode)->ip_created_trans = 0;
+ INODE_CACHE(inode)->ci_created_trans = 0;
spin_unlock(&trans_inc_lock);
return ret;
}
@@ -140,7 +140,7 @@ static inline void ocfs2_inode_set_new(struct ocfs2_super *osb,
struct inode *inode)
{
spin_lock(&trans_inc_lock);
- OCFS2_I(inode)->ip_created_trans = osb->journal->j_trans_id;
+ INODE_CACHE(inode)->ci_created_trans = osb->journal->j_trans_id;
spin_unlock(&trans_inc_lock);
}
diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
index c9bd7ce30ba6..18b5fea98c91 100644
--- a/fs/ocfs2/ocfs2.h
+++ b/fs/ocfs2/ocfs2.h
@@ -77,6 +77,9 @@ struct ocfs2_caching_info {
*/
const struct ocfs2_caching_operations *ci_ops;
+ /* next two are protected by trans_inc_lock */
+ /* which transaction were we created on? Zero if none. */
+ unsigned long ci_created_trans;
/* last transaction we were a part of. */
unsigned long ci_last_trans;
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index 4212547e78a2..e35a5052ce3a 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -1668,7 +1668,6 @@ static void ocfs2_inode_init_once(void *data)
spin_lock_init(&oi->ip_lock);
ocfs2_extent_map_init(&oi->vfs_inode);
INIT_LIST_HEAD(&oi->ip_io_markers);
- oi->ip_created_trans = 0;
oi->ip_dir_start_lookup = 0;
init_rwsem(&oi->ip_alloc_sem);
diff --git a/fs/ocfs2/uptodate.c b/fs/ocfs2/uptodate.c
index 81c82200b908..b6284f235d2f 100644
--- a/fs/ocfs2/uptodate.c
+++ b/fs/ocfs2/uptodate.c
@@ -124,8 +124,10 @@ static void ocfs2_metadata_cache_reset(struct ocfs2_caching_info *ci,
ci->ci_flags |= OCFS2_CACHE_FL_INLINE;
ci->ci_num_cached = 0;
- if (clear)
+ if (clear) {
+ ci->ci_created_trans = 0;
ci->ci_last_trans = 0;
+ }
}
void ocfs2_metadata_cache_init(struct ocfs2_caching_info *ci,