* Copyright 2009 Sun Microsystems, Inc. All rights reserved
* Use is subject to license terms.
*
- * Copyright (c) 2012, Intel Corporation.
+ * Copyright (c) 2012, 2013, Intel Corporation.
*/
/*
* lustre/lod/lod_object.c
* Author: Alex Zhuravlev <alexey.zhuravlev@intel.com>
*/
-#ifndef EXPORT_SYMTAB
-# define EXPORT_SYMTAB
-#endif
#define DEBUG_SUBSYSTEM S_MDS
#include <obd.h>
#include "lod_internal.h"
-extern cfs_mem_cache_t *lod_object_kmem;
+extern struct kmem_cache *lod_object_kmem;
static const struct dt_body_operations lod_body_lnk_ops;
static int lod_index_lookup(const struct lu_env *env, struct dt_object *dt,
struct lov_desc *desc = &dev->lod_desc;
if (buf->lb_buf == NULL) {
- rc = sizeof(struct lov_user_md_v1);
- } else if (buf->lb_len >= sizeof(struct lov_user_md_v1)) {
- lum->lmm_magic = LOV_USER_MAGIC_V1;
- ostid_set_seq(&lum->lmm_oi, FID_SEQ_LOV_DEFAULT);
- lum->lmm_pattern = desc->ld_pattern;
- lum->lmm_stripe_size = desc->ld_default_stripe_size;
- lum->lmm_stripe_count = desc->ld_default_stripe_count;
- lum->lmm_stripe_offset = desc->ld_default_stripe_offset;
- rc = sizeof(struct lov_user_md_v1);
+ rc = sizeof(*lum);
+ } else if (buf->lb_len >= sizeof(*lum)) {
+ lum->lmm_magic = cpu_to_le32(LOV_USER_MAGIC_V1);
+ lmm_oi_set_seq(&lum->lmm_oi, FID_SEQ_LOV_DEFAULT);
+ lmm_oi_set_id(&lum->lmm_oi, 0);
+ lmm_oi_cpu_to_le(&lum->lmm_oi, &lum->lmm_oi);
+ lum->lmm_pattern = cpu_to_le32(desc->ld_pattern);
+ lum->lmm_stripe_size = cpu_to_le32(
+ desc->ld_default_stripe_size);
+ lum->lmm_stripe_count = cpu_to_le16(
+ desc->ld_default_stripe_count);
+ lum->lmm_stripe_offset = cpu_to_le16(
+ desc->ld_default_stripe_offset);
+ rc = sizeof(*lum);
} else {
rc = -ERANGE;
}
l->ldo_def_stripe_size = 0;
l->ldo_def_stripenr = 0;
- LASSERT(buf);
- LASSERT(buf->lb_buf);
+ LASSERT(buf != NULL && buf->lb_buf != NULL);
lum = buf->lb_buf;
rc = lod_verify_striping(d, buf, 0);
const char *name, struct thandle *th,
struct lustre_capa *capa)
{
+ if (!strcmp(name, XATTR_NAME_LOV))
+ lod_object_free_striping(env, lod_dt_obj(dt));
return dt_xattr_del(env, dt_object_child(dt), name, th, capa);
}
struct dt_allocation_hint *ah,
struct dt_object *parent,
struct dt_object *child,
- cfs_umode_t child_mode)
+ umode_t child_mode)
{
struct lod_device *d = lu2lod_dev(child->do_lu.lo_dev);
struct dt_object *nextp = NULL;
* can be called with local object existing
*/
if (!dt_object_exists(nextc) || dt_object_remote(nextc))
- nextc->do_ops->do_ah_init(env, ah, nextp, nextc, child_mode);
+ nextc->do_ops->do_ah_init(env, ah, dt_object_remote(nextp) ?
+ NULL : nextp, nextc, child_mode);
if (S_ISDIR(child_mode)) {
if (lp->ldo_striping_cached == 0) {
v3->lmm_magic = cpu_to_le32(LOV_MAGIC_V3);
v3->lmm_pattern = cpu_to_le32(LOV_PATTERN_RAID0);
- fid_to_ostid(lu_object_fid(&dt->do_lu), &v3->lmm_oi);
- ostid_cpu_to_le(&v3->lmm_oi, &v3->lmm_oi);
+ fid_to_lmm_oi(lu_object_fid(&dt->do_lu), &v3->lmm_oi);
+ lmm_oi_cpu_to_le(&v3->lmm_oi, &v3->lmm_oi);
v3->lmm_stripe_size = cpu_to_le32(lo->ldo_def_stripe_size);
v3->lmm_stripe_count = cpu_to_le32(lo->ldo_def_stripenr);
v3->lmm_stripe_offset = cpu_to_le16(lo->ldo_def_stripe_offset);
int rc = 0, i;
ENTRY;
- LASSERT(lo->ldo_stripe);
- LASSERT(lo->ldo_stripenr > 0);
LASSERT(lo->ldo_striping_cached == 0);
/* create all underlying objects */
lo->ldo_stripes_allocated = 0;
}
lo->ldo_stripenr = 0;
+ lo->ldo_pattern = 0;
}
/*