Commit aa8fb4bb authored by Chandan Babu R's avatar Chandan Babu R
Browse files

Merge tag 'buftarg-cleanups-6.9_2024-02-23' of...

Merge tag 'buftarg-cleanups-6.9_2024-02-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux

 into xfs-6.9-mergeC

xfs: buftarg cleanups

Clean up the buffer target code in preparation for adding the ability to
target tmpfs files.  That will enable the creation of in memory btrees.

Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Signed-off-by: default avatarChandan Babu R <chandanbabu@kernel.org>

* tag 'buftarg-cleanups-6.9_2024-02-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: move setting bt_logical_sectorsize out of xfs_setsize_buftarg
  xfs: remove xfs_setsize_buftarg_early
  xfs: remove the xfs_buftarg_t typedef
parents a7ade7e1 1c51ac09
Loading
Loading
Loading
Loading
+13 −21
Original line number Diff line number Diff line
@@ -1980,7 +1980,7 @@ xfs_free_buftarg(

int
xfs_setsize_buftarg(
	xfs_buftarg_t		*btp,
	struct xfs_buftarg	*btp,
	unsigned int		sectorsize)
{
	/* Set up metadata sector size info */
@@ -1994,31 +1994,15 @@ xfs_setsize_buftarg(
		return -EINVAL;
	}

	/* Set up device logical sector size mask */
	btp->bt_logical_sectorsize = bdev_logical_block_size(btp->bt_bdev);
	btp->bt_logical_sectormask = bdev_logical_block_size(btp->bt_bdev) - 1;

	return 0;
}

/*
 * When allocating the initial buffer target we have not yet
 * read in the superblock, so don't know what sized sectors
 * are being used at this early stage.  Play safe.
 */
STATIC int
xfs_setsize_buftarg_early(
	xfs_buftarg_t		*btp)
{
	return xfs_setsize_buftarg(btp, bdev_logical_block_size(btp->bt_bdev));
}

struct xfs_buftarg *
xfs_alloc_buftarg(
	struct xfs_mount	*mp,
	struct bdev_handle	*bdev_handle)
{
	xfs_buftarg_t		*btp;
	struct xfs_buftarg	*btp;
	const struct dax_holder_operations *ops = NULL;

#if defined(CONFIG_FS_DAX) && defined(CONFIG_MEMORY_FAILURE)
@@ -2033,6 +2017,17 @@ xfs_alloc_buftarg(
	btp->bt_daxdev = fs_dax_get_by_bdev(btp->bt_bdev, &btp->bt_dax_part_off,
					    mp, ops);

	/*
	 * When allocating the buftargs we have not yet read the super block and
	 * thus don't know the file system sector size yet.
	 */
	if (xfs_setsize_buftarg(btp, bdev_logical_block_size(btp->bt_bdev)))
		goto error_free;

	/* Set up device logical sector size mask */
	btp->bt_logical_sectorsize = bdev_logical_block_size(btp->bt_bdev);
	btp->bt_logical_sectormask = bdev_logical_block_size(btp->bt_bdev) - 1;

	/*
	 * Buffer IO error rate limiting. Limit it to no more than 10 messages
	 * per 30 seconds so as to not spam logs too much on repeated errors.
@@ -2040,9 +2035,6 @@ xfs_alloc_buftarg(
	ratelimit_state_init(&btp->bt_ioerror_rl, 30 * HZ,
			     DEFAULT_RATELIMIT_BURST);

	if (xfs_setsize_buftarg_early(btp))
		goto error_free;

	if (list_lru_init(&btp->bt_lru))
		goto error_free;

+2 −2
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@ typedef unsigned int xfs_buf_flags_t;
 * The latter is derived from the underlying device, and controls direct IO
 * alignment constraints.
 */
typedef struct xfs_buftarg {
struct xfs_buftarg {
	dev_t			bt_dev;
	struct bdev_handle	*bt_bdev_handle;
	struct block_device	*bt_bdev;
@@ -114,7 +114,7 @@ typedef struct xfs_buftarg {

	struct percpu_counter	bt_io_count;
	struct ratelimit_state	bt_ioerror_rl;
} xfs_buftarg_t;
};

#define XB_PAGES	2

+8 −8
Original line number Diff line number Diff line
@@ -634,7 +634,7 @@ xlog_state_release_iclog(
int
xfs_log_mount(
	xfs_mount_t		*mp,
	xfs_buftarg_t	*log_target,
	struct xfs_buftarg	*log_target,
	xfs_daddr_t		blk_offset,
	int			num_bblks)
{
+3 −3
Original line number Diff line number Diff line
@@ -94,9 +94,9 @@ typedef struct xfs_mount {
	struct xfs_inode	*m_rsumip;	/* pointer to summary inode */
	struct xfs_inode	*m_rootip;	/* pointer to root directory */
	struct xfs_quotainfo	*m_quotainfo;	/* disk quota information */
	xfs_buftarg_t		*m_ddev_targp;	/* saves taking the address */
	xfs_buftarg_t		*m_logdev_targp;/* ptr to log device */
	xfs_buftarg_t		*m_rtdev_targp;	/* ptr to rt device */
	struct xfs_buftarg	*m_ddev_targp;	/* data device */
	struct xfs_buftarg	*m_logdev_targp;/* log device */
	struct xfs_buftarg	*m_rtdev_targp;	/* rt device */
	void __percpu		*m_inodegc;	/* percpu inodegc structures */

	/*