kern/189826: [zfs] zpool create using gmirror partition hard-hangs

Paul J Murphy paul at
Thu May 15 04:10:00 UTC 2014

>Number:         189826
>Category:       kern
>Synopsis:       [zfs] zpool create using gmirror partition hard-hangs
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu May 15 04:10:00 UTC 2014
>Originator:     Paul J Murphy
>Release:        FreeBSD 10.0-RELEASE-p3 amd64
System: FreeBSD 10.0-RELEASE-p3 FreeBSD 10.0-RELEASE-p3 #1 r265994: Wed May 14 06:33:18 UTC 2014 root at amd64
Hardware: Generic Intel DG31PR motherboard with E7200 Core 2 (Penryn) CPU, 2x Hitachi 500GB SATA disks.

System is locally built from releng/10.0 with CPUTYPE?=penryn, but the same hard-hang is exhibited when netbooted in rescue mode using a stock 10.0 amd64 GENERIC kernel.

zpool create hard-hangs if I try to create a pool using a single bsd partition in a mbr slice in a gmirror.  The system continues to run normally, but the zpool process is firmly stuck, unkillable, and appears to stop the system rebooting (a hard reboot was required afterwards).  "zpool list" (which ran ok previously) also hard-hangs after the zpool create gets stuck.

The goal was to continue to use entire-disk gmirror, and UFS for /, /var, and /usr; then convert /home into a ZFS pool.  I don't want to convert the entire disk into ZFS, as I don't trust ZFS for boot & root yet (this problem affirms my position on that).  I want to continue to use an entire-disk gmirror for simplicity and ease of recovery from disk failure, so converting to GPT is not a viable option (since it's incompatible with gmirror).

# gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  ada0 (ACTIVE)
                      ada1 (ACTIVE)
# gpart show
=>       63  976773104  mirror/gm0  MBR  (466G)
         63        126              - free -  (63K)
        189  976772916           1  freebsd  [active]  (466G)
  976773105         62              - free -  (31K)

=>        0  976772916  mirror/gm0s1  BSD  (466G)
          0         67                - free -  (34K)
         67    8388608             1  freebsd-ufs  (4.0G)
    8388675   33554432             2  freebsd-swap  (16G)
   41943107   33554432             4  freebsd-ufs  (16G)
   75497539   33554432             5  freebsd-ufs  (16G)
  109051971  867720832             6  freebsd-ufs  (414G)
  976772803        113                - free -  (57K)

# cat /etc/fstab 
# Device		Mountpoint	FStype	Options	Dump	Pass#
/dev/mirror/gm0s1a	/		ufs	rw	1	1
/dev/mirror/gm0s1b	none		swap	sw	0	0
/dev/mirror/gm0s1d	/var		ufs	rw	2	2
/dev/mirror/gm0s1e	/usr		ufs	rw	2	2
/dev/mirror/gm0s1f	/home		ufs	rw	2	2
tmpfs			/tmp		tmpfs	rw	0	0

# Starting with the above system setup and a working FreeBSD 10.0 amd64 system installed

umount /home  # and comment it out in /etc/fstab
gpart modify -i 6 -t freebsd-zfs /dev/mirror/gm0s1
echo 'zfs_enable="YES"' >>/etc/rc.conf
service zfs start
zpool create pool /dev/mirror/gm0s1f  # This command hard-hangs

# in another terminal:
procstat -k <zpool PID>
  880 100073 zpool            -                mi_switch sleepq_wait _cv_wait zio_wait vdev_label_init vdev_label_init vdev_create spa_create zfs_ioc_pool_create zfsdev_ioctl devfs_ioctl_f kern_ioctl sys_ioctl amd64_syscall Xfast_syscall




More information about the freebsd-bugs mailing list