mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-22 22:11:38 +08:00
nilfs2: move inode count and block count into root object
This moves sbi->s_inodes_count and sbi->s_blocks_count into nilfs_root object. Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
This commit is contained in:
parent
e912a5b668
commit
b7c0634204
@ -306,7 +306,7 @@ struct inode *nilfs_new_inode(struct inode *dir, int mode)
|
|||||||
goto failed_ifile_create_inode;
|
goto failed_ifile_create_inode;
|
||||||
/* reference count of i_bh inherits from nilfs_mdt_read_block() */
|
/* reference count of i_bh inherits from nilfs_mdt_read_block() */
|
||||||
|
|
||||||
atomic_inc(&sbi->s_inodes_count);
|
atomic_inc(&root->inodes_count);
|
||||||
inode_init_owner(inode, dir, mode);
|
inode_init_owner(inode, dir, mode);
|
||||||
inode->i_ino = ino;
|
inode->i_ino = ino;
|
||||||
inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
|
inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
|
||||||
@ -715,7 +715,7 @@ void nilfs_evict_inode(struct inode *inode)
|
|||||||
end_writeback(inode);
|
end_writeback(inode);
|
||||||
|
|
||||||
nilfs_ifile_delete_inode(ii->i_root->ifile, inode->i_ino);
|
nilfs_ifile_delete_inode(ii->i_root->ifile, inode->i_ino);
|
||||||
atomic_dec(&NILFS_SB(sb)->s_inodes_count);
|
atomic_dec(&ii->i_root->inodes_count);
|
||||||
|
|
||||||
nilfs_clear_inode(inode);
|
nilfs_clear_inode(inode);
|
||||||
|
|
||||||
|
@ -44,8 +44,6 @@ struct nilfs_sc_info;
|
|||||||
struct nilfs_sb_info {
|
struct nilfs_sb_info {
|
||||||
/* Snapshot status */
|
/* Snapshot status */
|
||||||
__u64 s_snapshot_cno; /* Checkpoint number */
|
__u64 s_snapshot_cno; /* Checkpoint number */
|
||||||
atomic_t s_inodes_count;
|
|
||||||
atomic_t s_blocks_count; /* Reserved (might be deleted) */
|
|
||||||
|
|
||||||
/* Mount options */
|
/* Mount options */
|
||||||
unsigned long s_mount_opt;
|
unsigned long s_mount_opt;
|
||||||
|
@ -856,9 +856,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_next = 0;
|
||||||
raw_cp->cp_snapshot_list.ssl_prev = 0;
|
raw_cp->cp_snapshot_list.ssl_prev = 0;
|
||||||
raw_cp->cp_inodes_count =
|
raw_cp->cp_inodes_count =
|
||||||
cpu_to_le64(atomic_read(&sbi->s_inodes_count));
|
cpu_to_le64(atomic_read(&sci->sc_root->inodes_count));
|
||||||
raw_cp->cp_blocks_count =
|
raw_cp->cp_blocks_count =
|
||||||
cpu_to_le64(atomic_read(&sbi->s_blocks_count));
|
cpu_to_le64(atomic_read(&sci->sc_root->blocks_count));
|
||||||
raw_cp->cp_nblk_inc =
|
raw_cp->cp_nblk_inc =
|
||||||
cpu_to_le64(sci->sc_nblk_inc + sci->sc_nblk_this_inc);
|
cpu_to_le64(sci->sc_nblk_inc + sci->sc_nblk_this_inc);
|
||||||
raw_cp->cp_create = cpu_to_le64(sci->sc_seg_ctime);
|
raw_cp->cp_create = cpu_to_le64(sci->sc_seg_ctime);
|
||||||
|
@ -429,8 +429,9 @@ int nilfs_attach_checkpoint(struct nilfs_sb_info *sbi, __u64 cno, int curr_mnt,
|
|||||||
err = nilfs_read_inode_common(root->ifile, &raw_cp->cp_ifile_inode);
|
err = nilfs_read_inode_common(root->ifile, &raw_cp->cp_ifile_inode);
|
||||||
if (unlikely(err))
|
if (unlikely(err))
|
||||||
goto failed_bh;
|
goto failed_bh;
|
||||||
atomic_set(&sbi->s_inodes_count, le64_to_cpu(raw_cp->cp_inodes_count));
|
|
||||||
atomic_set(&sbi->s_blocks_count, le64_to_cpu(raw_cp->cp_blocks_count));
|
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));
|
||||||
|
|
||||||
nilfs_cpfile_put_checkpoint(nilfs->ns_cpfile, cno, bh_cp);
|
nilfs_cpfile_put_checkpoint(nilfs->ns_cpfile, cno, bh_cp);
|
||||||
|
|
||||||
@ -449,8 +450,8 @@ int nilfs_attach_checkpoint(struct nilfs_sb_info *sbi, __u64 cno, int curr_mnt,
|
|||||||
static int nilfs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
static int nilfs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
||||||
{
|
{
|
||||||
struct super_block *sb = dentry->d_sb;
|
struct super_block *sb = dentry->d_sb;
|
||||||
struct nilfs_sb_info *sbi = NILFS_SB(sb);
|
struct nilfs_root *root = NILFS_I(dentry->d_inode)->i_root;
|
||||||
struct the_nilfs *nilfs = sbi->s_nilfs;
|
struct the_nilfs *nilfs = root->nilfs;
|
||||||
u64 id = huge_encode_dev(sb->s_bdev->bd_dev);
|
u64 id = huge_encode_dev(sb->s_bdev->bd_dev);
|
||||||
unsigned long long blocks;
|
unsigned long long blocks;
|
||||||
unsigned long overhead;
|
unsigned long overhead;
|
||||||
@ -486,7 +487,7 @@ static int nilfs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
|||||||
buf->f_bfree = nfreeblocks;
|
buf->f_bfree = nfreeblocks;
|
||||||
buf->f_bavail = (buf->f_bfree >= nrsvblocks) ?
|
buf->f_bavail = (buf->f_bfree >= nrsvblocks) ?
|
||||||
(buf->f_bfree - nrsvblocks) : 0;
|
(buf->f_bfree - nrsvblocks) : 0;
|
||||||
buf->f_files = atomic_read(&sbi->s_inodes_count);
|
buf->f_files = atomic_read(&root->inodes_count);
|
||||||
buf->f_ffree = 0; /* nilfs_count_free_inodes(sb); */
|
buf->f_ffree = 0; /* nilfs_count_free_inodes(sb); */
|
||||||
buf->f_namelen = NILFS_NAME_LEN;
|
buf->f_namelen = NILFS_NAME_LEN;
|
||||||
buf->f_fsid.val[0] = (u32)id;
|
buf->f_fsid.val[0] = (u32)id;
|
||||||
|
Loading…
Reference in New Issue
Block a user