Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
b=2776
[fs/lustre-release.git]
/
lustre
/
portals
/
knals
/
socknal
/
socknal_cb.c
diff --git
a/lustre/portals/knals/socknal/socknal_cb.c
b/lustre/portals/knals/socknal/socknal_cb.c
index
c89e20e
..
ebb32da
100644
(file)
--- a/
lustre/portals/knals/socknal/socknal_cb.c
+++ b/
lustre/portals/knals/socknal/socknal_cb.c
@@
-90,6
+90,8
@@
ksocknal_cli(nal_cb_t *nal, unsigned long *flags)
{
ksock_nal_data_t *data = nal->nal_data;
+ /* OK to ignore 'flags'; we're only ever serialise threads and
+ * never need to lock out interrupts */
spin_lock(&data->ksnd_nal_cb_lock);
}
@@
-99,9
+101,23
@@
ksocknal_sti(nal_cb_t *nal, unsigned long *flags)
ksock_nal_data_t *data;
data = nal->nal_data;
+ /* OK to ignore 'flags'; we're only ever serialise threads and
+ * never need to lock out interrupts */
spin_unlock(&data->ksnd_nal_cb_lock);
}
+void
+ksocknal_callback(nal_cb_t *nal, void *private, lib_eq_t *eq, ptl_event_t *ev)
+{
+ /* holding ksnd_nal_cb_lock */
+
+ if (eq->event_callback != NULL)
+ eq->event_callback(ev);
+
+ if (waitqueue_active(&ksocknal_data.ksnd_yield_waitq))
+ wake_up_all(&ksocknal_data.ksnd_yield_waitq);
+}
+
int
ksocknal_dist(nal_cb_t *nal, ptl_nid_t nid, unsigned long *dist)
{
@@
-1058,7
+1074,7
@@
ksocknal_sendmsg(nal_cb_t *nal,
if (ltx == NULL) {
CERROR("Can't allocate tx desc type %d size %d %s\n",
type, desc_size, in_interrupt() ? "(intr)" : "");
- return (PTL_NOSPACE);
+ return (PTL_NO
_
SPACE);
}
atomic_inc(&ksocknal_data.ksnd_nactive_ltxs);
@@
-2659,8
+2675,8
@@
ksocknal_reaper (void *arg)
}
ksocknal_data.ksnd_reaper_waketime = jiffies + timeout;
- add_wait_queue (&ksocknal_data.ksnd_reaper_waitq, &wait);
set_current_state (TASK_INTERRUPTIBLE);
+ add_wait_queue (&ksocknal_data.ksnd_reaper_waitq, &wait);
if (!ksocknal_data.ksnd_shuttingdown &&
list_empty (&ksocknal_data.ksnd_deathrow_conns) &&
@@
-2692,5
+2708,6
@@
nal_cb_t ksocknal_lib = {
cb_printf: ksocknal_printf,
cb_cli: ksocknal_cli,
cb_sti: ksocknal_sti,
+ cb_callback: ksocknal_callback,
cb_dist: ksocknal_dist
};