/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * * This file is part of Lustre, http://www.lustre.org * * MDS data structures. * See also lustre_idl.h for wire formats of requests. */ #ifndef _LUSTRE_MDS_H #define _LUSTRE_MDS_H #include #include #include #include #include #include #include #if defined(__linux__) #include #elif defined(__APPLE__) #include #elif defined(__WINNT__) #include #else #error Unsupported operating system. #endif struct ldlm_lock_desc; struct mds_obd; struct ptlrpc_connection; struct ptlrpc_client; struct obd_export; struct ptlrpc_request; struct obd_device; struct ll_file_data; struct mds_update_record { __u32 ur_opcode; struct ll_fid *ur_fid1; struct ll_fid *ur_fid2; int ur_namelen; char *ur_name; int ur_tgtlen; char *ur_tgt; int ur_eadatalen; void *ur_eadata; int ur_cookielen; struct llog_cookie *ur_logcookies; struct iattr ur_iattr; struct lvfs_ucred ur_uc; __u64 ur_rdev; __u64 ur_time; __u32 ur_mode; __u32 ur_flags; struct lvfs_grp_hash_entry *ur_grp_entry; struct ldlm_request *ur_dlm; }; /* file data for open files on MDS */ struct mds_file_data { struct portals_handle mfd_handle; /* must be first */ atomic_t mfd_refcount; struct list_head mfd_list; /* protected by med_open_lock */ __u64 mfd_xid; int mfd_mode; struct dentry *mfd_dentry; }; struct mds_group_info { struct obd_uuid *uuid; int group; }; /* mds/mds_reint.c */ struct inode; int mds_reint_rec(struct mds_update_record *r, int offset, struct ptlrpc_request *req, struct lustre_handle *); int mds_osc_setattr_async(struct obd_device *obd, __u32 uid, __u32 gid, struct lov_mds_md *lmm, int lmm_size, struct llog_cookie *logcookies, __u64 id, __u32 gen, struct obd_capa *oc); int mds_log_op_unlink(struct obd_device *obd, struct lov_mds_md *lmm, int lmm_size, struct llog_cookie *logcookies, int cookies_size); int mds_log_op_setattr(struct obd_device *obd, __u32 uid, __u32 gid, struct lov_mds_md *lmm, int lmm_size, struct llog_cookie *logcookies, int cookies_size); int mds_lov_write_objids(struct obd_device *obd); void mds_lov_update_objids(struct obd_device *obd, struct lov_mds_md *lmm); /* ioctls for trying requests */ #define IOC_REQUEST_TYPE 'f' #define IOC_REQUEST_MIN_NR 30 #define IOC_REQUEST_GETATTR _IOWR('f', 30, long) #define IOC_REQUEST_READPAGE _IOWR('f', 31, long) #define IOC_REQUEST_SETATTR _IOWR('f', 32, long) #define IOC_REQUEST_CREATE _IOWR('f', 33, long) #define IOC_REQUEST_OPEN _IOWR('f', 34, long) #define IOC_REQUEST_CLOSE _IOWR('f', 35, long) #define IOC_REQUEST_MAX_NR 35 #define MDS_LOV_MD_NAME "trusted.lov" #define MDS_LMV_MD_NAME "trusted.lmv" #define MDD_OBD_NAME "mdd_obd" #define MDD_OBD_UUID "mdd_obd_uuid" #define MDD_OBD_TYPE "mds" #define MDD_OBD_PROFILE "lustre-MDT0000" static inline int md_should_create(__u32 flags) { return !(flags & MDS_OPEN_DELAY_CREATE || !(flags & FMODE_WRITE)); } #endif