Commit 6baf4cc4 authored by John Garry's avatar John Garry Committed by Darrick J. Wong
Browse files

xfs: allow block allocator to take an alignment hint



Add a BMAPI flag to provide a hint to the block allocator to align extents
according to the extszhint.

This will be useful for atomic writes to ensure that we are not being
allocated extents which are not suitable (for atomic writes).

Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Signed-off-by: default avatarJohn Garry <john.g.garry@oracle.com>
parent 85bf2dfa
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -3312,6 +3312,11 @@ xfs_bmap_compute_alignments(
		align = xfs_get_cowextsz_hint(ap->ip);
	else if (ap->datatype & XFS_ALLOC_USERDATA)
		align = xfs_get_extsz_hint(ap->ip);

	/* Try to align start block to any minimum allocation alignment */
	if (align > 1 && (ap->flags & XFS_BMAPI_EXTSZALIGN))
		args->alignment = align;

	if (align) {
		if (xfs_bmap_extsize_align(mp, &ap->got, &ap->prev, align, 0,
					ap->eof, 0, ap->conv, &ap->offset,
+5 −1
Original line number Diff line number Diff line
@@ -87,6 +87,9 @@ struct xfs_bmalloca {
/* Do not update the rmap btree.  Used for reconstructing bmbt from rmapbt. */
#define XFS_BMAPI_NORMAP	(1u << 10)

/* Try to align allocations to the extent size hint */
#define XFS_BMAPI_EXTSZALIGN	(1u << 11)

#define XFS_BMAPI_FLAGS \
	{ XFS_BMAPI_ENTIRE,	"ENTIRE" }, \
	{ XFS_BMAPI_METADATA,	"METADATA" }, \
@@ -98,7 +101,8 @@ struct xfs_bmalloca {
	{ XFS_BMAPI_REMAP,	"REMAP" }, \
	{ XFS_BMAPI_COWFORK,	"COWFORK" }, \
	{ XFS_BMAPI_NODISCARD,	"NODISCARD" }, \
	{ XFS_BMAPI_NORMAP,	"NORMAP" }
	{ XFS_BMAPI_NORMAP,	"NORMAP" },\
	{ XFS_BMAPI_EXTSZALIGN,	"EXTSZALIGN" }


static inline int xfs_bmapi_aflag(int w)