Re: [PATCH 6/6] btrfs: Simplify code flow in btrfs_delayed_inode_reserve_metadata
From: David Sterba <hidden>
Date: 2021-03-01 16:18:50
From: David Sterba <hidden>
Date: 2021-03-01 16:18:50
On Mon, Feb 22, 2021 at 06:40:47PM +0200, Nikolay Borisov wrote:
btrfs_block_rsv_add can return only ENOSPC since it's called with NO_FLUSH modifier. This so simplify the logic in btrfs_delayed_inode_reserve_metadata to exploit this invariant.
This seems quite fragile, it's not straightforward to see from the context that the NO_FLUSH code will always return ENOSPC. I followed a few calls down from btrfs_block_rsv_add and it's well hidden inside __reserve_bytes. So in case it's an invariant I'd rather add an assertion, ie. ASSERT(ret == 0 || ret == -ENOSPC) so at least we know when this gets broken. Otherwise looks ok.