* 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/
#ifndef _MDT_INTERNAL_H
#define _MDT_INTERNAL_H
-#if defined(__KERNEL__)
#include <libcfs/lucache.h>
#include <lustre_net.h>
/* 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)
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;
};
};
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 */
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
};
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 */
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);
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);
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);
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 */