small_io_total_bytes_fix.patch:

Fixed an issue with the small I/O total size being passed to the
trove_bstream_write_list().  The uint32_t was being casted to 
(TROVE_size *)&s_op->req->u.small_io.total_bytes on line 162 of
small_io.sm.

process_multiple_aiocbs.patch:

Fixed the dbpf_bstream_listio_convert() function to actually handle more
than a single aiocb at a time.  This should boost noncontiguous I/O
performance quite a bit.

Index: pvfs2-req-proto.h
===================================================================
RCS file: /anoncvs/pvfs2/src/proto/pvfs2-req-proto.h,v
retrieving revision 1.138
diff -u -r1.138 pvfs2-req-proto.h
--- pvfs2-req-proto.h	24 Jan 2006 21:33:24 -0000	1.138
+++ pvfs2-req-proto.h	18 May 2006 21:29:34 -0000
@@ -953,7 +953,7 @@
     PVFS_offset offsets[SMALL_IO_MAX_SEGMENTS];
     PVFS_size sizes[SMALL_IO_MAX_SEGMENTS];
 
-    uint32_t total_bytes;
+    PVFS_size total_bytes; /* changed from int32_t */
     void * buffer;
 };
 
Index: dbpf-bstream-aio.c
===================================================================
RCS file: /anoncvs/pvfs2/src/io/trove/trove-dbpf/dbpf-bstream-aio.c,v
retrieving revision 1.22
diff -u -r1.22 dbpf-bstream-aio.c
--- dbpf-bstream-aio.c	5 Apr 2006 19:24:32 -0000	1.22
+++ dbpf-bstream-aio.c	18 May 2006 21:30:46 -0000
@@ -100,11 +100,19 @@
                 cur_mem_size = mem_size_array[++mct];
                 cur_mem_off  = mem_offset_array[mct];
             }
+	    else
+	    {
+		cur_mem_size = 0;
+	    }
             if (!oos)
             {
                 cur_stream_size = stream_size_array[++sct];
                 cur_stream_off  = stream_offset_array[sct];
             }
+	    else 
+	    {
+		cur_stream_size = 0;
+	    }
 	}
 	else if (cur_mem_size < cur_stream_size)
         {
@@ -119,6 +127,10 @@
                 cur_mem_size = mem_size_array[++mct];
                 cur_mem_off  = mem_offset_array[mct];
             }
+	    else
+	    {
+		cur_mem_size = 0;
+	    }
 	}
 	else /* cur_mem_size > cur_stream_size */
         {
@@ -133,10 +145,14 @@
                 cur_stream_size = stream_size_array[++sct];
                 cur_stream_off  = stream_offset_array[sct];
             }
+	    else
+	    {
+		cur_stream_size = 0;
+	    }
 	}
 	cur_aiocb_ptr = &aiocb_array[++act];
 
-        if (oom || oos)
+        if ((oom && cur_mem_size == 0) || (oos && cur_stream_size == 0))
         {
             break;
         }
_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to