aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorLiu Bo <bo.li.liu@oracle.com>2012-12-27 04:01:21 -0500
committerJosef Bacik <jbacik@fusionio.com>2013-02-20 09:37:15 -0500
commit51fab693477c39ba82c153d3fb30a4cc6de49874 (patch)
tree859b579a8253265f2c1c6af9635434fda54486a4 /fs
parentdcfac4156fa102c1bab0e4e31df37e47278292f6 (diff)
Btrfs: use token to avoid times mapping extent buffer
The API in tree log code has done sort of changes, and it proves that we can benifit from using token, so do the same thing here. function_graph tracer's timer shows that it costs nearly half time of before(39.788us -> 22.391us). Signed-off-by: Liu Bo <bo.li.liu@oracle.com> Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/inode.c63
1 files changed, 35 insertions, 28 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 31a871ec48f2..280e4d487636 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2715,34 +2715,41 @@ static void fill_inode_item(struct btrfs_trans_handle *trans,
2715 struct btrfs_inode_item *item, 2715 struct btrfs_inode_item *item,
2716 struct inode *inode) 2716 struct inode *inode)
2717{ 2717{
2718 btrfs_set_inode_uid(leaf, item, i_uid_read(inode)); 2718 struct btrfs_map_token token;
2719 btrfs_set_inode_gid(leaf, item, i_gid_read(inode)); 2719
2720 btrfs_set_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size); 2720 btrfs_init_map_token(&token);
2721 btrfs_set_inode_mode(leaf, item, inode->i_mode); 2721
2722 btrfs_set_inode_nlink(leaf, item, inode->i_nlink); 2722 btrfs_set_token_inode_uid(leaf, item, i_uid_read(inode), &token);
2723 2723 btrfs_set_token_inode_gid(leaf, item, i_gid_read(inode), &token);
2724 btrfs_set_timespec_sec(leaf, btrfs_inode_atime(item), 2724 btrfs_set_token_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size,
2725 inode->i_atime.tv_sec); 2725 &token);
2726 btrfs_set_timespec_nsec(leaf, btrfs_inode_atime(item), 2726 btrfs_set_token_inode_mode(leaf, item, inode->i_mode, &token);
2727 inode->i_atime.tv_nsec); 2727 btrfs_set_token_inode_nlink(leaf, item, inode->i_nlink, &token);
2728 2728
2729 btrfs_set_timespec_sec(leaf, btrfs_inode_mtime(item), 2729 btrfs_set_token_timespec_sec(leaf, btrfs_inode_atime(item),
2730 inode->i_mtime.tv_sec); 2730 inode->i_atime.tv_sec, &token);
2731 btrfs_set_timespec_nsec(leaf, btrfs_inode_mtime(item), 2731 btrfs_set_token_timespec_nsec(leaf, btrfs_inode_atime(item),
2732 inode->i_mtime.tv_nsec); 2732 inode->i_atime.tv_nsec, &token);
2733 2733
2734 btrfs_set_timespec_sec(leaf, btrfs_inode_ctime(item), 2734 btrfs_set_token_timespec_sec(leaf, btrfs_inode_mtime(item),
2735 inode->i_ctime.tv_sec); 2735 inode->i_mtime.tv_sec, &token);
2736 btrfs_set_timespec_nsec(leaf, btrfs_inode_ctime(item), 2736 btrfs_set_token_timespec_nsec(leaf, btrfs_inode_mtime(item),
2737 inode->i_ctime.tv_nsec); 2737 inode->i_mtime.tv_nsec, &token);
2738 2738
2739 btrfs_set_inode_nbytes(leaf, item, inode_get_bytes(inode)); 2739 btrfs_set_token_timespec_sec(leaf, btrfs_inode_ctime(item),
2740 btrfs_set_inode_generation(leaf, item, BTRFS_I(inode)->generation); 2740 inode->i_ctime.tv_sec, &token);
2741 btrfs_set_inode_sequence(leaf, item, inode->i_version); 2741 btrfs_set_token_timespec_nsec(leaf, btrfs_inode_ctime(item),
2742 btrfs_set_inode_transid(leaf, item, trans->transid); 2742 inode->i_ctime.tv_nsec, &token);
2743 btrfs_set_inode_rdev(leaf, item, inode->i_rdev); 2743
2744 btrfs_set_inode_flags(leaf, item, BTRFS_I(inode)->flags); 2744 btrfs_set_token_inode_nbytes(leaf, item, inode_get_bytes(inode),
2745 btrfs_set_inode_block_group(leaf, item, 0); 2745 &token);
2746 btrfs_set_token_inode_generation(leaf, item, BTRFS_I(inode)->generation,
2747 &token);
2748 btrfs_set_token_inode_sequence(leaf, item, inode->i_version, &token);
2749 btrfs_set_token_inode_transid(leaf, item, trans->transid, &token);
2750 btrfs_set_token_inode_rdev(leaf, item, inode->i_rdev, &token);
2751 btrfs_set_token_inode_flags(leaf, item, BTRFS_I(inode)->flags, &token);
2752 btrfs_set_token_inode_block_group(leaf, item, 0, &token);
2746} 2753}
2747 2754
2748/* 2755/*