Date: Mon, 27 Jul 2026 17:33:33 +0000 From: Mark Johnston <markj@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: bde29083d059 - stable/15 - zvol: Hold the zvol state writer lock when renaming Message-ID: <6a67966d.2554f.1286ac25@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=bde29083d0590bd55d0726405a81169109b1265e commit bde29083d0590bd55d0726405a81169109b1265e Author: Mark Johnston <markj@FreeBSD.org> AuthorDate: 2026-02-09 14:54:44 +0000 Commit: Mark Johnston <markj@FreeBSD.org> CommitDate: 2026-07-27 17:29:03 +0000 zvol: Hold the zvol state writer lock when renaming Otherwise nothing serializes updates to the global zvol hash table. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com> Signed-off-by: Mark Johnston <markj@FreeBSD.org> Closes #18191 (cherry picked from commit d7b8eef9d281f6831ac7d9cb27362509ec434fb2) --- sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c | 2 +- sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c | 2 +- sys/contrib/openzfs/module/zfs/zvol.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c b/sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c index 2bc85e9bd972..5be153a90ec5 100644 --- a/sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c +++ b/sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c @@ -1250,7 +1250,7 @@ zvol_os_rename_minor(zvol_state_t *zv, const char *newname) { int error = 0; - ASSERT(RW_LOCK_HELD(&zvol_state_lock)); + ASSERT(RW_WRITE_HELD(&zvol_state_lock)); ASSERT(MUTEX_HELD(&zv->zv_state_lock)); /* Move to a new hashtable entry. */ diff --git a/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c b/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c index 89f9bc555fcf..dc47ff20fd74 100644 --- a/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c +++ b/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c @@ -1796,7 +1796,7 @@ zvol_os_rename_minor(zvol_state_t *zv, const char *newname) { int readonly = get_disk_ro(zv->zv_zso->zvo_disk); - ASSERT(RW_LOCK_HELD(&zvol_state_lock)); + ASSERT(RW_WRITE_HELD(&zvol_state_lock)); ASSERT(MUTEX_HELD(&zv->zv_state_lock)); strlcpy(zv->zv_name, newname, sizeof (zv->zv_name)); diff --git a/sys/contrib/openzfs/module/zfs/zvol.c b/sys/contrib/openzfs/module/zfs/zvol.c index 185672672a2f..67ba68aca83d 100644 --- a/sys/contrib/openzfs/module/zfs/zvol.c +++ b/sys/contrib/openzfs/module/zfs/zvol.c @@ -1780,7 +1780,7 @@ zvol_rename_minors_impl(zvol_task_t *task) oldnamelen = strlen(oldname); - rw_enter(&zvol_state_lock, RW_READER); + rw_enter(&zvol_state_lock, RW_WRITER); for (zv = list_head(&zvol_state_list); zv != NULL; zv = zv_next) { zv_next = list_next(&zvol_state_list, zv);home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a67966d.2554f.1286ac25>
