Whamcloud - gitweb
LU-2099 osd: set dr_elapsed before dr_numreqs
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_internal.h
index 898ee70..f01412d 100644 (file)
@@ -89,14 +89,6 @@ struct inode;
 /** Enable thandle usage statistics */
 #define OSD_THANDLE_STATS (0)
 
-#ifdef HAVE_QUOTA_SUPPORT
-struct osd_ctxt {
-        __u32 oc_uid;
-        __u32 oc_gid;
-        cfs_kernel_cap_t oc_cap;
-};
-#endif
-
 struct osd_directory {
         struct iam_container od_container;
         struct iam_descr     od_descr;
@@ -279,11 +271,8 @@ struct osd_device {
         struct obd_statfs         od_statfs;
         cfs_spinlock_t            od_osfs_lock;
 
-        /**
-         * The following flag indicates, if it is interop mode or not.
-         * It will be initialized, using mount param.
-         */
-        __u32                     od_iop_mode;
+       unsigned int              od_iop_mode:1,
+                                 od_noscrub:1;
 
         struct fsfilt_operations *od_fsops;
        int                       od_connects;
@@ -515,6 +504,7 @@ struct osd_iobuf {
         unsigned long      dr_start_time;
         unsigned long      dr_elapsed;  /* how long io took */
         struct osd_device *dr_dev;
+       unsigned int       dr_init_at;  /* the line iobuf was initialized */
 };
 
 struct osd_thread_info {
@@ -601,9 +591,6 @@ struct osd_thread_info {
         struct osd_iobuf       oti_iobuf;
         struct inode           oti_inode;
         int                    oti_created[PTLRPC_MAX_BRW_PAGES];
-#ifdef HAVE_QUOTA_SUPPORT
-        struct osd_ctxt        oti_ctxt;
-#endif
         struct lu_env          oti_obj_delete_tx_env;
 #define OSD_FID_REC_SZ 32
         char                   oti_ldp[OSD_FID_REC_SZ];
@@ -614,8 +601,10 @@ struct osd_thread_info {
                struct if_dqblk         oti_dqblk;
                struct if_dqinfo        oti_dqinfo;
        };
-       struct lquota_id_info  oti_qi;
-       struct lquota_trans    oti_quota_trans;
+       struct lquota_id_info   oti_qi;
+       struct lquota_trans     oti_quota_trans;
+       union lquota_rec        oti_quota_rec;
+       __u64                   oti_quota_id;
 };
 
 extern int ldiskfs_pdo;
@@ -688,6 +677,20 @@ int osd_declare_qid(const struct lu_env *env, struct osd_thandle *oh,
 int osd_declare_inode_qid(const struct lu_env *env, qid_t uid, qid_t gid,
                          long long space, struct osd_thandle *oh,
                          bool is_blk, bool allocated, int *flags, bool force);
+const struct dt_rec *osd_quota_pack(struct osd_object *obj,
+                                   const struct dt_rec *rec,
+                                   union lquota_rec *quota_rec);
+void osd_quota_unpack(struct osd_object *obj, const struct dt_rec *rec);
+int osd_quota_migration(const struct lu_env *env, struct dt_object *dt,
+                       const struct dt_index_features *feat);
+
+static inline bool is_quota_glb_feat(const struct dt_index_features *feat)
+{
+       return (feat == &dt_quota_iusr_features ||
+               feat == &dt_quota_busr_features ||
+               feat == &dt_quota_igrp_features ||
+               feat == &dt_quota_bgrp_features) ? true : false;
+}
 
 /*
  * Invariants, assertions.
@@ -715,6 +718,8 @@ static inline int osd_invariant(const struct osd_object *obj)
 #define osd_invariant(obj) (1)
 #endif
 
+#define OSD_MAX_CACHE_SIZE OBD_OBJECT_EOF
+
 extern const struct dt_index_operations osd_otable_ops;
 
 static inline int osd_oi_fid2idx(struct osd_device *dev,