Whamcloud - gitweb
* Fixed problem where struct iovec != ptl_md_iovec_t, causing >1 page PtlMDAttach...
authorpjkirner <pjkirner>
Fri, 23 Sep 2005 02:38:05 +0000 (02:38 +0000)
committerpjkirner <pjkirner>
Fri, 23 Sep 2005 02:38:05 +0000 (02:38 +0000)
lnet/klnds/ptllnd/ptllnd.h
lnet/klnds/ptllnd/ptllnd_cb.c

index 9aefb67..1b0b120 100755 (executable)
@@ -630,13 +630,14 @@ kptllnd_msg_unpack(
 
 
 typedef union {
-        struct iovec iov[PTL_MD_MAX_IOV];
 #ifdef _USING_LUSTRE_PORTALS_
+        struct iovec iov[PTL_MD_MAX_IOV];
         ptl_kiov_t kiov[PTL_MD_MAX_IOV];
+#else /* _USING_CRAY_PORTALS_ */
+        ptl_md_iovec_t iov[PTL_MD_MAX_IOV];
 #endif
 }tempiov_t;
 
-
 void
 kptllnd_setup_md(
         kptl_data_t     *kptllnd_data,
index b547e0d..27109f1 100644 (file)
@@ -148,6 +148,10 @@ kptllnd_setup_md(
 #error "Conflicting compilation directives"
 #endif
 
+                PJK_UT_MSG("payload_offset %d\n",payload_offset);
+                PJK_UT_MSG("payload_niov   %d\n",payload_niov);
+                PJK_UT_MSG("payload_nob    %d\n",payload_nob);
+
                 while (payload_offset >= payload_kiov->kiov_len) {
                         payload_offset -= payload_kiov->kiov_len;
                         payload_kiov++;
@@ -161,13 +165,20 @@ kptllnd_setup_md(
                         LASSERT (payload_niov > 0);
                         LASSERT (niov < sizeof(tempiov->iov)/sizeof(tempiov->iov[0]));
 
+                        PJK_UT_MSG("kiov_page  [%d]=%p (phys)\n",niov,(void*)page_to_phys(payload_kiov->kiov_page));
+                        PJK_UT_MSG("kiov_offset[%d]=%d (phys)\n",niov,payload_kiov->kiov_offset);
+                        PJK_UT_MSG("kiov_len   [%d]=%d (phys)\n",niov,payload_kiov->kiov_len);
+
                         tempiov->iov[niov].iov_base = (void *)(
-                                page_to_phys(payload_kiov->kiov_page) + payload_offset);
-                        tempiov->iov[niov].iov_len = min((int)(payload_kiov->kiov_len - payload_offset),
-                                                        (int)payload_nob);
+                                page_to_phys(payload_kiov->kiov_page) +
+                                payload_kiov->kiov_offset +
+                                payload_offset);
+                        tempiov->iov[niov].iov_len = min(
+                                (int)(payload_kiov->kiov_len - payload_offset),
+                                (int)payload_nob);
 
                         PJK_UT_MSG("iov_base[%d]=%p\n",niov,tempiov->iov[niov].iov_base);
-                        PJK_UT_MSG("iov_len[%d] =%d\n",niov,tempiov->iov[niov].iov_len);
+                        PJK_UT_MSG("iov_len [%d]=%d\n",niov,tempiov->iov[niov].iov_len);
 
                         payload_offset = 0;
                         payload_nob -= tempiov->iov[niov].iov_len;
@@ -187,6 +198,9 @@ kptllnd_setup_md(
          * length, rather it is # iovs
          */
         md->length = niov;
+
+        PJK_UT_MSG("md->options=%x\n",md->options);
+        PJK_UT_MSG("md->length=%d\n",md->length);
 }
 
 int