X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Flov%2Flov_internal.h;h=d7ca81ff62318420a39dedd00b8b6faa8db92024;hb=8b11e37f019ca5eddd977974dd496a8f09f58887;hp=33aa806850df4e44f381537ac9a8c4e299ce5804;hpb=6a20bdcc608bc2b933774b9f34ec25395e920a54;p=fs%2Flustre-release.git diff --git a/lustre/lov/lov_internal.h b/lustre/lov/lov_internal.h index 33aa806..d7ca81f 100644 --- a/lustre/lov/lov_internal.h +++ b/lustre/lov/lov_internal.h @@ -137,7 +137,7 @@ static inline size_t lov_comp_md_size(const struct lov_stripe_md *lsm) stripe_count = 0; size += sizeof(*lsme); - size += lov_mds_md_size(lsme->lsme_stripe_count, + size += lov_mds_md_size(stripe_count, lsme->lsme_magic); } @@ -234,14 +234,18 @@ void lsm_free(struct lov_stripe_md *lsm); struct pool_desc { char pool_name[LOV_MAXPOOLNAME + 1]; - struct ost_pool pool_obds; + struct lu_tgt_pool pool_obds; atomic_t pool_refcount; - struct hlist_node pool_hash; /* access by poolname */ + struct rhash_head pool_hash; /* access by poolname */ struct list_head pool_list; /* serial access */ + struct rcu_head pool_rcu; struct proc_dir_entry *pool_proc_entry; struct obd_device *pool_lobd; /* owner */ }; +int lov_pool_hash_init(struct rhashtable *tbl); +void lov_pool_hash_destroy(struct rhashtable *tbl); + struct lov_request { struct obd_info rq_oi; struct lov_request_set *rq_rqset; @@ -331,14 +335,12 @@ extern struct lu_device_type lov_device_type; #define LOV_MDC_TGT_MAX 256 -/* pools */ -extern struct cfs_hash_ops pool_hash_operations; -/* ost_pool methods */ -int lov_ost_pool_init(struct ost_pool *op, unsigned int count); -int lov_ost_pool_extend(struct ost_pool *op, unsigned int min_count); -int lov_ost_pool_add(struct ost_pool *op, __u32 idx, unsigned int min_count); -int lov_ost_pool_remove(struct ost_pool *op, __u32 idx); -int lov_ost_pool_free(struct ost_pool *op); +/* lu_tgt_pool methods */ +int lov_ost_pool_init(struct lu_tgt_pool *op, unsigned int count); +int lov_ost_pool_extend(struct lu_tgt_pool *op, unsigned int min_count); +int lov_ost_pool_add(struct lu_tgt_pool *op, __u32 idx, unsigned int min_count); +int lov_ost_pool_remove(struct lu_tgt_pool *op, __u32 idx); +int lov_ost_pool_free(struct lu_tgt_pool *op); /* high level pool methods */ int lov_pool_new(struct obd_device *obd, char *poolname); @@ -367,7 +369,7 @@ static inline bool lov_oinfo_is_dummy(const struct lov_oinfo *loi) static inline struct obd_device *lov2obd(const struct lov_obd *lov) { - return container_of0(lov, struct obd_device, u.lov); + return container_of_safe(lov, struct obd_device, u.lov); } static inline void lov_lsm2layout(struct lov_stripe_md *lsm,