diff options
Diffstat (limited to 'fs/btrfs/qgroup.c')
| -rw-r--r-- | fs/btrfs/qgroup.c | 39 | 
1 files changed, 16 insertions, 23 deletions
| diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index f9b214992212..b90fabe302e6 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -673,9 +673,6 @@ static int add_qgroup_relation_item(struct btrfs_trans_handle *trans, u64 src,  	key.offset = dst;  	ret = btrfs_insert_empty_item(trans, quota_root, path, &key, 0); - -	btrfs_mark_buffer_dirty(trans, path->nodes[0]); -  	btrfs_free_path(path);  	return ret;  } @@ -752,8 +749,6 @@ static int add_qgroup_item(struct btrfs_trans_handle *trans,  	btrfs_set_qgroup_info_excl(leaf, qgroup_info, 0);  	btrfs_set_qgroup_info_excl_cmpr(leaf, qgroup_info, 0); -	btrfs_mark_buffer_dirty(trans, leaf); -  	btrfs_release_path(path);  	key.type = BTRFS_QGROUP_LIMIT_KEY; @@ -771,8 +766,6 @@ static int add_qgroup_item(struct btrfs_trans_handle *trans,  	btrfs_set_qgroup_limit_rsv_rfer(leaf, qgroup_limit, 0);  	btrfs_set_qgroup_limit_rsv_excl(leaf, qgroup_limit, 0); -	btrfs_mark_buffer_dirty(trans, leaf); -  	ret = 0;  out:  	btrfs_free_path(path); @@ -859,9 +852,6 @@ static int update_qgroup_limit_item(struct btrfs_trans_handle *trans,  	btrfs_set_qgroup_limit_max_excl(l, qgroup_limit, qgroup->max_excl);  	btrfs_set_qgroup_limit_rsv_rfer(l, qgroup_limit, qgroup->rsv_rfer);  	btrfs_set_qgroup_limit_rsv_excl(l, qgroup_limit, qgroup->rsv_excl); - -	btrfs_mark_buffer_dirty(trans, l); -  out:  	btrfs_free_path(path);  	return ret; @@ -905,9 +895,6 @@ static int update_qgroup_info_item(struct btrfs_trans_handle *trans,  	btrfs_set_qgroup_info_rfer_cmpr(l, qgroup_info, qgroup->rfer_cmpr);  	btrfs_set_qgroup_info_excl(l, qgroup_info, qgroup->excl);  	btrfs_set_qgroup_info_excl_cmpr(l, qgroup_info, qgroup->excl_cmpr); - -	btrfs_mark_buffer_dirty(trans, l); -  out:  	btrfs_free_path(path);  	return ret; @@ -947,9 +934,6 @@ static int update_qgroup_status_item(struct btrfs_trans_handle *trans)  	btrfs_set_qgroup_status_generation(l, ptr, trans->transid);  	btrfs_set_qgroup_status_rescan(l, ptr,  				fs_info->qgroup_rescan_progress.objectid); - -	btrfs_mark_buffer_dirty(trans, l); -  out:  	btrfs_free_path(path);  	return ret; @@ -1130,8 +1114,6 @@ int btrfs_quota_enable(struct btrfs_fs_info *fs_info,  				      BTRFS_QGROUP_STATUS_FLAGS_MASK);  	btrfs_set_qgroup_status_rescan(leaf, ptr, 0); -	btrfs_mark_buffer_dirty(trans, leaf); -  	key.objectid = 0;  	key.type = BTRFS_ROOT_REF_KEY;  	key.offset = 0; @@ -1838,9 +1820,19 @@ int btrfs_remove_qgroup(struct btrfs_trans_handle *trans, u64 qgroupid)  	 * Thus its reserved space should all be zero, no matter if qgroup  	 * is consistent or the mode.  	 */ -	WARN_ON(qgroup->rsv.values[BTRFS_QGROUP_RSV_DATA] || -		qgroup->rsv.values[BTRFS_QGROUP_RSV_META_PREALLOC] || -		qgroup->rsv.values[BTRFS_QGROUP_RSV_META_PERTRANS]); +	if (qgroup->rsv.values[BTRFS_QGROUP_RSV_DATA] || +	    qgroup->rsv.values[BTRFS_QGROUP_RSV_META_PREALLOC] || +	    qgroup->rsv.values[BTRFS_QGROUP_RSV_META_PERTRANS]) { +		WARN_ON(IS_ENABLED(CONFIG_BTRFS_DEBUG)); +		btrfs_warn_rl(fs_info, +"to be deleted qgroup %u/%llu has non-zero numbers, data %llu meta prealloc %llu meta pertrans %llu", +			      btrfs_qgroup_level(qgroup->qgroupid), +			      btrfs_qgroup_subvolid(qgroup->qgroupid), +			      qgroup->rsv.values[BTRFS_QGROUP_RSV_DATA], +			      qgroup->rsv.values[BTRFS_QGROUP_RSV_META_PREALLOC], +			      qgroup->rsv.values[BTRFS_QGROUP_RSV_META_PERTRANS]); + +	}  	/*  	 * The same for rfer/excl numbers, but that's only if our qgroup is  	 * consistent and if it's in regular qgroup mode. @@ -1849,8 +1841,9 @@ int btrfs_remove_qgroup(struct btrfs_trans_handle *trans, u64 qgroupid)  	 */  	if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_FULL &&  	    !(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)) { -		if (WARN_ON(qgroup->rfer || qgroup->excl || -			    qgroup->rfer_cmpr || qgroup->excl_cmpr)) { +		if (qgroup->rfer || qgroup->excl || +		    qgroup->rfer_cmpr || qgroup->excl_cmpr) { +			WARN_ON(IS_ENABLED(CONFIG_BTRFS_DEBUG));  			btrfs_warn_rl(fs_info,  "to be deleted qgroup %u/%llu has non-zero numbers, rfer %llu rfer_cmpr %llu excl %llu excl_cmpr %llu",  				      btrfs_qgroup_level(qgroup->qgroupid), | 
