The following reply was made to PR kern/175897; it has been noted by GNATS.
From: Andriy Gapon <a...@freebsd.org> To: John Hein <jh...@symmetricom.com>, Martin Matuska <m...@freebsd.org>, Pawel Jakub Dawidek <p...@freebsd.org> Cc: bug-follo...@freebsd.org Subject: Re: kern/175897: operations on readonly zpool hang Date: Sat, 09 Feb 2013 19:06:55 +0200 on 09/02/2013 17:53 John Hein said the following: > Here's the full procstat -kk -a output... John, thank you very much! This problem seems to be a weird omission in our ZFS port. This is how pool_status_check function looks in the last open source version of OpenSolaris: int pool_status_check(const char *name, zfs_ioc_namecheck_t type, zfs_ioc_poolcheck_t check) { spa_t *spa; int error; ASSERT(type == POOL_NAME || type == DATASET_NAME); if (check & POOL_CHECK_NONE) return (0); error = spa_open(name, &spa, FTAG); if (error == 0) { if ((check & POOL_CHECK_SUSPENDED) && spa_suspended(spa)) error = EAGAIN; else if ((check & POOL_CHECK_READONLY) && !spa_writeable(spa)) error = EROFS; spa_close(spa, FTAG); } return (error); } In current Illumos the code seems to be the same: http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/fs/zfs/zfs_ioctl.c#pool_status_check Here is how the code looks in FreeBSD: int pool_status_check(const char *name, zfs_ioc_namecheck_t type) { spa_t *spa; int error; ASSERT(type == POOL_NAME || type == DATASET_NAME); error = spa_open(name, &spa, FTAG); if (error == 0) { if (spa_suspended(spa)) error = EAGAIN; spa_close(spa, FTAG); } return (error); } The code seems to have been introduced in ZFSv15 import (commit r209962) and has not been changed/updated since then. The spa_writeable() check should have prevented the situation you are seeing. P.S. Exact cause of the hang is that txg threads are not started at all but the thread doing the ioctl waits on txg sync thread to do something. -- Andriy Gapon _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"