Whamcloud - gitweb
Branch: b1_8
authorwangdi <wangdi>
Fri, 27 Jun 2008 18:15:16 +0000 (18:15 +0000)
committerwangdi <wangdi>
Fri, 27 Jun 2008 18:15:16 +0000 (18:15 +0000)
miss stride_offset in stride read-ahead.
b=16172
i=Oleg,Johann

lustre/ChangeLog
lustre/llite/rw.c

index 19d35b3..5a6189e 100644 (file)
@@ -175,6 +175,15 @@ Description: ldiskfs error: XXX blocks in bitmap, YYY in gd
 Details    : If blocks per group is less than blocksize*8, set rest of the
             bitmap to 1.
 
+Severity   : major 
+Frequency  : Application do stride read on lustre 
+Bugzilla   : 16172
+Description: The read performance will drop a lot if the application does
+            stride read.
+Details    : Because the stride_start_offset are missing in stride read-ahead,
+            it will cause clients read a lot of unused pages in read-ahead,
+            then the read-performance drops.
+
 -------------------------------------------------------------------------------
 
 
index b29cbf8..2e6a71f 100644 (file)
@@ -1381,13 +1381,14 @@ static int ll_readahead(struct ll_readahead_state *ras,
                 ras->ras_next_readahead = max(end, end + 1);
                 RAS_CDEBUG(ras);
         }
-       ria.ria_start = start;
-       ria.ria_end = end;
-       /* If stride I/O mode is detected, get stride window*/
-       if (stride_io_mode(ras)) {
-               ria.ria_length = ras->ras_stride_length;
-               ria.ria_pages = ras->ras_stride_pages;
-       }
+        ria.ria_start = start;
+        ria.ria_end = end;
+        /* If stride I/O mode is detected, get stride window*/
+        if (stride_io_mode(ras)) {
+                ria.ria_stoff = ras->ras_stride_offset;
+                ria.ria_length = ras->ras_stride_length;
+                ria.ria_pages = ras->ras_stride_pages;
+        }
         spin_unlock(&ras->ras_lock);
 
         if (end == 0) {