# This code is issued under the GNU General Public License.
# See the file COPYING in this distribution
-#EXTRA_DIST = Rules.linux archdep.m4 MCP
-EXTRA_DIST = Rules.linux archdep.m4
+EXTRA_DIST = Rules.linux archdep.m4 include
DIST_SUBDIRS = libcfs portals knals unals utils tests doc router
if LIBLUSTRE
SUBDIRS = portals unals utils
# ------------ include paths ------------------
if test $host_cpu != "lib" ; then
- KINCFLAGS='-I$(top_srcdir)/include -I$(top_srcdir)/portals/include -I$(LINUX)/include'
+ KINCFLAGS="-I\$(top_srcdir)/include -I\$(top_srcdir)/portals/include -I$LINUX/include"
else
KINCFLAGS='-I$(top_srcdir)/include -I$(top_srcdir)/portals/include'
fi
AC_SUBST(LINUX25)
AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib)
+# ---------- Red Hat 2.4.20 backports some 2.5 bits --------
+# This needs to run after we've defined the KCPPFLAGS
+AC_MSG_CHECKING(for kernel version)
+AC_TRY_LINK([#define __KERNEL__
+ #include <linux/sched.h>],
+ [struct task_struct p;
+ p.sighand = NULL;],
+ [RH_2_4_20=1],
+ [RH_2_4_20=0])
+
+if test $RH_2_4_20 = 1; then
+ AC_MSG_RESULT(redhat-2.4.20)
+ CPPFLAGS="$CPPFLAGS -DCONFIG_RH_2_4_20"
+else
+ AC_MSG_RESULT($RELEASE)
+fi
% ---------------------------------------------------------------
%
-% $Id: ieee.bst,v 1.1.2.1 2003/05/19 04:25:30 braam Exp $
-%
% by Paolo.Ienne@di.epfl.ch
%
% ---------------------------------------------------------------
{\begin{quote}\textbf{Discussion}: \slshape}%
{\end{quote}}
\pagestyle{myheadings}
-\markboth{$Revision: 1.1.2.1 $\hfil$Date: 2003/05/19 04:25:30 $}%
-{$Date: 2003/05/19 04:25:30 $\hfil$Revision: 1.1.2.1 $}
\end_preamble
\language american
\inputencoding auto
#ifdef __KERNEL__
# include <linux/sched.h> /* THREAD_SIZE */
-#ifdef __arch_ia64__
-#define CDEBUG_STACK(var) (&var & (THREAD_SIZE - 1))
+#ifdef __ia64__
+#define CDEBUG_STACK() ((unsigned long)__builtin_dwarf_cfa()&(THREAD_SIZE - 1))
#else
-#define CDEBUG_STACK(var) (THREAD_SIZE - \
- ((unsigned long)__builtin_frame_address(0)& \
- (THREAD_SIZE - 1)))
+#define CDEBUG_STACK() (THREAD_SIZE - \
+ ((unsigned long)__builtin_frame_address(0) & \
+ (THREAD_SIZE - 1)))
#endif
#define CHECK_STACK(stack) \
do { \
- if ((stack) > 3*THREAD_SIZE/4 && (stack) > portal_stack) \
+ if ((stack) > 3*THREAD_SIZE/4 && (stack) > portal_stack) { \
portals_debug_msg(DEBUG_SUBSYSTEM, D_ERROR, \
__FILE__, __FUNCTION__, __LINE__, \
(stack), \
"maximum lustre stack %u\n", \
portal_stack = (stack)); \
+ /*panic("LBUG");*/ \
+ } \
} while (0)
#else
#define CHECK_STACK(stack) do{}while(0)
#define CDEBUG_STACK(var) (0)
#endif
+#if 1
#define CDEBUG(mask, format, a...) \
do { \
- unsigned long stack = CDEBUG_STACK(stack); \
- int match = 0; \
- \
- CHECK_STACK(stack); \
- if (!(mask)) \
- match = 1; \
- else if ((mask) & (D_ERROR | D_EMERG)) \
- match = 1; \
- else if (portal_debug & (mask) && \
- portal_subsystem_debug & (1 << (DEBUG_SUBSYSTEM >> 24))) \
- match = 1; \
- if (match) \
+ CHECK_STACK(CDEBUG_STACK()); \
+ if (!(mask) || ((mask) & (D_ERROR | D_EMERG)) || \
+ (portal_debug & (mask) && \
+ portal_subsystem_debug & (1 << (DEBUG_SUBSYSTEM >> 24)))) \
portals_debug_msg(DEBUG_SUBSYSTEM, mask, \
__FILE__, __FUNCTION__, __LINE__, \
- stack, format , ## a); \
+ CDEBUG_STACK(), format , ## a); \
} while (0)
#define CWARN(format, a...) CDEBUG(D_WARNING, format, ## a)
#define RETURN(rc) \
do { \
typeof(rc) RETURN__ret = (rc); \
- long tmp = (long)RETURN__ret; \
CDEBUG(D_TRACE, "Process leaving (rc=%lu : %ld : %lx)\n", \
- (unsigned long)tmp, (signed long)tmp, \
- (signed long)tmp); \
+ (long)RETURN__ret, (long)RETURN__ret, (long)RETURN__ret);\
return RETURN__ret; \
} while (0)
do { \
CDEBUG(D_TRACE, "Process leaving\n"); \
} while(0)
+#else
+#define CDEBUG(mask, format, a...) do { } while (0)
+#define CWARN(format, a...) do { } while (0)
+#define CERROR(format, a...) printk("<3>" format, ## a)
+#define CEMERG(format, a...) printk("<0>" format, ## a)
+#define GOTO(label, rc) do { (void)(rc); goto label; } while (0)
+#define RETURN(rc) return (rc)
+#define ENTRY do { } while (0)
+#define EXIT do { } while (0)
+#endif
#ifdef __KERNEL__
#endif
#ifdef __arch_um__
-#define LBUG() \
+#define LBUG_WITH_LOC(file, func, line) \
do { \
CEMERG("LBUG - trying to dump log to /tmp/lustre-log\n"); \
portals_debug_dumplog(); \
- portals_run_lbug_upcall(__FILE__, __FUNCTION__, __LINE__); \
+ portals_run_lbug_upcall(file, func, line); \
panic("LBUG"); \
} while (0)
#else
-#define LBUG() \
+#define LBUG_WITH_LOC(file, func, line) \
do { \
CEMERG("LBUG\n"); \
portals_debug_dumplog(); \
- portals_run_lbug_upcall(__FILE__, __FUNCTION__, __LINE__); \
+ portals_run_lbug_upcall(file, func, line); \
set_task_state(current, TASK_UNINTERRUPTIBLE); \
schedule(); \
} while (0)
#endif /* __arch_um__ */
+#define LBUG() LBUG_WITH_LOC(__FILE__, __FUNCTION__, __LINE__)
+
/*
* Memory
*/
/*
-** $Id: defines.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $
**
** This files contains definitions that are used throughout the cplant code.
*/
/*
-** $Id: internal.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $
*/
#ifndef _P30_INTERNAL_H_
#define _P30_INTERNAL_H_
#else
-extern kmem_cache_t *ptl_md_slab;
-extern kmem_cache_t *ptl_msg_slab;
-extern kmem_cache_t *ptl_me_slab;
-extern kmem_cache_t *ptl_eq_slab;
+extern kmem_cache_t *ptl_md_slab;
+extern kmem_cache_t *ptl_msg_slab;
+extern kmem_cache_t *ptl_me_slab;
+extern kmem_cache_t *ptl_eq_slab;
extern atomic_t md_in_use_count;
extern atomic_t msg_in_use_count;
extern atomic_t me_in_use_count;
lib_msg_alloc(nal_cb_t *nal)
{
/* ALWAYS called with statelock held */
- lib_msg_t *msg = kmem_cache_alloc(ptl_msg_slab, GFP_ATOMIC);
+ lib_msg_t *msg = kmem_cache_alloc(ptl_msg_slab, GFP_ATOMIC);
if (msg == NULL)
return (NULL);
#else
-extern kmem_cache_t *ptl_md_slab;
-extern kmem_cache_t *ptl_msg_slab;
-extern kmem_cache_t *ptl_me_slab;
-extern kmem_cache_t *ptl_eq_slab;
+extern kmem_cache_t *ptl_md_slab;
+extern kmem_cache_t *ptl_msg_slab;
+extern kmem_cache_t *ptl_me_slab;
+extern kmem_cache_t *ptl_eq_slab;
extern atomic_t md_in_use_count;
extern atomic_t msg_in_use_count;
extern atomic_t me_in_use_count;
lib_msg_alloc(nal_cb_t *nal)
{
/* ALWAYS called with statelock held */
- lib_msg_t *msg = kmem_cache_alloc(ptl_msg_slab, GFP_ATOMIC);
+ lib_msg_t *msg = kmem_cache_alloc(ptl_msg_slab, GFP_ATOMIC);
if (msg == NULL)
return (NULL);
/**
* list_for_each_entry_safe - iterate over list of given type safe against removal of list entry
* @pos: the type * to use as a loop counter.
- * @n: the &struct list_head to use as temporary storage
+ * @n: another type * to use as temporary storage
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*/
-#define list_for_each_entry_safe(pos, n, head, member) \
+#define list_for_each_entry_safe(pos, n, head, member) \
for (pos = list_entry((head)->next, typeof(*pos), member), \
- n = pos->member.next; \
+ n = list_entry(pos->member.next, typeof(*pos), member); \
&pos->member != (head); \
- pos = list_entry(n, typeof(*pos), member), \
- n = pos->member.next)
+ pos = n, n = list_entry(n->member.next, typeof(*n), member))
#endif
/*
-** $Id: myrnal.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $
*/
#ifndef MYRNAL_H
/*
-** $Id: nal.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $
*/
#ifndef _NAL_H_
#define _NAL_H_
/*
- * TITLE(ppid_h, "@(#) $Id: ppid.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $");
*/
#ifndef _INCppidh_
/*
-** $Id: stringtab.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $
*/
/*
* stringtab.h
# This code is issued under the GNU General Public License.
# See the file COPYING in this distribution
+DIST_SUBDIRS= socknal toenal qswnal gmnal scimacnal
SUBDIRS= socknal toenal @QSWNAL@ @GMNAL@ @SCIMACNAL@
static inline void
ksocknal_put_conn (ksock_conn_t *conn)
{
- CDEBUG (D_OTHER, "putting conn[%p] -> "LPX64" (%d)\n",
+ CDEBUG (D_OTHER, "putting conn[%p] -> "LPX64" (%d)\n",
conn, conn->ksnc_peernid, atomic_read (&conn->ksnc_refcount));
-
+
if (atomic_dec_and_test (&conn->ksnc_refcount))
_ksocknal_put_conn (conn);
}
}
int
-ksocknal_send (nal_cb_t *nal, void *private, lib_msg_t *cookie,
+ksocknal_send (nal_cb_t *nal, void *private, lib_msg_t *cookie,
ptl_hdr_t *hdr, int type, ptl_nid_t nid, ptl_pid_t pid,
- unsigned int payload_niov, struct iovec *payload_iov, size_t payload_len)
+ unsigned int payload_niov, struct iovec *payload_iov,
+ size_t payload_len)
{
ksock_ltx_t *ltx;
ksock_conn_t *conn;
-
+
/* NB 'private' is different depending on what we're sending.
- * Just ignore it until we can rely on it
+ * Just ignore it until we can rely on it
*
* Also, the return code from this procedure is ignored.
* If we can't send, we must still complete with lib_finalize().
*/
CDEBUG(D_NET,
- "sending "LPSZ" bytes in %d mapped frags to nid: "LPX64" pid %d\n",
- payload_len, payload_niov, nid, pid);
+ "sending "LPSZ" bytes in %d mapped frags to nid: "LPX64
+ " pid %d\n", payload_len, payload_niov, nid, pid);
conn = ksocknal_send_target (nid);
if (conn == NULL) {
lib_finalize (&ksocknal_lib, private, cookie);
return (-1);
}
-
+
ltx = ksocknal_setup_hdr (nal, private, cookie, hdr, type);
if (ltx == NULL) {
ksocknal_put_conn (conn);
lib_finalize (&ksocknal_lib, private, cookie);
return (-1);
}
-
+
/* append the payload_iovs to the one pointing at the header */
LASSERT (ltx->ltx_tx.tx_niov == 1 && ltx->ltx_tx.tx_nkiov == 0);
LASSERT (payload_niov <= PTL_MD_MAX_IOV);
-
- memcpy (ltx->ltx_tx.tx_iov + 1, payload_iov,
+
+ memcpy (ltx->ltx_tx.tx_iov + 1, payload_iov,
payload_niov * sizeof (*payload_iov));
ltx->ltx_tx.tx_niov = 1 + payload_niov;
ltx->ltx_tx.tx_nob = sizeof (*hdr) + payload_len;
-
+
ksocknal_launch_packet (conn, <x->ltx_tx);
return (0);
}
file = filp_open(debug_file_name, O_CREAT|O_TRUNC|O_RDWR, 0644);
if (!file || IS_ERR(file)) {
- CERROR("cannot open %s for dumping", debug_file_name);
+ CERROR("cannot open %s for dumping: %ld\n", debug_file_name,
+ PTR_ERR(file));
GOTO(out, PTR_ERR(file));
} else {
printk(KERN_ALERT "dumping log to %s ... writing ...\n",
void *journal_info;
mm_segment_t oldfs;
unsigned long force_flush = 0;
- unsigned long size;
+ unsigned long size, off, flags;
int rc;
kportal_daemonize("ldebug_daemon");
debug_daemon_state.overlapped = 0;
debug_daemon_state.stopped = 0;
+
+ spin_lock_irqsave(&portals_debug_lock, flags);
+ off = atomic_read(&debug_off_a) + 1;
+ if (debug_wrapped)
+ off = (off >= debug_size)? 0 : off;
+ else
+ off = 0;
+ atomic_set(&debug_daemon_next_write, off);
atomic_set(&debug_daemon_state.paused, 0);
+ spin_unlock_irqrestore(&portals_debug_lock, flags);
+
oldfs = get_fs();
set_fs(KERNEL_DS);
while (1) {
init_waitqueue_head(&debug_daemon_state.lctl);
init_waitqueue_head(&debug_daemon_state.daemon);
- atomic_set(&debug_daemon_next_write, atomic_read(&debug_off_a));
-
daemon_file_size_limit = size << 20;
debug_daemon_state.lctl_event = 0;
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#define EXPORT_SYMTAB
+#ifndef EXPORT_SYMTAB
+# define EXPORT_SYMTAB
+#endif
#define DEBUG_SUBSYSTEM S_PORTALS
#include <linux/config.h>
void kportal_assertion_failed(char *expr, char *file, const char *func,
const int line)
{
- unsigned long stack = CDEBUG_STACK(stack);
- portals_debug_msg(0, D_EMERG, file, func, line, stack,
+ portals_debug_msg(0, D_EMERG, file, func, line, CDEBUG_STACK(),
"ASSERTION(%s) failed\n", expr);
- LBUG();
+ LBUG_WITH_LOC(file, func, line);
}
#endif
unsigned long flags;
SIGNAL_MASK_LOCK(current, flags);
- siginitsetinv (¤t->blocked, 0);
- RECALC_SIGPENDING();
+ sigfillset(¤t->blocked);
+ RECALC_SIGPENDING;
SIGNAL_MASK_UNLOCK(current, flags);
}
CPPFLAGS=
INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include -I$(srcdir)
lib_LIBRARIES = libtcpnal.a
-pkginclude_HEADERS = pqtimer.h dispatch.h table.h timer.h connection.h
+pkginclude_HEADERS = pqtimer.h dispatch.h table.h timer.h connection.h ipmap.h bridge.h procbridge.h
libtcpnal_a_SOURCES = debug.c pqtimer.c select.c table.c pqtimer.h dispatch.h table.h timer.h address.c procapi.c proclib.c connection.c tcpnal.c connection.h
CPPFLAGS=
INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include -I$(srcdir)
lib_LIBRARIES = libtcpnal.a
-pkginclude_HEADERS = pqtimer.h dispatch.h table.h timer.h connection.h
+pkginclude_HEADERS = pqtimer.h dispatch.h table.h timer.h connection.h ipmap.h bridge.h procbridge.h
libtcpnal_a_SOURCES = debug.c pqtimer.c select.c table.c pqtimer.h dispatch.h table.h timer.h address.c procapi.c proclib.c connection.c tcpnal.c connection.h
# This code is issued under the GNU General Public License.
# See the file COPYING in this distribution
-#EXTRA_DIST = Rules.linux archdep.m4 MCP
-EXTRA_DIST = Rules.linux archdep.m4
+EXTRA_DIST = Rules.linux archdep.m4 include
DIST_SUBDIRS = libcfs portals knals unals utils tests doc router
if LIBLUSTRE
SUBDIRS = portals unals utils
# ------------ include paths ------------------
if test $host_cpu != "lib" ; then
- KINCFLAGS='-I$(top_srcdir)/include -I$(top_srcdir)/portals/include -I$(LINUX)/include'
+ KINCFLAGS="-I\$(top_srcdir)/include -I\$(top_srcdir)/portals/include -I$LINUX/include"
else
KINCFLAGS='-I$(top_srcdir)/include -I$(top_srcdir)/portals/include'
fi
AC_SUBST(LINUX25)
AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib)
+# ---------- Red Hat 2.4.20 backports some 2.5 bits --------
+# This needs to run after we've defined the KCPPFLAGS
+AC_MSG_CHECKING(for kernel version)
+AC_TRY_LINK([#define __KERNEL__
+ #include <linux/sched.h>],
+ [struct task_struct p;
+ p.sighand = NULL;],
+ [RH_2_4_20=1],
+ [RH_2_4_20=0])
+
+if test $RH_2_4_20 = 1; then
+ AC_MSG_RESULT(redhat-2.4.20)
+ CPPFLAGS="$CPPFLAGS -DCONFIG_RH_2_4_20"
+else
+ AC_MSG_RESULT($RELEASE)
+fi
% ---------------------------------------------------------------
%
-% $Id: ieee.bst,v 1.1.2.1 2003/05/19 04:25:30 braam Exp $
-%
% by Paolo.Ienne@di.epfl.ch
%
% ---------------------------------------------------------------
{\begin{quote}\textbf{Discussion}: \slshape}%
{\end{quote}}
\pagestyle{myheadings}
-\markboth{$Revision: 1.1.2.1 $\hfil$Date: 2003/05/19 04:25:30 $}%
-{$Date: 2003/05/19 04:25:30 $\hfil$Revision: 1.1.2.1 $}
\end_preamble
\language american
\inputencoding auto
#ifdef __KERNEL__
# include <linux/sched.h> /* THREAD_SIZE */
-#ifdef __arch_ia64__
-#define CDEBUG_STACK(var) (&var & (THREAD_SIZE - 1))
+#ifdef __ia64__
+#define CDEBUG_STACK() ((unsigned long)__builtin_dwarf_cfa()&(THREAD_SIZE - 1))
#else
-#define CDEBUG_STACK(var) (THREAD_SIZE - \
- ((unsigned long)__builtin_frame_address(0)& \
- (THREAD_SIZE - 1)))
+#define CDEBUG_STACK() (THREAD_SIZE - \
+ ((unsigned long)__builtin_frame_address(0) & \
+ (THREAD_SIZE - 1)))
#endif
#define CHECK_STACK(stack) \
do { \
- if ((stack) > 3*THREAD_SIZE/4 && (stack) > portal_stack) \
+ if ((stack) > 3*THREAD_SIZE/4 && (stack) > portal_stack) { \
portals_debug_msg(DEBUG_SUBSYSTEM, D_ERROR, \
__FILE__, __FUNCTION__, __LINE__, \
(stack), \
"maximum lustre stack %u\n", \
portal_stack = (stack)); \
+ /*panic("LBUG");*/ \
+ } \
} while (0)
#else
#define CHECK_STACK(stack) do{}while(0)
#define CDEBUG_STACK(var) (0)
#endif
+#if 1
#define CDEBUG(mask, format, a...) \
do { \
- unsigned long stack = CDEBUG_STACK(stack); \
- int match = 0; \
- \
- CHECK_STACK(stack); \
- if (!(mask)) \
- match = 1; \
- else if ((mask) & (D_ERROR | D_EMERG)) \
- match = 1; \
- else if (portal_debug & (mask) && \
- portal_subsystem_debug & (1 << (DEBUG_SUBSYSTEM >> 24))) \
- match = 1; \
- if (match) \
+ CHECK_STACK(CDEBUG_STACK()); \
+ if (!(mask) || ((mask) & (D_ERROR | D_EMERG)) || \
+ (portal_debug & (mask) && \
+ portal_subsystem_debug & (1 << (DEBUG_SUBSYSTEM >> 24)))) \
portals_debug_msg(DEBUG_SUBSYSTEM, mask, \
__FILE__, __FUNCTION__, __LINE__, \
- stack, format , ## a); \
+ CDEBUG_STACK(), format , ## a); \
} while (0)
#define CWARN(format, a...) CDEBUG(D_WARNING, format, ## a)
#define RETURN(rc) \
do { \
typeof(rc) RETURN__ret = (rc); \
- long tmp = (long)RETURN__ret; \
CDEBUG(D_TRACE, "Process leaving (rc=%lu : %ld : %lx)\n", \
- (unsigned long)tmp, (signed long)tmp, \
- (signed long)tmp); \
+ (long)RETURN__ret, (long)RETURN__ret, (long)RETURN__ret);\
return RETURN__ret; \
} while (0)
do { \
CDEBUG(D_TRACE, "Process leaving\n"); \
} while(0)
+#else
+#define CDEBUG(mask, format, a...) do { } while (0)
+#define CWARN(format, a...) do { } while (0)
+#define CERROR(format, a...) printk("<3>" format, ## a)
+#define CEMERG(format, a...) printk("<0>" format, ## a)
+#define GOTO(label, rc) do { (void)(rc); goto label; } while (0)
+#define RETURN(rc) return (rc)
+#define ENTRY do { } while (0)
+#define EXIT do { } while (0)
+#endif
#ifdef __KERNEL__
#endif
#ifdef __arch_um__
-#define LBUG() \
+#define LBUG_WITH_LOC(file, func, line) \
do { \
CEMERG("LBUG - trying to dump log to /tmp/lustre-log\n"); \
portals_debug_dumplog(); \
- portals_run_lbug_upcall(__FILE__, __FUNCTION__, __LINE__); \
+ portals_run_lbug_upcall(file, func, line); \
panic("LBUG"); \
} while (0)
#else
-#define LBUG() \
+#define LBUG_WITH_LOC(file, func, line) \
do { \
CEMERG("LBUG\n"); \
portals_debug_dumplog(); \
- portals_run_lbug_upcall(__FILE__, __FUNCTION__, __LINE__); \
+ portals_run_lbug_upcall(file, func, line); \
set_task_state(current, TASK_UNINTERRUPTIBLE); \
schedule(); \
} while (0)
#endif /* __arch_um__ */
+#define LBUG() LBUG_WITH_LOC(__FILE__, __FUNCTION__, __LINE__)
+
/*
* Memory
*/
/*
-** $Id: defines.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $
**
** This files contains definitions that are used throughout the cplant code.
*/
#else
-extern kmem_cache_t *ptl_md_slab;
-extern kmem_cache_t *ptl_msg_slab;
-extern kmem_cache_t *ptl_me_slab;
-extern kmem_cache_t *ptl_eq_slab;
+extern kmem_cache_t *ptl_md_slab;
+extern kmem_cache_t *ptl_msg_slab;
+extern kmem_cache_t *ptl_me_slab;
+extern kmem_cache_t *ptl_eq_slab;
extern atomic_t md_in_use_count;
extern atomic_t msg_in_use_count;
extern atomic_t me_in_use_count;
lib_msg_alloc(nal_cb_t *nal)
{
/* ALWAYS called with statelock held */
- lib_msg_t *msg = kmem_cache_alloc(ptl_msg_slab, GFP_ATOMIC);
+ lib_msg_t *msg = kmem_cache_alloc(ptl_msg_slab, GFP_ATOMIC);
if (msg == NULL)
return (NULL);
/**
* list_for_each_entry_safe - iterate over list of given type safe against removal of list entry
* @pos: the type * to use as a loop counter.
- * @n: the &struct list_head to use as temporary storage
+ * @n: another type * to use as temporary storage
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*/
-#define list_for_each_entry_safe(pos, n, head, member) \
+#define list_for_each_entry_safe(pos, n, head, member) \
for (pos = list_entry((head)->next, typeof(*pos), member), \
- n = pos->member.next; \
+ n = list_entry(pos->member.next, typeof(*pos), member); \
&pos->member != (head); \
- pos = list_entry(n, typeof(*pos), member), \
- n = pos->member.next)
+ pos = n, n = list_entry(n->member.next, typeof(*n), member))
#endif
/*
-** $Id: myrnal.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $
*/
#ifndef MYRNAL_H
/*
-** $Id: nal.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $
*/
#ifndef _NAL_H_
#define _NAL_H_
/*
- * TITLE(ppid_h, "@(#) $Id: ppid.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $");
*/
#ifndef _INCppidh_
/*
-** $Id: stringtab.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $
*/
/*
* stringtab.h
# This code is issued under the GNU General Public License.
# See the file COPYING in this distribution
+DIST_SUBDIRS= socknal toenal qswnal gmnal scimacnal
SUBDIRS= socknal toenal @QSWNAL@ @GMNAL@ @SCIMACNAL@
static inline void
ksocknal_put_conn (ksock_conn_t *conn)
{
- CDEBUG (D_OTHER, "putting conn[%p] -> "LPX64" (%d)\n",
+ CDEBUG (D_OTHER, "putting conn[%p] -> "LPX64" (%d)\n",
conn, conn->ksnc_peernid, atomic_read (&conn->ksnc_refcount));
-
+
if (atomic_dec_and_test (&conn->ksnc_refcount))
_ksocknal_put_conn (conn);
}
}
int
-ksocknal_send (nal_cb_t *nal, void *private, lib_msg_t *cookie,
+ksocknal_send (nal_cb_t *nal, void *private, lib_msg_t *cookie,
ptl_hdr_t *hdr, int type, ptl_nid_t nid, ptl_pid_t pid,
- unsigned int payload_niov, struct iovec *payload_iov, size_t payload_len)
+ unsigned int payload_niov, struct iovec *payload_iov,
+ size_t payload_len)
{
ksock_ltx_t *ltx;
ksock_conn_t *conn;
-
+
/* NB 'private' is different depending on what we're sending.
- * Just ignore it until we can rely on it
+ * Just ignore it until we can rely on it
*
* Also, the return code from this procedure is ignored.
* If we can't send, we must still complete with lib_finalize().
*/
CDEBUG(D_NET,
- "sending "LPSZ" bytes in %d mapped frags to nid: "LPX64" pid %d\n",
- payload_len, payload_niov, nid, pid);
+ "sending "LPSZ" bytes in %d mapped frags to nid: "LPX64
+ " pid %d\n", payload_len, payload_niov, nid, pid);
conn = ksocknal_send_target (nid);
if (conn == NULL) {
lib_finalize (&ksocknal_lib, private, cookie);
return (-1);
}
-
+
ltx = ksocknal_setup_hdr (nal, private, cookie, hdr, type);
if (ltx == NULL) {
ksocknal_put_conn (conn);
lib_finalize (&ksocknal_lib, private, cookie);
return (-1);
}
-
+
/* append the payload_iovs to the one pointing at the header */
LASSERT (ltx->ltx_tx.tx_niov == 1 && ltx->ltx_tx.tx_nkiov == 0);
LASSERT (payload_niov <= PTL_MD_MAX_IOV);
-
- memcpy (ltx->ltx_tx.tx_iov + 1, payload_iov,
+
+ memcpy (ltx->ltx_tx.tx_iov + 1, payload_iov,
payload_niov * sizeof (*payload_iov));
ltx->ltx_tx.tx_niov = 1 + payload_niov;
ltx->ltx_tx.tx_nob = sizeof (*hdr) + payload_len;
-
+
ksocknal_launch_packet (conn, <x->ltx_tx);
return (0);
}
file = filp_open(debug_file_name, O_CREAT|O_TRUNC|O_RDWR, 0644);
if (!file || IS_ERR(file)) {
- CERROR("cannot open %s for dumping", debug_file_name);
+ CERROR("cannot open %s for dumping: %ld\n", debug_file_name,
+ PTR_ERR(file));
GOTO(out, PTR_ERR(file));
} else {
printk(KERN_ALERT "dumping log to %s ... writing ...\n",
void *journal_info;
mm_segment_t oldfs;
unsigned long force_flush = 0;
- unsigned long size;
+ unsigned long size, off, flags;
int rc;
kportal_daemonize("ldebug_daemon");
debug_daemon_state.overlapped = 0;
debug_daemon_state.stopped = 0;
+
+ spin_lock_irqsave(&portals_debug_lock, flags);
+ off = atomic_read(&debug_off_a) + 1;
+ if (debug_wrapped)
+ off = (off >= debug_size)? 0 : off;
+ else
+ off = 0;
+ atomic_set(&debug_daemon_next_write, off);
atomic_set(&debug_daemon_state.paused, 0);
+ spin_unlock_irqrestore(&portals_debug_lock, flags);
+
oldfs = get_fs();
set_fs(KERNEL_DS);
while (1) {
init_waitqueue_head(&debug_daemon_state.lctl);
init_waitqueue_head(&debug_daemon_state.daemon);
- atomic_set(&debug_daemon_next_write, atomic_read(&debug_off_a));
-
daemon_file_size_limit = size << 20;
debug_daemon_state.lctl_event = 0;
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#define EXPORT_SYMTAB
+#ifndef EXPORT_SYMTAB
+# define EXPORT_SYMTAB
+#endif
#define DEBUG_SUBSYSTEM S_PORTALS
#include <linux/config.h>
void kportal_assertion_failed(char *expr, char *file, const char *func,
const int line)
{
- unsigned long stack = CDEBUG_STACK(stack);
- portals_debug_msg(0, D_EMERG, file, func, line, stack,
+ portals_debug_msg(0, D_EMERG, file, func, line, CDEBUG_STACK(),
"ASSERTION(%s) failed\n", expr);
- LBUG();
+ LBUG_WITH_LOC(file, func, line);
}
#endif
unsigned long flags;
SIGNAL_MASK_LOCK(current, flags);
- siginitsetinv (¤t->blocked, 0);
- RECALC_SIGPENDING();
+ sigfillset(¤t->blocked);
+ RECALC_SIGPENDING;
SIGNAL_MASK_UNLOCK(current, flags);
}
CPPFLAGS=
INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include -I$(srcdir)
lib_LIBRARIES = libtcpnal.a
-pkginclude_HEADERS = pqtimer.h dispatch.h table.h timer.h connection.h
+pkginclude_HEADERS = pqtimer.h dispatch.h table.h timer.h connection.h ipmap.h bridge.h procbridge.h
libtcpnal_a_SOURCES = debug.c pqtimer.c select.c table.c pqtimer.h dispatch.h table.h timer.h address.c procapi.c proclib.c connection.c tcpnal.c connection.h