aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/extent-tree.c
diff options
context:
space:
mode:
authorMiao Xie <miaox@cn.fujitsu.com>2012-09-06 06:02:28 -0400
committerChris Mason <chris.mason@fusionio.com>2012-10-01 15:19:11 -0400
commit66d8f3dd1c87813d7f1cf8b774cb03e9b8d7e87e (patch)
tree74d18d716f42e15958a9723ece4cd98dfdfd6a74 /fs/btrfs/extent-tree.c
parent6352b91da1a2108bb8cc5115e8714f90d706f15f (diff)
Btrfs: add a new "type" field into the block reservation structure
Sometimes we need choose the method of the reservation according to the type of the block reservation, such as the reservation for the delayed inode update. Now we identify the type just by comparing the address of the reservation variants, it is very ugly if it is a temporary one because we need compare it with all the common reservation variants. So we add a new "type" field to keep the type the reservation variants. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r--fs/btrfs/extent-tree.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index ee51b7afe97d..36e03312267a 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -4108,13 +4108,15 @@ static int block_rsv_migrate_bytes(struct btrfs_block_rsv *src,
4108 return 0; 4108 return 0;
4109} 4109}
4110 4110
4111void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv) 4111void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv, unsigned short type)
4112{ 4112{
4113 memset(rsv, 0, sizeof(*rsv)); 4113 memset(rsv, 0, sizeof(*rsv));
4114 spin_lock_init(&rsv->lock); 4114 spin_lock_init(&rsv->lock);
4115 rsv->type = type;
4115} 4116}
4116 4117
4117struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root) 4118struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root,
4119 unsigned short type)
4118{ 4120{
4119 struct btrfs_block_rsv *block_rsv; 4121 struct btrfs_block_rsv *block_rsv;
4120 struct btrfs_fs_info *fs_info = root->fs_info; 4122 struct btrfs_fs_info *fs_info = root->fs_info;
@@ -4123,7 +4125,7 @@ struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root)
4123 if (!block_rsv) 4125 if (!block_rsv)
4124 return NULL; 4126 return NULL;
4125 4127
4126 btrfs_init_block_rsv(block_rsv); 4128 btrfs_init_block_rsv(block_rsv, type);
4127 block_rsv->space_info = __find_space_info(fs_info, 4129 block_rsv->space_info = __find_space_info(fs_info,
4128 BTRFS_BLOCK_GROUP_METADATA); 4130 BTRFS_BLOCK_GROUP_METADATA);
4129 return block_rsv; 4131 return block_rsv;