Error handling patchset v3
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest65 patches 3 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/65 | btrfs: Add btrfs_panic()fs/ fs/ | +60 | 3 replies | |
| 2/65 | btrfs: Catch locking failures in {set,clear}_extent_bitfs/ | +30 | 0 replies | |
| 3/65 | btrfs: Panic on bad rbtree operationsfs/ fs/ | +39 | 0 replies | |
| 4/65 | btrfs: Simplify btrfs_insert_rootfs/ | +3 | 0 replies | |
| 5/65 | btrfs: set_extent_bit error push-upfs/ fs/ fs/ +3 more | +70 | 0 replies | |
| 6/65 | btrfs: lock_extent error push-upfs/ fs/ fs/ +5 more | +94 | 0 replies | |
| 7/65 | btrfs: clear_extent_bit error push-upfs/ fs/ fs/ +7 more | +108 | 0 replies | |
| 8/65 | btrfs: unlock_extent error push-upfs/ fs/ fs/ +5 more | +159 | 0 replies | |
| 9/65 | btrfs: pin_down_extent should return voidfs/ | +3 | 0 replies | |
| 10/65 | btrfs: btrfs_pin_extent error push-upfs/ fs/ | +22 | 0 replies | |
| 11/65 | btrfs: btrfs_drop_snapshot should return intfs/ fs/ | +5 | 0 replies | |
| 12/65 | btrfs: btrfs_start_transaction non-looped error push-upfs/ fs/ fs/ +2 more | +21 | 0 replies | |
| 13/65 | btrfs: find_and_setup_root error push-upfs/ | +2 | 0 replies | |
| 14/65 | btrfs: btrfs_update_root error push-upfs/ | +3 | 0 replies | |
| 15/65 | btrfs: set_range_writeback should return voidfs/ | +5 | 0 replies | |
| 16/65 | btrfs: wait_on_state should return voidfs/ | +2 | 0 replies | |
| 17/65 | btrfs: wait_extent_bit should return voidfs/ fs/ | +2 | 0 replies | |
| 18/65 | btrfs: __unlock_for_delalloc should return voidfs/ | +4 | 0 replies | |
| 19/65 | btrfs: check_page_uptodate should return voidfs/ | +1 | 0 replies | |
| 20/65 | btrfs: check_page_locked should return voidfs/ | +1 | 0 replies | |
| 21/65 | btrfs: check_page_writeback should return voidfs/ | +2 | 0 replies | |
| 22/65 | btrfs: clear_extent_buffer_dirty should return voidfs/ fs/ | +2 | 0 replies | |
| 23/65 | btrfs: btrfs_cleanup_fs_uuids should return voidfs/ fs/ | +2 | 0 replies | |
| 24/65 | btrfs: run_scheduled_bios should return voidfs/ | +1 | 0 replies | |
| 25/65 | btrfs: btrfs_close_extra_devices should return voidfs/ fs/ | +2 | 0 replies | |
| 26/65 | btrfs: schedule_bio should return voidfs/ | +1 | 0 replies | |
| 27/65 | btrfs: fill_device_from_item should return voidfs/ | +1 | 0 replies | |
| 28/65 | btrfs: btrfs_queue_worker should return voidfs/ fs/ | +5 | 0 replies | |
| 29/65 | btrfs: run_ordered_completions should return voidfs/ | +2 | 0 replies | |
| 30/65 | btrfs: btrfs_stop_workers should return voidfs/ fs/ | +2 | 0 replies | |
| 31/65 | btrfs: btrfs_requeue_work should return voidfs/ fs/ | +3 | 0 replies | |
| 32/65 | btrfs: tree-log: btrfs_end_log_trans should return voidfs/ fs/ | +2 | 0 replies | |
| 33/65 | btrfs: tree-log: wait_for_writer should return voidfs/ | +2 | 0 replies | |
| 34/65 | btrfs: btrfs_init_compress should return voidfs/ fs/ fs/ | +3 | 0 replies | |
| 35/65 | btrfs: btrfs_invalidate_inodes should return voidfs/ fs/ | +2 | 0 replies | |
| 36/65 | btrfs: __setup_root should return voidfs/ | +4 | 0 replies | |
| 37/65 | btrfs: btrfs_destroy_delalloc_inodes should return voidfs/ | +2 | 0 replies | |
| 38/65 | btrfs: btrfs_prepare_extent_commit should return voidfs/ fs/ | +3 | 0 replies | |
| 39/65 | btrfs: btrfs_set_block_group_rw should return voidfs/ fs/ | +3 | 0 replies | |
| 40/65 | btrfs: setup_inline_extent_backref should return voidfs/ | +11 | 0 replies | |
| 41/65 | btrfs: btrfs_run_defrag_inodes should return voidfs/ fs/ | +2 | 0 replies | |
| 42/65 | btrfs: Simplify btrfs_submit_bio_hookfs/ | +4 | 0 replies | |
| 43/65 | btrfs: Factor out tree->ops->merge_bio_hook callfs/ fs/ | +17 | 0 replies | |
| 44/65 | btrfs: ->submit_bio_hook error push-upfs/ fs/ fs/ | +26 | 0 replies | |
| 45/65 | btrfs: __add_reloc_root error push-upfs/ | +15 | 0 replies | |
| 46/65 | btrfs: fixup_low_keys should return voidfs/ | +11 | 0 replies | |
| 47/65 | btrfs: setup_items_for_insert should return voidfs/ fs/ fs/ | +16 | 0 replies | |
| 48/65 | btrfs: del_ptr should return voidfs/ | +13 | 0 replies | |
| 49/65 | btrfs: insert_ptr should return voidfs/ | +13 | 0 replies | |
| 50/65 | btrfs: add_delayed_ref_head should return voidfs/ | +10 | 0 replies | |
| 51/65 | btrfs: add_delayed_tree_ref should return voidfs/ | +6 | 0 replies | |
| 52/65 | btrfs: add_delayed_data_ref should return voidfs/ | +7 | 0 replies | |
| 53/65 | btrfs: Fix kfree of member instead of structurefs/ | +3 | 0 replies | |
| 54/65 | btrfs: Use mempools for delayed refsfs/ fs/ fs/ | +107 | 0 replies | |
| 55/65 | btrfs: Delayed ref mempool functions should return voidfs/ fs/ fs/ +2 more | +63 | 0 replies | |
| 56/65 | btrfs: btrfs_inc_extent_ref void return prepfs/ fs/ fs/ +1 more | +27 | 0 replies | |
| 57/65 | btrfs: btrfs_free_extent void return prepfs/ fs/ fs/ +1 more | +25 | 0 replies | |
| 58/65 | btrfs: __btrfs_mod_refs process_func should return voidfs/ fs/ | +22 | 0 replies | |
| 59/65 | btrfs: __btrfs_mod_ref should return voidfs/ fs/ fs/ | +29 | 0 replies | |
| 60/65 | btrfs: clean_tree_block should return voidfs/ fs/ | +4 | 0 replies | |
| 61/65 | btrfs: btrfs_truncate_item should return voidfs/ fs/ fs/ +4 more | +17 | 0 replies | |
| 62/65 | btrfs: btrfs_extend_item should return voidfs/ fs/ fs/ +4 more | +16 | 0 replies | |
| 63/65 | btrfs: end_compressed_writeback should return voidfs/ | +2 | 0 replies | |
| 64/65 | btrfs: copy_for_split should return voidfs/ | +8 | 0 replies | |
| 65/65 | btrfs: update_inline_extent_backref should return voidfs/ | +11 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [patch 00/65] Error handling patchset v3
Hi all -
Here's my current error handling patchset, against 3.1-rc8. Almost all of this patchset is preparing for actual error handling. Before we start in on that work, I'm trying to reduce the surface we need to worry about. It turns out that there is a ton of code that returns an error code but never actually reports an error.
The patchset has grown to 65 patches. 46 of them change functions that currently return int to return void. Many of them didn't even have the error codes checked in the caller to begin with. 10 of the patches push error codes up into the caller.
The remaining 9 patches do:
- Add a btrfs_panic facility, with a mount option to select BUG or panic
- Catch tree operation failures
- Simplify/add some wrapper functions
The biggest change, which will probably merit some discussion, is the introduction of slab-backed mempools in the delayed ref code. I expect to use this technique in other areas of the code to deal with deep failures that are impossible to recover gracefully from. Rather than returning -ENOMEM, we keep a page's worth of objects around for each node type. That allows the callers to be drastically simplified. There's no reason in particular to start with the delayed ref code, it's just where I happened to do it.
-Jeff