There is an internal report complaining that qgroup is only half of the
limit, but they still get EDQUOT errors.
With some extra debugging patch added, it turns out that even fsstress
with 15 steps can sometimes cause qgroup reserved data space to leak.
This patch set is going to:
- Fix the reserved data space leakage
Mostly caused by missing btrfs_qgroup_free_data() call in release
page.
As I thought a dirty page either goes through finish_ordered_io(),
or get invalidated directly.
But due to the designed of delayed finish_ordered_io(), we can
still get dirty page get released directly.
- Add extra safenet to catch qgroup reserved space leakage.
The existing test case btrfs/022 can already catch the bug pretty
reliably.
I will add a specific case for fstests if needed.
Qu Wenruo (2):
btrfs: extent_io: fix qgroup reserved data space leakage when
releasing a page
btrfs: qgroup: catch reserved space leakage at unmount time
fs/btrfs/disk-io.c | 6 ++++++
fs/btrfs/extent_io.c | 34 +++++++++++++++++++++++++++-------
fs/btrfs/qgroup.c | 43 +++++++++++++++++++++++++++++++++++++++++++
fs/btrfs/qgroup.h | 2 +-
4 files changed, 77 insertions(+), 8 deletions(-)
--
2.26.2