X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Flod%2Flod_internal.h;h=7d9b95fc51d2d9005b00952ea1ec3e7fbbd555c8;hp=4eab8cd7312e0fe0760f59fbcdf24baca05f1d6a;hb=de2d5808bd2987f76d2486272e1a9c192ba277d4;hpb=60e07b972114df24105a3a1bfa7365892f72a4a7 diff --git a/lustre/lod/lod_internal.h b/lustre/lod/lod_internal.h index 4eab8cd..7d9b95f 100644 --- a/lustre/lod/lod_internal.h +++ b/lustre/lod/lod_internal.h @@ -158,7 +158,8 @@ struct lod_device { spinlock_t lod_connects_lock; int lod_connects; unsigned int lod_recovery_completed:1, - lod_initialized:1; + lod_initialized:1, + lod_lmv_failout:1; /* lov settings descriptor storing static information */ struct lov_desc lod_desc; @@ -278,11 +279,11 @@ struct lod_thread_info { struct lu_attr lti_attr; struct lod_it lti_it; struct ldlm_res_id lti_res_id; - - /* used to hold lu_dirent, NAME_MAX + sizeof(struct lu_dirent) */ - char lti_key[NAME_MAX + sizeof(struct lu_dirent)]; - + /* used to hold lu_dirent, sizeof(struct lu_dirent) + NAME_MAX */ + char lti_key[sizeof(struct lu_dirent) + NAME_MAX]; struct dt_object_format lti_format; + struct lu_name lti_name; + struct lu_buf lti_linkea_buf; }; extern const struct lu_device_operations lod_lu_ops; @@ -358,6 +359,17 @@ static inline struct lod_thread_info *lod_env_info(const struct lu_env *env) return info; } +static inline struct lu_name * +lod_name_get(const struct lu_env *env, const void *area, int len) +{ + struct lu_name *lname; + + lname = &lod_env_info(env)->lti_name; + lname->ln_name = area; + lname->ln_namelen = len; + return lname; +} + #define lod_foreach_ost(__dev, index) \ if ((__dev)->lod_osts_size > 0) \ cfs_foreach_bit((__dev)->lod_ost_bitmap, (index)) @@ -414,7 +426,8 @@ int lod_initialize_objects(const struct lu_env *env, struct lod_object *mo, struct lov_ost_data_v1 *objs); int lod_store_def_striping(const struct lu_env *env, struct dt_object *dt, struct thandle *th); -int lod_verify_striping(struct lod_device *d, const struct lu_buf *buf, int specific); +int lod_verify_striping(struct lod_device *d, const struct lu_buf *buf, + bool is_from_disk); int lod_generate_and_set_lovea(const struct lu_env *env, struct lod_object *mo, struct thandle *th); int lod_ea_store_resize(struct lod_thread_info *info, int size); @@ -441,11 +454,12 @@ int qos_add_tgt(struct lod_device*, struct lod_tgt_desc *); int qos_del_tgt(struct lod_device *, struct lod_tgt_desc *); /* lproc_lod.c */ -void lprocfs_lod_init_vars(struct lprocfs_static_vars *lvars); int lod_procfs_init(struct lod_device *lod); void lod_procfs_fini(struct lod_device *lod); /* lod_object.c */ +int lod_load_lmv_shards(const struct lu_env *env, struct lod_object *lo, + struct lu_buf *buf, bool resize); int lod_object_set_pool(struct lod_object *o, char *pool); int lod_declare_striped_object(const struct lu_env *env, struct dt_object *dt, struct lu_attr *attr,