Whamcloud - gitweb
LU-3105 osd: remove capa related stuff from servers
[fs/lustre-release.git] / lustre / osd-zfs / osd_internal.h
index 3807fe1..d746578 100644 (file)
 /*
  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
- */
-/*
- * Copyright (c) 2012, 2013, Intel Corporation.
- * Use is subject to license terms.
+ *
+ * Copyright (c) 2012, 2014, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
 #include <dt_object.h>
 #include <md_object.h>
 #include <lustre_quota.h>
-
-#define _SPL_KMEM_H
-#include <sys/kstat.h>
-#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
+#ifdef SHRINK_STOP
+#undef SHRINK_STOP
 #endif
-
 #include <sys/arc.h>
 #include <sys/nvpair.h>
 #include <sys/zfs_znode.h>
 #include <sys/zap.h>
 
+/**
+ * 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"
@@ -104,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
@@ -159,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];
@@ -223,7 +224,7 @@ struct osd_oi {
 struct osd_seq {
        uint64_t         *os_compat_dirs;
        int              os_subdir_count; /* subdir count for each seq */
-       obd_seq          os_seq;          /* seq number */
+       u64              os_seq;          /* seq number */
        struct list_head os_seq_list;     /* list to seq_list */
 };
 
@@ -248,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;
 
@@ -285,6 +277,10 @@ struct osd_device {
        /* quota slave instance */
        struct qsd_instance     *od_quota_slave;
 
+       struct brw_stats        od_brw_stats;
+       atomic_t                od_r_in_flight;
+       atomic_t                od_w_in_flight;
+
        /* used to debug zerocopy logic: the fields track all
         * allocated, loaned and referenced buffers in use.
         * to be removed once the change is tested well. */
@@ -332,6 +328,7 @@ int osd_statfs(const struct lu_env *, struct dt_device *, struct obd_statfs *);
 extern const struct dt_index_operations osd_acct_index_ops;
 uint64_t osd_quota_fid2dmu(const struct lu_fid *fid);
 extern struct lu_device_operations  osd_lu_ops;
+extern struct dt_index_operations osd_dir_ops;
 int osd_declare_quota(const struct lu_env *env, struct osd_device *osd,
                      qid_t uid, qid_t gid, long long space,
                      struct osd_thandle *oh, bool is_blk, int *flags,
@@ -405,7 +402,7 @@ static inline char *osd_name(struct osd_device *osd)
        return osd->od_dt_dev.dd_lu_dev.ld_obd->obd_name;
 }
 
-#ifdef LPROCFS
+#ifdef CONFIG_PROC_FS
 enum {
        LPROC_OSD_READ_BYTES = 0,
        LPROC_OSD_WRITE_BYTES = 1,
@@ -420,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);
@@ -439,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);
 
@@ -459,7 +457,7 @@ int osd_ost_seq_exists(const struct lu_env *env, struct osd_device *osd,
 int osd_index_try(const struct lu_env *env, struct dt_object *dt,
                  const struct dt_index_features *feat);
 int osd_fld_lookup(const struct lu_env *env, struct osd_device *osd,
-                  obd_seq seq, struct lu_seq_range *range);
+                  u64 seq, struct lu_seq_range *range);
 void osd_zap_cursor_init_serialized(zap_cursor_t *zc, struct objset *os,
                                    uint64_t id, uint64_t dirhash);
 int osd_zap_cursor_init(zap_cursor_t **zc, struct objset *os,
@@ -474,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,
-                  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,
@@ -500,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;
 
@@ -542,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 */