mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	btrfs: split alloc_log_tree()
This is a preparation patch for the next patch. Split alloc_log_tree() into two parts. The first one allocating the tree structure, remains in alloc_log_tree() and the second part allocating the tree node, which is moved into btrfs_alloc_log_tree_node(). Also export the latter part is to be used in the next patch. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
		
							parent
							
								
									f7ef5287a6
								
							
						
					
					
						commit
						6ab6ebb760
					
				
					 2 changed files with 29 additions and 6 deletions
				
			
		|  | @ -1254,7 +1254,6 @@ static struct btrfs_root *alloc_log_tree(struct btrfs_trans_handle *trans, | |||
| 					 struct btrfs_fs_info *fs_info) | ||||
| { | ||||
| 	struct btrfs_root *root; | ||||
| 	struct extent_buffer *leaf; | ||||
| 
 | ||||
| 	root = btrfs_alloc_root(fs_info, BTRFS_TREE_LOG_OBJECTID, GFP_NOFS); | ||||
| 	if (!root) | ||||
|  | @ -1264,6 +1263,14 @@ static struct btrfs_root *alloc_log_tree(struct btrfs_trans_handle *trans, | |||
| 	root->root_key.type = BTRFS_ROOT_ITEM_KEY; | ||||
| 	root->root_key.offset = BTRFS_TREE_LOG_OBJECTID; | ||||
| 
 | ||||
| 	return root; | ||||
| } | ||||
| 
 | ||||
| int btrfs_alloc_log_tree_node(struct btrfs_trans_handle *trans, | ||||
| 			      struct btrfs_root *root) | ||||
| { | ||||
| 	struct extent_buffer *leaf; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * DON'T set SHAREABLE bit for log trees. | ||||
| 	 * | ||||
|  | @ -1276,26 +1283,33 @@ static struct btrfs_root *alloc_log_tree(struct btrfs_trans_handle *trans, | |||
| 
 | ||||
| 	leaf = btrfs_alloc_tree_block(trans, root, 0, BTRFS_TREE_LOG_OBJECTID, | ||||
| 			NULL, 0, 0, 0, BTRFS_NESTING_NORMAL); | ||||
| 	if (IS_ERR(leaf)) { | ||||
| 		btrfs_put_root(root); | ||||
| 		return ERR_CAST(leaf); | ||||
| 	} | ||||
| 	if (IS_ERR(leaf)) | ||||
| 		return PTR_ERR(leaf); | ||||
| 
 | ||||
| 	root->node = leaf; | ||||
| 
 | ||||
| 	btrfs_mark_buffer_dirty(root->node); | ||||
| 	btrfs_tree_unlock(root->node); | ||||
| 	return root; | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans, | ||||
| 			     struct btrfs_fs_info *fs_info) | ||||
| { | ||||
| 	struct btrfs_root *log_root; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	log_root = alloc_log_tree(trans, fs_info); | ||||
| 	if (IS_ERR(log_root)) | ||||
| 		return PTR_ERR(log_root); | ||||
| 
 | ||||
| 	ret = btrfs_alloc_log_tree_node(trans, log_root); | ||||
| 	if (ret) { | ||||
| 		btrfs_put_root(log_root); | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	WARN_ON(fs_info->log_root_tree); | ||||
| 	fs_info->log_root_tree = log_root; | ||||
| 	return 0; | ||||
|  | @ -1307,11 +1321,18 @@ int btrfs_add_log_tree(struct btrfs_trans_handle *trans, | |||
| 	struct btrfs_fs_info *fs_info = root->fs_info; | ||||
| 	struct btrfs_root *log_root; | ||||
| 	struct btrfs_inode_item *inode_item; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	log_root = alloc_log_tree(trans, fs_info); | ||||
| 	if (IS_ERR(log_root)) | ||||
| 		return PTR_ERR(log_root); | ||||
| 
 | ||||
| 	ret = btrfs_alloc_log_tree_node(trans, log_root); | ||||
| 	if (ret) { | ||||
| 		btrfs_put_root(log_root); | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	log_root->last_trans = trans->transid; | ||||
| 	log_root->root_key.offset = root->root_key.objectid; | ||||
| 
 | ||||
|  |  | |||
|  | @ -120,6 +120,8 @@ blk_status_t btrfs_wq_submit_bio(struct inode *inode, struct bio *bio, | |||
| 				 extent_submit_bio_start_t *submit_bio_start); | ||||
| blk_status_t btrfs_submit_bio_done(void *private_data, struct bio *bio, | ||||
| 			  int mirror_num); | ||||
| int btrfs_alloc_log_tree_node(struct btrfs_trans_handle *trans, | ||||
| 			      struct btrfs_root *root); | ||||
| int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans, | ||||
| 			     struct btrfs_fs_info *fs_info); | ||||
| int btrfs_add_log_tree(struct btrfs_trans_handle *trans, | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Naohiro Aota
						Naohiro Aota