Hi all,
This is a resurrection of an old fix for the indirect delalloc
reservation split problem. The last version apparently fell through the
cracks. The core problem and fix is the same and is described in patch
3.
The original problem is not as reproducible as it was since the last
version of this patch. The original zero range reproducer doesn't work
because zero range has since been updated to flush and invalidate the
affected range rather than kill any delayed allocation blocks in the in
core extent tree. The side effect of this is that the problem does not
currently have a clear reproducer, but the indirect reservation
management code is still incorrect nonetheless.
As a result, I've prepended an RFC test instrumentation patch that can
help induce the problem[1]. I've marked the patch RFC simply because it
is hacky and probably up in the air as to whether it is merge worthy. I
wanted to have _something_ to help reproduce the problem and verify the
fix, however, hence it is included here. I'm fine with either merging it
or using it as a one-off verification and dropping it. Also, any other
ideas for a more simple/elegant reproducer are welcome.
Thoughts, reviews, flames appreciated.
Brian
[1] An update to the original xfstests test is also required. I'll send
that update in a reply to this cover letter shortly.
v2:
- Rebase to latest for-next branch.
- Include RFC test instrumentation patch.
v1: http://oss.sgi.com/archives/xfs/2014-10/msg00294.html
- xfs_bunmapi() code into independent patch.
- Refactor fix into separate helper function.
rfc: http://oss.sgi.com/archives/xfs/2014-09/msg00337.html
Brian Foster (3):
xfs: debug mode forced buffered write failure
xfs: update icsb freeblocks counter after extent deletion
xfs: borrow indirect blocks from freed extent when available
fs/xfs/libxfs/xfs_bmap.c | 158 ++++++++++++++++++++++++++++++++++-------------
fs/xfs/xfs_aops.c | 9 ++-
fs/xfs/xfs_mount.h | 9 +++
fs/xfs/xfs_sysfs.c | 78 ++++++++++++++++++++---
4 files changed, 200 insertions(+), 54 deletions(-)
--
2.4.3
|