> On Mon, Dec 19, 2016 at 12:06:47PM -0500, James Simmons wrote: > > Not for landing. This is the purposed UAPI headers > > with the removal of unlikely and debugging macros. > > This is just for feedback to see if this is acceptable > > for the upstream client. > > > > Signed-off-by: James Simmons <jsimmons@xxxxxxxxxxxxx> > > --- > > .../lustre/lustre/include/lustre/lustre_fid.h | 353 +++++++++++++++++++++ > > .../lustre/lustre/include/lustre/lustre_ostid.h | 233 ++++++++++++++ > > Can you make a lustre "uapi" directory so we can see which files you > really want to be UAPI and which you don't as time goes on? Where do you want them placed? In uapi/linux/lustre or uapi/lustre. Does it matter to you? The below was to forth coming UAPI headers which from your response you seem okay with in general. > > 2 files changed, 586 insertions(+) > > create mode 100644 drivers/staging/lustre/lustre/include/lustre/lustre_fid.h > > create mode 100644 drivers/staging/lustre/lustre/include/lustre/lustre_ostid.h > > > > diff --git a/drivers/staging/lustre/lustre/include/lustre/lustre_fid.h b/drivers/staging/lustre/lustre/include/lustre/lustre_fid.h > > new file mode 100644 > > index 0000000..cb6afa5 > > --- /dev/null > > +++ b/drivers/staging/lustre/lustre/include/lustre/lustre_fid.h > > @@ -0,0 +1,353 @@ > > +/* > > + * GPL HEADER START > > + * > > + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > > + * > > + * This program is free software; you can redistribute it and/or modify > > + * it under the terms of the GNU General Public License version 2 only, > > + * as published by the Free Software Foundation. > > + * > > + * This program is distributed in the hope that it will be useful, but > > + * WITHOUT ANY WARRANTY; without even the implied warranty of > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > > + * General Public License version 2 for more details (a copy is included > > + * in the LICENSE file that accompanied this code). > > + * > > + * You should have received a copy of the GNU General Public License > > + * version 2 along with this program; If not, see > > + * http://www.gnu.org/licenses/gpl-2.0.html > > + * > > + * GPL HEADER END > > + */ > > +/* > > + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. > > + * Use is subject to license terms. > > + * > > + * Copyright (c) 2011, 2014, Intel Corporation. > > + * > > + * Copyright 2016 Cray Inc, all rights reserved. > > + * Author: Ben Evans. > > + * > > + * all fid manipulation functions go here > > + * > > + * FIDS are globally unique within a Lustre filessytem, and are made up > > + * of three parts: sequence, Object ID, and version. > > + * > > + */ > > +#ifndef _LUSTRE_LUSTRE_FID_H_ > > +#define _LUSTRE_LUSTRE_FID_H_ > > + > > +#include <lustre/lustre_idl.h> > > + > > +/** returns fid object sequence */ > > +static inline __u64 fid_seq(const struct lu_fid *fid) > > +{ > > + return fid->f_seq; > > +} > > + > > +/** returns fid object id */ > > +static inline __u32 fid_oid(const struct lu_fid *fid) > > +{ > > + return fid->f_oid; > > +} > > + > > +/** returns fid object version */ > > +static inline __u32 fid_ver(const struct lu_fid *fid) > > +{ > > + return fid->f_ver; > > +} > > + > > +static inline void fid_zero(struct lu_fid *fid) > > +{ > > + memset(fid, 0, sizeof(*fid)); > > +} > > + > > +static inline __u64 fid_ver_oid(const struct lu_fid *fid) > > +{ > > + return (__u64)fid_ver(fid) << 32 | fid_oid(fid); > > +} > > + > > +static inline bool fid_seq_is_mdt0(__u64 seq) > > +{ > > + return seq == FID_SEQ_OST_MDT0; > > +} > > + > > +static inline bool fid_seq_is_mdt(__u64 seq) > > +{ > > + return seq == FID_SEQ_OST_MDT0 || seq >= FID_SEQ_NORMAL; > > +}; > > + > > +static inline bool fid_seq_is_echo(__u64 seq) > > +{ > > + return seq == FID_SEQ_ECHO; > > +} > > + > > +static inline bool fid_is_echo(const struct lu_fid *fid) > > +{ > > + return fid_seq_is_echo(fid_seq(fid)); > > +} > > + > > +static inline bool fid_seq_is_llog(__u64 seq) > > +{ > > + return seq == FID_SEQ_LLOG; > > +} > > + > > +static inline bool fid_is_llog(const struct lu_fid *fid) > > +{ > > + /* file with OID == 0 is not llog but contains last oid */ > > + return fid_seq_is_llog(fid_seq(fid)) && fid_oid(fid) > 0; > > +} > > + > > +static inline bool fid_seq_is_rsvd(__u64 seq) > > +{ > > + return seq > FID_SEQ_OST_MDT0 && seq <= FID_SEQ_RSVD; > > +}; > > + > > +static inline bool fid_seq_is_special(__u64 seq) > > +{ > > + return seq == FID_SEQ_SPECIAL; > > +}; > > + > > +static inline bool fid_seq_is_local_file(__u64 seq) > > +{ > > + return seq == FID_SEQ_LOCAL_FILE || > > + seq == FID_SEQ_LOCAL_NAME; > > +}; > > + > > +static inline bool fid_seq_is_root(__u64 seq) > > +{ > > + return seq == FID_SEQ_ROOT; > > +} > > + > > +static inline bool fid_seq_is_dot(__u64 seq) > > +{ > > + return seq == FID_SEQ_DOT_LUSTRE; > > +} > > + > > +static inline bool fid_seq_is_default(__u64 seq) > > +{ > > + return seq == FID_SEQ_LOV_DEFAULT; > > +} > > + > > +static inline bool fid_is_mdt0(const struct lu_fid *fid) > > +{ > > + return fid_seq_is_mdt0(fid_seq(fid)); > > +} > > + > > +static inline void lu_root_fid(struct lu_fid *fid) > > +{ > > + fid->f_seq = FID_SEQ_ROOT; > > + fid->f_oid = FID_OID_ROOT; > > + fid->f_ver = 0; > > +} > > + > > +static inline void lu_echo_root_fid(struct lu_fid *fid) > > +{ > > + fid->f_seq = FID_SEQ_ROOT; > > + fid->f_oid = FID_OID_ECHO_ROOT; > > + fid->f_ver = 0; > > +} > > + > > +static inline void lu_update_log_fid(struct lu_fid *fid, __u32 index) > > +{ > > + fid->f_seq = FID_SEQ_UPDATE_LOG; > > + fid->f_oid = index; > > + fid->f_ver = 0; > > +} > > + > > +static inline void lu_update_log_dir_fid(struct lu_fid *fid, __u32 index) > > +{ > > + fid->f_seq = FID_SEQ_UPDATE_LOG_DIR; > > + fid->f_oid = index; > > + fid->f_ver = 0; > > +} > > + > > +/** > > + * Check if a fid is igif or not. > > + * \param fid the fid to be tested. > > + * \return true if the fid is an igif; otherwise false. > > + */ > > +static inline bool fid_seq_is_igif(__u64 seq) > > +{ > > + return seq >= FID_SEQ_IGIF && seq <= FID_SEQ_IGIF_MAX; > > +} > > + > > +static inline bool fid_is_igif(const struct lu_fid *fid) > > +{ > > + return fid_seq_is_igif(fid_seq(fid)); > > +} > > + > > +/** > > + * Check if a fid is idif or not. > > + * \param fid the fid to be tested. > > + * \return true if the fid is an idif; otherwise false. > > Odd kernel doc style :( > > > + */ > > +static inline bool fid_seq_is_idif(__u64 seq) > > +{ > > + return seq >= FID_SEQ_IDIF && seq <= FID_SEQ_IDIF_MAX; > > +} > > + > > +static inline bool fid_is_idif(const struct lu_fid *fid) > > +{ > > + return fid_seq_is_idif(fid_seq(fid)); > > +} > > + > > +static inline bool fid_is_local_file(const struct lu_fid *fid) > > +{ > > + return fid_seq_is_local_file(fid_seq(fid)); > > +} > > + > > +static inline bool fid_seq_is_norm(__u64 seq) > > +{ > > + return (seq >= FID_SEQ_NORMAL); > > +} > > + > > +static inline bool fid_is_norm(const struct lu_fid *fid) > > +{ > > + return fid_seq_is_norm(fid_seq(fid)); > > +} > > + > > +static inline int fid_is_layout_rbtree(const struct lu_fid *fid) > > +{ > > + return fid_seq(fid) == FID_SEQ_LAYOUT_RBTREE; > > +} > > bool? > > thanks, > > greg k-h > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel