Re: [PATCH v5 2/2] nilfs2: use atomic_long_t type for inodes_count and blocks_count fields in nilfs_root struct

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 24 May 2013 17:32:52 +0400, Vyacheslav Dubeyko wrote:
> From: Vyacheslav Dubeyko <slava@xxxxxxxxxxx>
> Subject: [PATCH v5 2/2] nilfs2: use atomic_long_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 atomic_long_t type in representation
> of inodes_count and blocks_count fields in struct nilfs_root.
> 
> Signed-off-by: Vyacheslav Dubeyko <slava@xxxxxxxxxxx>
> CC: Ryusuke Konishi <konishi.ryusuke@xxxxxxxxxxxxx>

Acked-by: Ryusuke Konishi <konishi.ryusuke@xxxxxxxxxxxxx>


Thanks,
Ryusuke Konishi

> ---
>  fs/nilfs2/ifile.c     |    2 +-
>  fs/nilfs2/inode.c     |    8 ++++----
>  fs/nilfs2/segment.c   |    4 ++--
>  fs/nilfs2/super.c     |    8 +++++---
>  fs/nilfs2/the_nilfs.c |    4 ++--
>  fs/nilfs2/the_nilfs.h |    4 ++--
>  6 files changed, 16 insertions(+), 14 deletions(-)
> 
> diff --git a/fs/nilfs2/ifile.c b/fs/nilfs2/ifile.c
> index d788a59..d540a42 100644
> --- a/fs/nilfs2/ifile.c
> +++ b/fs/nilfs2/ifile.c
> @@ -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 = atomic_long_read(&NILFS_I(ifile)->i_root->inodes_count);
>  	err = nilfs_palloc_count_max_entries(ifile, nused, nmaxinodes);
>  	if (likely(!err))
>  		*nfreeinodes = *nmaxinodes - nused;
> diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
> index 689fb60..9e13255 100644
> --- a/fs/nilfs2/inode.c
> +++ b/fs/nilfs2/inode.c
> @@ -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);
> +		atomic_long_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);
> +		atomic_long_sub(n, &root->blocks_count);
>  }
>  
>  /**
> @@ -350,7 +350,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);
> +	atomic_long_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;
> @@ -782,7 +782,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);
> +		atomic_long_dec(&ii->i_root->inodes_count);
>  
>  	nilfs_clear_inode(inode);
>  
> diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c
> index a5752a58..051f67b 100644
> --- a/fs/nilfs2/segment.c
> +++ b/fs/nilfs2/segment.c
> @@ -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(atomic_long_read(&sci->sc_root->inodes_count));
>  	raw_cp->cp_blocks_count =
> -		cpu_to_le64(atomic_read(&sci->sc_root->blocks_count));
> +		cpu_to_le64(atomic_long_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);
> diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c
> index acd110f..f1ce6d4 100644
> --- a/fs/nilfs2/super.c
> +++ b/fs/nilfs2/super.c
> @@ -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));
> +	atomic_long_set(&root->inodes_count,
> +			le64_to_cpu(raw_cp->cp_inodes_count));
> +	atomic_long_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 = atomic_long_read(&root->inodes_count);
>  			nfreeinodes = 0;
>  			err = 0;
>  		} else
> diff --git a/fs/nilfs2/the_nilfs.c b/fs/nilfs2/the_nilfs.c
> index 41e6a04..d005510 100644
> --- a/fs/nilfs2/the_nilfs.c
> +++ b/fs/nilfs2/the_nilfs.c
> @@ -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);
> +	atomic_long_set(&new->inodes_count, 0);
> +	atomic_long_set(&new->blocks_count, 0);
>  
>  	rb_link_node(&new->rb_node, parent, p);
>  	rb_insert_color(&new->rb_node, &nilfs->ns_cptree);
> diff --git a/fs/nilfs2/the_nilfs.h b/fs/nilfs2/the_nilfs.h
> index be1267a..e37a246 100644
> --- a/fs/nilfs2/the_nilfs.h
> +++ b/fs/nilfs2/the_nilfs.h
> @@ -241,8 +241,8 @@ struct nilfs_root {
>  	struct the_nilfs *nilfs;
>  	struct inode *ifile;
>  
> -	atomic_t inodes_count;
> -	atomic_t blocks_count;
> +	atomic_long_t inodes_count;
> +	atomic_long_t blocks_count;
>  };
>  
>  /* Special checkpoint number */
> -- 
> 1.7.9.5
> 
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux