Whamcloud - gitweb
LU-8018 lov: ld_target could be NULL 11/21411/7
authorBobi Jam <bobijam.xu@intel.com>
Tue, 19 Jul 2016 00:25:01 +0000 (08:25 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 26 Sep 2016 15:19:45 +0000 (15:19 +0000)
lov_device::ld_target[ost_idx] could be NULL if the OST target is
not filled in lov_device::ld_lov::lov_tgt_desc[ost_idx] yet.

Signed-off-by: Bobi Jam <bobijam.xu@intel.com>
Change-Id: I1eddb49b3c3518828c531af568b851465ccdffa3
Reviewed-on: http://review.whamcloud.com/21411
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/lov/lov_object.c

index 8df5f5f..cc05543 100644 (file)
@@ -271,6 +271,12 @@ static int lov_init_raid0(const struct lu_env *env, struct lov_device *dev,
                        if (result != 0)
                                GOTO(out, result);
 
                        if (result != 0)
                                GOTO(out, result);
 
+                       if (dev->ld_target[ost_idx] == NULL) {
+                               CERROR("%s: OST %04x is not initialized\n",
+                                      lov2obd(dev->ld_lov)->obd_name, ost_idx);
+                               GOTO(out, result = -EIO);
+                       }
+
                        subdev = lovsub2cl_dev(dev->ld_target[ost_idx]);
                        subconf->u.coc_oinfo = oinfo;
                        LASSERTF(subdev != NULL, "not init ost %d\n", ost_idx);
                        subdev = lovsub2cl_dev(dev->ld_target[ost_idx]);
                        subconf->u.coc_oinfo = oinfo;
                        LASSERTF(subdev != NULL, "not init ost %d\n", ost_idx);