btrfs: replace error code from btrfs_drop_extents
There's a case which clone does not handle and used to BUG_ON instead, (testcase xfstests/btrfs/035), now returns EINVAL. This error code is confusing to the ioctl caller, as it normally signifies errorneous arguments. Change it to ENOPNOTSUPP which allows a fall back to copy instead of clone. This does not affect the common reflink operation. Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <clm@fb.com>
This commit is contained in:
Родитель
c5f7d0bb29
Коммит
3f9e3df8da
|
@ -805,7 +805,7 @@ next_slot:
|
|||
if (start > key.offset && end < extent_end) {
|
||||
BUG_ON(del_nr > 0);
|
||||
if (extent_type == BTRFS_FILE_EXTENT_INLINE) {
|
||||
ret = -EINVAL;
|
||||
ret = -EOPNOTSUPP;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -851,7 +851,7 @@ next_slot:
|
|||
*/
|
||||
if (start <= key.offset && end < extent_end) {
|
||||
if (extent_type == BTRFS_FILE_EXTENT_INLINE) {
|
||||
ret = -EINVAL;
|
||||
ret = -EOPNOTSUPP;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -877,7 +877,7 @@ next_slot:
|
|||
if (start > key.offset && end >= extent_end) {
|
||||
BUG_ON(del_nr > 0);
|
||||
if (extent_type == BTRFS_FILE_EXTENT_INLINE) {
|
||||
ret = -EINVAL;
|
||||
ret = -EOPNOTSUPP;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -3088,7 +3088,7 @@ process_slot:
|
|||
new_key.offset + datal,
|
||||
1);
|
||||
if (ret) {
|
||||
if (ret != -EINVAL)
|
||||
if (ret != -EOPNOTSUPP)
|
||||
btrfs_abort_transaction(trans,
|
||||
root, ret);
|
||||
btrfs_end_transaction(trans, root);
|
||||
|
@ -3163,7 +3163,7 @@ process_slot:
|
|||
new_key.offset + datal,
|
||||
1);
|
||||
if (ret) {
|
||||
if (ret != -EINVAL)
|
||||
if (ret != -EOPNOTSUPP)
|
||||
btrfs_abort_transaction(trans,
|
||||
root, ret);
|
||||
btrfs_end_transaction(trans, root);
|
||||
|
|
Загрузка…
Ссылка в новой задаче