Whamcloud - gitweb
LU-6047 mdt: remove Size on MDS support
[fs/lustre-release.git] / lustre / mdt / mdt_internal.h
index d226b3b..4bc720a 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/
@@ -49,7 +49,7 @@
 #define _MDT_INTERNAL_H
 
 
-#include <libcfs/lucache.h>
+#include <upcall_cache.h>
 #include <lustre_net.h>
 #include <lustre/lustre_idl.h>
 #include <obd_class.h>
@@ -188,9 +188,6 @@ struct mdt_device {
        } mdt_opts;
         /* mdt state flags */
         unsigned long              mdt_state;
-        /* lock to protect IOepoch */
-       spinlock_t                 mdt_ioepoch_lock;
-        __u64                      mdt_ioepoch;
 
         /* transaction callbacks */
         struct dt_txn_callback     mdt_txn_cb;
@@ -213,7 +210,6 @@ struct mdt_device {
        struct ptlrpc_thread       mdt_ck_thread;
        struct lustre_capa_key     mdt_capa_keys[2];
        unsigned int               mdt_capa_conf:1,
-                                  mdt_som_conf:1,
                                   /* Enable remote dir on non-MDT0 */
                                   mdt_enable_remote_dir:1;
 
@@ -240,15 +236,17 @@ struct mdt_device {
 #define MDT_SERVICE_WATCHDOG_FACTOR    (2)
 #define MDT_COS_DEFAULT         (0)
 
+enum mdt_object_flags {
+       /** lov object has been created. */
+       MOF_LOV_CREATED         = 1 << 0,
+};
+
 struct mdt_object {
        struct lu_object_header mot_header;
        struct lu_object        mot_obj;
-        __u64                   mot_ioepoch;
-        __u64                   mot_flags;
-        int                     mot_ioepoch_count;
-        int                     mot_writecount;
-        /* Lock to protect object's IO epoch. */
-       struct mutex            mot_ioepoch_mutex;
+       enum mdt_object_flags   mot_flags;
+       int                     mot_write_count;
+       spinlock_t              mot_write_lock;
         /* Lock to protect create_data */
        struct mutex            mot_lov_mutex;
        /* Lock to protect lease open.
@@ -258,26 +256,6 @@ struct mdt_object {
        atomic_t                mot_open_count;
 };
 
-enum mdt_object_flags {
-        /** SOM attributes are changed. */
-        MOF_SOM_CHANGE  = (1 << 0),
-        /**
-         * The SOM recovery state for mdt object.
-         * This state is an in-memory equivalent of an absent SOM EA, used
-         * instead of invalidating SOM EA while IOEpoch is still opened when
-         * a client eviction occurs or a client fails to obtain SOM attributes.
-         * It indicates that the last IOEpoch holder will need to obtain SOM
-         * attributes under [0;EOF] extent lock to flush all the client's
-         * cached of evicted from MDS clients (but not necessary evicted from
-         * OST) before taking ost attributes.
-         */
-        MOF_SOM_RECOV   = (1 << 1),
-        /** File has been just created. */
-        MOF_SOM_CREATED = (1 << 2),
-        /** lov object has been created. */
-        MOF_LOV_CREATED = (1 << 3),
-};
-
 struct mdt_lock_handle {
         /* Lock type, reg for cross-ref use or pdo lock. */
         mdl_type_t              mlh_type;
@@ -326,7 +304,7 @@ struct mdt_reint_record {
        const struct lu_fid             *rr_fid2;
        struct lu_name                   rr_name;
        struct lu_name                   rr_tgt_name;
-       const void                      *rr_eadata;
+       void                            *rr_eadata;
        int                              rr_eadatalen;
        __u32                            rr_flags;
 };
@@ -442,16 +420,12 @@ struct mdt_thread_info {
                         /* for mdt_sendpage()      */
                         struct l_wait_info mti_wait_info;
                 } rdpg;
-                struct {
-                        struct md_attr attr;
-                        struct md_som_data data;
-                } som;
+               struct {
+                       struct md_attr attr;
+               } hsm;
         } mti_u;
 
-        /* IO epoch related stuff. */
-        struct mdt_ioepoch        *mti_ioepoch;
-        __u64                      mti_replayepoch;
-
+       struct lustre_handle       mti_close_handle;
        loff_t                     mti_off;
        struct lu_buf              mti_buf;
        struct lu_buf              mti_big_buf;
@@ -680,6 +654,10 @@ int mdt_name_unpack(struct req_capsule *pill,
 int mdt_close_unpack(struct mdt_thread_info *info);
 int mdt_reint_unpack(struct mdt_thread_info *info, __u32 op);
 int mdt_reint_rec(struct mdt_thread_info *, struct mdt_lock_handle *);
+#ifdef CONFIG_FS_POSIX_ACL
+int mdt_pack_acl2body(struct mdt_thread_info *info, struct mdt_body *repbody,
+                     struct mdt_object *o, struct lu_nodemap *nodemap);
+#endif
 void mdt_pack_attr2body(struct mdt_thread_info *info, struct mdt_body *b,
                         const struct lu_attr *attr, const struct lu_fid *fid);
 
@@ -719,17 +697,6 @@ struct mdt_file_data *mdt_handle2mfd(struct mdt_export_data *med,
                                     const struct lustre_handle *handle,
                                     bool is_replay);
 
-enum {
-        MDT_IOEPOCH_CLOSED  = 0,
-        MDT_IOEPOCH_OPENED  = 1,
-        MDT_IOEPOCH_GETATTR = 2,
-};
-
-enum {
-        MDT_SOM_DISABLE = 0,
-        MDT_SOM_ENABLE  = 1,
-};
-
 int mdt_get_info(struct tgt_session_info *tsi);
 int mdt_attr_get_complex(struct mdt_thread_info *info,
                         struct mdt_object *o, struct md_attr *ma);
@@ -737,9 +704,6 @@ int mdt_big_xattr_get(struct mdt_thread_info *info, struct mdt_object *o,
                      const char *name);
 int mdt_stripe_get(struct mdt_thread_info *info, struct mdt_object *o,
                   struct md_attr *ma, const char *name);
-int mdt_ioepoch_open(struct mdt_thread_info *info, struct mdt_object *o,
-                     int created);
-int mdt_object_is_som_enabled(struct mdt_object *mo);
 int mdt_write_get(struct mdt_object *o);
 void mdt_write_put(struct mdt_object *o);
 int mdt_write_read(struct mdt_object *o);
@@ -749,7 +713,6 @@ void mdt_mfd_free(struct mdt_file_data *mfd);
 int mdt_close(struct tgt_session_info *tsi);
 int mdt_add_dirty_flag(struct mdt_thread_info *info, struct mdt_object *mo,
                        struct md_attr *ma);
-int mdt_done_writing(struct tgt_session_info *tsi);
 int mdt_fix_reply(struct mdt_thread_info *info);
 int mdt_handle_last_unlink(struct mdt_thread_info *, struct mdt_object *,
                            const struct md_attr *);
@@ -762,6 +725,7 @@ const struct lu_buf *mdt_buf_const(const struct lu_env *env,
 void mdt_dump_lmm(int level, const struct lov_mds_md *lmm, __u64 valid);
 void mdt_dump_lmv(unsigned int level, const union lmv_mds_md *lmv);
 
+bool allow_client_chgrp(struct mdt_thread_info *info, struct lu_ucred *uc);
 int mdt_check_ucred(struct mdt_thread_info *);
 int mdt_init_ucred(struct mdt_thread_info *, struct mdt_body *);
 int mdt_init_ucred_reint(struct mdt_thread_info *);
@@ -831,6 +795,9 @@ __u32 mdt_identity_get_perm(struct md_identity *, __u32, lnet_nid_t);
 
 int mdt_pack_remote_perm(struct mdt_thread_info *, struct mdt_object *, void *);
 
+/* mdt/mdt_recovery.c */
+void mdt_req_from_lcd(struct ptlrpc_request *req, struct lsd_client_data *lcd);
+
 /* mdt/mdt_hsm.c */
 int mdt_hsm_state_get(struct tgt_session_info *tsi);
 int mdt_hsm_state_set(struct tgt_session_info *tsi);
@@ -917,7 +884,7 @@ ssize_t mdt_hsm_cdt_control_seq_write(struct file *file, const char *buffer,
 int mdt_hsm_cdt_control_seq_show(struct seq_file *m, void *data);
 int hsm_cdt_procfs_init(struct mdt_device *mdt);
 void hsm_cdt_procfs_fini(struct mdt_device *mdt);
-struct lprocfs_seq_vars *hsm_cdt_get_proc_vars(void);
+struct lprocfs_vars *hsm_cdt_get_proc_vars(void);
 /* md_hsm helpers */
 struct mdt_object *mdt_hsm_get_md_hsm(struct mdt_thread_info *mti,
                                      const struct lu_fid *fid,
@@ -1092,4 +1059,15 @@ static inline char *mdt_obd_name(struct mdt_device *mdt)
 int mds_mod_init(void);
 void mds_mod_exit(void);
 
-#endif /* _MDT_H */
+static inline char *mdt_req_get_jobid(struct ptlrpc_request *req)
+{
+       struct obd_export       *exp = req->rq_export;
+       char                    *jobid = NULL;
+
+       if (exp_connect_flags(exp) & OBD_CONNECT_JOBSTATS)
+               jobid = lustre_msg_get_jobid(req->rq_reqmsg);
+
+       return jobid;
+}
+
+#endif /* _MDT_INTERNAL_H */