Whamcloud - gitweb
LU-5396 lod: (and mdt, mgs) make some symbols static
[fs/lustre-release.git] / lustre / mdt / mdt_internal.h
index bce5d12..ea2f66d 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/
@@ -48,7 +48,6 @@
 #ifndef _MDT_INTERNAL_H
 #define _MDT_INTERNAL_H
 
-#if defined(__KERNEL__)
 
 #include <libcfs/lucache.h>
 #include <lustre_net.h>
@@ -78,12 +77,18 @@ struct mdt_object;
 
 /* file data for open files on MDS */
 struct mdt_file_data {
-       struct portals_handle mfd_handle; /* must be first */
-       __u64                 mfd_mode;   /* open mode provided by client */
-       cfs_list_t            mfd_list;   /* protected by med_open_lock */
-       __u64                 mfd_xid;    /* xid of the open request */
-       struct lustre_handle  mfd_old_handle; /* old handle in replay case */
-       struct mdt_object    *mfd_object; /* point to opened object */
+       /**  portals handle must be first */
+       struct portals_handle   mfd_handle;
+       /** open mode provided by client */
+       __u64                   mfd_mode;
+       /** protected by med_open_lock */
+       struct list_head        mfd_list;
+       /** xid of the open request */
+       __u64                   mfd_xid;
+       /** old handle in replay case */
+       struct lustre_handle    mfd_old_handle;
+       /** point to opened object */
+       struct mdt_object       *mfd_object;
 };
 
 #define CDT_NONBLOCKING_RESTORE                (1ULL << 0)
@@ -219,12 +224,7 @@ struct mdt_device {
        spinlock_t                 mdt_osfs_lock;
 
         /* root squash */
-        uid_t                      mdt_squash_uid;
-        gid_t                      mdt_squash_gid;
-        cfs_list_t                 mdt_nosquash_nids;
-        char                      *mdt_nosquash_str;
-        int                        mdt_nosquash_strlen;
-       struct rw_semaphore        mdt_squash_sem;
+       struct root_squash_info    mdt_squash;
 
         struct rename_stats        mdt_rename_stats;
        struct lu_fid              mdt_md_root_fid;
@@ -312,6 +312,13 @@ enum {
         MDT_CROSS_LOCK
 };
 
+/* Special magical errno for communicaiton between mdt_reint_open()
+ * and mdt_intent_reint() which means return the lock to the client
+ * for subsequent cross ref open. Previously we used plain -EREMOTE
+ * but other functions called in that path might return it too and
+ * confuse us. This is not returned to the client. See LU-5370. */
+#define MDT_EREMOTE_OPEN (EREMOTE + 1024)
+
 struct mdt_reint_record {
        mdt_reint_t                      rr_opcode;
        const struct lustre_handle      *rr_handle;
@@ -319,7 +326,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;
 };
@@ -486,7 +493,7 @@ struct cdt_req_progress {
 };
 
 struct cdt_agent_req {
-       cfs_list_t               car_request_list; /**< to chain all the req. */
+       struct list_head         car_request_list; /**< to chain all the req. */
        atomic_t                 car_refcount;     /**< reference counter */
        __u64                    car_compound_id;  /**< compound id */
        __u64                    car_flags;        /**< request original flags */
@@ -502,7 +509,7 @@ struct cdt_agent_req {
 extern struct kmem_cache *mdt_hsm_car_kmem;
 
 struct hsm_agent {
-       cfs_list_t       ha_list;               /**< to chain the agents */
+       struct list_head ha_list;               /**< to chain the agents */
        struct obd_uuid  ha_uuid;               /**< agent uuid */
        __u32           *ha_archive_id;         /**< archive id */
        int              ha_archive_cnt;        /**< number of archive entries
@@ -514,10 +521,10 @@ struct hsm_agent {
 };
 
 struct cdt_restore_handle {
-       cfs_list_t               crh_list;      /**< to chain the handle */
-       struct lu_fid            crh_fid;       /**< fid of the object */
-       struct ldlm_extent       crh_extent;    /**< extent of the restore */
-       struct mdt_lock_handle   crh_lh;        /**< lock handle */
+       struct list_head        crh_list;       /**< to chain the handle */
+       struct lu_fid           crh_fid;        /**< fid of the object */
+       struct ldlm_extent      crh_extent;     /**< extent of the restore */
+       struct mdt_lock_handle  crh_lh;         /**< lock handle */
 };
 extern struct kmem_cache *mdt_hsm_cdt_kmem;    /** restore handle slab cache */
 
@@ -594,11 +601,16 @@ static inline void mdt_export_evict(struct obd_export *exp)
 
 /* Here we use LVB_TYPE to check dne client, because it is
  * also landed on 2.4. */
-static inline int mdt_is_dne_client(struct obd_export *exp)
+static inline bool mdt_is_dne_client(struct obd_export *exp)
 {
        return !!(exp_connect_flags(exp) & OBD_CONNECT_LVB_TYPE);
 }
 
+static inline bool mdt_is_striped_client(struct obd_export *exp)
+{
+       return exp_connect_flags(exp) & OBD_CONNECT_DIR_STRIPE;
+}
+
 int mdt_get_disposition(struct ldlm_reply *rep, int flag);
 void mdt_set_disposition(struct mdt_thread_info *info,
                         struct ldlm_reply *rep, int flag);
@@ -616,6 +628,10 @@ int mdt_lock_setup(struct mdt_thread_info *info,
                    struct mdt_object *o,
                    struct mdt_lock_handle *lh);
 
+int mdt_check_resent_lock(struct mdt_thread_info *info,
+                         struct mdt_object *mo,
+                         struct mdt_lock_handle *lhc);
+
 int mdt_object_lock(struct mdt_thread_info *,
                     struct mdt_object *,
                     struct mdt_lock_handle *,
@@ -664,6 +680,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);
 
@@ -731,8 +751,6 @@ struct mdt_file_data *mdt_mfd_new(const struct mdt_export_data *med);
 int mdt_mfd_close(struct mdt_thread_info *info, struct mdt_file_data *mfd);
 void mdt_mfd_free(struct mdt_file_data *mfd);
 int mdt_close(struct tgt_session_info *tsi);
-int mdt_attr_set(struct mdt_thread_info *info, struct mdt_object *mo,
-                 struct md_attr *ma, int flags);
 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);
@@ -761,9 +779,6 @@ void mdt_thread_info_init(struct ptlrpc_request *req,
 void mdt_thread_info_fini(struct mdt_thread_info *mti);
 struct mdt_thread_info *tsi2mdt_info(struct tgt_session_info *tsi);
 
-extern struct lprocfs_vars lprocfs_mds_module_vars[];
-extern struct lprocfs_vars lprocfs_mds_obd_vars[];
-
 int mdt_hsm_attr_set(struct mdt_thread_info *info, struct mdt_object *obj,
                     const struct md_hsm *mh);
 
@@ -820,6 +835,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);
@@ -901,13 +919,12 @@ int mdt_hsm_cdt_fini(struct mdt_device *mdt);
 int mdt_hsm_cdt_wakeup(struct mdt_device *mdt);
 
 /* coordinator control /proc interface */
-int lprocfs_wr_hsm_cdt_control(struct file *file, const char *buffer,
-                              unsigned long count, void *data);
-int lprocfs_rd_hsm_cdt_control(char *page, char **start, off_t off,
-                              int count, int *eof, void *data);
+ssize_t mdt_hsm_cdt_control_seq_write(struct file *file, const char *buffer,
+                                       size_t count, loff_t *off);
+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_vars *hsm_cdt_get_proc_vars(void);
+struct lprocfs_seq_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,
@@ -1047,8 +1064,6 @@ enum {
 };
 void mdt_counter_incr(struct ptlrpc_request *req, int opcode);
 void mdt_stats_counter_init(struct lprocfs_stats *stats);
-void lprocfs_mdt_init_vars(struct lprocfs_static_vars *lvars);
-void lprocfs_mds_init_vars(struct lprocfs_static_vars *lvars);
 int mdt_procfs_init(struct mdt_device *mdt, const char *name);
 void mdt_procfs_fini(struct mdt_device *mdt);
 
@@ -1084,5 +1099,15 @@ static inline char *mdt_obd_name(struct mdt_device *mdt)
 int mds_mod_init(void);
 void mds_mod_exit(void);
 
-#endif /* __KERNEL__ */
-#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 */