mirror of https://gitee.com/openkylin/linux.git
btrfs: rename btrfs_std_error to btrfs_handle_fs_error
btrfs_std_error() handles errors, puts FS into readonly mode (as of now). So its good idea to rename it to btrfs_handle_fs_error(). Signed-off-by: Anand Jain <anand.jain@oracle.com> Reviewed-by: David Sterba <dsterba@suse.com> [ edit changelog ] Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
02da2d7217
commit
34d9700702
|
@ -1011,7 +1011,7 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
|
||||||
return ret;
|
return ret;
|
||||||
if (refs == 0) {
|
if (refs == 0) {
|
||||||
ret = -EROFS;
|
ret = -EROFS;
|
||||||
btrfs_std_error(root->fs_info, ret, NULL);
|
btrfs_handle_fs_error(root->fs_info, ret, NULL);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -1928,7 +1928,7 @@ static noinline int balance_level(struct btrfs_trans_handle *trans,
|
||||||
child = read_node_slot(root, mid, 0);
|
child = read_node_slot(root, mid, 0);
|
||||||
if (!child) {
|
if (!child) {
|
||||||
ret = -EROFS;
|
ret = -EROFS;
|
||||||
btrfs_std_error(root->fs_info, ret, NULL);
|
btrfs_handle_fs_error(root->fs_info, ret, NULL);
|
||||||
goto enospc;
|
goto enospc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2031,7 +2031,7 @@ static noinline int balance_level(struct btrfs_trans_handle *trans,
|
||||||
*/
|
*/
|
||||||
if (!left) {
|
if (!left) {
|
||||||
ret = -EROFS;
|
ret = -EROFS;
|
||||||
btrfs_std_error(root->fs_info, ret, NULL);
|
btrfs_handle_fs_error(root->fs_info, ret, NULL);
|
||||||
goto enospc;
|
goto enospc;
|
||||||
}
|
}
|
||||||
wret = balance_node_right(trans, root, mid, left);
|
wret = balance_node_right(trans, root, mid, left);
|
||||||
|
|
|
@ -4329,7 +4329,7 @@ static inline void assfail(char *expr, char *file, int line)
|
||||||
#define btrfs_assert()
|
#define btrfs_assert()
|
||||||
__printf(5, 6)
|
__printf(5, 6)
|
||||||
__cold
|
__cold
|
||||||
void __btrfs_std_error(struct btrfs_fs_info *fs_info, const char *function,
|
void __btrfs_handle_fs_error(struct btrfs_fs_info *fs_info, const char *function,
|
||||||
unsigned int line, int errno, const char *fmt, ...);
|
unsigned int line, int errno, const char *fmt, ...);
|
||||||
|
|
||||||
const char *btrfs_decode_error(int errno);
|
const char *btrfs_decode_error(int errno);
|
||||||
|
@ -4472,9 +4472,9 @@ do { \
|
||||||
__LINE__, (errno)); \
|
__LINE__, (errno)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define btrfs_std_error(fs_info, errno, fmt, args...) \
|
#define btrfs_handle_fs_error(fs_info, errno, fmt, args...) \
|
||||||
do { \
|
do { \
|
||||||
__btrfs_std_error((fs_info), __func__, __LINE__, \
|
__btrfs_handle_fs_error((fs_info), __func__, __LINE__, \
|
||||||
(errno), fmt, ##args); \
|
(errno), fmt, ##args); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
|
@ -2417,7 +2417,7 @@ static int btrfs_replay_log(struct btrfs_fs_info *fs_info,
|
||||||
/* returns with log_tree_root freed on success */
|
/* returns with log_tree_root freed on success */
|
||||||
ret = btrfs_recover_log_trees(log_tree_root);
|
ret = btrfs_recover_log_trees(log_tree_root);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
btrfs_std_error(tree_root->fs_info, ret,
|
btrfs_handle_fs_error(tree_root->fs_info, ret,
|
||||||
"Failed to recover log tree");
|
"Failed to recover log tree");
|
||||||
free_extent_buffer(log_tree_root->node);
|
free_extent_buffer(log_tree_root->node);
|
||||||
kfree(log_tree_root);
|
kfree(log_tree_root);
|
||||||
|
@ -3646,7 +3646,7 @@ static int write_all_supers(struct btrfs_root *root, int max_mirrors)
|
||||||
if (ret) {
|
if (ret) {
|
||||||
mutex_unlock(
|
mutex_unlock(
|
||||||
&root->fs_info->fs_devices->device_list_mutex);
|
&root->fs_info->fs_devices->device_list_mutex);
|
||||||
btrfs_std_error(root->fs_info, ret,
|
btrfs_handle_fs_error(root->fs_info, ret,
|
||||||
"errors while submitting device barriers.");
|
"errors while submitting device barriers.");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -3686,7 +3686,7 @@ static int write_all_supers(struct btrfs_root *root, int max_mirrors)
|
||||||
mutex_unlock(&root->fs_info->fs_devices->device_list_mutex);
|
mutex_unlock(&root->fs_info->fs_devices->device_list_mutex);
|
||||||
|
|
||||||
/* FUA is masked off if unsupported and can't be the reason */
|
/* FUA is masked off if unsupported and can't be the reason */
|
||||||
btrfs_std_error(root->fs_info, -EIO,
|
btrfs_handle_fs_error(root->fs_info, -EIO,
|
||||||
"%d errors while writing supers", total_errors);
|
"%d errors while writing supers", total_errors);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
@ -3704,7 +3704,7 @@ static int write_all_supers(struct btrfs_root *root, int max_mirrors)
|
||||||
}
|
}
|
||||||
mutex_unlock(&root->fs_info->fs_devices->device_list_mutex);
|
mutex_unlock(&root->fs_info->fs_devices->device_list_mutex);
|
||||||
if (total_errors > max_errors) {
|
if (total_errors > max_errors) {
|
||||||
btrfs_std_error(root->fs_info, -EIO,
|
btrfs_handle_fs_error(root->fs_info, -EIO,
|
||||||
"%d errors while writing supers", total_errors);
|
"%d errors while writing supers", total_errors);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9058,7 +9058,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root,
|
||||||
if (!for_reloc && root_dropped == false)
|
if (!for_reloc && root_dropped == false)
|
||||||
btrfs_add_dead_root(root);
|
btrfs_add_dead_root(root);
|
||||||
if (err && err != -EAGAIN)
|
if (err && err != -EAGAIN)
|
||||||
btrfs_std_error(root->fs_info, err, NULL);
|
btrfs_handle_fs_error(root->fs_info, err, NULL);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,7 @@ static int btrfs_del_inode_extref(struct btrfs_trans_handle *trans,
|
||||||
*/
|
*/
|
||||||
if (!btrfs_find_name_in_ext_backref(path, ref_objectid,
|
if (!btrfs_find_name_in_ext_backref(path, ref_objectid,
|
||||||
name, name_len, &extref)) {
|
name, name_len, &extref)) {
|
||||||
btrfs_std_error(root->fs_info, -ENOENT, NULL);
|
btrfs_handle_fs_error(root->fs_info, -ENOENT, NULL);
|
||||||
ret = -EROFS;
|
ret = -EROFS;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4847,7 +4847,7 @@ static long btrfs_ioctl_qgroup_assign(struct file *file, void __user *arg)
|
||||||
/* update qgroup status and info */
|
/* update qgroup status and info */
|
||||||
err = btrfs_run_qgroups(trans, root->fs_info);
|
err = btrfs_run_qgroups(trans, root->fs_info);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
btrfs_std_error(root->fs_info, ret,
|
btrfs_handle_fs_error(root->fs_info, ret,
|
||||||
"failed to update qgroup status and info\n");
|
"failed to update qgroup status and info\n");
|
||||||
err = btrfs_end_transaction(trans, root);
|
err = btrfs_end_transaction(trans, root);
|
||||||
if (err && !ret)
|
if (err && !ret)
|
||||||
|
|
|
@ -2418,7 +2418,7 @@ void merge_reloc_roots(struct reloc_control *rc)
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
if (ret) {
|
if (ret) {
|
||||||
btrfs_std_error(root->fs_info, ret, NULL);
|
btrfs_handle_fs_error(root->fs_info, ret, NULL);
|
||||||
if (!list_empty(&reloc_roots))
|
if (!list_empty(&reloc_roots))
|
||||||
free_reloc_roots(&reloc_roots);
|
free_reloc_roots(&reloc_roots);
|
||||||
|
|
||||||
|
|
|
@ -284,7 +284,7 @@ int btrfs_find_orphan_roots(struct btrfs_root *tree_root)
|
||||||
trans = btrfs_join_transaction(tree_root);
|
trans = btrfs_join_transaction(tree_root);
|
||||||
if (IS_ERR(trans)) {
|
if (IS_ERR(trans)) {
|
||||||
err = PTR_ERR(trans);
|
err = PTR_ERR(trans);
|
||||||
btrfs_std_error(tree_root->fs_info, err,
|
btrfs_handle_fs_error(tree_root->fs_info, err,
|
||||||
"Failed to start trans to delete "
|
"Failed to start trans to delete "
|
||||||
"orphan item");
|
"orphan item");
|
||||||
break;
|
break;
|
||||||
|
@ -293,7 +293,7 @@ int btrfs_find_orphan_roots(struct btrfs_root *tree_root)
|
||||||
root_key.objectid);
|
root_key.objectid);
|
||||||
btrfs_end_transaction(trans, tree_root);
|
btrfs_end_transaction(trans, tree_root);
|
||||||
if (err) {
|
if (err) {
|
||||||
btrfs_std_error(tree_root->fs_info, err,
|
btrfs_handle_fs_error(tree_root->fs_info, err,
|
||||||
"Failed to delete root orphan "
|
"Failed to delete root orphan "
|
||||||
"item");
|
"item");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -131,11 +131,11 @@ static void btrfs_handle_error(struct btrfs_fs_info *fs_info)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* __btrfs_std_error decodes expected errors from the caller and
|
* __btrfs_handle_fs_error decodes expected errors from the caller and
|
||||||
* invokes the approciate error response.
|
* invokes the approciate error response.
|
||||||
*/
|
*/
|
||||||
__cold
|
__cold
|
||||||
void __btrfs_std_error(struct btrfs_fs_info *fs_info, const char *function,
|
void __btrfs_handle_fs_error(struct btrfs_fs_info *fs_info, const char *function,
|
||||||
unsigned int line, int errno, const char *fmt, ...)
|
unsigned int line, int errno, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
struct super_block *sb = fs_info->sb;
|
struct super_block *sb = fs_info->sb;
|
||||||
|
@ -252,7 +252,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans,
|
||||||
/* Wake up anybody who may be waiting on this transaction */
|
/* Wake up anybody who may be waiting on this transaction */
|
||||||
wake_up(&root->fs_info->transaction_wait);
|
wake_up(&root->fs_info->transaction_wait);
|
||||||
wake_up(&root->fs_info->transaction_blocked_wait);
|
wake_up(&root->fs_info->transaction_blocked_wait);
|
||||||
__btrfs_std_error(root->fs_info, function, line, errno, NULL);
|
__btrfs_handle_fs_error(root->fs_info, function, line, errno, NULL);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* __btrfs_panic decodes unexpected, fatal errors from the caller,
|
* __btrfs_panic decodes unexpected, fatal errors from the caller,
|
||||||
|
|
|
@ -2145,7 +2145,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
|
||||||
|
|
||||||
ret = btrfs_write_and_wait_transaction(trans, root);
|
ret = btrfs_write_and_wait_transaction(trans, root);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
btrfs_std_error(root->fs_info, ret,
|
btrfs_handle_fs_error(root->fs_info, ret,
|
||||||
"Error while writing out transaction");
|
"Error while writing out transaction");
|
||||||
mutex_unlock(&root->fs_info->tree_log_mutex);
|
mutex_unlock(&root->fs_info->tree_log_mutex);
|
||||||
goto scrub_continue;
|
goto scrub_continue;
|
||||||
|
|
|
@ -5519,7 +5519,7 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
|
||||||
|
|
||||||
ret = walk_log_tree(trans, log_root_tree, &wc);
|
ret = walk_log_tree(trans, log_root_tree, &wc);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
btrfs_std_error(fs_info, ret, "Failed to pin buffers while "
|
btrfs_handle_fs_error(fs_info, ret, "Failed to pin buffers while "
|
||||||
"recovering log root tree.");
|
"recovering log root tree.");
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
@ -5533,7 +5533,7 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
|
||||||
ret = btrfs_search_slot(NULL, log_root_tree, &key, path, 0, 0);
|
ret = btrfs_search_slot(NULL, log_root_tree, &key, path, 0, 0);
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
btrfs_std_error(fs_info, ret,
|
btrfs_handle_fs_error(fs_info, ret,
|
||||||
"Couldn't find tree log root.");
|
"Couldn't find tree log root.");
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
@ -5551,7 +5551,7 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
|
||||||
log = btrfs_read_fs_root(log_root_tree, &found_key);
|
log = btrfs_read_fs_root(log_root_tree, &found_key);
|
||||||
if (IS_ERR(log)) {
|
if (IS_ERR(log)) {
|
||||||
ret = PTR_ERR(log);
|
ret = PTR_ERR(log);
|
||||||
btrfs_std_error(fs_info, ret,
|
btrfs_handle_fs_error(fs_info, ret,
|
||||||
"Couldn't read tree log root.");
|
"Couldn't read tree log root.");
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
@ -5566,7 +5566,7 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
|
||||||
free_extent_buffer(log->node);
|
free_extent_buffer(log->node);
|
||||||
free_extent_buffer(log->commit_root);
|
free_extent_buffer(log->commit_root);
|
||||||
kfree(log);
|
kfree(log);
|
||||||
btrfs_std_error(fs_info, ret, "Couldn't read target root "
|
btrfs_handle_fs_error(fs_info, ret, "Couldn't read target root "
|
||||||
"for tree log recovery.");
|
"for tree log recovery.");
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1454,7 +1454,7 @@ static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans,
|
||||||
extent = btrfs_item_ptr(leaf, path->slots[0],
|
extent = btrfs_item_ptr(leaf, path->slots[0],
|
||||||
struct btrfs_dev_extent);
|
struct btrfs_dev_extent);
|
||||||
} else {
|
} else {
|
||||||
btrfs_std_error(root->fs_info, ret, "Slot search failed");
|
btrfs_handle_fs_error(root->fs_info, ret, "Slot search failed");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1462,7 +1462,7 @@ static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans,
|
||||||
|
|
||||||
ret = btrfs_del_item(trans, root, path);
|
ret = btrfs_del_item(trans, root, path);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
btrfs_std_error(root->fs_info, ret,
|
btrfs_handle_fs_error(root->fs_info, ret,
|
||||||
"Failed to remove dev extent item");
|
"Failed to remove dev extent item");
|
||||||
} else {
|
} else {
|
||||||
set_bit(BTRFS_TRANS_HAVE_FREE_BGS, &trans->transaction->flags);
|
set_bit(BTRFS_TRANS_HAVE_FREE_BGS, &trans->transaction->flags);
|
||||||
|
@ -2418,7 +2418,7 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path)
|
||||||
|
|
||||||
ret = btrfs_relocate_sys_chunks(root);
|
ret = btrfs_relocate_sys_chunks(root);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
btrfs_std_error(root->fs_info, ret,
|
btrfs_handle_fs_error(root->fs_info, ret,
|
||||||
"Failed to relocate sys chunks after "
|
"Failed to relocate sys chunks after "
|
||||||
"device initialization. This can be fixed "
|
"device initialization. This can be fixed "
|
||||||
"using the \"btrfs balance\" command.");
|
"using the \"btrfs balance\" command.");
|
||||||
|
@ -2663,7 +2663,7 @@ static int btrfs_free_chunk(struct btrfs_trans_handle *trans,
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto out;
|
||||||
else if (ret > 0) { /* Logic error or corruption */
|
else if (ret > 0) { /* Logic error or corruption */
|
||||||
btrfs_std_error(root->fs_info, -ENOENT,
|
btrfs_handle_fs_error(root->fs_info, -ENOENT,
|
||||||
"Failed lookup while freeing chunk.");
|
"Failed lookup while freeing chunk.");
|
||||||
ret = -ENOENT;
|
ret = -ENOENT;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -2671,7 +2671,7 @@ static int btrfs_free_chunk(struct btrfs_trans_handle *trans,
|
||||||
|
|
||||||
ret = btrfs_del_item(trans, root, path);
|
ret = btrfs_del_item(trans, root, path);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
btrfs_std_error(root->fs_info, ret,
|
btrfs_handle_fs_error(root->fs_info, ret,
|
||||||
"Failed to delete chunk item.");
|
"Failed to delete chunk item.");
|
||||||
out:
|
out:
|
||||||
btrfs_free_path(path);
|
btrfs_free_path(path);
|
||||||
|
@ -2857,7 +2857,7 @@ static int btrfs_relocate_chunk(struct btrfs_root *root, u64 chunk_offset)
|
||||||
chunk_offset);
|
chunk_offset);
|
||||||
if (IS_ERR(trans)) {
|
if (IS_ERR(trans)) {
|
||||||
ret = PTR_ERR(trans);
|
ret = PTR_ERR(trans);
|
||||||
btrfs_std_error(root->fs_info, ret, NULL);
|
btrfs_handle_fs_error(root->fs_info, ret, NULL);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3632,7 +3632,7 @@ static void __cancel_balance(struct btrfs_fs_info *fs_info)
|
||||||
unset_balance_control(fs_info);
|
unset_balance_control(fs_info);
|
||||||
ret = del_balance_item(fs_info->tree_root);
|
ret = del_balance_item(fs_info->tree_root);
|
||||||
if (ret)
|
if (ret)
|
||||||
btrfs_std_error(fs_info, ret, NULL);
|
btrfs_handle_fs_error(fs_info, ret, NULL);
|
||||||
|
|
||||||
atomic_set(&fs_info->mutually_exclusive_operation_running, 0);
|
atomic_set(&fs_info->mutually_exclusive_operation_running, 0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue