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