summaryrefslogtreecommitdiffstats
path: root/sbin/hastd
diff options
context:
space:
mode:
authortrociny <trociny@FreeBSD.org>2012-02-05 15:23:32 +0000
committertrociny <trociny@FreeBSD.org>2012-02-05 15:23:32 +0000
commit1d510ea553826051e179bde1773d2c8f059df5e1 (patch)
tree5746ca49e8feebbfceb0c593fd90aa31ef048f65 /sbin/hastd
parentd2786f0a2c3f16ec2f18af460036f9a264286ef1 (diff)
downloadFreeBSD-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/hastd')
-rw-r--r--sbin/hastd/primary.c3
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);
}
OpenPOWER on IntegriCloud