mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
btrfs: return an error from btrfs_record_root_in_trans
We can create a reloc root when we record the root in the trans, which can fail for all sorts of different reasons. Propagate this error up the chain of callers. Future patches will fix the callers of btrfs_record_root_in_trans() to handle the error. Reviewed-by: Qu Wenruo <wqu@suse.com> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
f0118cb6bc
commit
03a7e111a9
@ -413,6 +413,7 @@ static int record_root_in_trans(struct btrfs_trans_handle *trans,
|
|||||||
int force)
|
int force)
|
||||||
{
|
{
|
||||||
struct btrfs_fs_info *fs_info = root->fs_info;
|
struct btrfs_fs_info *fs_info = root->fs_info;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
if ((test_bit(BTRFS_ROOT_SHAREABLE, &root->state) &&
|
if ((test_bit(BTRFS_ROOT_SHAREABLE, &root->state) &&
|
||||||
root->last_trans < trans->transid) || force) {
|
root->last_trans < trans->transid) || force) {
|
||||||
@ -461,11 +462,11 @@ static int record_root_in_trans(struct btrfs_trans_handle *trans,
|
|||||||
* lock. smp_wmb() makes sure that all the writes above are
|
* lock. smp_wmb() makes sure that all the writes above are
|
||||||
* done before we pop in the zero below
|
* done before we pop in the zero below
|
||||||
*/
|
*/
|
||||||
btrfs_init_reloc_root(trans, root);
|
ret = btrfs_init_reloc_root(trans, root);
|
||||||
smp_mb__before_atomic();
|
smp_mb__before_atomic();
|
||||||
clear_bit(BTRFS_ROOT_IN_TRANS_SETUP, &root->state);
|
clear_bit(BTRFS_ROOT_IN_TRANS_SETUP, &root->state);
|
||||||
}
|
}
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user