On Apr 28, 2013, at 10:56 AM, Michael van Elst <mlelstv%serpens.de@localhost> wrote: > On Sun, Apr 28, 2013 at 10:31:19AM +0200, J. Hannken-Illjes wrote: >> On Apr 27, 2013, at 12:27 AM, Michael van Elst >> <mlelstv%netbsd.org@localhost> wrote: >> >>> Module Name: src >>> Committed By: mlelstv >>> Date: Fri Apr 26 22:27:17 UTC 2013 >>> >>> Modified Files: >>> src/sys/kern: vfs_mount.c >>> src/sys/sys: mount.h >>> >>> Log Message: >>> Correct umount semantics to return EBUSY when a filesystem is busy >>> instead of failing filesystem operations with EBUSY when attempting >>> an umount. >>> This fixes kern/38141. >> >> Who did the review or where has it been discussed? > > Christos with a former version and David Holland with the current. > >> We now get a deadlock between mountlist_lock and mnt_unmounting, >> seen between dounmount() and do_sys_sync() for example. > > Do you have a PR showing how to produce that deadlock? No PR -- but the attached script should do the job. >> The lock order is mountlist_lock->mnt_unmounting, but dounmount() >> locks in reverse direction. > > The locking order hasn't been changed, but the faulty tryenter has been > replaced with an enter. Sure -- and that is the problem. The locking order was wrong and you removed the hack/workaround without fixing the lock order. > If there is a locking violation it just didn't > show up with the former code as even LOCKDEBUG had been hacked to allow > it. This hack was about recursive rw_tryenter() if I remember right. -- J. Hannken-Illjes - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig (Germany)
Attachment:
hang-it.sh
Description: Binary data