/** 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 */
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 */
void *rr_eadata;
int rr_eadatalen;
__u32 rr_flags;
+ __u16 rr_mirror_id;
};
enum mdt_reint_flag {
/*
* 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.
*/
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,
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)
{
}
/* 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,
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,
/* 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 *);