[Bug 229958] ctld / zfs deadlock with 'zfs rename ...'

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Dec 12 18:40:38 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=229958

--- Comment #9 from Dave Baukus <daveb at spectralogic.com> ---
(In reply to Andriy Gapon from comment #7)

I believe this one involves a rename, but I
no longer have the crash dump to verify:

spa_namespace_lock holder waiting for txg 185:
----------------------------------------------

Thread 1740 (Thread 100162):
(struct thread *)0xfffff80003d12000, tid 100162
   geom :: (struct proc *)0xfffff80003d98a50, pid 13

STACK:
#0  sched_switch (td=0xfffff80003d12000, newtd=0xfffff80003ae4580,
flags=<optimized out>) at sys/kern/sched_ule.c:2112
#1  0xffffffff80513d6f in mi_switch (flags=260, newtd=0x0) at
sys/kern/kern_synch.c:439
#2  0xffffffff8055e04d in sleepq_switch (wchan=0xfffff80c13b6c298, pri=0) at
sys/kern/subr_sleepqueue.c:613
#3  0xffffffff8055def3 in sleepq_wait (wchan=0xfffff80c13b6c298, pri=0) at
sys/kern/subr_sleepqueue.c:692
#4  0xffffffff804a4b73 in _cv_wait (cvp=0xfffff80c13b6c298, lock=<optimized
out>) at sys/kern/kern_condvar.c:146
#5  0xffffffff8165f7ec in txg_wait_synced (dp=0xfffff80c13b6c000, txg=185) at
fs/zfs/txg.c:659
#6  0xffffffff8169cd44 in zil_close (zilog=0xfffff80b2f00e400) at
fs/zfs/zil.c:2975
#7  0xffffffff816e06c5 in zvol_last_close (zv=0xfffff8000b3fc000) at
fs/zfs/zvol.c:893
#8  0xffffffff816dfcc4 in zvol_close (flag=0, pp=<optimized out>,
count=<optimized out>) at fs/zfs/zvol.c:1313
#9  zvol_geom_access (pp=0xfffff80df6772b00, acr=<optimized out>,
acw=<optimized out>, ace=<optimized out>) at fs/zfs/zvol.c:2739
#10 0xffffffff804809f9 in g_access (cp=0xfffff80657520b00, dcr=<optimized out>,
dcw=0, dce=0) at sys/geom/geom_subr.c:977
#11 0xffffffff80486ac6 in g_part_taste (mp=<optimized out>,
pp=0xfffff80df6772b00, flags=<optimized out>) at sys/geom/part/g_part.c:2046
#12 0xffffffff8048158a in g_new_provider_event (arg=0xfffff80df6772b00,
flag=<optimized out>) at sys/geom/geom_subr.c:557
#13 0xffffffff8047c3b4 in one_event () at sys/geom/geom_event.c:268
#14 g_run_events () at sys/geom/geom_event.c:291
#15 0xffffffff804ca144 in fork_exit (callout=0xffffffff8047e720
<g_event_procbody>, arg=0x0, frame=0xfffffe010e5a0ac0) at
sys/kern/kern_fork.c:1057
#16 <signal handler called>
========================================

The spa sync thread wants the spa_namespace_lock and is blocked by the "geom
one_event" thread:
-----------------------------------------------------------------------
Thread 1769 (Thread 104558):
(struct thread *)0xfffff80779d9b000, tid 104558
   zfskern :: (struct proc *)0xfffff80005973528, pid 15

STACK:
#0  sched_switch (td=0xfffff80779d9b000, newtd=0xfffff80003ae5580,
flags=<optimized out>) at sys/kern/sched_ule.c:2112
#1  0xffffffff80513d6f in mi_switch (flags=260, newtd=0x0) at
sys/kern/kern_synch.c:439
#2  0xffffffff8055e04d in sleepq_switch (wchan=0xffffffff817aee98
<spa_namespace_lock>, pri=0) at sys/kern/subr_sleepqueue.c:613
#3  0xffffffff8055def3 in sleepq_wait (wchan=0xffffffff817aee98
<spa_namespace_lock>, pri=0) at sys/kern/subr_sleepqueue.c:692
#4  0xffffffff80511af6 in _sx_xlock_hard (sx=0xffffffff817aee98
<spa_namespace_lock>, x=<optimized out>, opts=<optimized out>, file=<optimized
out>, line=<optimized out>) at sys/kern/kern_sx.c:857
#5  0xffffffff805115e1 in _sx_xlock (sx=0xffffffff817aee98
<spa_namespace_lock>, opts=0, file=0xffffffff81703a89 "fs/zfs/dsl_dataset.c",
line=3086) at sys/kern/kern_sx.c:328
#6  0xffffffff81619cc4 in dsl_dataset_promote_sync (arg=0xfffffe01e0c3e3d0,
tx=0xfffff80ccfc86500) at fs/zfs/dsl_dataset.c:3086
#7  0xffffffff816232d9 in dsl_sync_task_sync (dst=0xfffffe01e0c3e308,
tx=0xfffff80ccfc86500) at fs/zfs/dsl_synctask.c:234
#8  0xffffffff816218db in dsl_pool_sync (dp=0xfffff80c13b6c000, txg=<optimized
out>) at fs/zfs/dsl_pool.c:819
#9  0xffffffff8164ffe3 in spa_sync (spa=<optimized out>, txg=<optimized out>)
at fs/zfs/spa.c:8124
#10 0xffffffff8165f206 in txg_sync_thread (arg=0xfffff80c13b6c000) at
fs/zfs/txg.c:543
#11 0xffffffff804ca144 in fork_exit (callout=0xffffffff8165ef20
<txg_sync_thread>, arg=0xfffff80c13b6c000, frame=0xfffffe025a97aac0) at
sys/kern/kern_fork.c:1057

Pending on lock:
SX_LOCK: spa_namespace_lock, (struct sx *)0xffffffff817aee98
$5 = {
  lock_object = {
    lo_name = 0xffffffff81721d6a,
    lo_flags = 0x22710000,
    lo_data = 0x0,
    lo_witness = 0x0
  },
  sx_lock = 0xfffff80003d12004
}
LOCK HOLDER:
(struct thread *)0xfffff80003d12000, tid 100162
   geom :: (struct proc *)0xfffff80003d98a50, pid 13

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-fs mailing list