Whamcloud - gitweb
LU-5010 llite: disable readahead optimization
[fs/lustre-release.git] / lustre / llite / rw.c
index a873e9e..355d07e 100644 (file)
@@ -276,7 +276,7 @@ void ll_ra_read_in(struct file *f, struct ll_ra_read *rar)
        ras->ras_consecutive_requests++;
        rar->lrr_reader = current;
 
-       cfs_list_add(&rar->lrr_linkage, &ras->ras_read_beads);
+       list_add(&rar->lrr_linkage, &ras->ras_read_beads);
        spin_unlock(&ras->ras_lock);
 }
 
@@ -287,7 +287,7 @@ void ll_ra_read_ex(struct file *f, struct ll_ra_read *rar)
        ras = ll_ras_get(f);
 
        spin_lock(&ras->ras_lock);
-       cfs_list_del_init(&rar->lrr_linkage);
+       list_del_init(&rar->lrr_linkage);
        spin_unlock(&ras->ras_lock);
 }
 
@@ -295,7 +295,7 @@ static struct ll_ra_read *ll_ra_read_get_locked(struct ll_readahead_state *ras)
 {
         struct ll_ra_read *scan;
 
-        cfs_list_for_each_entry(scan, &ras->ras_read_beads, lrr_linkage) {
+       list_for_each_entry(scan, &ras->ras_read_beads, lrr_linkage) {
                 if (scan->lrr_reader == current)
                         return scan;
         }
@@ -332,8 +332,11 @@ static int cl_read_ahead_page(const struct lu_env *env, struct cl_io *io,
        if (!cp->cpg_defer_uptodate && !PageUptodate(vmpage)) {
                CDEBUG(D_READA, "page index %lu, max_index: %lu\n",
                       ccc_index(cp), *max_index);
-               if (*max_index == 0 || ccc_index(cp) > *max_index)
-                       rc = cl_page_is_under_lock(env, io, page, max_index);
+               /* Disable the optimization on prefetching maximum readahead
+                * index because there is a race with lock cancellation. This
+                * optimization will be revived later.
+                * if (*max_index == 0 || ccc_index(cp) > *max_index) */
+               rc = cl_page_is_under_lock(env, io, page, max_index);
                if (rc == 0) {
                        cp->cpg_defer_uptodate = 1;
                        cp->cpg_ra_used = 0;
@@ -754,7 +757,7 @@ void ll_readahead_init(struct inode *inode, struct ll_readahead_state *ras)
        spin_lock_init(&ras->ras_lock);
        ras_reset(inode, ras, 0);
        ras->ras_requests = 0;
-       CFS_INIT_LIST_HEAD(&ras->ras_read_beads);
+       INIT_LIST_HEAD(&ras->ras_read_beads);
 }
 
 /*