LASSERT(ost);
rc = dt_statfs(env, ost->ltd_ost, sfs);
+
+ if (rc == -ENOSPC)
+ RETURN(rc);
+
if (rc && rc != -ENOTCONN)
CERROR("%s: statfs: rc = %d\n", lod2obd(d)->obd_name, rc);
#define LOV_CREATE_RESEED_MIN 2000
/**
- * Check if an OST is full.
- *
- * Check whether an OST should be considered full based
- * on the given statfs data.
- *
- * \param[in] msfs statfs data
- *
- * \retval false not full
- * \retval true full
- */
-static int inline lod_qos_dev_is_full(struct obd_statfs *msfs)
-{
- __u64 used;
- int bs = msfs->os_bsize;
-
- LASSERT(((bs - 1) & bs) == 0);
-
- /* the minimum of 0.1% used blocks and 1GB bytes. */
- used = min_t(__u64, (msfs->os_blocks - msfs->os_bfree) >> 10,
- 1 << (31 - ffs(bs)));
- return (msfs->os_bavail < used);
-}
-
-/**
* Initialize temporary OST-in-use array.
*
* Allocate or extend the array used to mark targets already assigned to a new
}
/*
- * skip full devices
- */
- if (lod_qos_dev_is_full(sfs)) {
- QOS_DEBUG("#%d is full\n", ost_idx);
- goto out_return;
- }
-
- /*
* We expect number of precreated objects in f_ffree at
* the first iteration, skip OSPs with no objects ready
*/
continue;
}
- /*
- * skip full devices
- */
- if (lod_qos_dev_is_full(sfs))
- continue;
-
/* Fail Check before osc_precreate() is called
so we can only 'fail' single OSC. */
if (OBD_FAIL_CHECK(OBD_FAIL_MDS_OSC_PRECREATE) &&