]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
ocfs2: move ip_created_trans to struct ocfs2_caching_info
authorJoel Becker <joel.becker@oracle.com>
Thu, 12 Feb 2009 23:41:59 +0000 (15:41 -0800)
committerJoel Becker <joel.becker@oracle.com>
Fri, 4 Sep 2009 23:07:49 +0000 (16:07 -0700)
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>
fs/ocfs2/inode.c
fs/ocfs2/inode.h
fs/ocfs2/journal.h
fs/ocfs2/ocfs2.h
fs/ocfs2/super.c
fs/ocfs2/uptodate.c

index a47750dea059d3edbc341eb4d9ae26ff0d860b97..8a9e7085e99fc08048c30d9c9a2a09153166f0b4 100644 (file)
@@ -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;
 
index 2cae2514e7fb5568f298ab3da18a3a8d398229d9..67392f60629d487d7d88a88777fc9262cb8a74d6 100644 (file)
@@ -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;
index d4ac19739d7c6aa2c48a044a4e715407f00cf8d3..0bb6754c73f4090ef0e26dc4350f2e2fdde16b0b 100644 (file)
@@ -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);
 }
 
index c9bd7ce30ba60df9b1401f36ec1e5ca286077923..18b5fea98c91d1f4480f3d7a2881247156724ba2 100644 (file)
@@ -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;
 
index 4212547e78a27b86b8f602c9bbc1f996073b390d..e35a5052ce3addad04ce53ada0152d83df85b89b 100644 (file)
@@ -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);
index 81c82200b90804b970487420eb92da2d71f28d75..b6284f235d2ff9e54e15834014ebc8f3e059851d 100644 (file)
@@ -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,