This patchset can be fetched from github:
https://github.com/adam900710/linux/tree/cleanup_alloc_extent_buffer
Which is based on v5.0-rc7

There are 5 extent buffer alloc functions in btrfs:
__alloc_extent_buffer();
alloc_extent_buffer();
__alloc_dummy_extent_buffer();
alloc_dummy_extent_buffer();
alloc_test_extent_buffer();

However their return value is not unified for failure mode:
__alloc_extent_buffer()         Never fail
alloc_extent_buffer()           PTR_ERR()
__alloc_dummy_extent_buffer()   NULL
alloc_dummy_extent_buffer()     NULL
alloc_test_extent_buffer()      NULL

This causes some wrapper function to have 2 failure modes, like
btrfs_find_create_tree_block() can return NULL or PTR_ERR(-ENOMEM) for
its failure.

This inconsistent behavior is making static checker and reader crazy.

This patchset will unify the failure more of above 5 functions to
PTR_ERR().

Qu Wenruo (5):
  btrfs: extent_io: Add comment about the return value of
    alloc_extent_buffer()
  btrfs: extent_io: Unify the return value of __alloc_extent_buffer()
    with alloc_extent_buffer()
  btrfs: extent_io: Unify the return value of
    alloc_dummy_extent_buffer() with alloc_extent_buffer()
  btrfs: extent_io: Unify the return value of alloc_test_extent_buffer()
    with alloc_extent_buffer()
  btrfs: extent_io: Unify the return value of
    btrfs_clone_extent_buffer() with alloc_extent_buffer()

 fs/btrfs/backref.c                     |  8 ++--
 fs/btrfs/ctree.c                       | 16 ++++----
 fs/btrfs/extent_io.c                   | 56 +++++++++++++++++---------
 fs/btrfs/qgroup.c                      |  5 ++-
 fs/btrfs/tests/extent-buffer-tests.c   |  6 ++-
 fs/btrfs/tests/extent-io-tests.c       |  4 +-
 fs/btrfs/tests/free-space-tree-tests.c |  3 +-
 fs/btrfs/tests/inode-tests.c           |  6 ++-
 fs/btrfs/tests/qgroup-tests.c          |  3 +-
 9 files changed, 68 insertions(+), 39 deletions(-)

-- 
2.20.1

Reply via email to