Hi all, This is v2 of the XFS and block device reservation experiment. The significant changes in v2 are that the bdev interface has been condensed to a single callback function, the XFS transaction reservation management has been reworked to make transactions responsible for tracking and releasing excess reservation (for non-delalloc cases) and a workaround for the fallocate over-reservation issue is included. Beyond that, this version adds a bunch of miscellaneous cleanups and fixes some of the nastier locking/leak issues present in the first rfc. Patches 1-2 refactor some XFS reserve pool and block accounting code in preparation for subsequent patches. Patches 3-5 add block/device-mapper reservation support. Patches 6-10 add the core reservation infrastructure and management bits to XFS. See the link to the original rfc below for instructions and further details around the purpose of this series. Finally, note that this is still highly experimental/theoretical and should not be used on production systems. Thoughts, reviews, flames appreciated. Brian rfcv2: - Rebased to 4.6.0-rc3. - Fix compile warnings reported by kbuild. - Fix reservation leakage on fs ENOSPC. - Fix mod_fdblocks locking to avoid BUG() (still racy). - Fix XFS reserve block ENOSPC handling. - Kill block wrappers, condense get/set/provision to a single callback. - Update XFS transaction to track reservation, don't release excess on provision. - Add transaction noblkres mode, use for fallocate reservation optimization. rfc: http://oss.sgi.com/pipermail/xfs/2016-March/047673.html Brian Foster (7): xfs: refactor xfs_reserve_blocks() to handle ENOSPC correctly xfs: replace xfs_mod_fdblocks() bool param with flags xfs: thin block device reservation mechanism xfs: adopt a reserved allocation model on dm-thin devices xfs: handle bdev reservation ENOSPC correctly from XFS reserved pool xfs: support no block reservation transaction mode xfs: use contiguous bdev reservation for file preallocation Joe Thornber (1): dm thin: add methods to set and get reserved space Mike Snitzer (2): block: add block_device_operations methods to set and get reserved space dm: add methods to set and get reserved space drivers/md/dm-thin.c | 181 +++++++++++++++++++++++++++-- drivers/md/dm.c | 41 +++++++ fs/xfs/Makefile | 1 + fs/xfs/libxfs/xfs_alloc.c | 25 ++++ fs/xfs/libxfs/xfs_bmap.c | 17 ++- fs/xfs/libxfs/xfs_shared.h | 2 + fs/xfs/xfs_bmap_util.c | 29 ++++- fs/xfs/xfs_fsops.c | 128 ++++++++++++++------- fs/xfs/xfs_mount.c | 106 +++++++++++++++-- fs/xfs/xfs_mount.h | 12 +- fs/xfs/xfs_thin.c | 260 ++++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_thin.h | 31 +++++ fs/xfs/xfs_trace.h | 27 +++++ fs/xfs/xfs_trans.c | 94 +++++++++++++-- fs/xfs/xfs_trans.h | 1 + include/linux/blkdev.h | 6 + include/linux/device-mapper.h | 5 + 17 files changed, 880 insertions(+), 86 deletions(-) create mode 100644 fs/xfs/xfs_thin.c create mode 100644 fs/xfs/xfs_thin.h -- 2.4.11 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel