Date: Wed, 28 Sep 2005 00:26:33 -0700 (PDT) From: Don Lewis <truckman@FreeBSD.org> To: current@FreeBSD.org Subject: Re: analysis of snapshot-related system deadlock Message-ID: <200509280726.j8S7QX2V000750@gw.catspoiler.org> In-Reply-To: <200509280609.j8S68vZ3000590@gw.catspoiler.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 27 Sep, Don Lewis wrote: > Probably the easiest fix would be to call runningbufwakeup() from > ffs_copyonwrite() before grabbing "snaplk", and increase runningbufspace > again before returning from ffs_copyonwrite(). The bufs waiting for > "snaplk" aren't yet async writes currently running, to borrow from the > comment on waitrunningbufspace(). Sleeping on "wdrain" is probably also undesirable if a thread holds "snaplk" because of the potential impact on the activity of other threads. A possible fix would be for bufwrite() to skip the call to waitrunningbufspace() if the thread holds "snaplk". This might cause problems with queuing an excessive amount of I/O, but I don't think so because the outer bufwrite() will still call waitrunningbufspace().
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200509280726.j8S7QX2V000750>