Hi Stefan,
I'm trying to push it to for-next (will be v4.11), but no response yet.
It would be quite nice for you to test the following git pull and give
some feedback, so that we can merge it faster.
https://mail-archive.com/[email protected]/msg60418.html
Thanks,
Qu
On 12/31/2016 03:31 PM, Stefan Priebe - Profihost AG wrote:
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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html