svn commit: r309139 - head/sys/dev/hyperv/vmbus
Sepherosa Ziehau
sephe at FreeBSD.org
Fri Nov 25 08:57:54 UTC 2016
Author: sephe
Date: Fri Nov 25 08:57:52 2016
New Revision: 309139
URL: https://svnweb.freebsd.org/changeset/base/309139
Log:
hyperv/vmbus: Propagate close error.
MFC after: 1 week
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8599
Modified:
head/sys/dev/hyperv/vmbus/vmbus_chan.c
Modified: head/sys/dev/hyperv/vmbus/vmbus_chan.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/vmbus_chan.c Fri Nov 25 08:31:13 2016 (r309138)
+++ head/sys/dev/hyperv/vmbus/vmbus_chan.c Fri Nov 25 08:57:52 2016 (r309139)
@@ -53,7 +53,7 @@ __FBSDID("$FreeBSD$");
static void vmbus_chan_update_evtflagcnt(
struct vmbus_softc *,
const struct vmbus_channel *);
-static void vmbus_chan_close_internal(
+static int vmbus_chan_close_internal(
struct vmbus_channel *);
static int vmbus_chan_sysctl_mnf(SYSCTL_HANDLER_ARGS);
static void vmbus_chan_sysctl_create(
@@ -739,7 +739,7 @@ vmbus_chan_set_chmap(struct vmbus_channe
chan->ch_vmbus->vmbus_chmap[chan->ch_id] = chan;
}
-static void
+static int
vmbus_chan_close_internal(struct vmbus_channel *chan)
{
struct vmbus_softc *sc = chan->ch_vmbus;
@@ -765,7 +765,7 @@ vmbus_chan_close_internal(struct vmbus_c
vmbus_chan_printf(chan, "chan%u not opened\n",
chan->ch_id);
}
- return;
+ return (0);
}
/*
@@ -792,6 +792,7 @@ vmbus_chan_close_internal(struct vmbus_c
vmbus_chan_printf(chan,
"can not get msg hypercall for chclose(chan%u)\n",
chan->ch_id);
+ error = ENXIO;
goto disconnect;
}
@@ -831,6 +832,11 @@ disconnect:
vmbus_chan_printf(chan, "chan%u bufring GPADL "
"is still connected after close\n", chan->ch_id);
chan->ch_bufring = NULL;
+ /*
+ * Give caller a hint that the bufring GPADL is
+ * still connected.
+ */
+ error = EISCONN;
}
chan->ch_bufring_gpadl = 0;
}
@@ -842,6 +848,7 @@ disconnect:
hyperv_dmamem_free(&chan->ch_bufring_dma, chan->ch_bufring);
chan->ch_bufring = NULL;
}
+ return (error);
}
/*
More information about the svn-src-all
mailing list