Whamcloud - gitweb
LU-4423 lov: check return value of lov_sub_get()
[fs/lustre-release.git] / lustre / lov / lov_io.c
index 47a2c51..56e1ba1 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -413,7 +409,7 @@ static int lov_io_iter_init(const struct lu_env *env,
                if (rc != 0)
                        break;
 
-               CDEBUG(D_VFSTRACE, "shrink: %d ["LPU64", "LPU64")\n",
+               CDEBUG(D_VFSTRACE, "shrink: %d [%llu, %llu)\n",
                       stripe, start, end);
 
                list_add_tail(&sub->sub_linkage, &lio->lis_active);
@@ -447,8 +443,8 @@ static int lov_io_rw_iter_init(const struct lu_env *env,
                                               next) - io->u.ci_rw.crw_pos;
                 lio->lis_pos    = io->u.ci_rw.crw_pos;
                 lio->lis_endpos = io->u.ci_rw.crw_pos + io->u.ci_rw.crw_count;
-               CDEBUG(D_VFSTRACE, "stripe: "LPU64" chunk: ["LPU64", "LPU64") "
-                      LPU64"\n", (__u64)start, lio->lis_pos, lio->lis_endpos,
+               CDEBUG(D_VFSTRACE, "stripe: %llu chunk: [%llu, %llu) "
+                      "%llu\n", (__u64)start, lio->lis_pos, lio->lis_endpos,
                       (__u64)lio->lis_io_endpos);
        }
        /*
@@ -591,6 +587,8 @@ static int lov_io_read_ahead(const struct lu_env *env,
                RETURN(-EIO);
 
        sub = lov_sub_get(env, lio, stripe);
+       if (IS_ERR(sub))
+               return PTR_ERR(sub);
 
        lov_stripe_offset(loo->lo_lsm, cl_offset(obj, start), stripe, &suboff);
        rc = cl_io_read_ahead(sub->sub_env, sub->sub_io,
@@ -616,7 +614,7 @@ static int lov_io_read_ahead(const struct lu_env *env,
        if (ra_end != CL_PAGE_EOF)
                ra_end = lov_stripe_pgoff(loo->lo_lsm, ra_end, stripe);
 
-       pps = loo->lo_lsm->lsm_stripe_size >> PAGE_CACHE_SHIFT;
+       pps = loo->lo_lsm->lsm_stripe_size >> PAGE_SHIFT;
 
        CDEBUG(D_READA, DFID " max_index = %lu, pps = %u, "
               "stripe_size = %u, stripe no = %u, start index = %lu\n",