svn commit: r324275 - head/sys/dev/md

Edward Tomasz Napierala trasz at FreeBSD.org
Wed Oct 4 12:23:35 UTC 2017


Author: trasz
Date: Wed Oct  4 12:23:34 2017
New Revision: 324275
URL: https://svnweb.freebsd.org/changeset/base/324275

Log:
  Make md(4) support GEOM::ident for vnode-backed disks.  It's based
  on backing file device and inode numbers.
  
  This is useful for gmountver(8) regression tests.
  
  MFC after:	2 weeks
  Sponsored by:	DARPA, AFRL
  Differential Revision:	https://reviews.freebsd.org/D12230

Modified:
  head/sys/dev/md/md.c

Modified: head/sys/dev/md/md.c
==============================================================================
--- head/sys/dev/md/md.c	Wed Oct  4 12:06:24 2017	(r324274)
+++ head/sys/dev/md/md.c	Wed Oct  4 12:23:34 2017	(r324275)
@@ -207,6 +207,7 @@ struct md_s {
 	unsigned opencount;
 	unsigned fwheads;
 	unsigned fwsectors;
+	char ident[32];
 	unsigned flags;
 	char name[20];
 	struct proc *procp;
@@ -1181,6 +1182,9 @@ md_kthread(void *arg)
 			    sc->fwheads))) ||
 			    g_handleattr_int(bp, "GEOM::candelete", 1))
 				error = -1;
+			else if (sc->ident[0] != '\0' &&
+			    g_handleattr_str(bp, "GEOM::ident", sc->ident))
+				error = -1;
 			else if (g_handleattr_int(bp, "MNT::verified", isv))
 				error = -1;
 			else
@@ -1414,6 +1418,8 @@ mdcreate_vnode(struct md_s *sc, struct md_ioctl *mdio,
 		sc->fwsectors = mdio->md_fwsectors;
 	if (mdio->md_fwheads != 0)
 		sc->fwheads = mdio->md_fwheads;
+	snprintf(sc->ident, sizeof(sc->ident), "MD-DEV%ju-INO%ju",
+	    (uintmax_t)vattr.va_fsid, (uintmax_t)vattr.va_fileid);
 	sc->flags = mdio->md_options & (MD_FORCE | MD_ASYNC | MD_VERIFY);
 	if (!(flags & FWRITE))
 		sc->flags |= MD_READONLY;
@@ -1898,6 +1904,11 @@ g_md_dumpconf(struct sbuf *sb, const char *indent, str
 			    indent, (uintmax_t) mp->fwheads);
 			sbuf_printf(sb, "%s<fwsectors>%ju</fwsectors>\n",
 			    indent, (uintmax_t) mp->fwsectors);
+			if (mp->ident[0] != '\0') {
+				sbuf_printf(sb, "%s<ident>", indent);
+				g_conf_printf_escaped(sb, "%s", mp->ident);
+				sbuf_printf(sb, "</ident>\n");
+			}
 			sbuf_printf(sb, "%s<length>%ju</length>\n",
 			    indent, (uintmax_t) mp->mediasize);
 			sbuf_printf(sb, "%s<compression>%s</compression>\n", indent,


More information about the svn-src-head mailing list