kern/161968: [zfs] [hang] renaming snapshot with -r including a zvol snapshot causes total ZFS freeze/lockup

Steven Hartland smh at freebsd.org
Wed Jun 19 14:40:01 UTC 2013


The following reply was made to PR kern/161968; it has been noted by GNATS.

From: "Steven Hartland" <smh at freebsd.org>
To: <bug-followup at freebsd.org>,
	"Peter Maloney" <peter.maloney at brockmann-consult.de>
Cc:  
Subject: Re: kern/161968: [zfs] [hang] renaming snapshot with -r including a zvol snapshot causes total ZFS freeze/lockup
Date: Wed, 19 Jun 2013 15:23:13 +0100

 I've reproduced this here, the cause is a live lock between zvols geom
 actions and ZFS itself between the two locks:
 db> show sleepchain
 thread 100553 (pid 6, txg_thread_enter) blocked on sx "spa_namespace_lock" XLOCK
 thread 100054 (pid 2, g_event) blocked on sx "dp->dp_config_rwlock" XLOCK
 
 db>     
 Tracing pid 2 tid 100054 td 0xffffff001c1d4470
 sched_switch() at sched_switch+0x153
 mi_switch() at mi_switch+0x1f8
 sleepq_switch() at sleepq_switch+0x123
 sleepq_wait() at sleepq_wait+0x4d
 _sx_slock_hard() at _sx_slock_hard+0x1e2
 _sx_slock() at _sx_slock+0xc9
 dsl_dir_open_spa() at dsl_dir_open_spa+0xab
 dsl_dataset_hold() at dsl_dataset_hold+0x3b
 dsl_dataset_own() at dsl_dataset_own+0x2f
 dmu_objset_own() at dmu_objset_own+0x36
 zvol_first_open() at zvol_first_open+0x34
 zvol_geom_access() at zvol_geom_access+0x2df
 g_access() at g_access+0x1ba
 g_part_taste() at g_part_taste+0xc4
 g_new_provider_event() at g_new_provider_event+0xaa
 g_run_events() at g_run_events+0x250
 fork_exit() at fork_exit+0x135
 fork_trampoline() at fork_trampoline+0xe
 --- trap 0, rip = 0, rsp = 0xffffff92070a2bb0, rbp = 0 ---
 db> bt 100553
 Tracing pid 6 tid 100553 td 0xffffff002c2308e0
 sched_switch() at sched_switch+0x153
 mi_switch() at mi_switch+0x1f8
 sleepq_switch() at sleepq_switch+0x123
 sleepq_wait() at sleepq_wait+0x4d
 _sx_xlock_hard() at _sx_xlock_hard+0x296
 _sx_xlock() at _sx_xlock+0xb7
 zvol_rename_minors() at zvol_rename_minors+0x75
 dsl_dataset_snapshot_rename_sync() at dsl_dataset_snapshot_rename_sync+0x141
 dsl_sync_task_group_sync() at dsl_sync_task_group_sync+0x14e
 dsl_pool_sync() at dsl_pool_sync+0x47d
 spa_sync() at spa_sync+0x34a
 txg_sync_thread() at txg_sync_thread+0x139
 fork_exit() at fork_exit+0x135
 fork_trampoline() at fork_trampoline+0xe
 --- trap 0, rip = 0, rsp = 0xffffff920e61abb0, rbp = 0 ---
 
 The following steps recreate the issue on stable/8 r251496
 
 gpart create -s GPT da3
 gpart add -t freebsd-zfs da3
 zpool create -f testpool da3p1
 zfs create -V 150m testpool/testvol
 zfs snapshot -r testpool at snap
 zfs rename -r testpool at snap testpool at snap-new
 
 I've been unable to reproduce on current r251471.
 
 I'm not sure is this is due to a timing issue due to the significant
 changes in ZFS sync tasks in current or if the issue really doesn't
 exist any more.
 
     Regards
     Steve


More information about the freebsd-fs mailing list