diff mbox series

[04/23] libxfs: remove the volname concept

Message ID 20231211163742.837427-5-hch@lst.de (mailing list archive)
State Accepted
Headers show
Series [01/23] libxfs: remove the unused icache_flags member from struct libxfs_xinit | expand

Commit Message

Christoph Hellwig Dec. 11, 2023, 4:37 p.m. UTC
IRIX has the concept of a volume that has data/log/rt subvolumes (that's
where the subvolume name in Linux comes from), but in the current
Linux-only xfsprogs version trying to pretend we do anything with that
it is just utterly confusing.  The volname is basically just a very
obsfucated second way to pass the data device name, so get rid of it
in the libxfs and progs internals.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 copy/xfs_copy.c   |  7 ++----
 db/info.c         |  2 +-
 db/init.c         | 13 +++-------
 db/init.h         |  1 -
 db/output.c       |  2 +-
 include/libxfs.h  |  1 -
 libxfs/init.c     | 24 ++++--------------
 libxfs/topology.c | 10 ++++----
 mkfs/xfs_mkfs.c   | 63 ++++++++++-------------------------------------
 repair/init.c     | 11 ++-------
 10 files changed, 33 insertions(+), 101 deletions(-)

Comments

Carlos Maiolino Dec. 18, 2023, 8:47 a.m. UTC | #1
On Mon, Dec 11, 2023 at 05:37:23PM +0100, Christoph Hellwig wrote:
> IRIX has the concept of a volume that has data/log/rt subvolumes (that's
> where the subvolume name in Linux comes from), but in the current
> Linux-only xfsprogs version trying to pretend we do anything with that
> it is just utterly confusing.  The volname is basically just a very
> obsfucated second way to pass the data device name, so get rid of it
> in the libxfs and progs internals.

Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>

And thanks for the history lecture.

