] nilfs2: use atomic64_t type for inodes_count and blocks_count fields in nilfs_root...
authorVyacheslav Dubeyko <slava@dubeyko.com>
Wed, 3 Jul 2013 22:08:06 +0000 (15:08 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 Jul 2013 23:08:01 +0000 (16:08 -0700)
The cp_inodes_count and cp_blocks_count are represented as __le64 type in
on-disk structure (struct nilfs_checkpoint).  But analogous fields in
in-core structure (struct nilfs_root) are represented by atomic_t type.

This patch replaces atomic_t on atomic64_t type in representation of
inodes_count and blocks_count fields in struct nilfs_root.

Signed-off-by: Vyacheslav Dubeyko <slava@dubeyko.com>
Acked-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Acked-by: Joern Engel <joern@logfs.org>
Cc: Clemens Eisserer <linuxhippy@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/nilfs2/ifile.c
fs/nilfs2/inode.c
fs/nilfs2/segment.c
fs/nilfs2/super.c
fs/nilfs2/the_nilfs.c
fs/nilfs2/the_nilfs.h

index d788a5928351a7908acafe82f78d2a10a9ead5c5..6548c7851b485450c6f33dce3eab35e1ff167d8d 100644 (file)
@@ -174,7 +174,7 @@ int nilfs_ifile_count_free_inodes(struct inode *ifile,
        *nmaxinodes = 0;
        *nfreeinodes = 0;
 
-       nused = atomic_read(&NILFS_I(ifile)->i_root->inodes_count);
+       nused = atomic64_read(&NILFS_I(ifile)->i_root->inodes_count);
        err = nilfs_palloc_count_max_entries(ifile, nused, nmaxinodes);
        if (likely(!err))
                *nfreeinodes = *nmaxinodes - nused;
index bccfec8343c5ee34925cea97b8fc4006f8265084..b1a5277cfd182adcbfda860ad395e07a14f94db8 100644 (file)
@@ -54,7 +54,7 @@ void nilfs_inode_add_blocks(struct inode *inode, int n)
 
        inode_add_bytes(inode, (1 << inode->i_blkbits) * n);
        if (root)
-               atomic_add(n, &root->blocks_count);
+               atomic64_add(n, &root->blocks_count);
 }
 
 void nilfs_inode_sub_blocks(struct inode *inode, int n)
@@ -63,7 +63,7 @@ void nilfs_inode_sub_blocks(struct inode *inode, int n)
 
        inode_sub_bytes(inode, (1 << inode->i_blkbits) * n);
        if (root)
-               atomic_sub(n, &root->blocks_count);
+               atomic64_sub(n, &root->blocks_count);
 }
 
 /**
@@ -369,7 +369,7 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)
                goto failed_ifile_create_inode;
        /* reference count of i_bh inherits from nilfs_mdt_read_block() */
 
-       atomic_inc(&root->inodes_count);
+       atomic64_inc(&root->inodes_count);
        inode_init_owner(inode, dir, mode);
        inode->i_ino = ino;
        inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
@@ -801,7 +801,7 @@ void nilfs_evict_inode(struct inode *inode)
 
        ret = nilfs_ifile_delete_inode(ii->i_root->ifile, inode->i_ino);
        if (!ret)
-               atomic_dec(&ii->i_root->inodes_count);
+               atomic64_dec(&ii->i_root->inodes_count);
 
        nilfs_clear_inode(inode);
 
index a5752a589932d936b12cfdda27a6fb718e6cfb51..bd88a7461063bba02f31c6f873902c9c8e87e943 100644 (file)
@@ -835,9 +835,9 @@ static int nilfs_segctor_fill_in_checkpoint(struct nilfs_sc_info *sci)
        raw_cp->cp_snapshot_list.ssl_next = 0;
        raw_cp->cp_snapshot_list.ssl_prev = 0;
        raw_cp->cp_inodes_count =
-               cpu_to_le64(atomic_read(&sci->sc_root->inodes_count));
+               cpu_to_le64(atomic64_read(&sci->sc_root->inodes_count));
        raw_cp->cp_blocks_count =
-               cpu_to_le64(atomic_read(&sci->sc_root->blocks_count));
+               cpu_to_le64(atomic64_read(&sci->sc_root->blocks_count));
        raw_cp->cp_nblk_inc =
                cpu_to_le64(sci->sc_nblk_inc + sci->sc_nblk_this_inc);
        raw_cp->cp_create = cpu_to_le64(sci->sc_seg_ctime);
index 7d257e78fbad197701f8ea2a25ba12c7494d85b3..1427de5ebf4d7d2a66d05d3ef0b164ef4a9312d5 100644 (file)
@@ -554,8 +554,10 @@ int nilfs_attach_checkpoint(struct super_block *sb, __u64 cno, int curr_mnt,
        if (err)
                goto failed_bh;
 
-       atomic_set(&root->inodes_count, le64_to_cpu(raw_cp->cp_inodes_count));
-       atomic_set(&root->blocks_count, le64_to_cpu(raw_cp->cp_blocks_count));
+       atomic64_set(&root->inodes_count,
+                       le64_to_cpu(raw_cp->cp_inodes_count));
+       atomic64_set(&root->blocks_count,
+                       le64_to_cpu(raw_cp->cp_blocks_count));
 
        nilfs_cpfile_put_checkpoint(nilfs->ns_cpfile, cno, bh_cp);
 
@@ -647,7 +649,7 @@ static int nilfs_statfs(struct dentry *dentry, struct kstatfs *buf)
                         * curent inodes count as maximum possible and
                         * zero as free inodes value.
                         */
-                       nmaxinodes = atomic_read(&root->inodes_count);
+                       nmaxinodes = atomic64_read(&root->inodes_count);
                        nfreeinodes = 0;
                        err = 0;
                } else
index 41e6a04a561f36ac1bd190b80dd2c10def4cf176..94c451ce6d247b5ca0e284a8667308d6509d0741 100644 (file)
@@ -764,8 +764,8 @@ nilfs_find_or_create_root(struct the_nilfs *nilfs, __u64 cno)
        new->ifile = NULL;
        new->nilfs = nilfs;
        atomic_set(&new->count, 1);
-       atomic_set(&new->inodes_count, 0);
-       atomic_set(&new->blocks_count, 0);
+       atomic64_set(&new->inodes_count, 0);
+       atomic64_set(&new->blocks_count, 0);
 
        rb_link_node(&new->rb_node, parent, p);
        rb_insert_color(&new->rb_node, &nilfs->ns_cptree);
index be1267a34ceae883b7d705c967347ad4a4185b57..de8cc53b4a5c1f5e246ad77b540345184479c5cf 100644 (file)
@@ -241,8 +241,8 @@ struct nilfs_root {
        struct the_nilfs *nilfs;
        struct inode *ifile;
 
-       atomic_t inodes_count;
-       atomic_t blocks_count;
+       atomic64_t inodes_count;
+       atomic64_t blocks_count;
 };
 
 /* Special checkpoint number */