freebsd-dev/sbin/hastd
Mikolaj Golub 1c1310eed7 Use cv_broadcast() instead of cv_signal() when waking up threads
waiting on an empty queue as the queue may have several consumers.

Before the fix the following scenario was possible: 2 threads are
waiting on empty queue, 2 threads are inserting simultaneously. The
first inserting thread detects that the queue is empty and is going to
send the signal, but before it sends the second thread inserts
too. When the first sends the signal only one of the waiting threads
receive it while the other one may wait forever.

The scenario above is is believed to be the cause of the observed
cases, when ggate_recv_thread() was getting stuck on taking free
request, while the free queue was not empty.

Reviewed by:	pjd
Tested by:	Yamagi Burmeister yamagi.org
Approved by:	re (marius)
MFC after:	2 weeks
2013-09-19 20:15:24 +00:00
..
activemap.c Spelling fixes for sbin/ 2012-01-07 16:09:33 +00:00
activemap.h
control.c Make hastctl(1) ('list' command) output a worker pid. 2013-07-01 18:41:07 +00:00
control.h Rename HASTCTL_ defines, which are used for conversion between main 2011-04-26 19:38:30 +00:00
crc32.c Allow to checksum on-the-wire data using either CRC32 or SHA256. 2011-03-06 22:56:14 +00:00
crc32.h Allow to checksum on-the-wire data using either CRC32 or SHA256. 2011-03-06 22:56:14 +00:00
ebuf.c For functions that return -1 on failure check exactly for -1 and not for 2012-01-10 22:39:07 +00:00
ebuf.h
event.c For functions that return -1 on failure check exactly for -1 and not for 2012-01-10 22:39:07 +00:00
event.h
hast_checksum.c Simplify code by changing functions types from int to avoid, as the functions 2011-12-15 22:03:17 +00:00
hast_checksum.h Allow to checksum on-the-wire data using either CRC32 or SHA256. 2011-03-06 22:56:14 +00:00
hast_compression.c Spelling fixes for sbin/ 2012-01-07 16:09:33 +00:00
hast_compression.h Allow to compress on-the-wire data using two algorithms: 2011-03-06 23:09:33 +00:00
hast_proto.c - Add support for 'memsync' mode. This is the fastest replication mode that's 2013-02-17 21:12:34 +00:00
hast_proto.h Remove hast_proto_recv(). It was used only in one place, where 2011-04-17 16:18:45 +00:00
hast.conf.5 - Add support for 'memsync' mode. This is the fastest replication mode that's 2013-02-17 21:12:34 +00:00
hast.h Improve compatibility with old flex and fix build with GCC. 2013-05-22 17:47:45 +00:00
hastd.8 Correct some grammar. 2013-06-30 17:59:40 +00:00
hastd.c - Add support for 'memsync' mode. This is the fastest replication mode that's 2013-02-17 21:12:34 +00:00
hastd.h Add function to assert that the only descriptors we have open are the ones 2011-01-28 21:56:47 +00:00
hooks.c For functions that return -1 on failure check exactly for -1 and not for 2012-01-10 22:39:07 +00:00
hooks.h
lzf.c Allow to compress on-the-wire data using two algorithms: 2011-03-06 23:09:33 +00:00
lzf.h Spelling fixes for sbin/ 2012-01-07 16:09:33 +00:00
Makefile Get rid of libl dependency. We needed it only to provide yywrap. But 2013-05-11 09:51:44 +00:00
metadata.c For functions that return -1 on failure check exactly for -1 and not for 2012-01-10 22:39:07 +00:00
metadata.h
nv.c Fix typo. 2012-03-23 20:18:48 +00:00
nv.h Add nv_assert() which allows to assert that the given name exists. 2011-01-22 22:38:18 +00:00
parse.y Improve compatibility with old flex and fix build with GCC. 2013-05-22 17:47:45 +00:00
pjdlog.c Ensure that pjdlog functions don't modify errno. 2011-09-27 06:43:51 +00:00
pjdlog.h Revert r228695. We use __func__ here as a format to distinguish between 2012-11-05 00:38:14 +00:00
primary.c Use cv_broadcast() instead of cv_signal() when waking up threads 2013-09-19 20:15:24 +00:00
proto_common.c Check if there is cmsg at all. 2012-07-01 16:26:07 +00:00
proto_impl.h The proto API is a general purpose API, so don't use 'hast' in structures or 2011-03-22 16:21:11 +00:00
proto_socketpair.c For functions that return -1 on failure check exactly for -1 and not for 2012-01-10 22:39:07 +00:00
proto_tcp.c For functions that return -1 on failure check exactly for -1 and not for 2012-01-10 22:39:07 +00:00
proto_uds.c For functions that return -1 on failure check exactly for -1 and not for 2012-01-10 22:39:07 +00:00
proto.c For functions that return -1 on failure check exactly for -1 and not for 2012-01-10 22:39:07 +00:00
proto.h In hast.conf we define the other node's address in 'remote' variable. 2011-03-21 08:54:59 +00:00
rangelock.c Nice range comparison. 2012-02-11 16:41:52 +00:00
rangelock.h
refcnt.h Don't let hastd use C11 atomics. 2013-06-29 20:13:39 +00:00
secondary.c Use cv_broadcast() instead of cv_signal() when waking up threads 2013-09-19 20:15:24 +00:00
subr.c Change the cap_rights_t type from uint64_t to a structure that we can extend 2013-09-05 00:09:56 +00:00
subr.h Constify argument. 2012-01-06 12:27:17 +00:00
synch.h Revert: r236909 2012-06-11 20:27:52 +00:00
token.l Improve compatibility with old flex and fix build with GCC. 2013-05-22 17:47:45 +00:00