Any news on this series? I can't see it in 4.9 nor in 4.10-rc Stefan
Am 11.11.2016 um 09:39 schrieb Wang Xiaoguang: > When having compression enabled, Stefan Priebe ofen got enospc errors > though fs still has much free space. Qu Wenruo also has submitted a > fstests test case which can reproduce this bug steadily, please see > url: https://patchwork.kernel.org/patch/9420527 > > First patch[1/3] "btrfs: improve inode's outstanding_extents computation" is > to > fix outstanding_extents and reserved_extents account issues. This issue was > revealed > by modifying BTRFS_MAX_EXTENT_SIZE(128MB) to 64KB, When modifying > BTRFS_MAX_EXTENT_SIZE(128MB) to 64KB, fsstress test often gets these warnings > from > btrfs_destroy_inode(): > WARN_ON(BTRFS_I(inode)->outstanding_extents); > WARN_ON(BTRFS_I(inode)->reserved_extents); > Please see this patch's commit message for detailed info, and this patch is > necessary to patch2 and patch3. > > For false enospc, the root reasson is that for compression, its max extent > size will > be 128k, not 128MB. If we still use 128MB as max extent size to reserve > metadata for > compression, obviously it's not appropriate. In patch "btrfs: Introduce > COMPRESS > reserve type to fix false enospc for compression" commit message, > we explain why false enospc error occurs, please see it for detailed info. > > To fix this issue, we introduce a new enum type: > enum btrfs_metadata_reserve_type { > BTRFS_RESERVE_NORMAL, > BTRFS_RESERVE_COMPRESS, > }; > For btrfs_delalloc_[reserve|release]_metadata() and > btrfs_delalloc_[reserve|release]_space(), we introce a new > btrfs_metadata_reserve_type > argument, then if a path needs to go compression, we pass > BTRFS_RESERVE_COMPRESS, > otherwise pass BTRFS_RESERVE_NORMAL. > > With these patchs, Stefan no longer saw such false enospc errors, and Qu > Wenruo's > fstests test case will also pass. I have also run whole fstests multiple > times, > no regression occurs, thanks. > > Wang Xiaoguang (3): > btrfs: improve inode's outstanding_extents computation > btrfs: introduce type based delalloc metadata reserve > btrfs: Introduce COMPRESS reserve type to fix false enospc for > compression > > fs/btrfs/ctree.h | 36 +++++-- > fs/btrfs/extent-tree.c | 52 ++++++--- > fs/btrfs/extent_io.c | 61 ++++++++++- > fs/btrfs/extent_io.h | 5 + > fs/btrfs/file.c | 25 +++-- > fs/btrfs/free-space-cache.c | 6 +- > fs/btrfs/inode-map.c | 6 +- > fs/btrfs/inode.c | 246 > ++++++++++++++++++++++++++++++++++--------- > fs/btrfs/ioctl.c | 16 +-- > fs/btrfs/relocation.c | 14 ++- > fs/btrfs/tests/inode-tests.c | 15 +-- > 11 files changed, 381 insertions(+), 101 deletions(-) > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html