aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.cz>2014-04-15 12:50:17 -0400
committerChris Mason <clm@fb.com>2014-04-24 19:43:32 -0400
commit3f9e3df8da3c51649c15db249978a10f7374236a (patch)
tree27c95d85e319fe75e4643fdeaf79ae928bbef6b3 /fs
parentc5f7d0bb29df2e1848a236e58e201daf5b4e0f21 (diff)
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>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/file.c6
-rw-r--r--fs/btrfs/ioctl.c4
2 files changed, 5 insertions, 5 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index e7e78fa9085e..1eee3f79d75f 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -805,7 +805,7 @@ next_slot:
805 if (start > key.offset && end < extent_end) { 805 if (start > key.offset && end < extent_end) {
806 BUG_ON(del_nr > 0); 806 BUG_ON(del_nr > 0);
807 if (extent_type == BTRFS_FILE_EXTENT_INLINE) { 807 if (extent_type == BTRFS_FILE_EXTENT_INLINE) {
808 ret = -EINVAL; 808 ret = -EOPNOTSUPP;
809 break; 809 break;
810 } 810 }
811 811
@@ -851,7 +851,7 @@ next_slot:
851 */ 851 */
852 if (start <= key.offset && end < extent_end) { 852 if (start <= key.offset && end < extent_end) {
853 if (extent_type == BTRFS_FILE_EXTENT_INLINE) { 853 if (extent_type == BTRFS_FILE_EXTENT_INLINE) {
854 ret = -EINVAL; 854 ret = -EOPNOTSUPP;
855 break; 855 break;
856 } 856 }
857 857
@@ -877,7 +877,7 @@ next_slot:
877 if (start > key.offset && end >= extent_end) { 877 if (start > key.offset && end >= extent_end) {
878 BUG_ON(del_nr > 0); 878 BUG_ON(del_nr > 0);
879 if (extent_type == BTRFS_FILE_EXTENT_INLINE) { 879 if (extent_type == BTRFS_FILE_EXTENT_INLINE) {
880 ret = -EINVAL; 880 ret = -EOPNOTSUPP;
881 break; 881 break;
882 } 882 }
883 883
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index f2e8fcc279a3..7b001abc73c7 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -3088,7 +3088,7 @@ process_slot:
3088 new_key.offset + datal, 3088 new_key.offset + datal,
3089 1); 3089 1);
3090 if (ret) { 3090 if (ret) {
3091 if (ret != -EINVAL) 3091 if (ret != -EOPNOTSUPP)
3092 btrfs_abort_transaction(trans, 3092 btrfs_abort_transaction(trans,
3093 root, ret); 3093 root, ret);
3094 btrfs_end_transaction(trans, root); 3094 btrfs_end_transaction(trans, root);
@@ -3163,7 +3163,7 @@ process_slot:
3163 new_key.offset + datal, 3163 new_key.offset + datal,
3164 1); 3164 1);
3165 if (ret) { 3165 if (ret) {
3166 if (ret != -EINVAL) 3166 if (ret != -EOPNOTSUPP)
3167 btrfs_abort_transaction(trans, 3167 btrfs_abort_transaction(trans,
3168 root, ret); 3168 root, ret);
3169 btrfs_end_transaction(trans, root); 3169 btrfs_end_transaction(trans, root);