diff options
author | trociny <trociny@FreeBSD.org> | 2012-02-05 15:23:32 +0000 |
---|---|---|
committer | trociny <trociny@FreeBSD.org> | 2012-02-05 15:23:32 +0000 |
commit | 1d510ea553826051e179bde1773d2c8f059df5e1 (patch) | |
tree | 5746ca49e8feebbfceb0c593fd90aa31ef048f65 /sbin | |
parent | d2786f0a2c3f16ec2f18af460036f9a264286ef1 (diff) | |
download | FreeBSD-src-1d510ea553826051e179bde1773d2c8f059df5e1.zip FreeBSD-src-1d510ea553826051e179bde1773d2c8f059df5e1.tar.gz |
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
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/hastd/primary.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sbin/hastd/primary.c b/sbin/hastd/primary.c index 54d955d..81d08eb 100644 --- a/sbin/hastd/primary.c +++ b/sbin/hastd/primary.c @@ -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); } |