X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fmdt%2Fmdt_internal.h;h=4bc720ab4332d62186a390cba8e9dad955ff8cc7;hp=b87cb65969b4f1b51dcfae9c935e737c0d9aad6b;hb=8daba6a7381a2fb8cc933f7e9486f60e659465d4;hpb=0f22e4c098b1f7885ef509bbfc346b3e8905b28d diff --git a/lustre/mdt/mdt_internal.h b/lustre/mdt/mdt_internal.h index b87cb65..4bc720a 100644 --- a/lustre/mdt/mdt_internal.h +++ b/lustre/mdt/mdt_internal.h @@ -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/ @@ -49,7 +49,7 @@ #define _MDT_INTERNAL_H -#include +#include #include #include #include @@ -188,9 +188,6 @@ struct mdt_device { } mdt_opts; /* mdt state flags */ unsigned long mdt_state; - /* lock to protect IOepoch */ - spinlock_t mdt_ioepoch_lock; - __u64 mdt_ioepoch; /* transaction callbacks */ struct dt_txn_callback mdt_txn_cb; @@ -213,7 +210,6 @@ struct mdt_device { struct ptlrpc_thread mdt_ck_thread; struct lustre_capa_key mdt_capa_keys[2]; unsigned int mdt_capa_conf:1, - mdt_som_conf:1, /* Enable remote dir on non-MDT0 */ mdt_enable_remote_dir:1; @@ -240,15 +236,17 @@ struct mdt_device { #define MDT_SERVICE_WATCHDOG_FACTOR (2) #define MDT_COS_DEFAULT (0) +enum mdt_object_flags { + /** lov object has been created. */ + MOF_LOV_CREATED = 1 << 0, +}; + struct mdt_object { struct lu_object_header mot_header; struct lu_object mot_obj; - __u64 mot_ioepoch; - __u64 mot_flags; - int mot_ioepoch_count; - int mot_writecount; - /* Lock to protect object's IO epoch. */ - struct mutex mot_ioepoch_mutex; + enum mdt_object_flags mot_flags; + int mot_write_count; + spinlock_t mot_write_lock; /* Lock to protect create_data */ struct mutex mot_lov_mutex; /* Lock to protect lease open. @@ -258,26 +256,6 @@ struct mdt_object { atomic_t mot_open_count; }; -enum mdt_object_flags { - /** SOM attributes are changed. */ - MOF_SOM_CHANGE = (1 << 0), - /** - * The SOM recovery state for mdt object. - * This state is an in-memory equivalent of an absent SOM EA, used - * instead of invalidating SOM EA while IOEpoch is still opened when - * a client eviction occurs or a client fails to obtain SOM attributes. - * It indicates that the last IOEpoch holder will need to obtain SOM - * attributes under [0;EOF] extent lock to flush all the client's - * cached of evicted from MDS clients (but not necessary evicted from - * OST) before taking ost attributes. - */ - MOF_SOM_RECOV = (1 << 1), - /** File has been just created. */ - MOF_SOM_CREATED = (1 << 2), - /** lov object has been created. */ - MOF_LOV_CREATED = (1 << 3), -}; - struct mdt_lock_handle { /* Lock type, reg for cross-ref use or pdo lock. */ mdl_type_t mlh_type; @@ -326,7 +304,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; }; @@ -442,16 +420,12 @@ struct mdt_thread_info { /* for mdt_sendpage() */ struct l_wait_info mti_wait_info; } rdpg; - struct { - struct md_attr attr; - struct md_som_data data; - } som; + struct { + struct md_attr attr; + } hsm; } mti_u; - /* IO epoch related stuff. */ - struct mdt_ioepoch *mti_ioepoch; - __u64 mti_replayepoch; - + struct lustre_handle mti_close_handle; loff_t mti_off; struct lu_buf mti_buf; struct lu_buf mti_big_buf; @@ -680,6 +654,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); @@ -719,17 +697,6 @@ struct mdt_file_data *mdt_handle2mfd(struct mdt_export_data *med, const struct lustre_handle *handle, bool is_replay); -enum { - MDT_IOEPOCH_CLOSED = 0, - MDT_IOEPOCH_OPENED = 1, - MDT_IOEPOCH_GETATTR = 2, -}; - -enum { - MDT_SOM_DISABLE = 0, - MDT_SOM_ENABLE = 1, -}; - int mdt_get_info(struct tgt_session_info *tsi); int mdt_attr_get_complex(struct mdt_thread_info *info, struct mdt_object *o, struct md_attr *ma); @@ -737,9 +704,6 @@ int mdt_big_xattr_get(struct mdt_thread_info *info, struct mdt_object *o, const char *name); int mdt_stripe_get(struct mdt_thread_info *info, struct mdt_object *o, struct md_attr *ma, const char *name); -int mdt_ioepoch_open(struct mdt_thread_info *info, struct mdt_object *o, - int created); -int mdt_object_is_som_enabled(struct mdt_object *mo); int mdt_write_get(struct mdt_object *o); void mdt_write_put(struct mdt_object *o); int mdt_write_read(struct mdt_object *o); @@ -749,7 +713,6 @@ void mdt_mfd_free(struct mdt_file_data *mfd); int mdt_close(struct tgt_session_info *tsi); 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_fix_reply(struct mdt_thread_info *info); int mdt_handle_last_unlink(struct mdt_thread_info *, struct mdt_object *, const struct md_attr *); @@ -762,6 +725,7 @@ const struct lu_buf *mdt_buf_const(const struct lu_env *env, void mdt_dump_lmm(int level, const struct lov_mds_md *lmm, __u64 valid); void mdt_dump_lmv(unsigned int level, const union lmv_mds_md *lmv); +bool allow_client_chgrp(struct mdt_thread_info *info, struct lu_ucred *uc); int mdt_check_ucred(struct mdt_thread_info *); int mdt_init_ucred(struct mdt_thread_info *, struct mdt_body *); int mdt_init_ucred_reint(struct mdt_thread_info *); @@ -831,6 +795,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); @@ -917,7 +884,7 @@ ssize_t mdt_hsm_cdt_control_seq_write(struct file *file, const char *buffer, 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_seq_vars *hsm_cdt_get_proc_vars(void); +struct lprocfs_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,