linux/fs/xfs/libxfs
Brian Foster 10ae3dc7f2 xfs: only free allocated regions of inode chunks
An inode chunk is currently added to the transaction free list based on
a simple fsb conversion and hardcoded chunk length. The nature of sparse
chunks is such that the physical chunk of inodes on disk may consist of
one or more discontiguous parts. Blocks that reside in the holes of the
inode chunk are not inodes and could be allocated to any other use or
not allocated at all.

Refactor the existing xfs_bmap_add_free() call into the
xfs_difree_inode_chunk() helper. The new helper uses the existing
calculation if a chunk is not sparse. Otherwise, use the inobt record
holemask to free the contiguous regions of the chunk.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2015-05-29 09:22:52 +10:00
..
xfs_alloc_btree.c xfs: merge xfs_ag.h into xfs_format.h 2014-11-28 14:25:04 +11:00
xfs_alloc_btree.h
xfs_alloc.c xfs: support min/max agbno args in block allocator 2015-05-29 08:53:00 +10:00
xfs_alloc.h xfs: support min/max agbno args in block allocator 2015-05-29 08:53:00 +10:00
xfs_attr_leaf.c xfs: kill unnecessary firstused overflow check on attr3 leaf removal 2015-04-13 11:27:59 +10:00
xfs_attr_leaf.h xfs: pass attr geometry to attr leaf header conversion functions 2015-04-13 11:26:02 +10:00
xfs_attr_remote.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_attr_remote.h
xfs_attr_sf.h
xfs_attr.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_bit.h
xfs_bmap_btree.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_bmap_btree.h
xfs_bmap.c Merge branch 'fallocate-insert-range' into for-next 2015-03-25 15:12:53 +11:00
xfs_bmap.h xfs: Add support FALLOC_FL_INSERT_RANGE for fallocate 2015-03-25 15:08:56 +11:00
xfs_btree.c xfs: pass mp to XFS_WANT_CORRUPTED_RETURN 2015-02-23 22:39:13 +11:00
xfs_btree.h xfs: require 64-bit sector_t 2014-07-30 09:12:05 +10:00
xfs_cksum.h
xfs_da_btree.c xfs: fix shadow warning in xfs_da3_root_split() 2015-03-25 14:55:25 +11:00
xfs_da_btree.h
xfs_da_format.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_da_format.h xfs: use larger in-core attr firstused field and detect overflow 2015-04-13 11:27:10 +10:00
xfs_dir2_block.c Merge branch 'xfs-misc-fixes-for-3.19-2' into for-next 2014-12-04 09:46:17 +11:00
xfs_dir2_data.c xfs: pass mp to XFS_WANT_CORRUPTED_RETURN 2015-02-23 22:39:13 +11:00
xfs_dir2_leaf.c Merge branch 'xfs-misc-fixes-for-3.19-2' into for-next 2014-12-04 09:46:17 +11:00
xfs_dir2_node.c Merge branch 'xfs-misc-fixes-for-3.19-2' into for-next 2014-12-04 09:46:17 +11:00
xfs_dir2_priv.h xfs: move type conversion functions to xfs_dir.h 2014-12-04 09:43:17 +11:00
xfs_dir2_sf.c Merge branch 'xfs-misc-fixes-for-3.19-2' into for-next 2014-12-04 09:46:17 +11:00
xfs_dir2.c Merge branch 'xfs-misc-fixes-for-3.19-2' into for-next 2014-12-04 09:46:17 +11:00
xfs_dir2.h xfs: move type conversion functions to xfs_dir.h 2014-12-04 09:43:17 +11:00
xfs_dquot_buf.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_format.h xfs: introduce inode record hole mask for sparse inode chunks 2015-05-29 09:03:04 +10:00
xfs_fs.h xfs: add fs geometry bit for sparse inode chunks 2015-05-29 08:58:32 +10:00
xfs_ialloc_btree.c xfs: allocate sparse inode chunks on full chunk allocation failure 2015-05-29 09:18:32 +10:00
xfs_ialloc_btree.h xfs: allocate sparse inode chunks on full chunk allocation failure 2015-05-29 09:18:32 +10:00
xfs_ialloc.c xfs: only free allocated regions of inode chunks 2015-05-29 09:22:52 +10:00
xfs_ialloc.h xfs: pass inode count through ordered icreate log item 2015-05-29 09:05:49 +10:00
xfs_inode_buf.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_inode_buf.h
xfs_inode_fork.c xfs: merge xfs_inum.h into xfs_format.h 2014-11-28 14:27:10 +11:00
xfs_inode_fork.h
xfs_log_format.h xfs: merge xfs_dinode.h into xfs_format.h 2014-11-28 14:24:06 +11:00
xfs_log_recover.h
xfs_log_rlimit.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_quota_defs.h
xfs_rtbitmap.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_sb.c xfs: sparse inode chunks feature helpers and mount requirements 2015-05-29 08:57:27 +10:00
xfs_sb.h xfs: consolidate superblock logging functions 2015-01-22 09:10:31 +11:00
xfs_shared.h xfs: consolidate superblock logging functions 2015-01-22 09:10:31 +11:00
xfs_symlink_remote.c xfs: set buf types when converting extent formats 2015-01-22 09:30:06 +11:00
xfs_trans_resv.c xfs: consolidate superblock logging functions 2015-01-22 09:10:31 +11:00
xfs_trans_resv.h xfs: consolidate superblock logging functions 2015-01-22 09:10:31 +11:00
xfs_trans_space.h
xfs_types.h xfs: move xfs_types.h to libxfs 2015-01-09 10:46:31 +11:00