From 77dcaa95e9571bfc08a11507e5a654376052b1e8 Mon Sep 17 00:00:00 2001 From: adilger Date: Wed, 28 May 2003 18:20:34 +0000 Subject: [PATCH] Reduce CHECK_STACK, CDEBUG and RETURN stack usage (caused by GCC 2.x bug) - this uses __builtin_dwarf_cfa() to get stack depth on ia64 which is _supposed_ to be much better than __builtin_stack_frame(), but if problems appear on ia64 again we can just live without stack info for now. Add optional no-op CDEBUG/ENTRY/RETURN macros (improves perf noticably). Remove some CVS $Id tags (might be some initial merge conflicts from that, but saves us more in the future). --- lnet/doc/ieee.bst | 2 -- lnet/doc/portals3.lyx | 2 -- lnet/include/linux/kp30.h | 47 ++++++++++++++++-------------- lnet/include/lnet/defines.h | 1 - lnet/include/lnet/internal.h | 1 - lnet/include/lnet/lib-lnet.h | 10 +++---- lnet/include/lnet/lib-p30.h | 10 +++---- lnet/include/lnet/list.h | 9 +++--- lnet/include/lnet/myrnal.h | 1 - lnet/include/lnet/nal.h | 1 - lnet/include/lnet/ppid.h | 1 - lnet/include/lnet/stringtab.h | 1 - lnet/klnds/socklnd/socklnd.h | 4 +-- lnet/klnds/socklnd/socklnd_cb.c | 23 ++++++++------- lnet/libcfs/module.c | 3 +- lustre/portals/doc/ieee.bst | 2 -- lustre/portals/doc/portals3.lyx | 2 -- lustre/portals/include/linux/kp30.h | 47 ++++++++++++++++-------------- lustre/portals/include/portals/defines.h | 1 - lustre/portals/include/portals/lib-p30.h | 10 +++---- lustre/portals/include/portals/list.h | 9 +++--- lustre/portals/include/portals/myrnal.h | 1 - lustre/portals/include/portals/nal.h | 1 - lustre/portals/include/portals/ppid.h | 1 - lustre/portals/include/portals/stringtab.h | 1 - lustre/portals/knals/socknal/socknal.h | 4 +-- lustre/portals/knals/socknal/socknal_cb.c | 23 ++++++++------- lustre/portals/libcfs/module.c | 3 +- 28 files changed, 103 insertions(+), 118 deletions(-) diff --git a/lnet/doc/ieee.bst b/lnet/doc/ieee.bst index 5367caa..4df7c50 100644 --- a/lnet/doc/ieee.bst +++ b/lnet/doc/ieee.bst @@ -1,7 +1,5 @@ % --------------------------------------------------------------- % -% $Id: ieee.bst,v 1.1.2.1 2003/05/19 04:25:30 braam Exp $ -% % by Paolo.Ienne@di.epfl.ch % % --------------------------------------------------------------- diff --git a/lnet/doc/portals3.lyx b/lnet/doc/portals3.lyx index f3c24e0..8429280 100644 --- a/lnet/doc/portals3.lyx +++ b/lnet/doc/portals3.lyx @@ -7,8 +7,6 @@ {\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 diff --git a/lnet/include/linux/kp30.h b/lnet/include/linux/kp30.h index 46d9406..c5ff808 100644 --- a/lnet/include/linux/kp30.h +++ b/lnet/include/linux/kp30.h @@ -84,44 +84,39 @@ extern unsigned int portal_printk; #define THREAD_SIZE 8192 #endif #ifdef __arch_ia64__ -#define CDEBUG_STACK(var) (&var & (THREAD_SIZE - 1)) +#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 #ifdef __KERNEL__ #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 CHECK_STACK(stack) do { } while(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) @@ -140,10 +135,8 @@ do { \ #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) @@ -156,6 +149,16 @@ do { \ 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__ diff --git a/lnet/include/lnet/defines.h b/lnet/include/lnet/defines.h index 285f7e0..785ce73 100644 --- a/lnet/include/lnet/defines.h +++ b/lnet/include/lnet/defines.h @@ -1,5 +1,4 @@ /* -** $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. */ diff --git a/lnet/include/lnet/internal.h b/lnet/include/lnet/internal.h index 8ade444..d78cad4 100644 --- a/lnet/include/lnet/internal.h +++ b/lnet/include/lnet/internal.h @@ -1,5 +1,4 @@ /* -** $Id: internal.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $ */ #ifndef _P30_INTERNAL_H_ #define _P30_INTERNAL_H_ diff --git a/lnet/include/lnet/lib-lnet.h b/lnet/include/lnet/lib-lnet.h index 4a61e76..ca92e5f 100644 --- a/lnet/include/lnet/lib-lnet.h +++ b/lnet/include/lnet/lib-lnet.h @@ -170,10 +170,10 @@ lib_msg_free (nal_cb_t *nal, lib_msg_t *msg) #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; @@ -246,7 +246,7 @@ static inline lib_msg_t * 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); diff --git a/lnet/include/lnet/lib-p30.h b/lnet/include/lnet/lib-p30.h index 4a61e76..ca92e5f 100644 --- a/lnet/include/lnet/lib-p30.h +++ b/lnet/include/lnet/lib-p30.h @@ -170,10 +170,10 @@ lib_msg_free (nal_cb_t *nal, lib_msg_t *msg) #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; @@ -246,7 +246,7 @@ static inline lib_msg_t * 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); diff --git a/lnet/include/lnet/list.h b/lnet/include/lnet/list.h index 41613ab..2b63312 100644 --- a/lnet/include/lnet/list.h +++ b/lnet/include/lnet/list.h @@ -233,14 +233,13 @@ static inline void list_splice_init(struct list_head *list, /** * 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 diff --git a/lnet/include/lnet/myrnal.h b/lnet/include/lnet/myrnal.h index 6a61fd5..12b1925 100644 --- a/lnet/include/lnet/myrnal.h +++ b/lnet/include/lnet/myrnal.h @@ -1,5 +1,4 @@ /* -** $Id: myrnal.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $ */ #ifndef MYRNAL_H diff --git a/lnet/include/lnet/nal.h b/lnet/include/lnet/nal.h index c1c50ed..88be63c 100644 --- a/lnet/include/lnet/nal.h +++ b/lnet/include/lnet/nal.h @@ -1,5 +1,4 @@ /* -** $Id: nal.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $ */ #ifndef _NAL_H_ #define _NAL_H_ diff --git a/lnet/include/lnet/ppid.h b/lnet/include/lnet/ppid.h index 34e5dc5..4727599 100644 --- a/lnet/include/lnet/ppid.h +++ b/lnet/include/lnet/ppid.h @@ -1,5 +1,4 @@ /* - * TITLE(ppid_h, "@(#) $Id: ppid.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $"); */ #ifndef _INCppidh_ diff --git a/lnet/include/lnet/stringtab.h b/lnet/include/lnet/stringtab.h index 65ab189..c9683f7 100644 --- a/lnet/include/lnet/stringtab.h +++ b/lnet/include/lnet/stringtab.h @@ -1,5 +1,4 @@ /* -** $Id: stringtab.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $ */ /* * stringtab.h diff --git a/lnet/klnds/socklnd/socklnd.h b/lnet/klnds/socklnd/socklnd.h index 46ee3b7..0bf60ea 100644 --- a/lnet/klnds/socklnd/socklnd.h +++ b/lnet/klnds/socklnd/socklnd.h @@ -273,9 +273,9 @@ extern void ksocknal_close_conn (ksock_conn_t *conn); 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); } diff --git a/lnet/klnds/socklnd/socklnd_cb.c b/lnet/klnds/socklnd/socklnd_cb.c index 388554d..6147d8a 100644 --- a/lnet/klnds/socklnd/socklnd_cb.c +++ b/lnet/klnds/socklnd/socklnd_cb.c @@ -740,15 +740,16 @@ ksocknal_setup_hdr (nal_cb_t *nal, void *private, lib_msg_t *cookie, } 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(). @@ -756,31 +757,31 @@ ksocknal_send (nal_cb_t *nal, void *private, lib_msg_t *cookie, */ 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); } diff --git a/lnet/libcfs/module.c b/lnet/libcfs/module.c index a2eae93..c4ca2e3 100644 --- a/lnet/libcfs/module.c +++ b/lnet/libcfs/module.c @@ -65,8 +65,7 @@ struct semaphore nal_cmd_sem; void kportal_assertion_failed (char *expr, char *file, char *func, 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(); } diff --git a/lustre/portals/doc/ieee.bst b/lustre/portals/doc/ieee.bst index 5367caa..4df7c50 100644 --- a/lustre/portals/doc/ieee.bst +++ b/lustre/portals/doc/ieee.bst @@ -1,7 +1,5 @@ % --------------------------------------------------------------- % -% $Id: ieee.bst,v 1.1.2.1 2003/05/19 04:25:30 braam Exp $ -% % by Paolo.Ienne@di.epfl.ch % % --------------------------------------------------------------- diff --git a/lustre/portals/doc/portals3.lyx b/lustre/portals/doc/portals3.lyx index f3c24e0..8429280 100644 --- a/lustre/portals/doc/portals3.lyx +++ b/lustre/portals/doc/portals3.lyx @@ -7,8 +7,6 @@ {\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 diff --git a/lustre/portals/include/linux/kp30.h b/lustre/portals/include/linux/kp30.h index 46d9406..c5ff808 100644 --- a/lustre/portals/include/linux/kp30.h +++ b/lustre/portals/include/linux/kp30.h @@ -84,44 +84,39 @@ extern unsigned int portal_printk; #define THREAD_SIZE 8192 #endif #ifdef __arch_ia64__ -#define CDEBUG_STACK(var) (&var & (THREAD_SIZE - 1)) +#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 #ifdef __KERNEL__ #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 CHECK_STACK(stack) do { } while(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) @@ -140,10 +135,8 @@ do { \ #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) @@ -156,6 +149,16 @@ do { \ 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__ diff --git a/lustre/portals/include/portals/defines.h b/lustre/portals/include/portals/defines.h index 285f7e0..785ce73 100644 --- a/lustre/portals/include/portals/defines.h +++ b/lustre/portals/include/portals/defines.h @@ -1,5 +1,4 @@ /* -** $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. */ diff --git a/lustre/portals/include/portals/lib-p30.h b/lustre/portals/include/portals/lib-p30.h index 4a61e76..ca92e5f 100644 --- a/lustre/portals/include/portals/lib-p30.h +++ b/lustre/portals/include/portals/lib-p30.h @@ -170,10 +170,10 @@ lib_msg_free (nal_cb_t *nal, lib_msg_t *msg) #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; @@ -246,7 +246,7 @@ static inline lib_msg_t * 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); diff --git a/lustre/portals/include/portals/list.h b/lustre/portals/include/portals/list.h index 41613ab..2b63312 100644 --- a/lustre/portals/include/portals/list.h +++ b/lustre/portals/include/portals/list.h @@ -233,14 +233,13 @@ static inline void list_splice_init(struct list_head *list, /** * 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 diff --git a/lustre/portals/include/portals/myrnal.h b/lustre/portals/include/portals/myrnal.h index 6a61fd5..12b1925 100644 --- a/lustre/portals/include/portals/myrnal.h +++ b/lustre/portals/include/portals/myrnal.h @@ -1,5 +1,4 @@ /* -** $Id: myrnal.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $ */ #ifndef MYRNAL_H diff --git a/lustre/portals/include/portals/nal.h b/lustre/portals/include/portals/nal.h index c1c50ed..88be63c 100644 --- a/lustre/portals/include/portals/nal.h +++ b/lustre/portals/include/portals/nal.h @@ -1,5 +1,4 @@ /* -** $Id: nal.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $ */ #ifndef _NAL_H_ #define _NAL_H_ diff --git a/lustre/portals/include/portals/ppid.h b/lustre/portals/include/portals/ppid.h index 34e5dc5..4727599 100644 --- a/lustre/portals/include/portals/ppid.h +++ b/lustre/portals/include/portals/ppid.h @@ -1,5 +1,4 @@ /* - * TITLE(ppid_h, "@(#) $Id: ppid.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $"); */ #ifndef _INCppidh_ diff --git a/lustre/portals/include/portals/stringtab.h b/lustre/portals/include/portals/stringtab.h index 65ab189..c9683f7 100644 --- a/lustre/portals/include/portals/stringtab.h +++ b/lustre/portals/include/portals/stringtab.h @@ -1,5 +1,4 @@ /* -** $Id: stringtab.h,v 1.1.2.1 2003/05/19 04:25:31 braam Exp $ */ /* * stringtab.h diff --git a/lustre/portals/knals/socknal/socknal.h b/lustre/portals/knals/socknal/socknal.h index 46ee3b7..0bf60ea 100644 --- a/lustre/portals/knals/socknal/socknal.h +++ b/lustre/portals/knals/socknal/socknal.h @@ -273,9 +273,9 @@ extern void ksocknal_close_conn (ksock_conn_t *conn); 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); } diff --git a/lustre/portals/knals/socknal/socknal_cb.c b/lustre/portals/knals/socknal/socknal_cb.c index 388554d..6147d8a 100644 --- a/lustre/portals/knals/socknal/socknal_cb.c +++ b/lustre/portals/knals/socknal/socknal_cb.c @@ -740,15 +740,16 @@ ksocknal_setup_hdr (nal_cb_t *nal, void *private, lib_msg_t *cookie, } 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(). @@ -756,31 +757,31 @@ ksocknal_send (nal_cb_t *nal, void *private, lib_msg_t *cookie, */ 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); } diff --git a/lustre/portals/libcfs/module.c b/lustre/portals/libcfs/module.c index a2eae93..c4ca2e3 100644 --- a/lustre/portals/libcfs/module.c +++ b/lustre/portals/libcfs/module.c @@ -65,8 +65,7 @@ struct semaphore nal_cmd_sem; void kportal_assertion_failed (char *expr, char *file, char *func, 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(); } -- 1.8.3.1