Carlos
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  copy/xfs_copy.c   |  7 ++----
>  db/info.c         |  2 +-
>  db/init.c         | 13 +++-------
>  db/init.h         |  1 -
>  db/output.c       |  2 +-
>  include/libxfs.h  |  1 -
>  libxfs/init.c     | 24 ++++--------------
>  libxfs/topology.c | 10 ++++----
>  mkfs/xfs_mkfs.c   | 63 ++++++++++-------------------------------------
>  repair/init.c     | 11 ++-------
>  10 files changed, 33 insertions(+), 101 deletions(-)
> 
> diff --git a/copy/xfs_copy.c b/copy/xfs_copy.c
> index 79f659467..66728f199 100644
> --- a/copy/xfs_copy.c
> +++ b/copy/xfs_copy.c
> @@ -718,11 +718,8 @@ main(int argc, char **argv)
>  	xargs.isdirect = LIBXFS_DIRECT;
>  	xargs.isreadonly = LIBXFS_ISREADONLY;
> 
> -	if (source_is_file)  {
> -		xargs.dname = source_name;
> -		xargs.disfile = 1;
> -	} else
> -		xargs.volname = source_name;
> +	xargs.dname = source_name;
> +	xargs.disfile = source_is_file;
> 
>  	if (!libxfs_init(&xargs))  {
>  		do_log(_("%s: couldn't initialize XFS library\n"
> diff --git a/db/info.c b/db/info.c
> index 0f6c29429..b30ada3aa 100644
> --- a/db/info.c
> +++ b/db/info.c
> @@ -30,7 +30,7 @@ info_f(
>  	struct xfs_fsop_geom	geo;
> 
>  	libxfs_fs_geometry(mp, &geo, XFS_FS_GEOM_MAX_STRUCT_VER);
> -	xfs_report_geom(&geo, fsdevice, x.logname, x.rtname);
> +	xfs_report_geom(&geo, x.dname, x.logname, x.rtname);
>  	return 0;
>  }
> 
> diff --git a/db/init.c b/db/init.c
> index 4599cc00d..18d9dfdd9 100644
> --- a/db/init.c
> +++ b/db/init.c
> @@ -19,7 +19,6 @@
> 
>  static char		**cmdline;
>  static int		ncmdline;
> -char			*fsdevice;
>  int			blkbb;
>  int			exitcode;
>  int			expert_mode;
> @@ -91,11 +90,7 @@ init(
>  	if (optind + 1 != argc)
>  		usage();
> 
> -	fsdevice = argv[optind];
> -	if (!x.disfile)
> -		x.volname = fsdevice;
> -	else
> -		x.dname = fsdevice;
> +	x.dname = argv[optind];
>  	x.isdirect = LIBXFS_DIRECT;
> 
>  	x.bcache_flags = CACHE_MISCOMPARE_PURGE;
> @@ -115,7 +110,7 @@ init(
>  			1 << (XFS_MAX_SECTORSIZE_LOG - BBSHIFT), 0, &bp, NULL);
>  	if (error) {
>  		fprintf(stderr, _("%s: %s is invalid (cannot read first 512 "
> -			"bytes)\n"), progname, fsdevice);
> +			"bytes)\n"), progname, x.dname);
>  		exit(1);
>  	}
> 
> @@ -126,7 +121,7 @@ init(
>  	sbp = &xmount.m_sb;
>  	if (sbp->sb_magicnum != XFS_SB_MAGIC) {
>  		fprintf(stderr, _("%s: %s is not a valid XFS filesystem (unexpected SB magic number 0x%08x)\n"),
> -			progname, fsdevice, sbp->sb_magicnum);
> +			progname, x.dname, sbp->sb_magicnum);
>  		if (!force) {
>  			fprintf(stderr, _("Use -F to force a read attempt.\n"));
>  			exit(EXIT_FAILURE);
> @@ -139,7 +134,7 @@ init(
>  	if (!mp) {
>  		fprintf(stderr,
>  			_("%s: device %s unusable (not an XFS filesystem?)\n"),
> -			progname, fsdevice);
> +			progname, x.dname);
>  		exit(1);
>  	}
>  	mp->m_log = &xlog;
> diff --git a/db/init.h b/db/init.h
> index 16dc13f2b..05e75c100 100644
> --- a/db/init.h
> +++ b/db/init.h
> @@ -4,7 +4,6 @@
>   * All Rights Reserved.
>   */
> 
> -extern char		*fsdevice;
>  extern int		blkbb;
>  extern int		exitcode;
>  extern int		expert_mode;
> diff --git a/db/output.c b/db/output.c
> index 422148afa..30ae82ced 100644
> --- a/db/output.c
> +++ b/db/output.c
> @@ -34,7 +34,7 @@ dbprintf(const char *fmt, ...)
>  	blockint();
>  	i = 0;
>  	if (dbprefix)
> -		i += printf("%s: ", fsdevice);
> +		i += printf("%s: ", x.dname);
>  	i += vprintf(fmt, ap);
>  	unblockint();
>  	va_end(ap);
> diff --git a/include/libxfs.h b/include/libxfs.h
> index 9b0294cb8..b35dc2184 100644
> --- a/include/libxfs.h
> +++ b/include/libxfs.h
> @@ -94,7 +94,6 @@ struct iomap;
>   */
>  typedef struct libxfs_xinit {
>  				/* input parameters */
> -	char            *volname;       /* pathname of volume */
>  	char            *dname;         /* pathname of data "subvolume" */
>  	char            *logname;       /* pathname of log "subvolume" */
>  	char            *rtname;        /* pathname of realtime "subvolume" */
> diff --git a/libxfs/init.c b/libxfs/init.c
> index 9cfd20e3f..894d84057 100644
> --- a/libxfs/init.c
> +++ b/libxfs/init.c
> @@ -294,10 +294,8 @@ int
>  libxfs_init(libxfs_init_t *a)
>  {
>  	char		*dname;
> -	int		fd;
>  	char		*logname;
>  	char		*rtname;
> -	int		rval = 0;
>  	int		flags;
> 
>  	dname = a->dname;
> @@ -308,20 +306,12 @@ libxfs_init(libxfs_init_t *a)
>  	a->dsize = a->lbsize = a->rtbsize = 0;
>  	a->dbsize = a->logBBsize = a->logBBstart = a->rtsize = 0;
> 
> -	fd = -1;
>  	flags = (a->isreadonly | a->isdirect);
> 
>  	rcu_init();
>  	rcu_register_thread();
>  	radix_tree_init();
> 
> -	if (a->volname) {
> -		if (!check_open(a->volname, flags))
> -			goto done;
> -		fd = open(a->volname, O_RDONLY);
> -		dname = a->dname = a->volname;
> -		a->volname = NULL;
> -	}
>  	if (dname) {
>  		if (a->disfile) {
>  			a->ddev= libxfs_device_open(dname, a->dcreat, flags,
> @@ -398,16 +388,12 @@ libxfs_init(libxfs_init_t *a)
>  	use_xfs_buf_lock = a->usebuflock;
>  	xfs_dir_startup();
>  	init_caches();
> -	rval = 1;
> -done:
> -	if (fd >= 0)
> -		close(fd);
> -	if (!rval) {
> -		libxfs_close_devices(a);
> -		rcu_unregister_thread();
> -	}
> +	return 1;
> 
> -	return rval;
> +done:
> +	libxfs_close_devices(a);
> +	rcu_unregister_thread();
> +	return 0;
>  }
> 
> 
> diff --git a/libxfs/topology.c b/libxfs/topology.c
> index a17c19691..25f47beda 100644
> --- a/libxfs/topology.c
> +++ b/libxfs/topology.c
> @@ -292,7 +292,6 @@ void get_topology(
>  	int			force_overwrite)
>  {
>  	struct stat statbuf;
> -	char *dfile = xi->volname ? xi->volname : xi->dname;
> 
>  	/*
>  	 * If our target is a regular file, use platform_findsizes
> @@ -300,7 +299,7 @@ void get_topology(
>  	 * for direct IO; we'll set our sector size to that if possible.
>  	 */
>  	if (xi->disfile ||
> -	    (!stat(dfile, &statbuf) && S_ISREG(statbuf.st_mode))) {
> +	    (!stat(xi->dname, &statbuf) && S_ISREG(statbuf.st_mode))) {
>  		int fd;
>  		int flags = O_RDONLY;
>  		long long dummy;
> @@ -309,15 +308,16 @@ void get_topology(
>  		if (xi->disfile)
>  			flags |= O_CREAT;
> 
> -		fd = open(dfile, flags, 0666);
> +		fd = open(xi->dname, flags, 0666);
>  		if (fd >= 0) {
> -			platform_findsizes(dfile, fd, &dummy, &ft->lsectorsize);
> +			platform_findsizes(xi->dname, fd, &dummy,
> +					&ft->lsectorsize);
>  			close(fd);
>  			ft->psectorsize = ft->lsectorsize;
>  		} else
>  			ft->psectorsize = ft->lsectorsize = BBSIZE;
>  	} else {
> -		blkid_get_topology(dfile, &ft->dsunit, &ft->dswidth,
> +		blkid_get_topology(xi->dname, &ft->dsunit, &ft->dswidth,
>  				   &ft->lsectorsize, &ft->psectorsize,
>  				   force_overwrite);
>  	}
> diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
> index c522cb4df..19849ed21 100644
> --- a/mkfs/xfs_mkfs.c
> +++ b/mkfs/xfs_mkfs.c
> @@ -1959,7 +1959,6 @@ validate_sectorsize(
>  	struct cli_params	*cli,
>  	struct mkfs_default_params *dft,
>  	struct fs_topology	*ft,
> -	char			*dfile,
>  	int			dry_run,
>  	int			force_overwrite)
>  {
> @@ -1967,7 +1966,8 @@ validate_sectorsize(
>  	 * Before anything else, verify that we are correctly operating on
>  	 * files or block devices and set the control parameters correctly.
>  	 */
> -	check_device_type(dfile, &cli->xi->disfile, !cli->dsize, !dfile,
> +	check_device_type(cli->xi->dname, &cli->xi->disfile,
> +			  !cli->dsize, !cli->xi->dname,
>  			  dry_run ? NULL : &cli->xi->dcreat, "d");
>  	if (!cli->loginternal)
>  		check_device_type(cli->xi->logname, &cli->xi->lisfile,
> @@ -2929,36 +2929,17 @@ reported by the device (%u).\n"),
>  	}
>  }
> 
> -/*
> - * This is more complex than it needs to be because we still support volume
> - * based external logs. They are only discovered *after* the devices have been
> - * opened, hence the crazy "is this really an internal log" checks here.
> - */
>  static void
>  validate_logdev(
>  	struct mkfs_params	*cfg,
> -	struct cli_params	*cli,
> -	char			**devname)
> +	struct cli_params	*cli)
>  {
>  	struct libxfs_xinit	*xi = cli->xi;
> 
> -	*devname = NULL;
> -
> -	/* check for volume log first */
> -	if (cli->loginternal && xi->volname && xi->logdev) {
> -		*devname = _("volume log");
> -		cfg->loginternal = false;
> -	} else
> -		cfg->loginternal = cli->loginternal;
> +	cfg->loginternal = cli->loginternal;
> 
>  	/* now run device checks */
>  	if (cfg->loginternal) {
> -		if (xi->logdev) {
> -			fprintf(stderr,
> -_("can't have both external and internal logs\n"));
> -			usage();
> -		}
> -
>  		/*
>  		 * if no sector size has been specified on the command line,
>  		 * use what has been configured and validated for the data
> @@ -2980,14 +2961,11 @@ _("log size %lld too large for internal log\n"),
>  				(long long)cfg->logblocks);
>  			usage();
>  		}
> -		*devname = _("internal log");
>  		return;
>  	}
> 
>  	/* External/log subvolume checks */
> -	if (xi->logname)
> -		*devname = xi->logname;
> -	if (!*devname || !xi->logdev) {
> +	if (!*xi->logname || !xi->logdev) {
>  		fprintf(stderr, _("no log subvolume or external log.\n"));
>  		usage();
>  	}
> @@ -3018,13 +2996,10 @@ reported by the device (%u).\n"),
>  static void
>  validate_rtdev(
>  	struct mkfs_params	*cfg,
> -	struct cli_params	*cli,
> -	char			**devname)
> +	struct cli_params	*cli)
>  {
>  	struct libxfs_xinit	*xi = cli->xi;
> 
> -	*devname = NULL;
> -
>  	if (!xi->rtdev) {
>  		if (cli->rtsize) {
>  			fprintf(stderr,
> @@ -3032,7 +3007,6 @@ _("size specified for non-existent rt subvolume\n"));
>  			usage();
>  		}
> 
> -		*devname = _("none");
>  		cfg->rtblocks = 0;
>  		cfg->rtextents = 0;
>  		cfg->rtbmblocks = 0;
> @@ -3043,12 +3017,6 @@ _("size specified for non-existent rt subvolume\n"));
>  		usage();
>  	}
> 
> -	/* volume rtdev */
> -	if (xi->volname)
> -		*devname = _("volume rt");
> -	else
> -		*devname = xi->rtname;
> -
>  	if (cli->rtsize) {
>  		if (cfg->rtblocks > DTOBT(xi->rtsize, cfg->blocklog)) {
>  			fprintf(stderr,
> @@ -4080,9 +4048,6 @@ main(
>  	xfs_agnumber_t		agno;
>  	struct xfs_buf		*buf;
>  	int			c;
> -	char			*dfile = NULL;
> -	char			*logfile = NULL;
> -	char			*rtfile = NULL;
>  	int			dry_run = 0;
>  	int			discard = 1;
>  	int			force_overwrite = 0;
> @@ -4222,9 +4187,8 @@ main(
>  		fprintf(stderr, _("extra arguments\n"));
>  		usage();
>  	} else if (argc - optind == 1) {
> -		dfile = xi.volname = getstr(argv[optind], &dopts, D_NAME);
> -	} else
> -		dfile = xi.dname;
> +		xi.dname = getstr(argv[optind], &dopts, D_NAME);
> +	}
> 
>  	/*
>  	 * Now we have all the options parsed, we can read in the option file
> @@ -4241,8 +4205,7 @@ main(
>  	 * before opening the libxfs devices.
>  	 */
>  	validate_blocksize(&cfg, &cli, &dft);
> -	validate_sectorsize(&cfg, &cli, &dft, &ft, dfile, dry_run,
> -			    force_overwrite);
> +	validate_sectorsize(&cfg, &cli, &dft, &ft, dry_run, force_overwrite);
> 
>  	/*
>  	 * XXX: we still need to set block size and sector size global variables
> @@ -4277,10 +4240,10 @@ main(
>  	 * Open and validate the device configurations
>  	 */
>  	open_devices(&cfg, &xi);
> -	validate_overwrite(dfile, force_overwrite);
> +	validate_overwrite(xi.dname, force_overwrite);
>  	validate_datadev(&cfg, &cli);
> -	validate_logdev(&cfg, &cli, &logfile);
> -	validate_rtdev(&cfg, &cli, &rtfile);
> +	validate_logdev(&cfg, &cli);
> +	validate_rtdev(&cfg, &cli);
>  	calc_stripe_factors(&cfg, &cli, &ft);
> 
>  	/*
> @@ -4321,7 +4284,7 @@ main(
>  		struct xfs_fsop_geom	geo;
> 
>  		libxfs_fs_geometry(mp, &geo, XFS_FS_GEOM_MAX_STRUCT_VER);
> -		xfs_report_geom(&geo, dfile, logfile, rtfile);
> +		xfs_report_geom(&geo, xi.dname, xi.logname, xi.rtname);
>  		if (dry_run)
>  			exit(0);
>  	}
> diff --git a/repair/init.c b/repair/init.c
> index 0d5bfabcf..6d019b393 100644
> --- a/repair/init.c
> +++ b/repair/init.c
> @@ -54,15 +54,8 @@ xfs_init(libxfs_init_t *args)
>  {
>  	memset(args, 0, sizeof(libxfs_init_t));
> 
> -	if (isa_file)  {
> -		args->disfile = 1;
> -		args->dname = fs_name;
> -		args->volname = NULL;
> -	} else  {
> -		args->disfile = 0;
> -		args->volname = fs_name;
> -		args->dname = NULL;
> -	}
> +	args->dname = fs_name;
> +	args->disfile = isa_file;
> 
>  	if (log_spec)  {	/* External log specified */
>  		args->logname = log_name;
> --
> 2.39.2
>
diff mbox series

Patch

diff --git a/copy/xfs_copy.c b/copy/xfs_copy.c
index 79f659467..66728f199 100644
--- a/copy/xfs_copy.c
+++ b/copy/xfs_copy.c
@@ -718,11 +718,8 @@  main(int argc, char **argv)
 	xargs.isdirect = LIBXFS_DIRECT;
 	xargs.isreadonly = LIBXFS_ISREADONLY;
 
-	if (source_is_file)  {
-		xargs.dname = source_name;
-		xargs.disfile = 1;
-	} else
-		xargs.volname = source_name;
+	xargs.dname = source_name;
+	xargs.disfile = source_is_file;
 
 	if (!libxfs_init(&xargs))  {
 		do_log(_("%s: couldn't initialize XFS library\n"
diff --git a/db/info.c b/db/info.c
index 0f6c29429..b30ada3aa 100644
--- a/db/info.c
+++ b/db/info.c
@@ -30,7 +30,7 @@  info_f(
 	struct xfs_fsop_geom	geo;
 
 	libxfs_fs_geometry(mp, &geo, XFS_FS_GEOM_MAX_STRUCT_VER);
-	xfs_report_geom(&geo, fsdevice, x.logname, x.rtname);
+	xfs_report_geom(&geo, x.dname, x.logname, x.rtname);
 	return 0;
 }
 
diff --git a/db/init.c b/db/init.c
index 4599cc00d..18d9dfdd9 100644
--- a/db/init.c
+++ b/db/init.c
@@ -19,7 +19,6 @@ 
 
 static char		**cmdline;
 static int		ncmdline;
-char			*fsdevice;
 int			blkbb;
 int			exitcode;
 int			expert_mode;
@@ -91,11 +90,7 @@  init(
 	if (optind + 1 != argc)
 		usage();
 
-	fsdevice = argv[optind];
-	if (!x.disfile)
-		x.volname = fsdevice;
-	else
-		x.dname = fsdevice;
+	x.dname = argv[optind];
 	x.isdirect = LIBXFS_DIRECT;
 
 	x.bcache_flags = CACHE_MISCOMPARE_PURGE;
@@ -115,7 +110,7 @@  init(
 			1 << (XFS_MAX_SECTORSIZE_LOG - BBSHIFT), 0, &bp, NULL);
 	if (error) {
 		fprintf(stderr, _("%s: %s is invalid (cannot read first 512 "
-			"bytes)\n"), progname, fsdevice);
+			"bytes)\n"), progname, x.dname);
 		exit(1);
 	}
 
@@ -126,7 +121,7 @@  init(
 	sbp = &xmount.m_sb;
 	if (sbp->sb_magicnum != XFS_SB_MAGIC) {
 		fprintf(stderr, _("%s: %s is not a valid XFS filesystem (unexpected SB magic number 0x%08x)\n"),
-			progname, fsdevice, sbp->sb_magicnum);
+			progname, x.dname, sbp->sb_magicnum);
 		if (!force) {
 			fprintf(stderr, _("Use -F to force a read attempt.\n"));
 			exit(EXIT_FAILURE);
@@ -139,7 +134,7 @@  init(
 	if (!mp) {
 		fprintf(stderr,
 			_("%s: device %s unusable (not an XFS filesystem?)\n"),
-			progname, fsdevice);
+			progname, x.dname);
 		exit(1);
 	}
 	mp->m_log = &xlog;
diff --git a/db/init.h b/db/init.h
index 16dc13f2b..05e75c100 100644
--- a/db/init.h
+++ b/db/init.h
@@ -4,7 +4,6 @@ 
  * All Rights Reserved.
  */
 
-extern char		*fsdevice;
 extern int		blkbb;
 extern int		exitcode;
 extern int		expert_mode;
diff --git a/db/output.c b/db/output.c
index 422148afa..30ae82ced 100644
--- a/db/output.c
+++ b/db/output.c
@@ -34,7 +34,7 @@  dbprintf(const char *fmt, ...)
 	blockint();
 	i = 0;
 	if (dbprefix)
-		i += printf("%s: ", fsdevice);
+		i += printf("%s: ", x.dname);
 	i += vprintf(fmt, ap);
 	unblockint();
 	va_end(ap);
diff --git a/include/libxfs.h b/include/libxfs.h
index 9b0294cb8..b35dc2184 100644
--- a/include/libxfs.h
+++ b/include/libxfs.h
@@ -94,7 +94,6 @@  struct iomap;
  */
 typedef struct libxfs_xinit {
 				/* input parameters */
-	char            *volname;       /* pathname of volume */
 	char            *dname;         /* pathname of data "subvolume" */
 	char            *logname;       /* pathname of log "subvolume" */
 	char            *rtname;        /* pathname of realtime "subvolume" */
diff --git a/libxfs/init.c b/libxfs/init.c
index 9cfd20e3f..894d84057 100644
--- a/libxfs/init.c
+++ b/libxfs/init.c
@@ -294,10 +294,8 @@  int
 libxfs_init(libxfs_init_t *a)
 {
 	char		*dname;
-	int		fd;
 	char		*logname;
 	char		*rtname;
-	int		rval = 0;
 	int		flags;
 
 	dname = a->dname;
@@ -308,20 +306,12 @@  libxfs_init(libxfs_init_t *a)
 	a->dsize = a->lbsize = a->rtbsize = 0;
 	a->dbsize = a->logBBsize = a->logBBstart = a->rtsize = 0;
 
-	fd = -1;
 	flags = (a->isreadonly | a->isdirect);
 
 	rcu_init();
 	rcu_register_thread();
 	radix_tree_init();
 
-	if (a->volname) {
-		if (!check_open(a->volname, flags))
-			goto done;
-		fd = open(a->volname, O_RDONLY);
-		dname = a->dname = a->volname;
-		a->volname = NULL;
-	}
 	if (dname) {
 		if (a->disfile) {
 			a->ddev= libxfs_device_open(dname, a->dcreat, flags,
@@ -398,16 +388,12 @@  libxfs_init(libxfs_init_t *a)
 	use_xfs_buf_lock = a->usebuflock;
 	xfs_dir_startup();
 	init_caches();
-	rval = 1;
-done:
-	if (fd >= 0)
-		close(fd);
-	if (!rval) {
-		libxfs_close_devices(a);
-		rcu_unregister_thread();
-	}
+	return 1;
 
-	return rval;
+done:
+	libxfs_close_devices(a);
+	rcu_unregister_thread();
+	return 0;
 }
 
 
diff --git a/libxfs/topology.c b/libxfs/topology.c
index a17c19691..25f47beda 100644
--- a/libxfs/topology.c
+++ b/libxfs/topology.c
@@ -292,7 +292,6 @@  void get_topology(
 	int			force_overwrite)
 {
 	struct stat statbuf;
-	char *dfile = xi->volname ? xi->volname : xi->dname;
 
 	/*
 	 * If our target is a regular file, use platform_findsizes
@@ -300,7 +299,7 @@  void get_topology(
 	 * for direct IO; we'll set our sector size to that if possible.
 	 */
 	if (xi->disfile ||
-	    (!stat(dfile, &statbuf) && S_ISREG(statbuf.st_mode))) {
+	    (!stat(xi->dname, &statbuf) && S_ISREG(statbuf.st_mode))) {
 		int fd;
 		int flags = O_RDONLY;
 		long long dummy;
@@ -309,15 +308,16 @@  void get_topology(
 		if (xi->disfile)
 			flags |= O_CREAT;
 
-		fd = open(dfile, flags, 0666);
+		fd = open(xi->dname, flags, 0666);
 		if (fd >= 0) {
-			platform_findsizes(dfile, fd, &dummy, &ft->lsectorsize);
+			platform_findsizes(xi->dname, fd, &dummy,
+					&ft->lsectorsize);
 			close(fd);
 			ft->psectorsize = ft->lsectorsize;
 		} else
 			ft->psectorsize = ft->lsectorsize = BBSIZE;
 	} else {
-		blkid_get_topology(dfile, &ft->dsunit, &ft->dswidth,
+		blkid_get_topology(xi->dname, &ft->dsunit, &ft->dswidth,
 				   &ft->lsectorsize, &ft->psectorsize,
 				   force_overwrite);
 	}
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index c522cb4df..19849ed21 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -1959,7 +1959,6 @@  validate_sectorsize(
 	struct cli_params	*cli,
 	struct mkfs_default_params *dft,
 	struct fs_topology	*ft,
-	char			*dfile,
 	int			dry_run,
 	int			force_overwrite)
 {
@@ -1967,7 +1966,8 @@  validate_sectorsize(
 	 * Before anything else, verify that we are correctly operating on
 	 * files or block devices and set the control parameters correctly.
 	 */
-	check_device_type(dfile, &cli->xi->disfile, !cli->dsize, !dfile,
+	check_device_type(cli->xi->dname, &cli->xi->disfile,
+			  !cli->dsize, !cli->xi->dname,
 			  dry_run ? NULL : &cli->xi->dcreat, "d");
 	if (!cli->loginternal)
 		check_device_type(cli->xi->logname, &cli->xi->lisfile,
@@ -2929,36 +2929,17 @@  reported by the device (%u).\n"),
 	}
 }
 
-/*
- * This is more complex than it needs to be because we still support volume
- * based external logs. They are only discovered *after* the devices have been
- * opened, hence the crazy "is this really an internal log" checks here.
- */
 static void
 validate_logdev(
 	struct mkfs_params	*cfg,
-	struct cli_params	*cli,
-	char			**devname)
+	struct cli_params	*cli)
 {
 	struct libxfs_xinit	*xi = cli->xi;
 
-	*devname = NULL;
-
-	/* check for volume log first */
-	if (cli->loginternal && xi->volname && xi->logdev) {
-		*devname = _("volume log");
-		cfg->loginternal = false;
-	} else
-		cfg->loginternal = cli->loginternal;
+	cfg->loginternal = cli->loginternal;
 
 	/* now run device checks */
 	if (cfg->loginternal) {
-		if (xi->logdev) {
-			fprintf(stderr,
-_("can't have both external and internal logs\n"));
-			usage();
-		}
-
 		/*
 		 * if no sector size has been specified on the command line,
 		 * use what has been configured and validated for the data
@@ -2980,14 +2961,11 @@  _("log size %lld too large for internal log\n"),
 				(long long)cfg->logblocks);
 			usage();
 		}
-		*devname = _("internal log");
 		return;
 	}
 
 	/* External/log subvolume checks */
-	if (xi->logname)
-		*devname = xi->logname;
-	if (!*devname || !xi->logdev) {
+	if (!*xi->logname || !xi->logdev) {
 		fprintf(stderr, _("no log subvolume or external log.\n"));
 		usage();
 	}
@@ -3018,13 +2996,10 @@  reported by the device (%u).\n"),
 static void
 validate_rtdev(
 	struct mkfs_params	*cfg,
-	struct cli_params	*cli,
-	char			**devname)
+	struct cli_params	*cli)
 {
 	struct libxfs_xinit	*xi = cli->xi;
 
-	*devname = NULL;
-
 	if (!xi->rtdev) {
 		if (cli->rtsize) {
 			fprintf(stderr,
@@ -3032,7 +3007,6 @@  _("size specified for non-existent rt subvolume\n"));
 			usage();
 		}
 
-		*devname = _("none");
 		cfg->rtblocks = 0;
 		cfg->rtextents = 0;
 		cfg->rtbmblocks = 0;
@@ -3043,12 +3017,6 @@  _("size specified for non-existent rt subvolume\n"));
 		usage();
 	}
 
-	/* volume rtdev */
-	if (xi->volname)
-		*devname = _("volume rt");
-	else
-		*devname = xi->rtname;
-
 	if (cli->rtsize) {
 		if (cfg->rtblocks > DTOBT(xi->rtsize, cfg->blocklog)) {
 			fprintf(stderr,
@@ -4080,9 +4048,6 @@  main(
 	xfs_agnumber_t		agno;
 	struct xfs_buf		*buf;
 	int			c;
-	char			*dfile = NULL;
-	char			*logfile = NULL;
-	char			*rtfile = NULL;
 	int			dry_run = 0;
 	int			discard = 1;
 	int			force_overwrite = 0;
@@ -4222,9 +4187,8 @@  main(
 		fprintf(stderr, _("extra arguments\n"));
 		usage();
 	} else if (argc - optind == 1) {
-		dfile = xi.volname = getstr(argv[optind], &dopts, D_NAME);
-	} else
-		dfile = xi.dname;
+		xi.dname = getstr(argv[optind], &dopts, D_NAME);
+	}
 
 	/*
 	 * Now we have all the options parsed, we can read in the option file
@@ -4241,8 +4205,7 @@  main(
 	 * before opening the libxfs devices.
 	 */
 	validate_blocksize(&cfg, &cli, &dft);
-	validate_sectorsize(&cfg, &cli, &dft, &ft, dfile, dry_run,
-			    force_overwrite);
+	validate_sectorsize(&cfg, &cli, &dft, &ft, dry_run, force_overwrite);
 
 	/*
 	 * XXX: we still need to set block size and sector size global variables
@@ -4277,10 +4240,10 @@  main(
 	 * Open and validate the device configurations
 	 */
 	open_devices(&cfg, &xi);
-	validate_overwrite(dfile, force_overwrite);
+	validate_overwrite(xi.dname, force_overwrite);
 	validate_datadev(&cfg, &cli);
-	validate_logdev(&cfg, &cli, &logfile);
-	validate_rtdev(&cfg, &cli, &rtfile);
+	validate_logdev(&cfg, &cli);
+	validate_rtdev(&cfg, &cli);
 	calc_stripe_factors(&cfg, &cli, &ft);
 
 	/*
@@ -4321,7 +4284,7 @@  main(
 		struct xfs_fsop_geom	geo;
 
 		libxfs_fs_geometry(mp, &geo, XFS_FS_GEOM_MAX_STRUCT_VER);
-		xfs_report_geom(&geo, dfile, logfile, rtfile);
+		xfs_report_geom(&geo, xi.dname, xi.logname, xi.rtname);
 		if (dry_run)
 			exit(0);
 	}
diff --git a/repair/init.c b/repair/init.c
index 0d5bfabcf..6d019b393 100644
--- a/repair/init.c
+++ b/repair/init.c
@@ -54,15 +54,8 @@  xfs_init(libxfs_init_t *args)
 {
 	memset(args, 0, sizeof(libxfs_init_t));
 
-	if (isa_file)  {
-		args->disfile = 1;
-		args->dname = fs_name;
-		args->volname = NULL;
-	} else  {
-		args->disfile = 0;
-		args->volname = fs_name;
-		args->dname = NULL;
-	}
+	args->dname = fs_name;
+	args->disfile = isa_file;
 
 	if (log_spec)  {	/* External log specified */
 		args->logname = log_name;