Whamcloud - gitweb
LU-11642 mdt: revoke remote LOOKUP lock in dir layout shrink
[fs/lustre-release.git] / lustre / mdt / mdt_internal.h
index f78a67e..5bf811f 100644 (file)
@@ -67,7 +67,7 @@ struct mdt_file_data {
        /**  portals handle must be first */
        struct portals_handle   mfd_open_handle;
        /** open mode provided by client */
-       __u64                   mfd_mode;
+       u64                     mfd_open_flags;
        /** protected by med_open_lock */
        struct list_head        mfd_list;
        /** xid of the open request */
@@ -249,8 +249,12 @@ struct mdt_device {
        unsigned int               mdt_capa_conf:1,
                                   /* Enable remote dir on non-MDT0 */
                                   mdt_enable_remote_dir:1,
+                                  mdt_enable_striped_dir:1,
+                                  mdt_enable_dir_migration:1,
                                   mdt_skip_lfsck:1;
 
+                                  /* user with gid can create remote/striped
+                                   * dir, and set default dir stripe */
        gid_t                      mdt_enable_remote_dir_gid;
 
        /* lock for osfs and md_root */
@@ -360,6 +364,7 @@ struct mdt_reint_record {
        void                            *rr_eadata;
        int                              rr_eadatalen;
        __u32                            rr_flags;
+       __u16                            rr_mirror_id;
 };
 
 enum mdt_reint_flag {
@@ -406,7 +411,8 @@ struct mdt_thread_info {
         /*
          * Object attributes.
          */
-        struct md_attr             mti_attr;
+       struct md_attr             mti_attr;
+       struct md_attr             mti_attr2; /* mdt_lvb.c */
         /*
          * Body for "habeo corpus" operations.
          */
@@ -815,18 +821,16 @@ int mdt_export_stats_init(struct obd_device *obd,
                           void *client_nid);
 
 int mdt_lock_new_child(struct mdt_thread_info *info,
-                       struct mdt_object *o,
-                       struct mdt_lock_handle *child_lockh);
-
-void mdt_mfd_set_mode(struct mdt_file_data *mfd,
-                     __u64 mode);
-
-int mdt_reint_open(struct mdt_thread_info *info,
-                  struct mdt_lock_handle *lhc);
-
+                      struct mdt_object *o,
+                      struct mdt_lock_handle *child_lockh);
+void mdt_mfd_set_mode(struct mdt_file_data *mfd, u64 open_flags);
+int mdt_reint_open(struct mdt_thread_info *info, struct mdt_lock_handle *lhc);
 struct mdt_file_data *mdt_open_handle2mfd(struct mdt_export_data *med,
                                        const struct lustre_handle *open_handle,
                                        bool is_replay);
+int mdt_revoke_remote_lookup_lock(struct mdt_thread_info *info,
+                                 struct mdt_object *pobj,
+                                 struct mdt_object *obj);
 
 int mdt_get_info(struct tgt_session_info *tsi);
 int mdt_attr_get_complex(struct mdt_thread_info *info,
@@ -893,7 +897,6 @@ int mdt_links_read(struct mdt_thread_info *info,
                   struct linkea_data *ldata);
 int mdt_close_internal(struct mdt_thread_info *info, struct ptlrpc_request *req,
                       struct mdt_body *repbody);
-int mdt_remote_permission(struct mdt_thread_info *info);
 
 static inline struct mdt_device *mdt_dev(struct lu_device *d)
 {
@@ -1137,7 +1140,8 @@ static int mdt_dom_glimpse_ast(struct ldlm_lock *lock, void *reqp)
 }
 
 /* Issues dlm lock on passed @ns, @f stores it lock handle into @lh. */
-static inline int mdt_fid_lock(struct ldlm_namespace *ns,
+static inline int mdt_fid_lock(const struct lu_env *env,
+                              struct ldlm_namespace *ns,
                               struct lustre_handle *lh, enum ldlm_mode mode,
                               union ldlm_policy_data *policy,
                               const struct ldlm_res_id *res_id,
@@ -1149,7 +1153,7 @@ static inline int mdt_fid_lock(struct ldlm_namespace *ns,
        LASSERT(ns != NULL);
        LASSERT(lh != NULL);
 
-       rc = ldlm_cli_enqueue_local(ns, res_id, LDLM_IBITS, policy,
+       rc = ldlm_cli_enqueue_local(env, ns, res_id, LDLM_IBITS, policy,
                                    mode, &flags, mdt_blocking_ast,
                                    ldlm_completion_ast,
                                    glimpse ? mdt_dom_glimpse_ast : NULL,
@@ -1196,8 +1200,9 @@ int mdt_lsom_update(struct mdt_thread_info *info, struct mdt_object *obj,
 /* mdt_lvb.c */
 extern struct ldlm_valblock_ops mdt_lvbo;
 int mdt_dom_lvb_is_valid(struct ldlm_resource *res);
-int mdt_dom_lvbo_update(struct ldlm_resource *res, struct ldlm_lock *lock,
-                       struct ptlrpc_request *req, bool increase_only);
+int mdt_dom_lvbo_update(const struct lu_env *env, struct ldlm_resource *res,
+                       struct ldlm_lock *lock, struct ptlrpc_request *req,
+                       bool increase_only);
 
 void mdt_enable_cos(struct mdt_device *dev, bool enable);
 int mdt_cos_is_enabled(struct mdt_device *);