aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/md
diff options
context:
space:
mode:
authorEdward Tomasz Napierala <trasz@FreeBSD.org>2017-10-04 12:23:34 +0000
committerEdward Tomasz Napierala <trasz@FreeBSD.org>2017-10-04 12:23:34 +0000
commit253f5a2edbfa1be319990af60467c380f325cd03 (patch)
treefc8cdf67e058362f2e1eb690c964da7f52b664f3 /sys/dev/md
parent5b4bc31eeeaf8d16e3e2ffa811833524555fc3c4 (diff)
Notes
Diffstat (limited to 'sys/dev/md')
-rw-r--r--sys/dev/md/md.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c
index 9d909211476f0..21ad615ef05d1 100644
--- a/sys/dev/md/md.c
+++ b/sys/dev/md/md.c
@@ -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, struct thread *td)
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, struct g_geom *gp,
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,