Whamcloud - gitweb
LU-3230 osp: bail out of precreate_reserve on I/O errors 88/6988/3
authorNathaniel Clark <nathaniel.l.clark@intel.com>
Mon, 15 Jul 2013 17:52:11 +0000 (13:52 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 1 Aug 2013 05:54:51 +0000 (05:54 +0000)
Allow osp_precreate_reserve to propogate error if
precreate_cleanup_ophans recives EIO.

Test-Parameters: testgroup=review-zfs
Signed-off-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Change-Id: Ib6a109df82be610a21391777b9c293d78b2114e6
Reviewed-on: http://review.whamcloud.com/6988
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Li Wei <wei.g.li@intel.com>
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osp/osp_precreate.c

index 11dd60c..329ae47 100644 (file)
@@ -1002,11 +1002,15 @@ static int osp_precreate_ready_condition(const struct lu_env *env,
        if (d->opd_pre_reserved + 1 < osp_objs_precreated(env, d))
                return 1;
 
        if (d->opd_pre_reserved + 1 < osp_objs_precreated(env, d))
                return 1;
 
-       /* ready if OST reported no space and no destoys in progress */
+       /* ready if OST reported no space and no destroys in progress */
        if (d->opd_syn_changes + d->opd_syn_rpc_in_progress == 0 &&
            d->opd_pre_status == -ENOSPC)
                return 1;
 
        if (d->opd_syn_changes + d->opd_syn_rpc_in_progress == 0 &&
            d->opd_pre_status == -ENOSPC)
                return 1;
 
+       /* Bail out I/O fails to OST */
+       if (d->opd_pre_status == -EIO)
+               return 1;
+
        return 0;
 }
 
        return 0;
 }