Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs



Module Name:    src
Committed By:   yamt
Date:           Mon Mar 16 14:54:29 UTC 2026

Modified Files:
        src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_rlock.c

Log Message:
zfs: fix zfs_range_lock_try

the change "zfs: add zfs_range_lock_try" was incomplete.

i've observed the following deadlock:
```
db{0}> tr /a ffff96777f74f400
trace: pid 0 lid 125 at 0xffffce80c3203b50
sleepq_block() at netbsd:sleepq_block+0xf4
cv_wait() at netbsd:cv_wait+0xca
pool_grow() at netbsd:pool_grow+0x47b
pool_get() at netbsd:pool_get+0xae
pool_cache_get_slow() at netbsd:pool_cache_get_slow+0x136
pool_cache_get_paddr() at netbsd:pool_cache_get_paddr+0x27d
kmem_intr_alloc() at netbsd:kmem_intr_alloc+0x13c
kmem_alloc() at netbsd:kmem_alloc+0x2a
zfs_range_lock_impl() at zfs:zfs_range_lock_impl+0x30
zfs_netbsd_putpages() at zfs:zfs_netbsd_putpages+0x1c0
VOP_PUTPAGES() at netbsd:VOP_PUTPAGES+0x43
uvm_pageout() at netbsd:uvm_pageout+0x257
db{0}>
```

this commit fixes it by using KM_NOSLEEP when non-blocking
operation is requested.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
    src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_rlock.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index