Whamcloud - gitweb
LU-6050 target: control OST-index in IDIF via ROCOMPAT flag
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_internal.h
index 6d92a31..8ee1865 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2013, Intel Corporation.
+ * Copyright (c) 2011, 2014, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -70,6 +70,7 @@
 #include "osd_quota_fmt.h"
 
 struct inode;
+extern struct kmem_cache *dynlock_cachep;
 
 #define OSD_COUNTERS (0)
 
@@ -144,7 +145,7 @@ struct osd_obj_seq {
        int              oos_subdir_count; /* subdir count for each seq */
        struct dentry    *oos_root;        /* O/<seq> */
        struct dentry    **oos_dirs;       /* O/<seq>/d0-dXX */
-       obd_seq          oos_seq;          /* seq number */
+       u64              oos_seq;          /* seq number */
        struct list_head oos_seq_list;     /* list to seq_list */
 };
 
@@ -158,7 +159,7 @@ struct osd_obj_map {
 
 struct osd_mdobj {
        struct dentry   *om_root;      /* AGENT/<index> */
-       obd_seq          om_index;     /* mdt index */
+       u64              om_index;     /* mdt index */
        struct list_head om_list;      /* list to omm_list */
 };
 
@@ -233,19 +234,19 @@ struct osd_device {
        unsigned int              od_fl_capa:1,
                                  od_maybe_new:1,
                                  od_noscrub:1,
-                                 od_dirent_journal:1,
                                  od_igif_inoi:1,
                                  od_check_ff:1,
                                  od_is_ost:1,
-                                 od_lma_self_repair:1;
+                                 od_index_in_idif:1;
 
-        unsigned long             od_capa_timeout;
-        __u32                     od_capa_alg;
-        struct lustre_capa_key   *od_capa_keys;
+       unsigned long             od_capa_timeout;
+       __u32                     od_capa_alg;
+       __u32                     od_dirent_journal;
+       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;
+       struct lprocfs_stats     *od_stats;
 
        spinlock_t                od_osfs_lock;
 
@@ -283,9 +284,9 @@ struct osd_device {
         * OI scrub to scan the whole the device. */
        __u64                    od_full_scrub_ratio;
        /* If the speed of found bad OI mappings (per minute)
-        * exceeds the osd_device::od_full_scrub_speed, then
-        * trigger OI scrub to scan the whole the device. */
-       __u64                    od_full_scrub_speed;
+        * exceeds the osd_device::od_full_scrub_threshold_rate,
+        * then trigger OI scrub to scan the whole device. */
+       __u64                    od_full_scrub_threshold_rate;
 };
 
 enum osd_full_scrub_ratio {
@@ -300,7 +301,7 @@ enum osd_full_scrub_ratio {
        OFSR_DEFAULT    = 10000,
 };
 
-#define FULL_SCRUB_SPEED_DEFULT        60
+#define FULL_SCRUB_THRESHOLD_RATE_DEFAULT      60
 
 /* There are at most 10 uid/gids are affected in a transaction, and
  * that's rename case:
@@ -374,7 +375,7 @@ enum dt_txn_op {
  * osd dev stats
  */
 
-#ifdef LPROCFS
+#ifdef CONFIG_PROC_FS
 enum {
         LPROC_OSD_READ_BYTES    = 0,
         LPROC_OSD_WRITE_BYTES   = 1,
@@ -426,17 +427,18 @@ struct osd_it_ea_dirent {
  * mode (i.e. iterator over ldiskfs style directory)
  */
 struct osd_it_ea {
-        struct osd_object   *oie_obj;
-        /** used in ldiskfs iterator, to stored file pointer */
-        struct file          oie_file;
-        /** how many entries have been read-cached from storage */
-        int                  oie_rd_dirent;
-        /** current entry is being iterated by caller */
-        int                  oie_it_dirent;
-        /** current processing entry */
-        struct osd_it_ea_dirent *oie_dirent;
-        /** buffer to hold entries, size == OSD_IT_EA_BUFSIZE */
-        void                *oie_buf;
+       struct osd_object       *oie_obj;
+       /** used in ldiskfs iterator, to stored file pointer */
+       struct file             oie_file;
+       /** how many entries have been read-cached from storage */
+       int                     oie_rd_dirent;
+       /** current entry is being iterated by caller */
+       int                     oie_it_dirent;
+       /** current processing entry */
+       struct osd_it_ea_dirent *oie_dirent;
+       /** buffer to hold entries, size == OSD_IT_EA_BUFSIZE */
+       void                    *oie_buf;
+       struct dentry           oie_dentry;
 };
 
 /**
@@ -516,10 +518,10 @@ struct osd_thread_info {
          * XXX temporary: for ->i_op calls.
          */
         struct timespec        oti_time;
-        /*
-         * XXX temporary: fake struct file for osd_object_sync
-         */
-        struct file            oti_file;
+       /*
+        * XXX temporary: fake struct file for osd_object_sync
+        */
+       struct file            oti_file;
         /*
          * XXX temporary: for capa operations.
          */
@@ -536,18 +538,9 @@ struct osd_thread_info {
          * in open iterator session.
          */
 
-        /** osd iterator context used for iterator session */
-
-       union {
-               struct osd_it_iam       oti_it;
-               /* ldiskfs iterator data structure,
-                * see osd_it_ea_{init, fini} */
-               struct osd_it_ea        oti_it_ea;
-               struct osd_it_quota     oti_it_quota;
-       };
-
        /** pre-allocated buffer used by oti_it_ea, size OSD_IT_EA_BUFSIZE */
        void                    *oti_it_ea_buf;
+       unsigned int            oti_it_ea_buf_used:1;
 
        struct kstatfs          oti_ksfs;
 
@@ -567,7 +560,6 @@ struct osd_thread_info {
 
        struct osd_idmap_cache oti_cache;
 
-       unsigned int           oti_it_inline:1;
         int                    oti_r_locks;
         int                    oti_w_locks;
         int                    oti_txns;
@@ -642,13 +634,16 @@ static inline int __osd_xattr_set(struct osd_thread_info *info,
        return inode->i_op->setxattr(dentry, name, buf, buflen, fl);
 }
 
-#ifdef LPROCFS
+#ifdef CONFIG_PROC_FS
 /* osd_lproc.c */
-extern struct lprocfs_seq_vars lprocfs_osd_obd_vars[];
-extern struct lprocfs_seq_vars lprocfs_osd_module_vars[];
+extern struct lprocfs_vars lprocfs_osd_obd_vars[];
+extern struct lprocfs_vars lprocfs_osd_module_vars[];
 int osd_procfs_init(struct osd_device *osd, const char *name);
 int osd_procfs_fini(struct osd_device *osd);
 void osd_brw_stats_update(struct osd_device *osd, struct osd_iobuf *iobuf);
+#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(3, 0, 52, 0)
+int osd_register_proc_index_in_idif(struct osd_device *osd);
+#endif
 
 #endif
 int osd_statfs(const struct lu_env *env, struct dt_device *dev,
@@ -661,8 +656,8 @@ int osd_ea_fid_set(struct osd_thread_info *info, struct inode *inode,
                   const struct lu_fid *fid, __u32 compat, __u32 incompat);
 int osd_get_lma(struct osd_thread_info *info, struct inode *inode,
                struct dentry *dentry, struct lustre_mdt_attrs *lma);
-int osd_add_oi_cache(struct osd_thread_info *info, struct osd_device *osd,
-                    struct osd_inode_id *id, const struct lu_fid *fid);
+void osd_add_oi_cache(struct osd_thread_info *info, struct osd_device *osd,
+                     struct osd_inode_id *id, const struct lu_fid *fid);
 int osd_get_idif(struct osd_thread_info *info, struct inode *inode,
                 struct dentry *dentry, struct lu_fid *fid);
 
@@ -703,7 +698,7 @@ int osd_oii_lookup(struct osd_device *dev, const struct lu_fid *fid,
 int osd_scrub_dump(struct seq_file *m, struct osd_device *dev);
 
 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);
 
 int osd_delete_from_remote_parent(const struct lu_env *env,
                                  struct osd_device *osd,