disk_close(ctx->verify_disks[XFS_DEV_DATA]);
if (ctx->verify_disks[XFS_DEV_LOG])
disk_close(ctx->verify_disks[XFS_DEV_LOG]);
- if (ctx->verify_disks[XFS_DEV_RT])
+ if (ctx->verify_disks[XFS_DEV_RT] &&
+ ctx->verify_disks[XFS_DEV_RT] != ctx->verify_disks[XFS_DEV_DATA])
disk_close(ctx->verify_disks[XFS_DEV_RT]);
fshandle_destroy();
error = -xfd_close(&ctx->mnt);
}
}
- if (ctx->fsinfo.fs_rt) {
+ if (ctx->mnt.fsgeom.rtstart) {
+ ctx->verify_disks[XFS_DEV_RT] = ctx->verify_disks[XFS_DEV_DATA];
+ } else if (ctx->fsinfo.fs_rt || ctx->mnt.fsgeom.rtstart) {
ctx->verify_disks[XFS_DEV_RT] = disk_open(ctx->fsinfo.fs_rt);
if (!ctx->verify_disks[XFS_DEV_RT]) {
str_error(ctx, ctx->mntpoint,
goto out_datapool;
}
}
- if (ctx->fsinfo.fs_rt) {
+ if (ctx->fsinfo.fs_rt || ctx->mnt.fsgeom.rtstart) {
ret = alloc_pool(ctx, &vs, XFS_DEV_RT);
if (ret) {
str_liberror(ctx, ret,
* nr_threads appropriately to handle that many threads.
*/
*nr_threads = read_verify_nproc(ctx);
- if (ctx->fsinfo.fs_rt)
+ if (ctx->fsinfo.fs_rt || ctx->mnt.fsgeom.rtstart)
*nr_threads += read_verify_nproc(ctx);
if (ctx->fsinfo.fs_log)
*nr_threads += read_verify_nproc(ctx);
break;
}
}
- if (ctx->fsinfo.fs_rt) {
+ if (ctx->fsinfo.fs_rt || ctx->mnt.fsgeom.rtstart) {
for (agno = 0; agno < ctx->mnt.fsgeom.rgcount; agno++) {
ret = -workqueue_add(&wq, scan_rtg_rmaps, agno, &sbx);
if (ret) {