* Copyright 2009 Sun Microsystems, Inc. All rights reserved
* Use is subject to license terms.
*
- * Copyright (c) 2011, 2012, Whamcloud, Inc.
+ * Copyright (c) 2012, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
#define TGT_BAVAIL(i) (OST_TGT(lod,i)->ltd_statfs.os_bavail * \
OST_TGT(lod,i)->ltd_statfs.os_bsize)
-int qos_add_tgt(struct lod_device *lod, struct lod_ost_desc *ost_desc)
+int qos_add_tgt(struct lod_device *lod, struct lod_tgt_desc *ost_desc)
{
struct lov_qos_oss *oss = NULL, *temposs;
struct obd_export *exp = ost_desc->ltd_exp;
RETURN(rc);
}
-int qos_del_tgt(struct lod_device *lod, struct lod_ost_desc *ost_desc)
+int qos_del_tgt(struct lod_device *lod, struct lod_tgt_desc *ost_desc)
{
struct lov_qos_oss *oss;
int rc = 0;
static int lod_statfs_and_check(const struct lu_env *env, struct lod_device *d,
int index, struct obd_statfs *sfs)
{
- struct lod_ost_desc *ost;
+ struct lod_tgt_desc *ost;
int rc;
LASSERT(d);
static int lod_qos_used(struct lod_device *lod, struct ost_pool *osts,
__u32 index, __u64 *total_wt)
{
- struct lod_ost_desc *ost;
+ struct lod_tgt_desc *ost;
struct lov_qos_oss *oss;
int j;
ENTRY;
struct lov_qos_rr *lqr)
{
struct lov_qos_oss *oss;
- struct lod_ost_desc *ost;
+ struct lod_tgt_desc *ost;
unsigned placed, real_count;
int i, rc;
ENTRY;
int ost_idx,
struct thandle *th)
{
- struct lod_ost_desc *ost;
+ struct lod_tgt_desc *ost;
struct lu_object *o, *n;
struct lu_device *nd;
struct dt_object *dt;
{
struct lod_device *m = lu2lod_dev(lo->ldo_obj.do_lu.lo_dev);
struct obd_statfs *sfs = &lod_env_info(env)->lti_osfs;
- struct lod_ost_desc *ost;
+ struct lod_tgt_desc *ost;
struct dt_object *o;
__u64 total_weight = 0;
int nfound, good_osts, i, rc = 0;
v1 = buf->lb_buf;
magic = v1->lmm_magic;
- if (magic == __swab32(LOV_USER_MAGIC_V1))
+ if (magic == __swab32(LOV_USER_MAGIC_V1)) {
lustre_swab_lov_user_md_v1(v1);
- else if (magic == __swab32(LOV_USER_MAGIC_V3))
+ magic = v1->lmm_magic;
+ } else if (magic == __swab32(LOV_USER_MAGIC_V3)) {
+ v3 = buf->lb_buf;
lustre_swab_lov_user_md_v3(v3);
+ magic = v3->lmm_magic;
+ }
if (unlikely(magic != LOV_MAGIC_V1 && magic != LOV_MAGIC_V3)) {
/* try to use as fully defined striping */
v3 = buf->lb_buf;
lod_object_set_pool(lo, v3->lmm_pool_name);
+ /* In the function below, .hs_keycmp resolves to
+ * pool_hashkey_keycmp() */
+ /* coverity[overrun-buffer-val] */
pool = lod_find_pool(d, v3->lmm_pool_name);
if (pool != NULL) {
if (lo->ldo_def_stripe_offset !=
GOTO(out, rc = -ENOMEM);
lo->ldo_stripes_allocated = lo->ldo_stripenr;
- lod_getref(d);
+ lod_getref(&d->lod_ost_descs);
/* XXX: support for non-0 files w/o objects */
if (lo->ldo_def_stripe_offset >= d->lod_desc.ld_tgt_count) {
lod_qos_statfs_update(env, d);
rc = lod_alloc_rr(env, lo, flag, th);
} else
rc = lod_alloc_specific(env, lo, flag, th);
- lod_putref(d);
+ lod_putref(d, &d->lod_ost_descs);
} else {
/*
* lod_qos_parse_config() found supplied buf as a predefined