Skip to content

Commit 13c7c54

Browse files
author
Darrick J. Wong
committed
xfs: separate out setting buftarg atomic writes limits
Separate out setting buftarg atomic writes limits into a dedicated function, xfs_configure_buftarg_atomic_writes(), to keep the specific functionality self-contained. For naming consistency, rename xfs_setsize_buftarg() -> xfs_configure_buftarg(). Signed-off-by: Darrick J. Wong <[email protected]> [jpg: separate out from patch "xfs: ignore HW which ..."] Signed-off-by: John Garry <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
1 parent 5af9f55 commit 13c7c54

File tree

3 files changed

+28
-12
lines changed

3 files changed

+28
-12
lines changed

fs/xfs/xfs_buf.c

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1714,13 +1714,33 @@ xfs_free_buftarg(
17141714
kfree(btp);
17151715
}
17161716

1717+
/*
1718+
* Configure this buffer target for hardware-assisted atomic writes if the
1719+
* underlying block device supports is congruent with the filesystem geometry.
1720+
*/
1721+
static inline void
1722+
xfs_configure_buftarg_atomic_writes(
1723+
struct xfs_buftarg *btp)
1724+
{
1725+
unsigned int min_bytes, max_bytes;
1726+
1727+
min_bytes = bdev_atomic_write_unit_min_bytes(btp->bt_bdev);
1728+
max_bytes = bdev_atomic_write_unit_max_bytes(btp->bt_bdev);
1729+
1730+
btp->bt_bdev_awu_min = min_bytes;
1731+
btp->bt_bdev_awu_max = max_bytes;
1732+
}
1733+
1734+
/* Configure a buffer target that abstracts a block device. */
17171735
int
1718-
xfs_setsize_buftarg(
1736+
xfs_configure_buftarg(
17191737
struct xfs_buftarg *btp,
17201738
unsigned int sectorsize)
17211739
{
17221740
int error;
17231741

1742+
ASSERT(btp->bt_bdev != NULL);
1743+
17241744
/* Set up metadata sector size info */
17251745
btp->bt_meta_sectorsize = sectorsize;
17261746
btp->bt_meta_sectormask = sectorsize - 1;
@@ -1733,6 +1753,9 @@ xfs_setsize_buftarg(
17331753
return -EINVAL;
17341754
}
17351755

1756+
if (bdev_can_atomic_write(btp->bt_bdev))
1757+
xfs_configure_buftarg_atomic_writes(btp);
1758+
17361759
return 0;
17371760
}
17381761

@@ -1797,13 +1820,6 @@ xfs_alloc_buftarg(
17971820
btp->bt_daxdev = fs_dax_get_by_bdev(btp->bt_bdev, &btp->bt_dax_part_off,
17981821
mp, ops);
17991822

1800-
if (bdev_can_atomic_write(btp->bt_bdev)) {
1801-
btp->bt_bdev_awu_min = bdev_atomic_write_unit_min_bytes(
1802-
btp->bt_bdev);
1803-
btp->bt_bdev_awu_max = bdev_atomic_write_unit_max_bytes(
1804-
btp->bt_bdev);
1805-
}
1806-
18071823
/*
18081824
* Flush and invalidate all devices' pagecaches before reading any
18091825
* metadata because XFS doesn't use the bdev pagecache.

fs/xfs/xfs_buf.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ struct xfs_buftarg *xfs_alloc_buftarg(struct xfs_mount *mp,
374374
extern void xfs_free_buftarg(struct xfs_buftarg *);
375375
extern void xfs_buftarg_wait(struct xfs_buftarg *);
376376
extern void xfs_buftarg_drain(struct xfs_buftarg *);
377-
extern int xfs_setsize_buftarg(struct xfs_buftarg *, unsigned int);
377+
int xfs_configure_buftarg(struct xfs_buftarg *btp, unsigned int sectorsize);
378378

379379
#define xfs_getsize_buftarg(buftarg) block_size((buftarg)->bt_bdev)
380380
#define xfs_readonly_buftarg(buftarg) bdev_read_only((buftarg)->bt_bdev)

fs/xfs/xfs_super.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ xfs_setup_devices(
537537
{
538538
int error;
539539

540-
error = xfs_setsize_buftarg(mp->m_ddev_targp, mp->m_sb.sb_sectsize);
540+
error = xfs_configure_buftarg(mp->m_ddev_targp, mp->m_sb.sb_sectsize);
541541
if (error)
542542
return error;
543543

@@ -546,7 +546,7 @@ xfs_setup_devices(
546546

547547
if (xfs_has_sector(mp))
548548
log_sector_size = mp->m_sb.sb_logsectsize;
549-
error = xfs_setsize_buftarg(mp->m_logdev_targp,
549+
error = xfs_configure_buftarg(mp->m_logdev_targp,
550550
log_sector_size);
551551
if (error)
552552
return error;
@@ -560,7 +560,7 @@ xfs_setup_devices(
560560
}
561561
mp->m_rtdev_targp = mp->m_ddev_targp;
562562
} else if (mp->m_rtname) {
563-
error = xfs_setsize_buftarg(mp->m_rtdev_targp,
563+
error = xfs_configure_buftarg(mp->m_rtdev_targp,
564564
mp->m_sb.sb_sectsize);
565565
if (error)
566566
return error;

0 commit comments

Comments
 (0)