[lustre-devel] [bug report] staging: lustre: clio: Revise read ahead implementation

Dan Carpenter dan.carpenter at oracle.com
Thu Oct 20 04:17:36 PDT 2016


Hello Jinshan Xiong,

The patch 1e1db2a97be5: "staging: lustre: clio: Revise read ahead
implementation" from Oct 2, 2016, leads to the following static
checker warning:

	drivers/staging/lustre/lustre/lov/lov_io.c:611 lov_io_read_ahead()
	error: 'sub' dereferencing possible ERR_PTR()

drivers/staging/lustre/lustre/lov/lov_io.c
   589  static int lov_io_read_ahead(const struct lu_env *env,
   590                               const struct cl_io_slice *ios,
   591                               pgoff_t start, struct cl_read_ahead *ra)
   592  {
   593          struct lov_io *lio = cl2lov_io(env, ios);
   594          struct lov_object *loo = lio->lis_object;
   595          struct cl_object *obj = lov2cl(loo);
   596          struct lov_layout_raid0 *r0 = lov_r0(loo);
   597          unsigned int pps; /* pages per stripe */
   598          struct lov_io_sub *sub;
   599          pgoff_t ra_end;
   600          loff_t suboff;
   601          int stripe;
   602          int rc;
   603  
   604          stripe = lov_stripe_number(loo->lo_lsm, cl_offset(obj, start));
   605          if (unlikely(!r0->lo_sub[stripe]))
   606                  return -EIO;
   607  
   608          sub = lov_sub_get(env, lio, stripe);
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Do we need error handling here?

   609  
   610          lov_stripe_offset(loo->lo_lsm, cl_offset(obj, start), stripe, &suboff);
   611          rc = cl_io_read_ahead(sub->sub_env, sub->sub_io,
   612                                cl_index(lovsub2cl(r0->lo_sub[stripe]), suboff),
   613                                ra);
   614          lov_sub_put(sub);
   615  

regards,
dan carpenter


More information about the lustre-devel mailing list