If a local write request is from the synchronization thread, when it

is synchronizing data that is out of date on the local component, we
should not send G_GATE_CMD_DONE acknowledge to the kernel.

This fixes the issue, observed in async mode, when on synchronization
from the remote component the worker terminated with "G_GATE_CMD_DONE
failed" error.

Reported by:	Artem Kajalainen <artem kayalaynen ru>
Reviewed by:	pjd
MFC after:	1 week
This commit is contained in:
Mikolaj Golub 2012-02-05 15:23:32 +00:00
parent 2b2cb41812
commit f737157838
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=231016

View File

@ -1326,7 +1326,8 @@ local_send_thread(void *arg)
} else {
hio->hio_errors[ncomp] = 0;
if (hio->hio_replication ==
HAST_REPLICATION_ASYNC) {
HAST_REPLICATION_ASYNC &&
!ISSYNCREQ(hio)) {
ggio->gctl_error = 0;
write_complete(res, hio);
}