@@ -313,10 +313,14 @@ static inline struct extent_state *tree_search(struct extent_io_tree *tree, u64
313
313
return tree_search_for_insert (tree , offset , NULL , NULL );
314
314
}
315
315
316
- static void extent_io_tree_panic (struct extent_io_tree * tree , int err )
316
+ static void extent_io_tree_panic (const struct extent_io_tree * tree ,
317
+ const struct extent_state * state ,
318
+ const char * opname ,
319
+ int err )
317
320
{
318
321
btrfs_panic (tree -> fs_info , err ,
319
- "locking error: extent tree was modified by another thread while locked" );
322
+ "extent io tree error on %s state start %llu end %llu" ,
323
+ opname , state -> start , state -> end );
320
324
}
321
325
322
326
static void merge_prev_state (struct extent_io_tree * tree , struct extent_state * state )
@@ -676,7 +680,7 @@ int __clear_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
676
680
goto search_again ;
677
681
err = split_state (tree , state , prealloc , start );
678
682
if (err )
679
- extent_io_tree_panic (tree , err );
683
+ extent_io_tree_panic (tree , state , "split" , err );
680
684
681
685
prealloc = NULL ;
682
686
if (err )
@@ -698,7 +702,7 @@ int __clear_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
698
702
goto search_again ;
699
703
err = split_state (tree , state , prealloc , end + 1 );
700
704
if (err )
701
- extent_io_tree_panic (tree , err );
705
+ extent_io_tree_panic (tree , state , "split" , err );
702
706
703
707
if (wake )
704
708
wake_up (& state -> wq );
@@ -1133,7 +1137,7 @@ static int __set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
1133
1137
goto search_again ;
1134
1138
err = split_state (tree , state , prealloc , start );
1135
1139
if (err )
1136
- extent_io_tree_panic (tree , err );
1140
+ extent_io_tree_panic (tree , state , "split" , err );
1137
1141
1138
1142
prealloc = NULL ;
1139
1143
if (err )
@@ -1181,7 +1185,7 @@ static int __set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
1181
1185
inserted_state = insert_state (tree , prealloc , bits , changeset );
1182
1186
if (IS_ERR (inserted_state )) {
1183
1187
err = PTR_ERR (inserted_state );
1184
- extent_io_tree_panic (tree , err );
1188
+ extent_io_tree_panic (tree , prealloc , "insert" , err );
1185
1189
}
1186
1190
1187
1191
cache_state (inserted_state , cached_state );
@@ -1209,7 +1213,7 @@ static int __set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
1209
1213
goto search_again ;
1210
1214
err = split_state (tree , state , prealloc , end + 1 );
1211
1215
if (err )
1212
- extent_io_tree_panic (tree , err );
1216
+ extent_io_tree_panic (tree , state , "split" , err );
1213
1217
1214
1218
set_state_bits (tree , prealloc , bits , changeset );
1215
1219
cache_state (prealloc , cached_state );
@@ -1363,7 +1367,7 @@ int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
1363
1367
}
1364
1368
err = split_state (tree , state , prealloc , start );
1365
1369
if (err )
1366
- extent_io_tree_panic (tree , err );
1370
+ extent_io_tree_panic (tree , state , "split" , err );
1367
1371
prealloc = NULL ;
1368
1372
if (err )
1369
1373
goto out ;
@@ -1411,7 +1415,7 @@ int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
1411
1415
inserted_state = insert_state (tree , prealloc , bits , NULL );
1412
1416
if (IS_ERR (inserted_state )) {
1413
1417
err = PTR_ERR (inserted_state );
1414
- extent_io_tree_panic (tree , err );
1418
+ extent_io_tree_panic (tree , prealloc , "insert" , err );
1415
1419
}
1416
1420
cache_state (inserted_state , cached_state );
1417
1421
if (inserted_state == prealloc )
@@ -1434,7 +1438,7 @@ int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
1434
1438
1435
1439
err = split_state (tree , state , prealloc , end + 1 );
1436
1440
if (err )
1437
- extent_io_tree_panic (tree , err );
1441
+ extent_io_tree_panic (tree , state , "split" , err );
1438
1442
1439
1443
set_state_bits (tree , prealloc , bits , NULL );
1440
1444
cache_state (prealloc , cached_state );
0 commit comments