memset(&mbuf, 0, sizeof(xfs_mount_t));
/* We don't yet know the sector size, so read maximal size */
- libxfs_buftarg_init(&mbuf, xargs.ddev, xargs.logdev, xargs.rtdev);
+ libxfs_buftarg_init(&mbuf, &xargs);
error = -libxfs_buf_read_uncached(mbuf.m_ddev_targp, XFS_SB_DADDR,
1 << (XFS_MAX_SECTORSIZE_LOG - BBSHIFT), 0, &sbp, NULL);
if (error) {
* tool and so need to be able to mount busted filesystems.
*/
memset(&xmount, 0, sizeof(struct xfs_mount));
- libxfs_buftarg_init(&xmount, x.ddev, x.logdev, x.rtdev);
+ libxfs_buftarg_init(&xmount, &x);
error = -libxfs_buf_read_uncached(xmount.m_ddev_targp, XFS_SB_DADDR,
1 << (XFS_MAX_SECTORSIZE_LOG - BBSHIFT), 0, &bp, NULL);
if (error) {
void
libxfs_buftarg_init(
struct xfs_mount *mp,
- dev_t dev,
- dev_t logdev,
- dev_t rtdev)
+ struct libxfs_init *xi)
{
char *p = getenv("LIBXFS_DEBUG_WRITE_CRASH");
unsigned long dfail = 0, lfail = 0, rfail = 0;
if (mp->m_ddev_targp) {
/* should already have all buftargs initialised */
- if (mp->m_ddev_targp->bt_bdev != dev ||
+ if (mp->m_ddev_targp->bt_bdev != xi->ddev ||
mp->m_ddev_targp->bt_mount != mp) {
fprintf(stderr,
_("%s: bad buftarg reinit, ddev\n"),
progname);
exit(1);
}
- if (!logdev || logdev == dev) {
+ if (!xi->logdev || xi->logdev == xi->ddev) {
if (mp->m_logdev_targp != mp->m_ddev_targp) {
fprintf(stderr,
_("%s: bad buftarg reinit, ldev mismatch\n"),
progname);
exit(1);
}
- } else if (mp->m_logdev_targp->bt_bdev != logdev ||
+ } else if (mp->m_logdev_targp->bt_bdev != xi->logdev ||
mp->m_logdev_targp->bt_mount != mp) {
fprintf(stderr,
_("%s: bad buftarg reinit, logdev\n"),
progname);
exit(1);
}
- if (rtdev && (mp->m_rtdev_targp->bt_bdev != rtdev ||
- mp->m_rtdev_targp->bt_mount != mp)) {
+ if (xi->rtdev &&
+ (mp->m_rtdev_targp->bt_bdev != xi->rtdev ||
+ mp->m_rtdev_targp->bt_mount != mp)) {
fprintf(stderr,
_("%s: bad buftarg reinit, rtdev\n"),
progname);
return;
}
- mp->m_ddev_targp = libxfs_buftarg_alloc(mp, dev, dfail);
- if (!logdev || logdev == dev)
+ mp->m_ddev_targp = libxfs_buftarg_alloc(mp, xi->ddev, dfail);
+ if (!xi->logdev || xi->logdev == xi->ddev)
mp->m_logdev_targp = mp->m_ddev_targp;
else
- mp->m_logdev_targp = libxfs_buftarg_alloc(mp, logdev, lfail);
- mp->m_rtdev_targp = libxfs_buftarg_alloc(mp, rtdev, rfail);
+ mp->m_logdev_targp = libxfs_buftarg_alloc(mp, xi->logdev,
+ lfail);
+ mp->m_rtdev_targp = libxfs_buftarg_alloc(mp, xi->rtdev, rfail);
}
/* Compute maximum possible height for per-AG btree types for this fs. */
xfs_set_debugger(mp);
if (flags & LIBXFS_MOUNT_REPORT_CORRUPTION)
xfs_set_reporting_corruption(mp);
- libxfs_buftarg_init(mp, xi->ddev, xi->logdev, xi->rtdev);
+ libxfs_buftarg_init(mp, xi);
mp->m_finobt_nores = true;
xfs_set_inode32(mp);
struct xfs_buf;
struct xfs_mount;
struct xfs_perag;
+struct libxfs_init;
/*
* IO verifier callbacks need the xfs_mount pointer, so we have to behave
pthread_mutex_unlock(&btp->lock);
}
-extern void libxfs_buftarg_init(struct xfs_mount *mp, dev_t ddev,
- dev_t logdev, dev_t rtdev);
+void libxfs_buftarg_init(struct xfs_mount *mp, struct libxfs_init *xi);
int libxfs_blkdev_issue_flush(struct xfs_buftarg *btp);
#define LIBXFS_BBTOOFF64(bbs) (((xfs_off_t)(bbs)) << BBSHIFT)