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);
}
char pool_name[LOV_MAXPOOLNAME + 1];
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;
struct ost_lvb *lvb, __u64 *kms_place);
/* lov_offset.c */
+loff_t stripe_width(struct lov_stripe_md *lsm, unsigned int index);
u64 lov_stripe_size(struct lov_stripe_md *lsm, int index,
u64 ost_size, int stripeno);
int lov_stripe_offset(struct lov_stripe_md *lsm, int index, loff_t lov_off,
int lov_free_memmd(struct lov_stripe_md **lsmp);
void lov_dump_lmm_v1(int level, struct lov_mds_md_v1 *lmm);
-void lov_dump_lmm_v3(int level, struct lov_mds_md_v3 *lmm);
void lov_dump_lmm_common(int level, void *lmmp);
-void lov_dump_lmm(int level, void *lmm);
/* lov_ea.c */
void lsm_free_plain(struct lov_stripe_md *lsm);
#define LOV_MDC_TGT_MAX 256
-/* pools */
-extern struct cfs_hash_ops pool_hash_operations;
/* 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);
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,
ol->ol_comp_id = 0;
}
}
+
+struct pool_desc *lov_pool_find(struct obd_device *obd, char *poolname);
+void lov_pool_putref(struct pool_desc *pool);
#endif