summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorLiu Bo <bo.li.liu@oracle.com>2016-07-29 11:09:50 -0700
committerChris Mason <clm@fb.com>2016-08-25 03:58:27 -0700
commit28b737f6ede3661fe610937706c4a6f50e9ab769 (patch)
tree6ea6240c269bc46e66dd87deef33e5ba7287deec /README
parent9e7cc91a6d18a4973c6d2cc104871439c9e94f3d (diff)
Btrfs: clarify do_chunk_alloc()'s return value
Function start_transaction() can return ERR_PTR(1) when flush is BTRFS_RESERVE_FLUSH_LIMIT, so the call graph is start_transaction (return ERR_PTR(1)) -> btrfs_block_rsv_add (return 1) -> reserve_metadata_bytes (return 1) -> flush_space (return 1) -> do_chunk_alloc (return 1) With BTRFS_RESERVE_FLUSH_LIMIT, if flush_space is already on the flush_state of ALLOC_CHUNK and it successfully allocates a new chunk, then instead of trying to reserve space again, reserve_metadata_bytes returns 1 immediately. Eventually the callers who call start_transaction() usually just do the IS_ERR() check which ERR_PTR(1) can pass, then it'll get a panic when dereferencing a pointer which is ERR_PTR(1). The following patch fixes the above problem. "btrfs: flush_space: treat return value of do_chunk_alloc properly" https://patchwork.kernel.org/patch/7778651/ This add comments to clarify do_chunk_alloc()'s return value. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> Signed-off-by: David Sterba <dsterba@suse.com> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'README')
0 files changed, 0 insertions, 0 deletions