Module Name:    src
Committed By:   hannken
Date:           Wed May 22 08:47:02 UTC 2019

Modified Files:
        src/external/cddl/osnet/dist/uts/common/fs/zfs: zvol.c
        src/sys/kern: subr_disk.c subr_iostat.c
        src/sys/sys: disk.h iostat.h

Log Message:
Implement disk_rename()/iostat_rename() to rename a disk.

Use it from zvol_rename_minor() when renaming a ZVOL.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 \
    src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c
cvs rdiff -u -r1.127 -r1.128 src/sys/kern/subr_disk.c
cvs rdiff -u -r1.24 -r1.25 src/sys/kern/subr_iostat.c
cvs rdiff -u -r1.73 -r1.74 src/sys/sys/disk.h
cvs rdiff -u -r1.11 -r1.12 src/sys/sys/iostat.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c
diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c:1.11 src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c:1.12
--- src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c:1.11	Wed May 22 08:46:27 2019
+++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c	Wed May 22 08:47:02 2019
@@ -3270,7 +3270,9 @@ zvol_rename_minor(zvol_state_t *zv, cons
 	PNBUF_PUT(nm);
 
 	strlcpy(zv->zv_name, newname, sizeof(zv->zv_name));
-	/* XXX Update dk_name? */
+	mutex_enter(&zv->zv_dklock);
+	disk_rename(&zv->zv_dk, zv->zv_name);
+	mutex_exit(&zv->zv_dklock);
 }
 #endif
 

Index: src/sys/kern/subr_disk.c
diff -u src/sys/kern/subr_disk.c:1.127 src/sys/kern/subr_disk.c:1.128
--- src/sys/kern/subr_disk.c:1.127	Thu Apr  4 20:19:07 2019
+++ src/sys/kern/subr_disk.c	Wed May 22 08:47:02 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_disk.c,v 1.127 2019/04/04 20:19:07 christos Exp $	*/
+/*	$NetBSD: subr_disk.c,v 1.128 2019/05/22 08:47:02 hannken Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1999, 2000, 2009 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_disk.c,v 1.127 2019/04/04 20:19:07 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_disk.c,v 1.128 2019/05/22 08:47:02 hannken Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -199,6 +199,17 @@ disk_init(struct disk *diskp, const char
 }
 
 /*
+ * Rename a disk.
+ */
+void
+disk_rename(struct disk *diskp, const char *name)
+{
+
+	diskp->dk_name = name;
+	iostat_rename(diskp->dk_stats, diskp->dk_name);
+}
+
+/*
  * Attach a disk.
  */
 void

Index: src/sys/kern/subr_iostat.c
diff -u src/sys/kern/subr_iostat.c:1.24 src/sys/kern/subr_iostat.c:1.25
--- src/sys/kern/subr_iostat.c:1.24	Mon Sep  3 16:29:35 2018
+++ src/sys/kern/subr_iostat.c	Wed May 22 08:47:02 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_iostat.c,v 1.24 2018/09/03 16:29:35 riastradh Exp $	*/
+/*	$NetBSD: subr_iostat.c,v 1.25 2019/05/22 08:47:02 hannken Exp $	*/
 /*	NetBSD: subr_disk.c,v 1.69 2005/05/29 22:24:15 christos Exp	*/
 
 /*-
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_iostat.c,v 1.24 2018/09/03 16:29:35 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_iostat.c,v 1.25 2019/05/22 08:47:02 hannken Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -180,6 +180,18 @@ iostat_free(struct io_stats *stats)
 }
 
 /*
+ * Rename i/o stats.
+ */
+void
+iostat_rename(struct io_stats *stats, const char *name)
+{
+
+	rw_enter(&iostatlist_lock, RW_WRITER);
+	(void)strlcpy(stats->io_name, name, sizeof(stats->io_name));
+	rw_exit(&iostatlist_lock);
+}
+
+/*
  * multiply timeval by unsigned integer and add to result
  */
 static void

Index: src/sys/sys/disk.h
diff -u src/sys/sys/disk.h:1.73 src/sys/sys/disk.h:1.74
--- src/sys/sys/disk.h:1.73	Tue Nov  6 04:04:34 2018
+++ src/sys/sys/disk.h	Wed May 22 08:47:02 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: disk.h,v 1.73 2018/11/06 04:04:34 mrg Exp $	*/
+/*	$NetBSD: disk.h,v 1.74 2019/05/22 08:47:02 hannken Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 2004 The NetBSD Foundation, Inc.
@@ -527,6 +527,7 @@ extern	int disk_count;			/* number of di
 
 struct proc;
 
+void	disk_rename(struct disk *, const char *);
 void	disk_attach(struct disk *);
 int	disk_begindetach(struct disk *, int (*)(device_t), device_t, int);
 void	disk_detach(struct disk *);

Index: src/sys/sys/iostat.h
diff -u src/sys/sys/iostat.h:1.11 src/sys/sys/iostat.h:1.12
--- src/sys/sys/iostat.h:1.11	Sun Mar  5 23:07:12 2017
+++ src/sys/sys/iostat.h	Wed May 22 08:47:02 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: iostat.h,v 1.11 2017/03/05 23:07:12 mlelstv Exp $	*/
+/*	$NetBSD: iostat.h,v 1.12 2019/05/22 08:47:02 hannken Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 2004, 2009 The NetBSD Foundation, Inc.
@@ -121,6 +121,7 @@ bool	iostat_isbusy(struct io_stats *);
 struct io_stats *iostat_find(const char *);
 struct io_stats *iostat_alloc(int32_t, void *, const char *);
 void	iostat_free(struct io_stats *);
+void	iostat_rename(struct io_stats *, const char *);
 void	iostat_seek(struct io_stats *);
 #endif
 

Reply via email to