] nilfs2: use atomic64_t type for inodes_count and blocks_count fields in nilfs_root struct
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>
This commit is contained in:
parent
c7ef972c44
commit
e5f7f84843
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue
Block a user