mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 11:06:41 -05:00
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: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: John Garry <john.g.garry@oracle.com>
This commit is contained in:
committed by
Darrick J. Wong
parent
85bf2dfa3f
commit
6baf4cc47a
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user