linux/fs/xfs/libxfs
Brian Foster 3ae2d89174 xfs: allow null firstblock in xfs_bmapi_write() when tp is null
xfs_bmapi_write() always expects a valid firstblock pointer. It
immediately dereferences the pointer to help determine how to
initialize the bma.minleft field. The remaining accesses are
related to modifying btree format forks, which is only relevant for
!COW fork callers.

The reflink code passes a NULL transaction to xfs_bmapi_write() in a
couple places that do COW fork unwritten conversion. The purpose of
the firstblock field is to track the first block allocation in the
current transaction, so technically firstblock should not be
required for these callers either.

Tweak xfs_bmapi_write() to initialize the bma correctly without
accessing the firstblock pointer if no transaction is provided in
the first place. Update the reflink callers to pass NULL instead of
otherwise unused firstblock references.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
2018-07-11 22:26:19 -07:00
..
xfs_ag_resv.c xfs: fix fdblocks accounting w/ RMAPBT per-AG reservation 2018-06-24 12:00:12 -07:00
xfs_ag_resv.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_ag.c xfs: factor the ag length extension code into libxfs 2018-05-15 18:12:51 -07:00
xfs_ag.h xfs: factor the ag length extension code into libxfs 2018-05-15 18:12:51 -07:00
xfs_alloc_btree.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_alloc_btree.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_alloc.c xfs: rename xfs_trans ->t_agfl_dfops to ->t_dfops 2018-07-11 22:26:07 -07:00
xfs_alloc.h xfs: move various type verifiers to common file 2018-06-08 10:07:51 -07:00
xfs_attr_leaf.c xfs: replace xfs_da_args->dfops accesses with ->t_dfops and remove 2018-07-11 22:26:11 -07:00
xfs_attr_leaf.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_attr_remote.c xfs: refactor dfops init to attach to transaction 2018-07-11 22:26:19 -07:00
xfs_attr_remote.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_attr_sf.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_attr.c xfs: refactor dfops init to attach to transaction 2018-07-11 22:26:19 -07:00
xfs_bit.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_bit.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_bmap_btree.c xfs: remove xfs_btree_cur bmbt dfops field 2018-07-11 22:26:16 -07:00
xfs_bmap_btree.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_bmap.c xfs: allow null firstblock in xfs_bmapi_write() when tp is null 2018-07-11 22:26:19 -07:00
xfs_bmap.h xfs: use ->t_dfops for collapse/insert range operations 2018-07-11 22:26:15 -07:00
xfs_btree.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_btree.h xfs: remove unused btree cursor bc_private.a.dfops field 2018-07-11 22:26:17 -07:00
xfs_cksum.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xfs_da_btree.c xfs: remove xfs_bunmapi() dfops param 2018-07-11 22:26:13 -07:00
xfs_da_btree.h xfs: replace xfs_da_args->dfops accesses with ->t_dfops and remove 2018-07-11 22:26:11 -07:00
xfs_da_format.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_da_format.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_defer.c xfs: refactor dfops init to attach to transaction 2018-07-11 22:26:19 -07:00
xfs_defer.h xfs: refactor dfops init to attach to transaction 2018-07-11 22:26:19 -07:00
xfs_dir2_block.c xfs: clean up MIN/MAX 2018-06-08 10:07:52 -07:00
xfs_dir2_data.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_dir2_leaf.c xfs: clean up MIN/MAX 2018-06-08 10:07:52 -07:00
xfs_dir2_node.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_dir2_priv.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_dir2_sf.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_dir2.c xfs: remove xfs_bunmapi() dfops param 2018-07-11 22:26:13 -07:00
xfs_dir2.h xfs: remove dfops param from high level dirname calls 2018-07-11 22:26:08 -07:00
xfs_dquot_buf.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_errortag.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_format.h xfs: don't allow insert-range to shift extents past the maximum offset 2018-06-24 11:56:36 -07:00
xfs_fs.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_ialloc_btree.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_ialloc_btree.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_ialloc.c xfs: remove dfops parameter from ifree call stack 2018-07-11 22:26:07 -07:00
xfs_ialloc.h xfs: remove dfops parameter from ifree call stack 2018-07-11 22:26:07 -07:00
xfs_iext_tree.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_inode_buf.c xfs: More robust inode extent count validation 2018-06-21 23:25:57 -07:00
xfs_inode_buf.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_inode_fork.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_inode_fork.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_log_format.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_log_recover.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_log_rlimit.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_quota_defs.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_refcount_btree.c xfs: remove unused btree cursor bc_private.a.dfops field 2018-07-11 22:26:17 -07:00
xfs_refcount_btree.h xfs: remove unused btree cursor bc_private.a.dfops field 2018-07-11 22:26:17 -07:00
xfs_refcount.c xfs: refactor dfops init to attach to transaction 2018-07-11 22:26:19 -07:00
xfs_refcount.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_rmap_btree.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_rmap_btree.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_rmap.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_rmap.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_rtbitmap.c xfs: fix off-by-one error in xfs_rtalloc_query_range 2018-06-24 11:56:36 -07:00
xfs_sb.c xfs: clean up MIN/MAX 2018-06-08 10:07:52 -07:00
xfs_sb.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_shared.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_symlink_remote.c xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_trans_resv.c xfs: clean up MIN/MAX 2018-06-08 10:07:52 -07:00
xfs_trans_resv.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_trans_space.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00
xfs_types.c xfs: move various type verifiers to common file 2018-06-08 10:07:51 -07:00
xfs_types.h xfs: move various type verifiers to common file 2018-06-08 10:07:51 -07:00