* Author: Alex Zhuravlev <alexey.zhuravlev@intel.com>
*/
-#ifndef EXPORT_SYMTAB
-# define EXPORT_SYMTAB
-#endif
#define DEBUG_SUBSYSTEM S_MDS
#include <obd_class.h>
spin_lock(&imp->imp_lock);
imp->imp_server_timeout = 1;
spin_unlock(&imp->imp_lock);
- imp->imp_client->cli_request_portal = MDS_MDS_PORTAL;
+ imp->imp_client->cli_request_portal = OUT_PORTAL;
CDEBUG(D_OTHER, "%s: Set 'mds' portal and timeout\n",
obd->obd_name);
ltd = &lod->lod_mdt_descs;
RETURN(rc);
}
+static int validate_lod_and_idx(struct lod_device *md, int idx)
+{
+ if (unlikely(idx >= md->lod_ost_descs.ltd_tgts_size ||
+ !cfs_bitmap_check(md->lod_ost_bitmap, idx))) {
+ CERROR("%s: bad idx: %d of %d\n", lod2obd(md)->obd_name, idx,
+ md->lod_ost_descs.ltd_tgts_size);
+ return -EINVAL;
+ }
+
+ if (unlikely(OST_TGT(md, idx) == NULL)) {
+ CERROR("%s: bad lod_tgt_desc for idx: %d\n",
+ lod2obd(md)->obd_name, idx);
+ return -EINVAL;
+ }
+
+ if (unlikely(OST_TGT(md, idx)->ltd_ost == NULL)) {
+ CERROR("%s: invalid lod device, for idx: %d\n",
+ lod2obd(md)->obd_name , idx);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
/*
* allocate array of objects pointers, find/create objects
* stripenr and other fields should be initialized by this moment
GOTO(out, rc);
LASSERTF(fid_is_sane(&info->lti_fid), ""DFID" insane!\n",
PFID(&info->lti_fid));
- /*
- * XXX: assertion is left for testing, to make
- * sure we never process requests till configuration
- * is completed. to be changed to -EINVAL
- */
-
lod_getref(&md->lod_ost_descs);
- LASSERT(cfs_bitmap_check(md->lod_ost_bitmap, idx));
- LASSERT(OST_TGT(md,idx));
- LASSERTF(OST_TGT(md,idx)->ltd_ost, "idx %d\n", idx);
+
+ rc = validate_lod_and_idx(md, idx);
+ if (unlikely(rc != 0)) {
+ lod_putref(md, &md->lod_ost_descs);
+ GOTO(out, rc);
+ }
+
nd = &OST_TGT(md,idx)->ltd_ost->dd_lu_dev;
lod_putref(md, &md->lod_ost_descs);
*/
dt_write_lock(env, next, 0);
/* already initialized? */
- if (lo->ldo_stripe) {
- int i;
- /* check validity */
- for (i = 0; i < lo->ldo_stripenr; i++)
- LASSERTF(lo->ldo_stripe[i], "stripe %d is NULL\n", i);
+ if (lo->ldo_stripe != NULL)
GOTO(out, rc = 0);
- }
if (!dt_object_exists(next))
GOTO(out, rc = 0);
if (!(lu_object_attr(lod2lu_obj(lo)) & S_IFREG))
GOTO(out, rc = 0);
- LASSERT(lo->ldo_stripenr == 0);
-
rc = lod_get_lov_ea(env, lo);
if (rc <= 0)
GOTO(out, rc);
OBD_ALLOC_PTR(lod->lod_qos.lq_statfs_data);
if (NULL == lod->lod_qos.lq_statfs_data)
RETURN(-ENOMEM);
- cfs_waitq_init(&lod->lod_qos.lq_statfs_waitq);
+ init_waitqueue_head(&lod->lod_qos.lq_statfs_waitq);
/* Set up OST pool environment */
lod->lod_pools_hash_body = cfs_hash_create("POOLS", HASH_POOLS_CUR_BITS,