X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flustre%2Flustre_user.h;h=be69c18570a23efff0eb33943b692ccdb732a505;hp=0b42fa9e9ed2eb238fbdd4c8ccc894d834df57a4;hb=4f91d5161d005eed6ff7a9fe6abea99690f4bcb7;hpb=90bde110350493b1d07b12f692a829b4d2cab617 diff --git a/lustre/include/lustre/lustre_user.h b/lustre/include/lustre/lustre_user.h index 0b42fa9..be69c18 100644 --- a/lustre/include/lustre/lustre_user.h +++ b/lustre/include/lustre/lustre_user.h @@ -28,6 +28,8 @@ /* * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. + * + * Copyright (c) 2011, 2012, Whamcloud, Inc. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -46,6 +48,9 @@ * @{ */ +#ifndef __KERNEL__ +#include +#endif #include #if defined(__linux__) #include @@ -134,7 +139,7 @@ struct obd_statfs { /* LL_IOC_POLL_QUOTACHECK: See also OBD_IOC_POLL_QUOTACHECK */ #define LL_IOC_POLL_QUOTACHECK _IOR ('f', 161, struct if_quotacheck *) /* LL_IOC_QUOTACTL: See also OBD_IOC_QUOTACTL */ -#define LL_IOC_QUOTACTL _IOWR('f', 162, struct if_quotactl *) +#define LL_IOC_QUOTACTL _IOWR('f', 162, struct if_quotactl) #define IOC_OBD_STATFS _IOWR('f', 164, struct obd_statfs *) #define IOC_LOV_GETINFO _IOWR('f', 165, struct lov_user_mds_data *) #define LL_IOC_FLUSHCTX _IOW ('f', 166, long) @@ -151,7 +156,7 @@ struct obd_statfs { /* see for ioctl numbers 177-210 */ -#define LL_STATFS_MDC 1 +#define LL_STATFS_LMV 1 #define LL_STATFS_LOV 2 #define IOC_MDC_TYPE 'i' @@ -164,12 +169,17 @@ struct obd_statfs { #define LL_IOC_OBD_STATFS IOC_OBD_STATFS #define IOC_MDC_GETSTRIPE IOC_MDC_GETFILESTRIPE + +#define MAX_OBD_NAME 128 /* If this changes, a NEW ioctl must be added */ + #define O_LOV_DELAY_CREATE 0100000000 /* hopefully this does not conflict */ -#define LL_FILE_IGNORE_LOCK 0x00000001 -#define LL_FILE_GROUP_LOCKED 0x00000002 -#define LL_FILE_READAHEAD 0x00000004 -#define LL_FILE_RMTACL 0x00000008 +#define LL_FILE_IGNORE_LOCK 0x00000001 +#define LL_FILE_GROUP_LOCKED 0x00000002 +#define LL_FILE_READAHEA 0x00000004 +#define LL_FILE_LOCKED_DIRECTIO 0x00000008 /* client-side locks with dio */ +#define LL_FILE_LOCKLESS_IO 0x00000010 /* server-side locks with cio */ +#define LL_FILE_RMTACL 0x00000020 #define LOV_USER_MAGIC_V1 0x0BD10BD0 #define LOV_USER_MAGIC LOV_USER_MAGIC_V1 @@ -192,6 +202,7 @@ struct lov_user_ost_data_v1 { /* per-stripe data structure */ } __attribute__((packed)); #define lov_user_md lov_user_md_v1 +#define lmm_stripe_offset u.lum_stripe_offset struct lov_user_md_v1 { /* LOV EA user data (host-endian) */ __u32 lmm_magic; /* magic number = LOV_USER_MAGIC_V1 */ __u32 lmm_pattern; /* LOV_PATTERN_RAID0, LOV_PATTERN_RAID1 */ @@ -199,7 +210,12 @@ struct lov_user_md_v1 { /* LOV EA user data (host-endian) */ __u64 lmm_object_seq; /* LOV object seq */ __u32 lmm_stripe_size; /* size of stripe in bytes */ __u16 lmm_stripe_count; /* num stripes in use for this object */ - __u16 lmm_stripe_offset; /* starting stripe offset in lmm_objects */ + union { + __u16 lum_stripe_offset; /* starting stripe offset in + * lmm_objects, use when writing */ + __u16 lum_layout_gen; /* layout generation number + * used when reading */ + } u; struct lov_user_ost_data_v1 lmm_objects[0]; /* per-stripe data */ } __attribute__((packed, __may_alias__)); @@ -210,7 +226,12 @@ struct lov_user_md_v3 { /* LOV EA user data (host-endian) */ __u64 lmm_object_seq; /* LOV object seq */ __u32 lmm_stripe_size; /* size of stripe in bytes */ __u16 lmm_stripe_count; /* num stripes in use for this object */ - __u16 lmm_stripe_offset; /* starting stripe offset in lmm_objects */ + union { + __u16 lum_stripe_offset; /* starting stripe offset in + * lmm_objects, use when writing */ + __u16 lum_layout_gen; /* layout generation number + * used when reading */ + } u; char lmm_pool_name[LOV_MAXPOOLNAME]; /* pool name */ struct lov_user_ost_data_v1 lmm_objects[0]; /* per-stripe data */ } __attribute__((packed)); @@ -243,8 +264,9 @@ struct ll_fid { * OST for saving into EA. */ }; +#define UUID_MAX 40 struct obd_uuid { - char uuid[40]; + char uuid[UUID_MAX]; }; static inline int obd_uuid_equals(const struct obd_uuid *u1, @@ -369,7 +391,7 @@ struct if_quotacheck { struct obd_uuid obd_uuid; }; -#define IDENTITY_DOWNCALL_MAGIC 0x6d6dd620 +#define IDENTITY_DOWNCALL_MAGIC 0x6d6dd629 /* permission */ #define N_PERMS_MAX 64 @@ -377,6 +399,7 @@ struct if_quotacheck { struct perm_downcall_data { __u64 pdd_nid; __u32 pdd_perm; + __u32 pdd_padding; }; struct identity_downcall_data { @@ -385,8 +408,8 @@ struct identity_downcall_data { __u32 idd_uid; __u32 idd_gid; __u32 idd_nperms; - struct perm_downcall_data idd_perms[N_PERMS_MAX]; __u32 idd_ngroups; + struct perm_downcall_data idd_perms[N_PERMS_MAX]; __u32 idd_groups[0]; }; @@ -442,7 +465,7 @@ struct obd_dqblk { __u64 dqb_btime; __u64 dqb_itime; __u32 dqb_valid; - __u32 padding; + __u32 dqb_padding; }; enum { @@ -526,9 +549,10 @@ static inline const char *changelog_type2str(int type) { #define CLF_HSM_SPARE_H 15 #define CLF_HSM_LAST 15 -#define CLF_GET_BITS(_b, _h, _l) \ - _b &= (0xFFFF << (CLF_HSM_LAST - _h)); \ - _b = _b >> (_l + CLF_HSM_LAST - _h) +/* Remove bits higher than _h, then extract the value + * between _h and _l by shifting lower weigth to bit 0. */ +#define CLF_GET_BITS(_b, _h, _l) (((_b << (CLF_HSM_LAST - _h)) & 0xFFFF) \ + >> (CLF_HSM_LAST - _h + _l)) #define CLF_HSM_SUCCESS 0x00 #define CLF_HSM_MAXERROR 0x7E @@ -550,11 +574,7 @@ enum hsm_event { static inline enum hsm_event hsm_get_cl_event(__u16 flags) { - enum hsm_event he; - - CLF_GET_BITS(flags, CLF_HSM_EVENT_H, CLF_HSM_EVENT_L); - he = flags; - return he; + return CLF_GET_BITS(flags, CLF_HSM_EVENT_H, CLF_HSM_EVENT_L); } static inline void hsm_set_cl_event(int *flags, enum hsm_event he) @@ -564,8 +584,7 @@ static inline void hsm_set_cl_event(int *flags, enum hsm_event he) static inline __u16 hsm_get_cl_flags(int flags) { - CLF_GET_BITS(flags, CLF_HSM_FLAG_H, CLF_HSM_FLAG_L); - return flags; + return CLF_GET_BITS(flags, CLF_HSM_FLAG_H, CLF_HSM_FLAG_L); } static inline void hsm_set_cl_flags(int *flags, int bits) @@ -575,8 +594,7 @@ static inline void hsm_set_cl_flags(int *flags, int bits) static inline int hsm_get_cl_error(int flags) { - CLF_GET_BITS(flags, CLF_HSM_ERR_H, CLF_HSM_ERR_L); - return flags; + return CLF_GET_BITS(flags, CLF_HSM_ERR_H, CLF_HSM_ERR_L); } static inline void hsm_set_cl_error(int *flags, int error)