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

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
...@@ -1980,7 +1980,7 @@ xfs_free_buftarg( ...@@ -1980,7 +1980,7 @@ xfs_free_buftarg(
int int
xfs_setsize_buftarg( xfs_setsize_buftarg(
xfs_buftarg_t *btp, struct xfs_buftarg *btp,
unsigned int sectorsize) unsigned int sectorsize)
{ {
/* Set up metadata sector size info */ /* Set up metadata sector size info */
...@@ -1994,31 +1994,15 @@ xfs_setsize_buftarg( ...@@ -1994,31 +1994,15 @@ xfs_setsize_buftarg(
return -EINVAL; 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; 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 * struct xfs_buftarg *
xfs_alloc_buftarg( xfs_alloc_buftarg(
struct xfs_mount *mp, struct xfs_mount *mp,
struct bdev_handle *bdev_handle) struct bdev_handle *bdev_handle)
{ {
xfs_buftarg_t *btp; struct xfs_buftarg *btp;
const struct dax_holder_operations *ops = NULL; const struct dax_holder_operations *ops = NULL;
#if defined(CONFIG_FS_DAX) && defined(CONFIG_MEMORY_FAILURE) #if defined(CONFIG_FS_DAX) && defined(CONFIG_MEMORY_FAILURE)
...@@ -2033,6 +2017,17 @@ xfs_alloc_buftarg( ...@@ -2033,6 +2017,17 @@ xfs_alloc_buftarg(
btp->bt_daxdev = fs_dax_get_by_bdev(btp->bt_bdev, &btp->bt_dax_part_off, btp->bt_daxdev = fs_dax_get_by_bdev(btp->bt_bdev, &btp->bt_dax_part_off,
mp, ops); 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 * 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. * per 30 seconds so as to not spam logs too much on repeated errors.
...@@ -2040,9 +2035,6 @@ xfs_alloc_buftarg( ...@@ -2040,9 +2035,6 @@ xfs_alloc_buftarg(
ratelimit_state_init(&btp->bt_ioerror_rl, 30 * HZ, ratelimit_state_init(&btp->bt_ioerror_rl, 30 * HZ,
DEFAULT_RATELIMIT_BURST); DEFAULT_RATELIMIT_BURST);
if (xfs_setsize_buftarg_early(btp))
goto error_free;
if (list_lru_init(&btp->bt_lru)) if (list_lru_init(&btp->bt_lru))
goto error_free; goto error_free;
......
...@@ -96,7 +96,7 @@ typedef unsigned int xfs_buf_flags_t; ...@@ -96,7 +96,7 @@ typedef unsigned int xfs_buf_flags_t;
* The latter is derived from the underlying device, and controls direct IO * The latter is derived from the underlying device, and controls direct IO
* alignment constraints. * alignment constraints.
*/ */
typedef struct xfs_buftarg { struct xfs_buftarg {
dev_t bt_dev; dev_t bt_dev;
struct bdev_handle *bt_bdev_handle; struct bdev_handle *bt_bdev_handle;
struct block_device *bt_bdev; struct block_device *bt_bdev;
...@@ -114,7 +114,7 @@ typedef struct xfs_buftarg { ...@@ -114,7 +114,7 @@ typedef struct xfs_buftarg {
struct percpu_counter bt_io_count; struct percpu_counter bt_io_count;
struct ratelimit_state bt_ioerror_rl; struct ratelimit_state bt_ioerror_rl;
} xfs_buftarg_t; };
#define XB_PAGES 2 #define XB_PAGES 2
......
...@@ -634,7 +634,7 @@ xlog_state_release_iclog( ...@@ -634,7 +634,7 @@ xlog_state_release_iclog(
int int
xfs_log_mount( xfs_log_mount(
xfs_mount_t *mp, xfs_mount_t *mp,
xfs_buftarg_t *log_target, struct xfs_buftarg *log_target,
xfs_daddr_t blk_offset, xfs_daddr_t blk_offset,
int num_bblks) int num_bblks)
{ {
......
...@@ -94,9 +94,9 @@ typedef struct xfs_mount { ...@@ -94,9 +94,9 @@ typedef struct xfs_mount {
struct xfs_inode *m_rsumip; /* pointer to summary inode */ struct xfs_inode *m_rsumip; /* pointer to summary inode */
struct xfs_inode *m_rootip; /* pointer to root directory */ struct xfs_inode *m_rootip; /* pointer to root directory */
struct xfs_quotainfo *m_quotainfo; /* disk quota information */ struct xfs_quotainfo *m_quotainfo; /* disk quota information */
xfs_buftarg_t *m_ddev_targp; /* saves taking the address */ struct xfs_buftarg *m_ddev_targp; /* data device */
xfs_buftarg_t *m_logdev_targp;/* ptr to log device */ struct xfs_buftarg *m_logdev_targp;/* log device */
xfs_buftarg_t *m_rtdev_targp; /* ptr to rt device */ struct xfs_buftarg *m_rtdev_targp; /* rt device */
void __percpu *m_inodegc; /* percpu inodegc structures */ void __percpu *m_inodegc; /* percpu inodegc structures */
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment