Commit 6381061d authored by John Garry's avatar John Garry Committed by Jens Axboe
Browse files

ilog2: add max_pow_of_two_factor()



Relocate the function max_pow_of_two_factor() to common ilog2.h from the
xfs code, as it will be used elsewhere.

Also simplify the function, as advised by Mikulas Patocka.

Signed-off-by: default avatarJohn Garry <john.g.garry@oracle.com>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20250711105258.3135198-2-john.g.garry@oracle.com


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent ab17ead0
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -672,11 +672,6 @@ static inline xfs_extlen_t xfs_calc_atomic_write_max(struct xfs_mount *mp)
	return rounddown_pow_of_two(XFS_B_TO_FSB(mp, MAX_RW_COUNT));
}

static inline unsigned int max_pow_of_two_factor(const unsigned int nr)
{
	return 1 << (ffs(nr) - 1);
}

/*
 * If the data device advertises atomic write support, limit the size of data
 * device atomic writes to the greatest power-of-two factor of the AG size so
+14 −0
Original line number Diff line number Diff line
@@ -255,4 +255,18 @@ int __bits_per(unsigned long n)
	) :					\
	__bits_per(n)				\
)

/**
 * max_pow_of_two_factor - return highest power-of-2 factor
 * @n: parameter
 *
 * find highest power-of-2 which is evenly divisible into n.
 * 0 is returned for n == 0 or 1.
 */
static inline __attribute__((const))
unsigned int max_pow_of_two_factor(unsigned int n)
{
	return n & -n;
}

#endif /* _LINUX_LOG2_H */