From: Minh Diep Date: Fri, 18 Oct 2013 20:12:52 +0000 (-0700) Subject: LU-4107 build: fix lustre_user.h to C++ compatible X-Git-Tag: 2.5.51~23 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=b40f6327bb19b682bb920cee5d33055fe5f3e20f LU-4107 build: fix lustre_user.h to C++ compatible Fix anonymous union. Fix warnings Workaround offsetof due to a bug in g++ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14932 Signed-off-by: Minh Diep Change-Id: I4c1b8165ab012f4226aabb60009b48063669e271 Reviewed-on: http://review.whamcloud.com/8033 Reviewed-by: John L. Hammond Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Dmitry Eremin Reviewed-by: Oleg Drokin --- diff --git a/lustre/include/lustre/lustre_user.h b/lustre/include/lustre/lustre_user.h index 5f47ada..9ed47bc 100644 --- a/lustre/include/lustre/lustre_user.h +++ b/lustre/include/lustre/lustre_user.h @@ -49,6 +49,7 @@ #ifndef __KERNEL__ #include #include +#include #endif #include #if defined(__linux__) @@ -61,6 +62,12 @@ #error Unsupported operating system. #endif +#ifdef __cplusplus +#define LUSTRE_ANONYMOUS_UNION_NAME u +#else +#define LUSTRE_ANONYMOUS_UNION_NAME +#endif + /* for statfs() */ #define LL_SUPER_MAGIC 0x0BD00BD0 @@ -188,7 +195,7 @@ struct ost_id { __u64 oi_seq; } oi; struct lu_fid oi_fid; - }; + } LUSTRE_ANONYMOUS_UNION_NAME; }; #define DOSTID LPX64":"LPU64 @@ -753,7 +760,8 @@ enum hsm_event { static inline enum hsm_event hsm_get_cl_event(__u16 flags) { - return CLF_GET_BITS(flags, CLF_HSM_EVENT_H, CLF_HSM_EVENT_L); + return (enum hsm_event)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) @@ -868,7 +876,7 @@ struct ioc_data_version { #define LL_DV_WR_FLUSH (1 << 1) /* Flush all caching pages from clients */ #ifndef offsetof -# define offsetof(typ,memb) ((unsigned long)((char *)&(((typ *)0)->memb))) +#define offsetof(typ, memb) ((unsigned long)((char *)&(((typ *)0)->memb))) #endif #define dot_lustre_name ".lustre" @@ -911,7 +919,7 @@ enum hsm_progress_states { }; #define HPS_NONE 0 -static inline char *hsm_progress_state2name(enum hsm_progress_states s) +static inline const char *hsm_progress_state2name(enum hsm_progress_states s) { switch (s) { case HPS_WAITING: return "waiting"; @@ -973,7 +981,7 @@ enum hsm_user_action { HUA_CANCEL = 14 /* cancel a request */ }; -static inline char *hsm_user_action2name(enum hsm_user_action a) +static inline const char *hsm_user_action2name(enum hsm_user_action a) { switch (a) { case HUA_NONE: return "NOOP"; @@ -1027,8 +1035,8 @@ static inline void *hur_data(struct hsm_user_request *hur) /** Compute the current length of the provided hsm_user_request. */ static inline int hur_len(struct hsm_user_request *hur) { - return offsetof(struct hsm_user_request, - hur_user_item[hur->hur_request.hr_itemcount]) + + return offsetof(struct hsm_user_request, hur_user_item[0]) + + hur->hur_request.hr_itemcount * sizeof(hur->hur_user_item[0]) + hur->hur_request.hr_data_len; } @@ -1047,7 +1055,7 @@ enum hsm_copytool_action { HSMA_CANCEL = 23 }; -static inline char *hsm_copytool_action2name(enum hsm_copytool_action a) +static inline const char *hsm_copytool_action2name(enum hsm_copytool_action a) { switch (a) { case HSMA_NONE: return "NOOP"; @@ -1139,14 +1147,15 @@ static inline struct hsm_action_item * hai_next(struct hsm_action_item *hai) } /* Return size of an hsm_action_list */ -static inline int hal_size(struct hsm_action_list *hal) +static inline size_t hal_size(struct hsm_action_list *hal) { - int i, sz; + __u32 i; + size_t sz; struct hsm_action_item *hai; sz = sizeof(*hal) + cfs_size_round(strlen(hal->hal_fsname)); hai = hai_first(hal); - for (i = 0 ; i < hal->hal_count ; i++, hai = hai_next(hai)) + for (i = 0; i < hal->hal_count ; i++, hai = hai_next(hai)) sz += cfs_size_round(hai->hai_len); return sz;