tech-kern archive

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

Re: All processes go tstile



> On 19. Aug 2018, at 20:30, David Holland <dholland-tech%netbsd.org@localhost> wrote:
> 
> On Thu, Aug 16, 2018 at 10:03:11AM +0200, J. Hannken-Illjes wrote:
>>> sleepq_block
>>> cv_wait
>>> fstrans_start
>>> VOP_BWRITE
>>> getnewbuf
>>> getblk
>>> bio_doread
>>> bread
>>> ffs_update.part.3
>>> ffs_sync
>>> VFS_SYNC
>>> sched_sync
>>> 
>>> If I understand correctly, that means a n I/O that never completed, right?
>> 
>> Looks like a deadlock where we sync a file system, need a new buffer
>> and try to free a buffer on a currently suspending file system.
>> 
>> VFS_SYNC and VOP_BWRITE should be on different mounts here.
> 
> Side note: what if there isn't a second mount? Not sure that's a good
> enough way to deal with this case...

This is just a guess -- if they were from the same mount sched_sync()
did already call fstrans_start() through mountlist_iterator_trynext()
and VOP_BWRITE would not sleep on fstrans_start() as it always succeeds
on recursion.

--
J. Hannken-Illjes - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig (Germany)



Home | Main Index | Thread Index | Old Index