Commit 292dd27e authored by Joel Becker's avatar Joel Becker

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: default avatarJoel Becker <joel.becker@oracle.com>
parent 66fb345d
...@@ -1147,7 +1147,6 @@ void ocfs2_clear_inode(struct inode *inode) ...@@ -1147,7 +1147,6 @@ void ocfs2_clear_inode(struct inode *inode)
/* Clear all other flags. */ /* Clear all other flags. */
oi->ip_flags = 0; oi->ip_flags = 0;
oi->ip_created_trans = 0;
oi->ip_dir_start_lookup = 0; oi->ip_dir_start_lookup = 0;
oi->ip_blkno = 0ULL; oi->ip_blkno = 0ULL;
......
...@@ -60,10 +60,6 @@ struct ocfs2_inode_info ...@@ -60,10 +60,6 @@ struct ocfs2_inode_info
u32 ip_dir_start_lookup; 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_caching_info ip_metadata_cache;
struct ocfs2_extent_map ip_extent_map; struct ocfs2_extent_map ip_extent_map;
......
...@@ -129,9 +129,9 @@ static inline int ocfs2_inode_is_new(struct inode *inode) ...@@ -129,9 +129,9 @@ static inline int ocfs2_inode_is_new(struct inode *inode)
return 0; return 0;
spin_lock(&trans_inc_lock); spin_lock(&trans_inc_lock);
ret = !(time_after(OCFS2_SB(inode->i_sb)->journal->j_trans_id, 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) if (!ret)
OCFS2_I(inode)->ip_created_trans = 0; INODE_CACHE(inode)->ci_created_trans = 0;
spin_unlock(&trans_inc_lock); spin_unlock(&trans_inc_lock);
return ret; return ret;
} }
...@@ -140,7 +140,7 @@ static inline void ocfs2_inode_set_new(struct ocfs2_super *osb, ...@@ -140,7 +140,7 @@ static inline void ocfs2_inode_set_new(struct ocfs2_super *osb,
struct inode *inode) struct inode *inode)
{ {
spin_lock(&trans_inc_lock); 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); spin_unlock(&trans_inc_lock);
} }
......
...@@ -77,6 +77,9 @@ struct ocfs2_caching_info { ...@@ -77,6 +77,9 @@ struct ocfs2_caching_info {
*/ */
const struct ocfs2_caching_operations *ci_ops; 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. */ /* last transaction we were a part of. */
unsigned long ci_last_trans; unsigned long ci_last_trans;
......
...@@ -1668,7 +1668,6 @@ static void ocfs2_inode_init_once(void *data) ...@@ -1668,7 +1668,6 @@ static void ocfs2_inode_init_once(void *data)
spin_lock_init(&oi->ip_lock); spin_lock_init(&oi->ip_lock);
ocfs2_extent_map_init(&oi->vfs_inode); ocfs2_extent_map_init(&oi->vfs_inode);
INIT_LIST_HEAD(&oi->ip_io_markers); INIT_LIST_HEAD(&oi->ip_io_markers);
oi->ip_created_trans = 0;
oi->ip_dir_start_lookup = 0; oi->ip_dir_start_lookup = 0;
init_rwsem(&oi->ip_alloc_sem); init_rwsem(&oi->ip_alloc_sem);
......
...@@ -124,8 +124,10 @@ static void ocfs2_metadata_cache_reset(struct ocfs2_caching_info *ci, ...@@ -124,8 +124,10 @@ static void ocfs2_metadata_cache_reset(struct ocfs2_caching_info *ci,
ci->ci_flags |= OCFS2_CACHE_FL_INLINE; ci->ci_flags |= OCFS2_CACHE_FL_INLINE;
ci->ci_num_cached = 0; ci->ci_num_cached = 0;
if (clear) if (clear) {
ci->ci_created_trans = 0;
ci->ci_last_trans = 0; ci->ci_last_trans = 0;
}
} }
void ocfs2_metadata_cache_init(struct ocfs2_caching_info *ci, void ocfs2_metadata_cache_init(struct ocfs2_caching_info *ci,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment