Whamcloud - gitweb
Fixes and cleanups in lmv.
[fs/lustre-release.git] / lustre / include / linux / lustre_mds.h
index 704436b..2d81605 100644 (file)
@@ -30,6 +30,7 @@
 # include <linux/fs.h>
 # include <linux/dcache.h>
 #endif
+
 #include <linux/lustre_handles.h>
 #include <linux/kp30.h>
 #include <linux/lustre_idl.h>
@@ -51,21 +52,6 @@ struct ll_file_data;
 #define LUSTRE_MDT_NAME "mdt"
 #define LUSTRE_MDC_NAME "mdc"
 
-struct lustre_md {
-        struct mds_body *body;
-        struct lov_stripe_md *lsm;
-};
-
-struct mdc_op_data {
-        struct ll_fid fid1;
-        struct ll_fid fid2;
-        struct ll_uctxt ctxt;
-        __u64 mod_time;
-        const char *name;
-        int namelen;
-        __u32 create_mode;
-};
-
 struct mds_update_record {
         __u32 ur_opcode;
         struct ll_fid *ur_fid1;
@@ -79,34 +65,34 @@ struct mds_update_record {
         int ur_cookielen;
         struct llog_cookie *ur_logcookies;
         struct iattr ur_iattr;
-        struct obd_ucred ur_uc;
+        struct lvfs_ucred ur_uc;
         __u64 ur_rdev;
         __u32 ur_mode;
         __u64 ur_time;
         __u32 ur_flags;
 };
 
-#define ur_fsuid    ur_uc.ouc_fsuid
-#define ur_fsgid    ur_uc.ouc_fsgid
-#define ur_cap      ur_uc.ouc_cap
-#define ur_suppgid1 ur_uc.ouc_suppgid1
-#define ur_suppgid2 ur_uc.ouc_suppgid2
+#define _ur_fsuid    ur_uc.luc_fsuid
+#define _ur_fsgid    ur_uc.luc_fsgid
+#define _ur_cap      ur_uc.luc_cap
+#define _ur_suppgid1 ur_uc.luc_suppgid1
+#define _ur_suppgid2 ur_uc.luc_suppgid2
 
 /* i_attr_flags holds the open count in the inode in 2.4 */
 //XXX Alex implement on 2.4 with i_attr_flags and find soln for 2.5 please
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
-# define mds_open_orphan_count(inode)   (0)
-# define mds_open_orphan_inc(inode)  do { } while (0);
-# define mds_open_orphan_dec_test(inode)  (0)
+# define mds_inode_oatomic(inode)    ((atomic_t *)&(inode)->i_cindex)
 #else
 # define mds_inode_oatomic(inode)    ((atomic_t *)&(inode)->i_attr_flags)
+#endif
+
 # define mds_open_orphan_count(inode)                          \
   atomic_read(mds_inode_oatomic(inode))
 # define mds_open_orphan_inc(inode)                            \
   atomic_inc(mds_inode_oatomic(inode))
 # define mds_open_orphan_dec_test(inode)                       \
   atomic_dec_and_test(mds_inode_oatomic(inode))
-#endif
+
 #define mds_inode_is_orphan(inode)  ((inode)->i_flags & 0x4000000)
 #define mds_inode_set_orphan(inode) (inode)->i_flags |= 0x4000000
 
@@ -125,6 +111,13 @@ struct mds_update_record {
 
 #define MDS_INCOMPAT_SUPP       (0)
 
+#define REAL_MDS_NUMBER       1 
+#define CACHE_MDS_NUMBER      0 
+
+/*flags for indicate the record are come from cmobd reint or 
+  mdc create */
+#define REC_REINT_CREATE      0x0001
+
 /* Data stored per server at the head of the last_rcvd file.  In le32 order.
  * Try to keep this the same as fsd_server_data so we might one day merge. */
 struct mds_server_data {
@@ -173,8 +166,8 @@ int mds_reint_rec(struct mds_update_record *r, int offset,
 #ifdef __KERNEL__
 struct dentry *mds_fid2locked_dentry(struct obd_device *obd, struct ll_fid *fid,
                                      struct vfsmount **mnt, int lock_mode,
-                                     struct lustre_handle *lockh,
-                                     char *name, int namelen);
+                                     struct lustre_handle *lockh, int *pmode,
+                                     char *name, int namelen, __u64 lockpart);
 struct dentry *mds_fid2dentry(struct mds_obd *mds, struct ll_fid *fid,
                               struct vfsmount **mnt);
 int mds_update_server_data(struct obd_device *, int force_sync);
@@ -190,7 +183,7 @@ int mds_fs_cleanup(struct obd_device *obddev, int failover);
 int it_disposition(struct lookup_intent *it, int flag);
 void it_set_disposition(struct lookup_intent *it, int flag);
 int it_open_error(int phase, struct lookup_intent *it);
-void mdc_set_lock_data(__u64 *lockh, void *data);
+int mdc_set_lock_data(struct obd_export *exp, __u64 *lockh, void *data);
 int mdc_change_cbdata(struct obd_export *exp, struct ll_fid *fid, 
                       ldlm_iterator_t it, void *data);
 int mdc_intent_lock(struct obd_export *exp, struct ll_uctxt *, 
@@ -213,9 +206,8 @@ int mdc_enqueue(struct obd_export *exp,
                 void *cb_data);
 
 /* mdc/mdc_request.c */
-int mdc_init_ea_size(struct obd_device *obd, char *lov_name);
-int mdc_req2lustre_md(struct ptlrpc_request *req, int offset,
-                      struct obd_export *exp,
+int mdc_req2lustre_md(struct obd_export *exp_mdc, struct ptlrpc_request *req, 
+                      unsigned int offset, struct obd_export *exp_osc, 
                       struct lustre_md *md);
 int mdc_getstatus(struct obd_export *exp, struct ll_fid *rootfid);
 int mdc_getattr(struct obd_export *exp, struct ll_fid *fid,
@@ -231,13 +223,15 @@ int mdc_open(struct obd_export *exp, obd_id ino, int type, int flags,
              struct lov_mds_md *lmm, int lmm_size, struct lustre_handle *fh,
              struct ptlrpc_request **);
 struct obd_client_handle;
-void mdc_set_open_replay_data(struct obd_client_handle *och,
-                              struct ptlrpc_request *open_req);
-void mdc_clear_open_replay_data(struct obd_client_handle *och);
+int mdc_set_open_replay_data(struct obd_export *exp, 
+                             struct obd_client_handle *och,
+                             struct ptlrpc_request *open_req);
+int mdc_clear_open_replay_data(struct obd_export *exp, 
+                               struct obd_client_handle *och);
 int mdc_close(struct obd_export *, struct obdo *, struct obd_client_handle *,
               struct ptlrpc_request **);
-int mdc_readpage(struct obd_export *exp, struct ll_fid *mdc_fid, __u64 offset,
-                 struct page *, struct ptlrpc_request **);
+int mdc_readpage(struct obd_export *exp, struct ll_fid *mdc_fid,
+                 __u64, struct page *, struct ptlrpc_request **);
 int mdc_create(struct obd_export *exp, struct mdc_op_data *op_data,
                const void *data, int datalen, int mode, __u32 uid, __u32 gid,
                __u64 rdev, struct ptlrpc_request **request);
@@ -253,11 +247,12 @@ int mdc_sync(struct obd_export *exp, struct ll_fid *fid,
 int mdc_create_client(struct obd_uuid uuid, struct ptlrpc_client *cl);
 
 /* Store the generation of a newly-created inode in |req| for replay. */
-void mdc_store_inode_generation(struct ptlrpc_request *req, int reqoff,
-                                int repoff);
+int mdc_store_inode_generation(struct obd_export *exp, struct ptlrpc_request *req, 
+                               int reqoff, int repoff);
 int mdc_llog_process(struct obd_export *, char *logname, llog_cb_t, void *data);
 int mdc_done_writing(struct obd_export *exp, struct obdo *);
-
+int mdc_reint(struct ptlrpc_request *request, struct mdc_rpc_lock *rpc_lock, 
+              int level);
 static inline void mdc_pack_fid(struct ll_fid *fid, obd_id ino, __u32 gen,
                                 int type)
 {