X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fosd-zfs%2Fosd_internal.h;h=d74657891b3e64384c5664473793094f0dfbc65b;hb=0f4875343e22bcdfe18708806e172aa234da23a6;hp=47f9a2e1c4bdda33ca121f88fbe90412a13a5669;hpb=7817e4c785d075aae76b635dcf799064590833b0;p=fs%2Flustre-release.git diff --git a/lustre/osd-zfs/osd_internal.h b/lustre/osd-zfs/osd_internal.h index 47f9a2e..d746578 100644 --- a/lustre/osd-zfs/osd_internal.h +++ b/lustre/osd-zfs/osd_internal.h @@ -47,23 +47,35 @@ #include #include #include - -#define _SPL_KMEM_H -/* SPL redefines this but to the same value: ~0UL vs -1, but GCC complains. - * fixed in SPL master 52479ecf58fa89190e384edcf838fecccc786af5 */ +#ifdef SHRINK_STOP #undef SHRINK_STOP -#include -#define kmem_zalloc(a, b) kzalloc(a, b) -#define kmem_free(ptr, sz) ((void)(sz), kfree(ptr)) -#ifndef KM_SLEEP -#define KM_SLEEP GFP_KERNEL #endif - #include #include #include #include +/** + * By design including kmem.h overrides the Linux slab interfaces to provide + * the Illumos kmem cache interfaces. To override this and gain access to + * the Linux interfaces these preprocessor macros must be undefined. + */ +#ifdef kmem_cache_destroy +#undef kmem_cache_destroy +#endif + +#ifdef kmem_cache_create +#undef kmem_cache_create +#endif + +#ifdef kmem_cache_alloc +#undef kmem_cache_alloc +#endif + +#ifdef kmem_cache_free +#undef kmem_cache_free +#endif + #define LUSTRE_ROOT_FID_SEQ 0 #define DMU_OSD_SVNAME "svname" #define DMU_OSD_OI_NAME_BASE "oi" @@ -105,7 +117,6 @@ struct osd_it_quota { struct osd_zap_it { zap_cursor_t *ozi_zc; struct osd_object *ozi_obj; - struct lustre_capa *ozi_capa; unsigned ozi_reset:1; /* 1 -- no need to advance */ /* ozi_pos - position of the cursor: * 0 - before any record @@ -160,22 +171,11 @@ struct osd_thread_info { * XXX temporary: for ->i_op calls. */ struct timespec oti_time; - /* - * XXX temporary: for capa operations. - */ - struct lustre_capa_key oti_capa_key; - struct lustre_capa oti_capa; struct ost_id oti_ostid; char oti_buf[64]; - /** osd iterator context used for iterator session */ - union { - struct osd_zap_it oti_it_zap; - struct osd_it_quota oti_it_quota; - }; - char oti_str[64]; union { char oti_key[MAXNAMELEN + 1]; @@ -191,7 +191,6 @@ struct osd_thread_info { struct lquota_id_info oti_qi; struct lu_seq_range oti_seq_range; - unsigned int oti_it_inline:1; }; extern struct lu_context_key osd_key; @@ -250,15 +249,6 @@ struct osd_device { * name is the same as in ZFS to use defines SA_ZPL_...*/ sa_attr_type_t *z_attr_table; - /* - * Fid Capability - */ - unsigned int od_fl_capa:1; - unsigned long od_capa_timeout; - __u32 od_capa_alg; - struct lustre_capa_key *od_capa_keys; - struct hlist_head *od_capa_hash; - struct proc_dir_entry *od_proc_entry; struct lprocfs_stats *od_stats; @@ -427,8 +417,9 @@ enum { LPROC_OSD_LAST, }; +extern struct kmem_cache *osd_zapit_cachep; /* osd_lproc.c */ -extern struct lprocfs_seq_vars lprocfs_osd_obd_vars[]; +extern struct lprocfs_vars lprocfs_osd_obd_vars[]; int osd_procfs_init(struct osd_device *osd, const char *name); int osd_procfs_fini(struct osd_device *osd); @@ -446,7 +437,7 @@ int osd_object_sa_update(struct osd_object *obj, sa_attr_type_t type, int __osd_zap_create(const struct lu_env *env, struct osd_device *osd, dmu_buf_t **zap_dbp, dmu_tx_t *tx, struct lu_attr *la, uint64_t parent, zap_flags_t flags); -int __osd_object_create(const struct lu_env *env, struct osd_device *osd, +int __osd_object_create(const struct lu_env *env, struct osd_object *obj, dmu_buf_t **dbp, dmu_tx_t *tx, struct lu_attr *la, uint64_t parent); @@ -481,21 +472,19 @@ int __osd_xattr_get_large(const struct lu_env *env, struct osd_device *osd, uint64_t xattr, struct lu_buf *buf, const char *name, int *sizep); int osd_xattr_get(const struct lu_env *env, struct dt_object *dt, - struct lu_buf *buf, const char *name, - struct lustre_capa *capa); + struct lu_buf *buf, const char *name); int osd_declare_xattr_set(const struct lu_env *env, struct dt_object *dt, const struct lu_buf *buf, const char *name, int fl, struct thandle *handle); int osd_xattr_set(const struct lu_env *env, struct dt_object *dt, const struct lu_buf *buf, const char *name, int fl, - struct thandle *handle, struct lustre_capa *capa); + struct thandle *handle); int osd_declare_xattr_del(const struct lu_env *env, struct dt_object *dt, const char *name, struct thandle *handle); int osd_xattr_del(const struct lu_env *env, struct dt_object *dt, - const char *name, struct thandle *handle, - struct lustre_capa *capa); + const char *name, struct thandle *handle); int osd_xattr_list(const struct lu_env *env, struct dt_object *dt, - const struct lu_buf *lb, struct lustre_capa *capa); + const struct lu_buf *lb); void __osd_xattr_declare_set(const struct lu_env *env, struct osd_object *obj, int vallen, const char *name, struct osd_thandle *oh); int __osd_sa_xattr_set(const struct lu_env *env, struct osd_object *obj, @@ -507,7 +496,7 @@ int __osd_xattr_set(const struct lu_env *env, struct osd_object *obj, static inline int osd_xattr_set_internal(const struct lu_env *env, struct osd_object *obj, const struct lu_buf *buf, const char *name, int fl, - struct osd_thandle *oh, struct lustre_capa *capa) + struct osd_thandle *oh) { int rc; @@ -549,4 +538,21 @@ static inline void dsl_pool_config_exit(dsl_pool_t *dp, char *name) #endif +#ifdef HAVE_SA_SPILL_ALLOC +static inline void * +osd_zio_buf_alloc(size_t size) +{ + return sa_spill_alloc(KM_SLEEP); +} + +static inline void +osd_zio_buf_free(void *buf, size_t size) +{ + sa_spill_free(buf); +} +#else +#define osd_zio_buf_alloc(size) zio_buf_alloc(size) +#define osd_zio_buf_free(buf, size) zio_buf_free(buf, size) +#endif + #endif /* _OSD_INTERNAL_H */