Hast locking up under 9.2
Pawel Jakub Dawidek
pjd at FreeBSD.org
Mon Nov 25 08:32:18 UTC 2013
On Sat, Nov 23, 2013 at 11:59:51PM +0200, Mikolaj Golub wrote:
> On Fri, Nov 22, 2013 at 11:18:29AM +0000, Pete French wrote:
>
> > "Assertion failed: (!hio->hio_done), function write_complete, file
> > /usr/src/sbin/hastd/primary.c, line 1130."
>
> It looks like write_complete usage (which should be called once per
> write request) for memsync is racy.
>
> Consider the following scenario:
>
> 1) remote_recv_thread: memsync ack received, refcount -> 2;
> 2) local_send_thread: local write completed, refcount -> 1, entering
> write_complete()
> 3) remote_recv_thread: memsync fin received, refcount -> 0, move hio
> to done queue, ggate_send_thread gets the hio, checks for
> !hio->hio_done and (if loca_send_thread is still in
> write_complete()) entering write_complete()
I don't see how is that possible. The write_complete() function is
called only when hio_countdown goes from 2 to 1 and because this is
atomic operation it can only happen in one thread. Can you elaborate on
how calling write_complete() concurrently for the same request is
possible?
--
Pawel Jakub Dawidek http://www.wheelsystems.com
FreeBSD committer http://www.FreeBSD.org
Am I Evil? Yes, I Am! http://mobter.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20131125/235a3ac4/attachment.sig>
More information about the freebsd-stable
mailing list