Whamcloud - gitweb
LU-6401 uapi: migrate remaining uapi headers to uapi directory 46/25246/12
authorJames Simmons <uja.ornl@yahoo.com>
Mon, 7 Aug 2017 02:56:26 +0000 (22:56 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Sun, 13 Aug 2017 17:18:05 +0000 (17:18 +0000)
Move all the remaining lustre headers shared between user land
and kernel space to the uapi directory. OBD_MAX_IOCTL_BUFFER
can be removed since the utilites don't even acknowledge it
value.

Change-Id: I6dcdf3f824dae6bc8a0786f0e61787ca68c10bd8
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-on: https://review.whamcloud.com/25246
Tested-by: Jenkins
Reviewed-by: Quentin Bouget <quentin.bouget@cea.fr>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Ben Evans <bevans@cray.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
206 files changed:
libcfs/libcfs/util/parser.c
lustre.spec.in
lustre/autoconf/lustre-core.m4
lustre/fid/fid_internal.h
lustre/fid/fid_lib.c
lustre/fld/fld_internal.h
lustre/include/Makefile.am
lustre/include/llog_swab.h
lustre/include/lprocfs_status.h
lustre/include/lu_object.h
lustre/include/lustre/Makefile.am
lustre/include/lustre/ll_fiemap.h
lustre/include/lustre/lustre_barrier_user.h
lustre/include/lustre/lustre_lfsck_user.h
lustre/include/lustre/lustre_user.h
lustre/include/lustre/lustreapi.h
lustre/include/lustre_disk.h
lustre/include/lustre_errno.h [moved from lustre/include/lustre/lustre_errno.h with 100% similarity]
lustre/include/lustre_export.h
lustre/include/lustre_fid.h
lustre/include/lustre_fld.h
lustre/include/lustre_import.h
lustre/include/lustre_kernelcomm.h
lustre/include/lustre_lfsck.h
lustre/include/lustre_lib.h
lustre/include/lustre_lmv.h
lustre/include/lustre_log.h
lustre/include/lustre_mdc.h
lustre/include/lustre_mds.h
lustre/include/lustre_net.h
lustre/include/lustre_nodemap.h
lustre/include/lustre_obdo.h
lustre/include/lustre_swab.h
lustre/include/obd.h
lustre/include/obd_cksum.h
lustre/include/obd_class.h
lustre/include/obj_update.h
lustre/include/seq_range.h
lustre/include/uapi/linux/lustre/.gitignore [moved from lustre/include/uapi/linux/.gitignore with 100% similarity]
lustre/include/uapi/linux/lustre/Makefile.am [moved from lustre/include/uapi/linux/Makefile.am with 67% similarity]
lustre/include/uapi/linux/lustre/lustre_barrier_user.h [new file with mode: 0644]
lustre/include/uapi/linux/lustre/lustre_cfg.h [moved from lustre/include/uapi/linux/lustre_cfg.h with 97% similarity]
lustre/include/uapi/linux/lustre/lustre_disk.h [moved from lustre/include/uapi/linux/lustre_disk.h with 100% similarity]
lustre/include/uapi/linux/lustre/lustre_fid.h [moved from lustre/include/uapi/linux/lustre_fid.h with 97% similarity]
lustre/include/uapi/linux/lustre/lustre_fiemap.h [new file with mode: 0644]
lustre/include/uapi/linux/lustre/lustre_idl.h [moved from lustre/include/lustre/lustre_idl.h with 99% similarity]
lustre/include/uapi/linux/lustre/lustre_ioctl.h [moved from lustre/include/uapi/linux/lustre_ioctl.h with 97% similarity]
lustre/include/uapi/linux/lustre/lustre_kernelcomm.h [moved from lustre/include/uapi_kernelcomm.h with 100% similarity]
lustre/include/uapi/linux/lustre/lustre_lfsck_user.h [new file with mode: 0644]
lustre/include/uapi/linux/lustre/lustre_log_user.h [moved from lustre/include/lustre_log_user.h with 91% similarity]
lustre/include/uapi/linux/lustre/lustre_ostid.h [moved from lustre/include/uapi/linux/lustre_ostid.h with 98% similarity]
lustre/include/uapi/linux/lustre/lustre_param.h [moved from lustre/include/uapi/linux/lustre_param.h with 100% similarity]
lustre/include/uapi/linux/lustre/lustre_user.h [new file with mode: 0644]
lustre/include/uapi/linux/lustre/lustre_ver.h [moved from lustre/include/lustre_ver.h with 100% similarity]
lustre/ldlm/ldlm_lockd.c
lustre/ldlm/ldlm_request.c
lustre/lfsck/lfsck_bookmark.c
lustre/lfsck/lfsck_internal.h
lustre/lfsck/lfsck_layout.c
lustre/lfsck/lfsck_lib.c
lustre/lfsck/lfsck_namespace.c
lustre/lfsck/lfsck_striped_dir.c
lustre/llite/dcache.c
lustre/llite/dir.c
lustre/llite/file.c
lustre/llite/lcommon_cl.c
lustre/llite/llite_internal.h
lustre/llite/llite_lib.c
lustre/llite/lproc_llite.c
lustre/llite/namei.c
lustre/llite/range_lock.c
lustre/llite/vvp_internal.h
lustre/llite/xattr.c
lustre/llite/xattr26.c
lustre/llite/xattr_cache.c
lustre/lmv/lmv_fld.c
lustre/lmv/lmv_intent.c
lustre/lmv/lmv_internal.h
lustre/lmv/lmv_obd.c
lustre/lod/lod_dev.c
lustre/lod/lod_internal.h
lustre/lod/lod_object.c
lustre/lod/lod_qos.c
lustre/lod/lod_sub_object.c
lustre/lod/lproc_lod.c
lustre/lov/lov_ea.c
lustre/lov/lov_internal.h
lustre/lov/lov_obd.c
lustre/lov/lov_pack.c
lustre/lov/lov_request.c
lustre/lov/lproc_lov.c
lustre/mdc/mdc_lib.c
lustre/mdc/mdc_request.c
lustre/mdd/mdd_device.c
lustre/mdd/mdd_lock.c
lustre/mdd/mdd_object.c
lustre/mdd/mdd_orphans.c
lustre/mdd/mdd_permission.c
lustre/mdt/mdt_handler.c
lustre/mdt/mdt_hsm.c
lustre/mdt/mdt_hsm_cdt_agent.c
lustre/mdt/mdt_hsm_cdt_requests.c
lustre/mdt/mdt_internal.h
lustre/mdt/mdt_lproc.c
lustre/mdt/mdt_mds.c
lustre/mgc/mgc_internal.h
lustre/mgs/lproc_mgs.c
lustre/mgs/mgs_barrier.c
lustre/mgs/mgs_handler.c
lustre/mgs/mgs_llog.c
lustre/obdclass/class_obd.c
lustre/obdclass/linkea.c
lustre/obdclass/linux/linux-module.c
lustre/obdclass/linux/linux-obdo.c
lustre/obdclass/llog_ioctl.c
lustre/obdclass/lprocfs_jobstats.c
lustre/obdclass/lprocfs_status.c
lustre/obdclass/lprocfs_status_server.c
lustre/obdclass/md_attrs.c
lustre/obdclass/obd_config.c
lustre/obdclass/obd_mount.c
lustre/obdclass/obd_mount_server.c
lustre/obdclass/obdo.c
lustre/obdecho/echo_client.c
lustre/ofd/ofd_dev.c
lustre/ofd/ofd_obd.c
lustre/ofd/ofd_objects.c
lustre/osc/osc_request.c
lustre/osd-ldiskfs/osd_compat.c
lustre/osd-ldiskfs/osd_handler.c
lustre/osd-ldiskfs/osd_io.c
lustre/osd-ldiskfs/osd_lproc.c
lustre/osd-ldiskfs/osd_oi.c
lustre/osd-ldiskfs/osd_scrub.c
lustre/osd-zfs/osd_handler.c
lustre/osd-zfs/osd_index.c
lustre/osd-zfs/osd_io.c
lustre/osd-zfs/osd_lproc.c
lustre/osd-zfs/osd_object.c
lustre/osd-zfs/osd_oi.c
lustre/osd-zfs/osd_xattr.c
lustre/osp/lwp_dev.c
lustre/osp/osp_dev.c
lustre/ptlrpc/errno.c
lustre/ptlrpc/gss/gss_bulk.c
lustre/ptlrpc/gss/gss_cli_upcall.c
lustre/ptlrpc/gss/gss_generic_token.c
lustre/ptlrpc/gss/gss_keyring.c
lustre/ptlrpc/gss/gss_krb5_mech.c
lustre/ptlrpc/gss/gss_mech_switch.c
lustre/ptlrpc/gss/gss_pipefs.c
lustre/ptlrpc/gss/gss_sk_mech.c
lustre/ptlrpc/gss/gss_svc_upcall.c
lustre/ptlrpc/gss/lproc_gss.c
lustre/ptlrpc/gss/sec_gss.c
lustre/ptlrpc/layout.c
lustre/ptlrpc/lproc_ptlrpc.c
lustre/ptlrpc/nodemap_storage.c
lustre/ptlrpc/nrs_orr.c
lustre/ptlrpc/pack_generic.c
lustre/ptlrpc/sec_config.c
lustre/ptlrpc/wiretest.c
lustre/quota/qsd_config.c
lustre/target/barrier.c
lustre/target/tgt_handler.c
lustre/target/tgt_internal.h
lustre/tests/check_fhandle_syscalls.c
lustre/tests/checkfiemap.c
lustre/tests/ll_dirstripe_verify.c
lustre/tests/llapi_fid_test.c
lustre/tests/lp_utils.h
lustre/tests/mpi/lp_utils.c
lustre/tests/mpi/lp_utils.h
lustre/tests/mpi/parallel_grouplock.c
lustre/tests/openfile.c
lustre/tests/sanity.sh
lustre/utils/gss/lgss_sk.c
lustre/utils/gss/sk_utils.h
lustre/utils/gss/svcgssd.c
lustre/utils/gss/svcgssd_proc.c
lustre/utils/l_getidentity.c
lustre/utils/lctl.c
lustre/utils/lfs.c
lustre/utils/lhsmtool_posix.c
lustre/utils/liblustreapi.c
lustre/utils/liblustreapi_hsm.c
lustre/utils/liblustreapi_layout.c
lustre/utils/liblustreapi_param.c
lustre/utils/liblustreapi_util.c
lustre/utils/libmount_utils_ldiskfs.c
lustre/utils/ll_decode_filter_fid.c
lustre/utils/ll_decode_linkea.c
lustre/utils/llog_reader.c
lustre/utils/lr_reader.c
lustre/utils/lshowmount.c
lustre/utils/lsnapshot.c
lustre/utils/lustre_cfg.c
lustre/utils/lustre_lfsck.c
lustre/utils/lustreapi_internal.h
lustre/utils/mkfs_lustre.c
lustre/utils/mount_lustre.c
lustre/utils/mount_utils.c
lustre/utils/mount_utils.h
lustre/utils/obd.c
lustre/utils/obdctl.h
lustre/utils/wiretest.c

index 3aa97a1..b92d8dc 100644 (file)
@@ -36,7 +36,7 @@
 #include <unistd.h>
 
 #include <libcfs/util/parser.h>
-#include <lustre_ver.h>
+#include <linux/lustre/lustre_ver.h>
 
 static command_t * top_level;           /* Top level of commands, initialized by
                                     * InitParser                              */
index f0d828e..fc1a301 100644 (file)
@@ -456,6 +456,7 @@ echo '%{_sbindir}/wiretest' >>lustre-tests.files
 %{_datadir}/lustre
 %{_includedir}/lustre
 %{_includedir}/linux/lnet
+%{_includedir}/linux/lustre
 %endif
 %{_sysconfdir}/udev/rules.d/99-lustre.rules
 %config(noreplace) %{_sysconfdir}/ldev.conf
index d0c5ed0..4f14c6f 100644 (file)
@@ -47,23 +47,6 @@ esac
 ]) # LC_TARGET_SUPPORTED
 
 #
-# LC_CONFIG_OBD_BUFFER_SIZE
-#
-# the maximum buffer size of lctl ioctls
-#
-AC_DEFUN([LC_CONFIG_OBD_BUFFER_SIZE], [
-AC_MSG_CHECKING([for maximum OBD ioctl size])
-AC_ARG_WITH([obd-buffer-size],
-       AC_HELP_STRING([--with-obd-buffer-size=[size]],
-               [set lctl ioctl maximum bytes (default=8192)]),
-       [OBD_BUFFER_SIZE=$with_obd_buffer_size],
-       [OBD_BUFFER_SIZE=8192])
-AC_MSG_RESULT([$OBD_BUFFER_SIZE bytes])
-AC_DEFINE_UNQUOTED(CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER, $OBD_BUFFER_SIZE,
-       [IOCTL Buffer Size])
-]) # LC_CONFIG_OBD_BUFFER_SIZE
-
-#
 # LC_GLIBC_SUPPORT_FHANDLES
 #
 AC_DEFUN([LC_GLIBC_SUPPORT_FHANDLES], [
@@ -3143,7 +3126,7 @@ lustre/contrib/Makefile
 lustre/doc/Makefile
 lustre/include/Makefile
 lustre/include/lustre/Makefile
-lustre/include/uapi/linux/Makefile
+lustre/include/uapi/linux/lustre/Makefile
 lustre/kernel_patches/targets/3.10-rhel7.target
 lustre/kernel_patches/targets/2.6-rhel6.9.target
 lustre/kernel_patches/targets/2.6-rhel6.8.target
index 9ad1420..f006d81 100644 (file)
@@ -36,7 +36,6 @@
 #ifndef __FID_INTERNAL_H
 #define __FID_INTERNAL_H
 
-#include <lustre/lustre_idl.h>
 #include <libcfs/libcfs.h>
 
 #ifdef HAVE_SERVER_SUPPORT
index 7c5477c..ab3a598 100644 (file)
@@ -41,7 +41,6 @@
 
 #include <libcfs/libcfs.h>
 #include <linux/module.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_fid.h>
 
 /**
index dcb24a3..02a4702 100644 (file)
@@ -56,7 +56,6 @@
 #define __FLD_INTERNAL_H
 
 #include <obd.h>
-#include <lustre/lustre_idl.h>
 #include <libcfs/libcfs.h>
 #include <lustre_fld.h>
 
index e97ba30..4613df4 100644 (file)
@@ -32,9 +32,9 @@
 # Lustre is a trademark of Sun Microsystems, Inc.
 #
 
-SUBDIRS = lustre uapi/linux
+SUBDIRS = lustre uapi/linux/lustre
 
-DIST_SUBDIRS = lustre uapi/linux
+DIST_SUBDIRS = lustre uapi/linux/lustre
 
 EXTRA_DIST = \
        cl_object.h \
@@ -52,6 +52,7 @@ EXTRA_DIST = \
        lustre_dlm_flags.h \
        lustre_dlm.h \
        lustre_eacl.h \
+       lustre_errno.h \
        lustre_export.h \
        lustre_fid.h \
        lustre_fld.h \
@@ -65,7 +66,6 @@ EXTRA_DIST = \
        lustre_linkea.h \
        lustre_lmv.h \
        lustre_log.h \
-       lustre_log_user.h \
        lustre_mdc.h \
        lustre_mds.h \
        lustre_net.h \
@@ -84,7 +84,6 @@ EXTRA_DIST = \
        lustre_sec.h \
        lustre_swab.h \
        lustre_update.h \
-       lustre_ver.h \
        lu_target.h \
        lvfs.h \
        md_object.h \
@@ -97,5 +96,4 @@ EXTRA_DIST = \
        obj_update.h \
        upcall_cache.h \
        lustre_kernelcomm.h \
-       seq_range.h \
-       uapi_kernelcomm.h
+       seq_range.h
index a0b8d02..6fe62bc 100644 (file)
@@ -48,7 +48,7 @@
 #ifndef _LLOG_SWAB_H_
 #define _LLOG_SWAB_H_
 
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 struct lustre_cfg;
 
 void lustre_swab_lu_fid(struct lu_fid *fid);
index c40604b..83ede1b 100644 (file)
@@ -46,7 +46,7 @@
 #include <linux/seq_file.h>
 
 #include <libcfs/libcfs.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 
 struct lprocfs_vars {
        const char                      *name;
index ab41873..6f4a644 100644 (file)
@@ -35,7 +35,7 @@
 
 #include <stdarg.h>
 #include <libcfs/libcfs.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <lu_ref.h>
 #include <linux/percpu_counter.h>
 
index 79d55a1..622835a 100644 (file)
@@ -40,8 +40,6 @@ endif
 EXTRA_DIST = libiam.h \
        liblustreapi.h \
        ll_fiemap.h \
-       lustre_errno.h \
-       lustre_idl.h \
        lustre_lfsck_user.h \
        lustre_user.h \
        lustreapi.h \
index cee135b..e5466c7 100644 (file)
  * Author: Andreas Dilger <adilger@sun.com>
  */
 
-#ifndef _LUSTRE_FIEMAP_H
-#define _LUSTRE_FIEMAP_H
-
-#ifndef __KERNEL__
-#include <stddef.h>
-#include <linux/fiemap.h>
-#endif
-
-/* XXX: We use fiemap_extent::fe_reserved[0] */
-#define fe_device      fe_reserved[0]
-
-static inline size_t fiemap_count_to_size(size_t extent_count)
-{
-       return sizeof(struct fiemap) + extent_count *
-                                      sizeof(struct fiemap_extent);
-}
-
-static inline unsigned fiemap_size_to_count(size_t array_size)
-{
-       return (array_size - sizeof(struct fiemap)) /
-              sizeof(struct fiemap_extent);
-}
-
-#define FIEMAP_FLAG_DEVICE_ORDER 0x40000000 /* return device ordered mapping */
-
-#ifdef FIEMAP_FLAGS_COMPAT
-#undef FIEMAP_FLAGS_COMPAT
-#endif
+/*
+ * NOTE: This file is DEPRECATED! Please include linux/lustre/lustre_fiemap.h
+ * directly instead of this file. This file will be removed from a
+ * future version of lustre!
+ */
 
-/* Lustre specific flags - use a high bit, don't conflict with upstream flag */
-#define FIEMAP_EXTENT_NO_DIRECT 0x40000000 /* Data mapping undefined */
-#define FIEMAP_EXTENT_NET       0x80000000 /* Data stored remotely.
-                                           * Sets NO_DIRECT flag */
+#include <linux/lustre/lustre_fiemap.h>
 
-#endif /* _LUSTRE_FIEMAP_H */
+#warning "Including ll_fiemap.h is deprecated. Include linux/lustre/lustre_fiemap.h directly."
index e69bdc2..8f449c4 100644 (file)
@@ -6,13 +6,13 @@
  * 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 COPYING file that accompanied this code.
-
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  *
  * Author: Fan, Yong <fan.yong@intel.com>
  */
-#ifndef _LUSTRE_BARRIER_USER_H
-# define _LUSTRE_BARRIER_USER_H
-
-#include <lustre/lustre_user.h>
 
-#define BARRIER_VERSION_V1     1
-#define BARRIER_TIMEOUT_DEFAULT        30
-
-enum barrier_commands {
-       BC_FREEZE       = 1,
-       BC_THAW         = 2,
-       BC_STAT         = 3,
-       BC_RESCAN       = 4,
-};
-
-enum barrier_status {
-       BS_INIT         = 0,
-       BS_FREEZING_P1  = 1,
-       BS_FREEZING_P2  = 2,
-       BS_FROZEN       = 3,
-       BS_THAWING      = 4,
-       BS_THAWED       = 5,
-       BS_FAILED       = 6,
-       BS_EXPIRED      = 7,
-       BS_RESCAN       = 8,
-};
+/*
+ * NOTE: This file is DEPRECATED! Please include linux/lustre/lustre_barrier_user.h
+ * directly instead of this file. This file will be removed from a
+ * future version of lustre!
+ */
 
-struct barrier_ctl {
-       __u32   bc_version;
-       __u32   bc_cmd;
-       union {
-               __s32   bc_timeout;
-               __u32   bc_total;
-       };
-       union {
-               __u32   bc_status;
-               __u32   bc_absence;
-       };
-       char    bc_name[12];
-       __u32   bc_padding;
-};
+#include <linux/lustre/lustre_barrier_user.h>
 
-#endif /* _LUSTRE_BARRIER_USER_H */
+#warning "Including lustre_barrier_user.h is deprecated. Include linux/lustre/lustre_barrier_user.h directly."
index a02f65f..76ecd8b 100644 (file)
@@ -6,13 +6,13 @@
  * 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 COPYING file that accompanied this code.
-
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  * Author: Fan, Yong <fan.yong@intel.com>
  */
 
-#ifndef _LUSTRE_LFSCK_USER_H
-# define _LUSTRE_LFSCK_USER_H
-# include <lustre/lustre_user.h>
-
-/**
- * state machine:
- *
- *                                     LS_INIT
- *                                        |
- *                                  (lfsck|start)
- *                                        |
- *                                        v
- *                                LS_SCANNING_PHASE1
- *                                     |       ^
- *                                     |       :
- *                                     | (lfsck:restart)
- *                                     |       :
- *                                     v       :
- *     -----------------------------------------------------------------
- *     |                   |^          |^         |^         |^        |^
- *     |                   |:          |:         |:         |:        |:
- *     v                   v:          v:         v:         v:        v:
- * LS_SCANNING_PHASE2  LS_FAILED  LS_STOPPED  LS_PAUSED LS_CRASHED LS_PARTIAL
- *                       (CO_)       (CO_)      (CO_)
- *     |       ^           ^:          ^:         ^:         ^:        ^:
- *     |       :           |:          |:         |:         |:        |:
- *     | (lfsck:restart)   |:          |:         |:         |:        |:
- *     v       :           |v          |v         |v         |v        |v
- *     -----------------------------------------------------------------
- *         |
- *         v
- *    LS_COMPLETED
+/*
+ * NOTE: This file is DEPRECATED! Please include linux/lustre/lustre_lfsck_user.h
+ * directly instead of this file. This file will be removed from a
+ * future version of lustre!
  */
-enum lfsck_status {
-       /* The lfsck file is new created, for new MDT, upgrading from old disk,
-        * or re-creating the lfsck file manually. */
-       LS_INIT                 = 0,
-
-       /* The first-step system scanning. The checked items during the phase1
-        * scanning depends on the LFSCK type. */
-       LS_SCANNING_PHASE1      = 1,
-
-       /* The second-step system scanning. The checked items during the phase2
-        * scanning depends on the LFSCK type. */
-       LS_SCANNING_PHASE2      = 2,
-
-       /* The LFSCK processing has completed for all objects. */
-       LS_COMPLETED            = 3,
-
-       /* The LFSCK exited automatically for failure, will not auto restart. */
-       LS_FAILED               = 4,
-
-       /* The LFSCK is stopped manually, will not auto restart. */
-       LS_STOPPED              = 5,
-
-       /* LFSCK is paused automatically when umount,
-        * will be restarted automatically when remount. */
-       LS_PAUSED               = 6,
-
-       /* System crashed during the LFSCK,
-        * will be restarted automatically after recovery. */
-       LS_CRASHED              = 7,
-
-       /* Some OST/MDT failed during the LFSCK, or not join the LFSCK. */
-       LS_PARTIAL              = 8,
-
-       /* The LFSCK is failed because its controller is failed. */
-       LS_CO_FAILED            = 9,
-
-       /* The LFSCK is stopped because its controller is stopped. */
-       LS_CO_STOPPED           = 10,
-
-       /* The LFSCK is paused because its controller is paused. */
-       LS_CO_PAUSED            = 11,
-
-       LS_MAX
-};
-
-static inline const char *lfsck_status2name(int status)
-{
-       static const char * const lfsck_status_names[] = {
-               [LS_INIT]               = "init",
-               [LS_SCANNING_PHASE1]    = "scanning-phase1",
-               [LS_SCANNING_PHASE2]    = "scanning-phase2",
-               [LS_COMPLETED]          = "completed",
-               [LS_FAILED]             = "failed",
-               [LS_STOPPED]            = "stopped",
-               [LS_PAUSED]             = "paused",
-               [LS_CRASHED]            = "crashed",
-               [LS_PARTIAL]            = "partial",
-               [LS_CO_FAILED]          = "co-failed",
-               [LS_CO_STOPPED]         = "co-stopped",
-               [LS_CO_PAUSED]          = "co-paused"
-       };
-
-       if (status < 0 || status >= LS_MAX)
-               return "unknown";
-
-       return lfsck_status_names[status];
-}
-
-enum lfsck_param_flags {
-       /* Reset LFSCK iterator position to the device beginning. */
-       LPF_RESET               = 0x0001,
-
-       /* Exit when fail. */
-       LPF_FAILOUT             = 0x0002,
-
-       /* Dryrun mode, only check without modification */
-       LPF_DRYRUN              = 0x0004,
-
-       /* LFSCK runs on all targets. */
-       LPF_ALL_TGT             = 0x0008,
-
-       /* Broadcast the command to other MDTs. Only valid on the sponsor MDT */
-       LPF_BROADCAST           = 0x0010,
-
-       /* Handle orphan OST-objects. */
-       LPF_OST_ORPHAN          = 0x0020,
-
-       /* Create OST-object for dangling LOV EA. */
-       LPF_CREATE_OSTOBJ       = 0x0040,
-
-       /* Create MDT-object for dangling name entry. */
-       LPF_CREATE_MDTOBJ       = 0x0080,
-
-       /* Do not return until the LFSCK not running. */
-       LPF_WAIT                = 0x0100,
-
-       /* Delay to create OST-object for dangling LOV EA. */
-       LPF_DELAY_CREATE_OSTOBJ = 0x0200,
-};
-
-enum lfsck_type {
-       /* For MDT and OST internal OSD consistency check/repair. */
-       LFSCK_TYPE_SCRUB        = 0x0000,
-
-       /* For MDT-OST (layout, object) consistency check/repair. */
-       LFSCK_TYPE_LAYOUT       = 0x0001,
-
-       /* For MDT (FID-in-dirent, linkEA) consistency check/repair. */
-       LFSCK_TYPE_NAMESPACE    = 0x0004,
-       LFSCK_TYPES_SUPPORTED   = (LFSCK_TYPE_SCRUB | LFSCK_TYPE_LAYOUT |
-                                  LFSCK_TYPE_NAMESPACE),
-       LFSCK_TYPES_DEF         = LFSCK_TYPES_SUPPORTED,
-       LFSCK_TYPES_ALL         = ((__u16)(~0))
-};
-
-#define LFSCK_VERSION_V1       1
-#define LFSCK_VERSION_V2       2
-
-#define LFSCK_SPEED_NO_LIMIT   0
-#define LFSCK_SPEED_LIMIT_DEF  LFSCK_SPEED_NO_LIMIT
-#define LFSCK_ASYNC_WIN_DEFAULT 1024
-#define LFSCK_ASYNC_WIN_MAX    ((__u16)(~0))
-#define LFSCK_TYPE_BITS                16
-
-enum lfsck_start_valid {
-       LSV_SPEED_LIMIT         = 0x00000001,
-       LSV_ERROR_HANDLE        = 0x00000002,
-       LSV_DRYRUN              = 0x00000004,
-       LSV_ASYNC_WINDOWS       = 0x00000008,
-       LSV_CREATE_OSTOBJ       = 0x00000010,
-       LSV_CREATE_MDTOBJ       = 0x00000020,
-       LSV_DELAY_CREATE_OSTOBJ = 0x00000040,
-};
-
-/* Arguments for starting lfsck. */
-struct lfsck_start {
-       /* Which arguments are valid, see 'enum lfsck_start_valid'. */
-       __u32   ls_valid;
-
-       /* How many items can be scanned at most per second. */
-       __u32   ls_speed_limit;
-
-       /* For compatibility between user space tools and kernel service. */
-       __u16   ls_version;
-
-       /* Which LFSCK components to be (have been) started. */
-       __u16   ls_active;
-
-       /* Flags for the LFSCK, see 'enum lfsck_param_flags'. */
-       __u16   ls_flags;
-
-       /* The windows size for async requests pipeline. */
-       __u16   ls_async_windows;
-};
-
-struct lfsck_stop {
-       __u32   ls_status;
-       __u16   ls_flags;
-       __u16   ls_padding_1; /* For 64-bits aligned. */
-       __u64   ls_padding_2;
-};
-
-struct lfsck_query {
-       __u16   lu_types;
-       __u16   lu_flags;
-       __u32   lu_mdts_count[LFSCK_TYPE_BITS][LS_MAX + 1];
-       __u32   lu_osts_count[LFSCK_TYPE_BITS][LS_MAX + 1];
-       __u64   lu_repaired[LFSCK_TYPE_BITS];
-};
 
-#endif /* _LUSTRE_LFSCK_USER_H */
+#include <linux/lustre/lustre_lfsck_user.h>
+#warning "Including lustre_lfsck_user.h is deprecated. Include linux/lustre/lustre_lfsck_user.h directly."
index b1f3de3..72f58c7 100644 (file)
  * Lustre public user-space interface definitions.
  */
 
-#ifndef _LUSTRE_USER_H
-#define _LUSTRE_USER_H
-
-/** \defgroup lustreuser lustreuser
- *
- * @{
- */
-
-#include <linux/types.h>
-
-#ifdef __KERNEL__
-# include <linux/fs.h>
-# include <linux/quota.h>
-# include <linux/string.h> /* snprintf() */
-# include <linux/version.h>
-#else /* !__KERNEL__ */
-# define NEED_QUOTA_DEFS
-# include <limits.h>
-# include <stdbool.h>
-# include <stdio.h> /* snprintf() */
-# include <string.h>
-# include <sys/quota.h>
-# include <sys/stat.h>
-#endif /* __KERNEL__ */
-#include <lustre/ll_fiemap.h>
-
-/*
- * This is a temporary solution of adding quota type.
- * Should be removed as soon as system header is updated.
- */
-#undef LL_MAXQUOTAS
-#define LL_MAXQUOTAS 3
-#undef INITQFNAMES
-#define INITQFNAMES { \
-    "user",    /* USRQUOTA */ \
-    "group",   /* GRPQUOTA */ \
-    "project", /* PRJQUOTA */ \
-    "undefined", \
-};
-#define PRJQUOTA 2
-
-#if defined(__x86_64__) || defined(__ia64__) || defined(__ppc64__) || \
-    defined(__craynv) || defined(__mips64__) || defined(__powerpc64__) || \
-    defined(__aarch64__)
-typedef struct stat    lstat_t;
-# define lstat_f       lstat
-# define fstat_f       fstat
-# define fstatat_f     fstatat
-# define HAVE_LOV_USER_MDS_DATA
-#elif defined(__USE_LARGEFILE64) || defined(__KERNEL__)
-typedef struct stat64  lstat_t;
-# define lstat_f       lstat64
-# define fstat_f       fstat64
-# define fstatat_f     fstatat64
-# define HAVE_LOV_USER_MDS_DATA
-#endif
-
-#define LUSTRE_EOF 0xffffffffffffffffULL
-
-/* for statfs() */
-#define LL_SUPER_MAGIC 0x0BD00BD0
-
-#ifndef FSFILT_IOC_GETFLAGS
-#define FSFILT_IOC_GETFLAGS               _IOR('f', 1, long)
-#define FSFILT_IOC_SETFLAGS               _IOW('f', 2, long)
-#define FSFILT_IOC_GETVERSION             _IOR('f', 3, long)
-#define FSFILT_IOC_SETVERSION             _IOW('f', 4, long)
-#define FSFILT_IOC_GETVERSION_OLD         _IOR('v', 1, long)
-#define FSFILT_IOC_SETVERSION_OLD         _IOW('v', 2, long)
-#endif
-
-/* FIEMAP flags supported by Lustre */
-#define LUSTRE_FIEMAP_FLAGS_COMPAT (FIEMAP_FLAG_SYNC | FIEMAP_FLAG_DEVICE_ORDER)
-
-enum obd_statfs_state {
-        OS_STATE_DEGRADED       = 0x00000001, /**< RAID degraded/rebuilding */
-        OS_STATE_READONLY       = 0x00000002, /**< filesystem is read-only */
-       OS_STATE_ENOSPC         = 0x00000020, /**< not enough free space */
-       OS_STATE_ENOINO         = 0x00000040, /**< not enough inodes */
-};
-
-struct obd_statfs {
-        __u64           os_type;
-        __u64           os_blocks;
-        __u64           os_bfree;
-        __u64           os_bavail;
-        __u64           os_files;
-        __u64           os_ffree;
-        __u8            os_fsid[40];
-        __u32           os_bsize;
-        __u32           os_namelen;
-        __u64           os_maxbytes;
-        __u32           os_state;       /**< obd_statfs_state OS_STATE_* flag */
-       __u32           os_fprecreated; /* objs available now to the caller */
-                                       /* used in QoS code to find preferred
-                                        * OSTs */
-        __u32           os_spare2;
-        __u32           os_spare3;
-        __u32           os_spare4;
-        __u32           os_spare5;
-        __u32           os_spare6;
-        __u32           os_spare7;
-        __u32           os_spare8;
-        __u32           os_spare9;
-};
-
-/**
- * File IDentifier.
- *
- * FID is a cluster-wide unique identifier of a file or an object (stripe).
- * FIDs are never reused.
- **/
-struct lu_fid {
-       /**
-       * FID sequence. Sequence is a unit of migration: all files (objects)
-       * with FIDs from a given sequence are stored on the same server.
-       * Lustre should support 2^64 objects, so even if each sequence
-       * has only a single object we can still enumerate 2^64 objects.
-       **/
-       __u64 f_seq;
-       /* FID number within sequence. */
-       __u32 f_oid;
-       /**
-        * FID version, used to distinguish different versions (in the sense
-        * of snapshots, etc.) of the same file system object. Not currently
-        * used.
-        **/
-       __u32 f_ver;
-};
-
-static inline bool fid_is_zero(const struct lu_fid *fid)
-{
-       return fid->f_seq == 0 && fid->f_oid == 0;
-}
-
-/* Currently, the filter_fid::ff_parent::f_ver is not the real parent
- * MDT-object's FID::f_ver, instead it is the OST-object index in its
- * parent MDT-object's layout EA. */
-#define f_stripe_idx f_ver
-
-struct ost_layout {
-       __u32   ol_stripe_size;
-       __u32   ol_stripe_count;
-       __u64   ol_comp_start;
-       __u64   ol_comp_end;
-       __u32   ol_comp_id;
-} __attribute__((packed));
-
-/* keep this one for compatibility */
-struct filter_fid_old {
-       struct lu_fid   ff_parent;
-       __u64           ff_objid;
-       __u64           ff_seq;
-};
-
-struct filter_fid {
-       struct lu_fid           ff_parent;
-       struct ost_layout       ff_layout;
-} __attribute__((packed));
-
-/* Userspace should treat lu_fid as opaque, and only use the following methods
- * to print or parse them.  Other functions (e.g. compare, swab) could be moved
- * here from lustre_idl.h if needed. */
-typedef struct lu_fid lustre_fid;
-
-enum lma_compat {
-       LMAC_HSM         = 0x00000001,
-/*     LMAC_SOM         = 0x00000002, obsolete since 2.8.0 */
-       LMAC_NOT_IN_OI   = 0x00000004, /* the object does NOT need OI mapping */
-       LMAC_FID_ON_OST  = 0x00000008, /* For OST-object, its OI mapping is
-                                      * under /O/<seq>/d<x>. */
-       LMAC_STRIPE_INFO = 0x00000010, /* stripe info in the LMA EA. */
-       LMAC_COMP_INFO   = 0x00000020, /* Component info in the LMA EA. */
-};
-
-/**
- * Masks for all features that should be supported by a Lustre version to
- * access a specific file.
- * This information is stored in lustre_mdt_attrs::lma_incompat.
- */
-enum lma_incompat {
-       LMAI_RELEASED           = 0x00000001, /* file is released */
-       LMAI_AGENT              = 0x00000002, /* agent inode */
-       LMAI_REMOTE_PARENT      = 0x00000004, /* the parent of the object
-                                                is on the remote MDT */
-       LMAI_STRIPED            = 0x00000008, /* striped directory inode */
-       LMAI_ORPHAN             = 0x00000010, /* inode is orphan */
-       LMA_INCOMPAT_SUPP       = (LMAI_AGENT | LMAI_REMOTE_PARENT | \
-                                  LMAI_STRIPED | LMAI_ORPHAN)
-};
-
-
-/**
- * Following struct for object attributes, that will be kept inode's EA.
- * Introduced in 2.0 release (please see b15993, for details)
- * Added to all objects since Lustre 2.4 as contains self FID
- */
-struct lustre_mdt_attrs {
-       /**
-        * Bitfield for supported data in this structure. From enum lma_compat.
-        * lma_self_fid and lma_flags are always available.
-        */
-       __u32   lma_compat;
-       /**
-        * Per-file incompat feature list. Lustre version should support all
-        * flags set in this field. The supported feature mask is available in
-        * LMA_INCOMPAT_SUPP.
-        */
-       __u32   lma_incompat;
-       /** FID of this inode */
-       struct lu_fid  lma_self_fid;
-};
-
-struct lustre_ost_attrs {
-       /* Use lustre_mdt_attrs directly for now, need a common header
-        * structure if want to change lustre_mdt_attrs in future. */
-       struct lustre_mdt_attrs loa_lma;
-
-       /* Below five elements are for OST-object's PFID EA, the
-        * lma_parent_fid::f_ver is composed of the stripe_count (high 16 bits)
-        * and the stripe_index (low 16 bits), the size should not exceed
-        * 5 * sizeof(__u64)) to be accessable by old Lustre. If the flag
-        * LMAC_STRIPE_INFO is set, then loa_parent_fid and loa_stripe_size
-        * are valid; if the flag LMAC_COMP_INFO is set, then the next three
-        * loa_comp_* elements are valid. */
-       struct lu_fid   loa_parent_fid;
-       __u32           loa_stripe_size;
-       __u32           loa_comp_id;
-       __u64           loa_comp_start;
-       __u64           loa_comp_end;
-};
-
-/**
- * Prior to 2.4, the LMA structure also included SOM attributes which has since
- * been moved to a dedicated xattr
- * lma_flags was also removed because of lma_compat/incompat fields.
- */
-#define LMA_OLD_SIZE (sizeof(struct lustre_mdt_attrs) + 5 * sizeof(__u64))
-
-/**
- * OST object IDentifier.
- */
-struct ost_id {
-       union {
-               struct {
-                       __u64   oi_id;
-                       __u64   oi_seq;
-               } oi;
-               struct lu_fid oi_fid;
-       };
-};
-
-#define DOSTID "%#llx:%llu"
-#define POSTID(oi) ((unsigned long long)ostid_seq(oi)), \
-                  ((unsigned long long)ostid_id(oi))
-
-struct ll_futimes_3 {
-       __u64 lfu_atime_sec;
-       __u64 lfu_atime_nsec;
-       __u64 lfu_mtime_sec;
-       __u64 lfu_mtime_nsec;
-       __u64 lfu_ctime_sec;
-       __u64 lfu_ctime_nsec;
-};
-
-/*
- * The ioctl naming rules:
- * LL_*     - works on the currently opened filehandle instead of parent dir
- * *_OBD_*  - gets data for both OSC or MDC (LOV, LMV indirectly)
- * *_MDC_*  - gets/sets data related to MDC
- * *_LOV_*  - gets/sets data related to OSC/LOV
- * *FILE*   - called on parent dir and passes in a filename
- * *STRIPE* - set/get lov_user_md
- * *INFO    - set/get lov_user_mds_data
- */
-/*     lustre_ioctl.h                  101-150 */
-#define LL_IOC_GETFLAGS                 _IOR ('f', 151, long)
-#define LL_IOC_SETFLAGS                 _IOW ('f', 152, long)
-#define LL_IOC_CLRFLAGS                 _IOW ('f', 153, long)
-#define LL_IOC_LOV_SETSTRIPE            _IOW ('f', 154, long)
-#define LL_IOC_LOV_SETSTRIPE_NEW       _IOWR('f', 154, struct lov_user_md)
-#define LL_IOC_LOV_GETSTRIPE            _IOW ('f', 155, long)
-#define LL_IOC_LOV_GETSTRIPE_NEW       _IOR('f', 155, struct lov_user_md)
-#define LL_IOC_LOV_SETEA                _IOW ('f', 156, long)
-/*     LL_IOC_RECREATE_OBJ             157 obsolete */
-/*     LL_IOC_RECREATE_FID             157 obsolete */
-#define LL_IOC_GROUP_LOCK               _IOW ('f', 158, long)
-#define LL_IOC_GROUP_UNLOCK             _IOW ('f', 159, long)
-/*     LL_IOC_QUOTACHECK               160 OBD_IOC_QUOTACHECK */
-/*     LL_IOC_POLL_QUOTACHECK          161 OBD_IOC_POLL_QUOTACHECK */
-/*     LL_IOC_QUOTACTL                 162 OBD_IOC_QUOTACTL */
-#define IOC_OBD_STATFS                  _IOWR('f', 164, struct obd_statfs *)
-/*     IOC_LOV_GETINFO                 165 obsolete */
-#define LL_IOC_FLUSHCTX                 _IOW ('f', 166, long)
-/*     LL_IOC_RMTACL                   167 obsolete */
-#define LL_IOC_GETOBDCOUNT              _IOR ('f', 168, long)
-#define LL_IOC_LLOOP_ATTACH             _IOWR('f', 169, long)
-#define LL_IOC_LLOOP_DETACH             _IOWR('f', 170, long)
-#define LL_IOC_LLOOP_INFO               _IOWR('f', 171, struct lu_fid)
-#define LL_IOC_LLOOP_DETACH_BYDEV       _IOWR('f', 172, long)
-#define LL_IOC_PATH2FID                 _IOR ('f', 173, long)
-#define LL_IOC_GET_CONNECT_FLAGS        _IOWR('f', 174, __u64 *)
-#define LL_IOC_GET_MDTIDX               _IOR ('f', 175, int)
-#define LL_IOC_FUTIMES_3               _IOWR('f', 176, struct ll_futimes_3)
-/*     lustre_ioctl.h                  177-210 */
-#define LL_IOC_HSM_STATE_GET           _IOR('f', 211, struct hsm_user_state)
-#define LL_IOC_HSM_STATE_SET           _IOW('f', 212, struct hsm_state_set)
-#define LL_IOC_HSM_CT_START            _IOW('f', 213, struct lustre_kernelcomm)
-#define LL_IOC_HSM_COPY_START          _IOW('f', 214, struct hsm_copy *)
-#define LL_IOC_HSM_COPY_END            _IOW('f', 215, struct hsm_copy *)
-#define LL_IOC_HSM_PROGRESS            _IOW('f', 216, struct hsm_user_request)
-#define LL_IOC_HSM_REQUEST             _IOW('f', 217, struct hsm_user_request)
-#define LL_IOC_DATA_VERSION            _IOR('f', 218, struct ioc_data_version)
-#define LL_IOC_LOV_SWAP_LAYOUTS                _IOW('f', 219, \
-                                               struct lustre_swap_layouts)
-#define LL_IOC_HSM_ACTION              _IOR('f', 220, \
-                                               struct hsm_current_action)
-/*     lustre_ioctl.h                  221-232 */
-#define LL_IOC_LMV_SETSTRIPE           _IOWR('f', 240, struct lmv_user_md)
-#define LL_IOC_LMV_GETSTRIPE           _IOWR('f', 241, struct lmv_user_md)
-#define LL_IOC_REMOVE_ENTRY            _IOWR('f', 242, __u64)
-#define LL_IOC_SET_LEASE               _IOWR('f', 243, long)
-#define LL_IOC_GET_LEASE               _IO('f', 244)
-#define LL_IOC_HSM_IMPORT              _IOWR('f', 245, struct hsm_user_import)
-#define LL_IOC_LMV_SET_DEFAULT_STRIPE  _IOWR('f', 246, struct lmv_user_md)
-#define LL_IOC_MIGRATE                 _IOR('f', 247, int)
-#define LL_IOC_FID2MDTIDX              _IOWR('f', 248, struct lu_fid)
-#define LL_IOC_GETPARENT               _IOWR('f', 249, struct getparent)
-#define LL_IOC_LADVISE                 _IOR('f', 250, struct llapi_lu_ladvise)
-
-#ifndef        FS_IOC_FSGETXATTR
-/*
- * Structure for FS_IOC_FSGETXATTR and FS_IOC_FSSETXATTR.
-*/
-struct fsxattr {
-       __u32           fsx_xflags;     /* xflags field value (get/set) */
-       __u32           fsx_extsize;    /* extsize field value (get/set)*/
-       __u32           fsx_nextents;   /* nextents field value (get)   */
-       __u32           fsx_projid;     /* project identifier (get/set) */
-       unsigned char   fsx_pad[12];
-};
-#define FS_IOC_FSGETXATTR              _IOR('X', 31, struct fsxattr)
-#define FS_IOC_FSSETXATTR              _IOW('X', 32, struct fsxattr)
-#endif
-#define LL_IOC_FSGETXATTR              FS_IOC_FSGETXATTR
-#define LL_IOC_FSSETXATTR              FS_IOC_FSSETXATTR
-
-
-/* Lease types for use as arg and return of LL_IOC_{GET,SET}_LEASE ioctl. */
-enum ll_lease_type {
-       LL_LEASE_RDLCK  = 0x1,
-       LL_LEASE_WRLCK  = 0x2,
-       LL_LEASE_UNLCK  = 0x4,
-};
-
-#define LL_STATFS_LMV          1
-#define LL_STATFS_LOV          2
-#define LL_STATFS_NODELAY      4
-
-#define IOC_MDC_TYPE            'i'
-#define IOC_MDC_LOOKUP          _IOWR(IOC_MDC_TYPE, 20, struct obd_device *)
-#define IOC_MDC_GETFILESTRIPE   _IOWR(IOC_MDC_TYPE, 21, struct lov_user_md *)
-#define IOC_MDC_GETFILEINFO     _IOWR(IOC_MDC_TYPE, 22, struct lov_user_mds_data *)
-#define LL_IOC_MDC_GETINFO      _IOWR(IOC_MDC_TYPE, 23, struct lov_user_mds_data *)
-
-#define MAX_OBD_NAME 128 /* If this changes, a NEW ioctl must be added */
-
-/* Define O_LOV_DELAY_CREATE to be a mask that is not useful for regular
- * files, but are unlikely to be used in practice and are not harmful if
- * used incorrectly.  O_NOCTTY and FASYNC are only meaningful for character
- * devices and are safe for use on new files. See LU-4209. */
-/* To be compatible with old statically linked binary we keep the check for
- * the older 0100000000 flag.  This is already removed upstream.  LU-812. */
-#define O_LOV_DELAY_CREATE_1_8 0100000000 /* FMODE_NONOTIFY masked in 2.6.36 */
-#define O_LOV_DELAY_CREATE_MASK        (O_NOCTTY | FASYNC)
-#define O_LOV_DELAY_CREATE             (O_LOV_DELAY_CREATE_1_8 | \
-                                        O_LOV_DELAY_CREATE_MASK)
-
-#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 LOV_USER_MAGIC_V1      0x0BD10BD0
-#define LOV_USER_MAGIC         LOV_USER_MAGIC_V1
-#define LOV_USER_MAGIC_JOIN_V1 0x0BD20BD0
-#define LOV_USER_MAGIC_V3      0x0BD30BD0
-/* 0x0BD40BD0 is occupied by LOV_MAGIC_MIGRATE */
-#define LOV_USER_MAGIC_SPECIFIC 0x0BD50BD0     /* for specific OSTs */
-#define LOV_USER_MAGIC_COMP_V1 0x0BD60BD0
-
-#define LMV_USER_MAGIC    0x0CD30CD0    /*default lmv magic*/
-
-#define LOV_PATTERN_RAID0      0x001
-#define LOV_PATTERN_RAID1      0x002
-#define LOV_PATTERN_FIRST      0x100
-#define LOV_PATTERN_CMOBD      0x200
-
-#define LOV_PATTERN_F_MASK     0xffff0000
-#define LOV_PATTERN_F_HOLE     0x40000000 /* there is hole in LOV EA */
-#define LOV_PATTERN_F_RELEASED 0x80000000 /* HSM released file */
-
-static inline bool lov_pattern_supported(__u32 pattern)
-{
-       return pattern == LOV_PATTERN_RAID0 ||
-              pattern == (LOV_PATTERN_RAID0 | LOV_PATTERN_F_RELEASED);
-}
-
-#define LOV_MAXPOOLNAME 15
-#define LOV_POOLNAMEF "%.15s"
-
-#define LOV_MIN_STRIPE_BITS 16   /* maximum PAGE_SIZE (ia64), power of 2 */
-#define LOV_MIN_STRIPE_SIZE (1 << LOV_MIN_STRIPE_BITS)
-#define LOV_MAX_STRIPE_COUNT_OLD 160
-/* This calculation is crafted so that input of 4096 will result in 160
- * which in turn is equal to old maximal stripe count.
- * XXX: In fact this is too simpified for now, what it also need is to get
- * ea_type argument to clearly know how much space each stripe consumes.
- *
- * The limit of 12 pages is somewhat arbitrary, but is a reasonably large
- * allocation that is sufficient for the current generation of systems.
- *
- * (max buffer size - lov+rpc header) / sizeof(struct lov_ost_data_v1) */
-#define LOV_MAX_STRIPE_COUNT 2000  /* ((12 * 4096 - 256) / 24) */
-#define LOV_ALL_STRIPES       0xffff /* only valid for directories */
-#define LOV_V1_INSANE_STRIPE_COUNT 65532 /* maximum stripe count bz13933 */
-
-#define XATTR_LUSTRE_PREFIX    "lustre."
-#define XATTR_LUSTRE_LOV       XATTR_LUSTRE_PREFIX"lov"
-
-#define lov_user_ost_data lov_user_ost_data_v1
-struct lov_user_ost_data_v1 {     /* per-stripe data structure */
-       struct ost_id l_ost_oi;   /* OST object ID */
-       __u32 l_ost_gen;          /* generation of this OST index */
-       __u32 l_ost_idx;          /* OST index in LOV */
-} __attribute__((packed));
-
-#define lov_user_md lov_user_md_v1
-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 */
-       struct ost_id lmm_oi;     /* MDT parent inode id/seq (id/0 for 1.x) */
-       __u32 lmm_stripe_size;    /* size of stripe in bytes */
-       __u16 lmm_stripe_count;   /* num stripes in use for this object */
-       union {
-               __u16 lmm_stripe_offset;  /* starting stripe offset in
-                                          * lmm_objects, use when writing */
-               __u16 lmm_layout_gen;     /* layout generation number
-                                          * used when reading */
-       };
-       struct lov_user_ost_data_v1 lmm_objects[0]; /* per-stripe data */
-} __attribute__((packed,  __may_alias__));
-
-struct lov_user_md_v3 {           /* LOV EA user data (host-endian) */
-       __u32 lmm_magic;          /* magic number = LOV_USER_MAGIC_V3 */
-       __u32 lmm_pattern;        /* LOV_PATTERN_RAID0, LOV_PATTERN_RAID1 */
-       struct ost_id lmm_oi;     /* MDT parent inode id/seq (id/0 for 1.x) */
-       __u32 lmm_stripe_size;    /* size of stripe in bytes */
-       __u16 lmm_stripe_count;   /* num stripes in use for this object */
-       union {
-               __u16 lmm_stripe_offset;  /* starting stripe offset in
-                                          * lmm_objects, use when writing */
-               __u16 lmm_layout_gen;     /* layout generation number
-                                          * used when reading */
-       };
-       char  lmm_pool_name[LOV_MAXPOOLNAME + 1]; /* pool name */
-       struct lov_user_ost_data_v1 lmm_objects[0]; /* per-stripe data */
-} __attribute__((packed));
-
-struct lu_extent {
-       __u64   e_start;
-       __u64   e_end;
-};
-
-#define DEXT "[ %#llx , %#llx )"
-#define PEXT(ext) (ext)->e_start, (ext)->e_end
-
-static inline bool lu_extent_is_overlapped(struct lu_extent *e1,
-                                          struct lu_extent *e2)
-{
-       return e1->e_start < e2->e_end && e2->e_start < e1->e_end;
-}
-
-enum lov_comp_md_entry_flags {
-       LCME_FL_PRIMARY = 0x00000001,   /* Not used */
-       LCME_FL_STALE   = 0x00000002,   /* Not used */
-       LCME_FL_OFFLINE = 0x00000004,   /* Not used */
-       LCME_FL_PREFERRED = 0x00000008, /* Not used */
-       LCME_FL_INIT    = 0x00000010,   /* instantiated */
-       LCME_FL_NEG     = 0x80000000    /* used to indicate a negative flag,
-                                          won't be stored on disk */
-};
-
-#define LCME_KNOWN_FLAGS       (LCME_FL_NEG | LCME_FL_INIT)
-
-/* lcme_id can be specified as certain flags, and the the first
- * bit of lcme_id is used to indicate that the ID is representing
- * certain LCME_FL_* but not a real ID. Which implies we can have
- * at most 31 flags (see LCME_FL_XXX). */
-enum lcme_id {
-       LCME_ID_INVAL   = 0x0,
-       LCME_ID_MAX     = 0x7FFFFFFF,
-       LCME_ID_ALL     = 0xFFFFFFFF,
-       LCME_ID_NOT_ID  = LCME_FL_NEG
-};
-
-#define LCME_ID_MASK   LCME_ID_MAX
-
-struct lov_comp_md_entry_v1 {
-       __u32                   lcme_id;        /* unique id of component */
-       __u32                   lcme_flags;     /* LCME_FL_XXX */
-       struct lu_extent        lcme_extent;    /* file extent for component */
-       __u32                   lcme_offset;    /* offset of component blob,
-                                                  start from lov_comp_md_v1 */
-       __u32                   lcme_size;      /* size of component blob */
-       __u64                   lcme_padding[2];
-} __attribute__((packed));
-
-enum lov_comp_md_flags;
-
-struct lov_comp_md_v1 {
-       __u32   lcm_magic;      /* LOV_USER_MAGIC_COMP_V1 */
-       __u32   lcm_size;       /* overall size including this struct */
-       __u32   lcm_layout_gen;
-       __u16   lcm_flags;
-       __u16   lcm_entry_count;
-       __u64   lcm_padding1;
-       __u64   lcm_padding2;
-       struct lov_comp_md_entry_v1 lcm_entries[0];
-} __attribute__((packed));
-
-static inline __u32 lov_user_md_size(__u16 stripes, __u32 lmm_magic)
-{
-       if (stripes == (__u16)-1)
-               stripes = 0;
-
-       if (lmm_magic == LOV_USER_MAGIC_V1)
-               return sizeof(struct lov_user_md_v1) +
-                             stripes * sizeof(struct lov_user_ost_data_v1);
-       return sizeof(struct lov_user_md_v3) +
-                               stripes * sizeof(struct lov_user_ost_data_v1);
-}
-
-/* Compile with -D_LARGEFILE64_SOURCE or -D_GNU_SOURCE (or #define) to
- * use this.  It is unsafe to #define those values in this header as it
- * is possible the application has already #included <sys/stat.h>. */
-#ifdef HAVE_LOV_USER_MDS_DATA
-#define lov_user_mds_data lov_user_mds_data_v1
-struct lov_user_mds_data_v1 {
-        lstat_t lmd_st;                 /* MDS stat struct */
-        struct lov_user_md_v1 lmd_lmm;  /* LOV EA V1 user data */
-} __attribute__((packed));
-
-struct lov_user_mds_data_v3 {
-        lstat_t lmd_st;                 /* MDS stat struct */
-        struct lov_user_md_v3 lmd_lmm;  /* LOV EA V3 user data */
-} __attribute__((packed));
-#endif
-
-struct lmv_user_mds_data {
-       struct lu_fid   lum_fid;
-       __u32           lum_padding;
-       __u32           lum_mds;
-};
-
-enum lmv_hash_type {
-       LMV_HASH_TYPE_UNKNOWN   = 0,    /* 0 is reserved for testing purpose */
-       LMV_HASH_TYPE_ALL_CHARS = 1,
-       LMV_HASH_TYPE_FNV_1A_64 = 2,
-       LMV_HASH_TYPE_MAX,
-};
-
-#define LMV_HASH_NAME_ALL_CHARS        "all_char"
-#define LMV_HASH_NAME_FNV_1A_64        "fnv_1a_64"
-
-extern char *mdt_hash_name[LMV_HASH_TYPE_MAX];
-
-/* Got this according to how get LOV_MAX_STRIPE_COUNT, see above,
- * (max buffer size - lmv+rpc header) / sizeof(struct lmv_user_mds_data) */
-#define LMV_MAX_STRIPE_COUNT 2000  /* ((12 * 4096 - 256) / 24) */
-#define lmv_user_md lmv_user_md_v1
-struct lmv_user_md_v1 {
-       __u32   lum_magic;       /* must be the first field */
-       __u32   lum_stripe_count;  /* dirstripe count */
-       __u32   lum_stripe_offset; /* MDT idx for default dirstripe */
-       __u32   lum_hash_type;     /* Dir stripe policy */
-       __u32   lum_type;         /* LMV type: default or normal */
-       __u32   lum_padding1;
-       __u32   lum_padding2;
-       __u32   lum_padding3;
-       char    lum_pool_name[LOV_MAXPOOLNAME + 1];
-       struct  lmv_user_mds_data  lum_objects[0];
-} __attribute__((packed));
-
-static inline int lmv_user_md_size(int stripes, int lmm_magic)
-{
-       return sizeof(struct lmv_user_md) +
-                     stripes * sizeof(struct lmv_user_mds_data);
-}
-
-struct ll_recreate_obj {
-        __u64 lrc_id;
-        __u32 lrc_ost_idx;
-};
-
-struct ll_fid {
-        __u64 id;         /* holds object id */
-        __u32 generation; /* holds object generation */
-        __u32 f_type;     /* holds object type or stripe idx when passing it to
-                           * OST for saving into EA. */
-};
-
-#define UUID_MAX        40
-struct obd_uuid {
-        char uuid[UUID_MAX];
-};
-
-static inline bool obd_uuid_equals(const struct obd_uuid *u1,
-                                  const struct obd_uuid *u2)
-{
-       return strcmp((char *)u1->uuid, (char *)u2->uuid) == 0;
-}
-
-static inline int obd_uuid_empty(struct obd_uuid *uuid)
-{
-        return uuid->uuid[0] == '\0';
-}
-
-static inline void obd_str2uuid(struct obd_uuid *uuid, const char *tmp)
-{
-        strncpy((char *)uuid->uuid, tmp, sizeof(*uuid));
-        uuid->uuid[sizeof(*uuid) - 1] = '\0';
-}
-
-/* For printf's only, make sure uuid is terminated */
-static inline char *obd_uuid2str(const struct obd_uuid *uuid)
-{
-       if (uuid == NULL)
-               return NULL;
-
-        if (uuid->uuid[sizeof(*uuid) - 1] != '\0') {
-                /* Obviously not safe, but for printfs, no real harm done...
-                   we're always null-terminated, even in a race. */
-                static char temp[sizeof(*uuid)];
-                memcpy(temp, uuid->uuid, sizeof(*uuid) - 1);
-                temp[sizeof(*uuid) - 1] = '\0';
-                return temp;
-        }
-        return (char *)(uuid->uuid);
-}
-
-/* Extract fsname from uuid (or target name) of a target
-   e.g. (myfs-OST0007_UUID -> myfs)
-   see also deuuidify. */
-static inline void obd_uuid2fsname(char *buf, char *uuid, int buflen)
-{
-        char *p;
-
-        strncpy(buf, uuid, buflen - 1);
-        buf[buflen - 1] = '\0';
-        p = strrchr(buf, '-');
-       if (p != NULL)
-               *p = '\0';
-}
-
-/* printf display format for Lustre FIDs
- * usage: printf("file FID is "DFID"\n", PFID(fid)); */
-#define FID_NOBRACE_LEN 40
-#define FID_LEN (FID_NOBRACE_LEN + 2)
-#define DFID_NOBRACE "%#llx:0x%x:0x%x"
-#define DFID "["DFID_NOBRACE"]"
-#define PFID(fid) (unsigned long long)(fid)->f_seq, (fid)->f_oid, (fid)->f_ver
-
-/* scanf input parse format for fids in DFID_NOBRACE format
- * Need to strip '[' from DFID format first or use "["SFID"]" at caller.
- * usage: sscanf(fidstr, SFID, RFID(&fid)); */
-#define SFID "0x%llx:0x%x:0x%x"
-#define RFID(fid) &((fid)->f_seq), &((fid)->f_oid), &((fid)->f_ver)
-
-/********* Quotas **********/
-
-#define LUSTRE_QUOTABLOCK_BITS 10
-#define LUSTRE_QUOTABLOCK_SIZE (1 << LUSTRE_QUOTABLOCK_BITS)
-
-static inline __u64 lustre_stoqb(size_t space)
-{
-       return (space + LUSTRE_QUOTABLOCK_SIZE - 1) >> LUSTRE_QUOTABLOCK_BITS;
-}
-
-#define Q_QUOTACHECK   0x800100 /* deprecated as of 2.4 */
-#define Q_INITQUOTA    0x800101 /* deprecated as of 2.4  */
-#define Q_GETOINFO     0x800102 /* get obd quota info */
-#define Q_GETOQUOTA    0x800103 /* get obd quotas */
-#define Q_FINVALIDATE  0x800104 /* deprecated as of 2.4 */
-
-/* these must be explicitly translated into linux Q_* in ll_dir_ioctl */
-#define LUSTRE_Q_QUOTAON    0x800002     /* deprecated as of 2.4 */
-#define LUSTRE_Q_QUOTAOFF   0x800003     /* deprecated as of 2.4 */
-#define LUSTRE_Q_GETINFO    0x800005     /* get information about quota files */
-#define LUSTRE_Q_SETINFO    0x800006     /* set information about quota files */
-#define LUSTRE_Q_GETQUOTA   0x800007     /* get user quota structure */
-#define LUSTRE_Q_SETQUOTA   0x800008     /* set user quota structure */
-/* lustre-specific control commands */
-#define LUSTRE_Q_INVALIDATE  0x80000b     /* deprecated as of 2.4 */
-#define LUSTRE_Q_FINVALIDATE 0x80000c     /* deprecated as of 2.4 */
-
-#define ALLQUOTA 255       /* set all quota */
-static inline char *qtype_name(int qtype)
-{
-       switch (qtype) {
-       case USRQUOTA:
-               return "usr";
-       case GRPQUOTA:
-               return "grp";
-       case PRJQUOTA:
-               return "prj";
-       }
-       return "unknown";
-}
-
-#define IDENTITY_DOWNCALL_MAGIC 0x6d6dd629
-
-/* permission */
-#define N_PERMS_MAX      64
-
-struct perm_downcall_data {
-        __u64 pdd_nid;
-        __u32 pdd_perm;
-        __u32 pdd_padding;
-};
-
-struct identity_downcall_data {
-        __u32                            idd_magic;
-        __u32                            idd_err;
-        __u32                            idd_uid;
-        __u32                            idd_gid;
-        __u32                            idd_nperms;
-        __u32                            idd_ngroups;
-        struct perm_downcall_data idd_perms[N_PERMS_MAX];
-        __u32                            idd_groups[0];
-};
-
-#ifdef NEED_QUOTA_DEFS
-#ifndef QIF_BLIMITS
-#define QIF_BLIMITS     1
-#define QIF_SPACE       2
-#define QIF_ILIMITS     4
-#define QIF_INODES      8
-#define QIF_BTIME       16
-#define QIF_ITIME       32
-#define QIF_LIMITS      (QIF_BLIMITS | QIF_ILIMITS)
-#define QIF_USAGE       (QIF_SPACE | QIF_INODES)
-#define QIF_TIMES       (QIF_BTIME | QIF_ITIME)
-#define QIF_ALL         (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
-#endif
-
-#endif /* !__KERNEL__ */
-
-/* lustre volatile file support
- * file name header: .^L^S^T^R:volatile"
- */
-#define LUSTRE_VOLATILE_HDR    ".\x0c\x13\x14\x12:VOLATILE"
-#define LUSTRE_VOLATILE_HDR_LEN        14
-
-typedef enum lustre_quota_version {
-        LUSTRE_QUOTA_V2 = 1
-} lustre_quota_version_t;
-
-/* XXX: same as if_dqinfo struct in kernel */
-struct obd_dqinfo {
-        __u64 dqi_bgrace;
-        __u64 dqi_igrace;
-        __u32 dqi_flags;
-        __u32 dqi_valid;
-};
-
-/* XXX: same as if_dqblk struct in kernel, plus one padding */
-struct obd_dqblk {
-        __u64 dqb_bhardlimit;
-        __u64 dqb_bsoftlimit;
-        __u64 dqb_curspace;
-        __u64 dqb_ihardlimit;
-        __u64 dqb_isoftlimit;
-        __u64 dqb_curinodes;
-        __u64 dqb_btime;
-        __u64 dqb_itime;
-        __u32 dqb_valid;
-        __u32 dqb_padding;
-};
-
-enum {
-        QC_GENERAL      = 0,
-        QC_MDTIDX       = 1,
-        QC_OSTIDX       = 2,
-        QC_UUID         = 3
-};
-
-struct if_quotactl {
-        __u32                   qc_cmd;
-        __u32                   qc_type;
-        __u32                   qc_id;
-        __u32                   qc_stat;
-        __u32                   qc_valid;
-        __u32                   qc_idx;
-        struct obd_dqinfo       qc_dqinfo;
-        struct obd_dqblk        qc_dqblk;
-        char                    obd_type[16];
-        struct obd_uuid         obd_uuid;
-};
-
-/* swap layout flags */
-#define SWAP_LAYOUTS_CHECK_DV1         (1 << 0)
-#define SWAP_LAYOUTS_CHECK_DV2         (1 << 1)
-#define SWAP_LAYOUTS_KEEP_MTIME                (1 << 2)
-#define SWAP_LAYOUTS_KEEP_ATIME                (1 << 3)
-#define SWAP_LAYOUTS_CLOSE             (1 << 4)
-
-/* Swap XATTR_NAME_HSM as well, only on the MDT so far */
-#define SWAP_LAYOUTS_MDS_HSM           (1 << 31)
-struct lustre_swap_layouts {
-       __u64   sl_flags;
-       __u32   sl_fd;
-       __u32   sl_gid;
-       __u64   sl_dv1;
-       __u64   sl_dv2;
-};
-
-
-/********* Changelogs **********/
-/** Changelog record types */
-enum changelog_rec_type {
-        CL_MARK     = 0,
-        CL_CREATE   = 1,  /* namespace */
-        CL_MKDIR    = 2,  /* namespace */
-        CL_HARDLINK = 3,  /* namespace */
-        CL_SOFTLINK = 4,  /* namespace */
-        CL_MKNOD    = 5,  /* namespace */
-        CL_UNLINK   = 6,  /* namespace */
-        CL_RMDIR    = 7,  /* namespace */
-        CL_RENAME   = 8,  /* namespace */
-        CL_EXT      = 9,  /* namespace extended record (2nd half of rename) */
-        CL_OPEN     = 10, /* not currently used */
-        CL_CLOSE    = 11, /* may be written to log only with mtime change */
-       CL_LAYOUT   = 12, /* file layout/striping modified */
-       CL_TRUNC    = 13,
-       CL_SETATTR  = 14,
-       CL_XATTR    = 15,
-       CL_HSM      = 16, /* HSM specific events, see flags */
-       CL_MTIME    = 17, /* Precedence: setattr > mtime > ctime > atime */
-       CL_CTIME    = 18,
-       CL_ATIME    = 19,
-       CL_MIGRATE  = 20,
-       CL_LAST
-};
-
-static inline const char *changelog_type2str(int type) {
-       static const char *changelog_str[] = {
-               "MARK",  "CREAT", "MKDIR", "HLINK", "SLINK", "MKNOD", "UNLNK",
-               "RMDIR", "RENME", "RNMTO", "OPEN",  "CLOSE", "LYOUT", "TRUNC",
-               "SATTR", "XATTR", "HSM",   "MTIME", "CTIME", "ATIME", "MIGRT"
-       };
-
-       if (type >= 0 && type < CL_LAST)
-               return changelog_str[type];
-       return NULL;
-}
-
-/* per-record flags */
-#define CLF_FLAGSHIFT   12
-#define CLF_FLAGMASK    ((1U << CLF_FLAGSHIFT) - 1)
-#define CLF_VERMASK     (~CLF_FLAGMASK)
-enum changelog_rec_flags {
-       CLF_VERSION     = 0x1000,
-       CLF_RENAME      = 0x2000,
-       CLF_JOBID       = 0x4000,
-       CLF_SUPPORTED   = CLF_VERSION | CLF_RENAME | CLF_JOBID
-};
-
-
-/* Anything under the flagmask may be per-type (if desired) */
-/* Flags for unlink */
-#define CLF_UNLINK_LAST       0x0001 /* Unlink of last hardlink */
-#define CLF_UNLINK_HSM_EXISTS 0x0002 /* File has something in HSM */
-                                     /* HSM cleaning needed */
-/* Flags for rename */
-#define CLF_RENAME_LAST                0x0001 /* rename unlink last hardlink
-                                       * of target */
-#define CLF_RENAME_LAST_EXISTS 0x0002 /* rename unlink last hardlink of target
-                                       * has an archive in backend */
-
-/* Flags for HSM */
-/* 12b used (from high weight to low weight):
- * 2b for flags
- * 3b for event
- * 7b for error code
- */
-#define CLF_HSM_ERR_L        0 /* HSM return code, 7 bits */
-#define CLF_HSM_ERR_H        6
-#define CLF_HSM_EVENT_L      7 /* HSM event, 3 bits, see enum hsm_event */
-#define CLF_HSM_EVENT_H      9
-#define CLF_HSM_FLAG_L      10 /* HSM flags, 2 bits, 1 used, 1 spare */
-#define CLF_HSM_FLAG_H      11
-#define CLF_HSM_SPARE_L     12 /* 4 spare bits */
-#define CLF_HSM_SPARE_H     15
-#define CLF_HSM_LAST        15
-
-/* 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
-#define CLF_HSM_ERROVERFLOW  0x7F
-
-#define CLF_HSM_DIRTY        1 /* file is dirty after HSM request end */
-
-/* 3 bits field => 8 values allowed */
-enum hsm_event {
-        HE_ARCHIVE      = 0,
-        HE_RESTORE      = 1,
-        HE_CANCEL       = 2,
-        HE_RELEASE      = 3,
-        HE_REMOVE       = 4,
-        HE_STATE        = 5,
-        HE_SPARE1       = 6,
-        HE_SPARE2       = 7,
-};
-
-static inline enum hsm_event hsm_get_cl_event(__u16 flags)
-{
-       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)
-{
-        *flags |= (he << CLF_HSM_EVENT_L);
-}
-
-static inline __u16 hsm_get_cl_flags(int 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)
-{
-        *flags |= (bits << CLF_HSM_FLAG_L);
-}
-
-static inline int hsm_get_cl_error(int 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)
-{
-        *flags |= (error << CLF_HSM_ERR_L);
-}
-
-enum changelog_send_flag {
-       /* Not yet implemented */
-       CHANGELOG_FLAG_FOLLOW   = 0x01,
-       /* Blocking IO makes sense in case of slow user parsing of the records,
-        * but it also prevents us from cleaning up if the records are not
-        * consumed. */
-       CHANGELOG_FLAG_BLOCK    = 0x02,
-       /* Pack jobid into the changelog records if available. */
-       CHANGELOG_FLAG_JOBID    = 0x04,
-};
-
-#define CR_MAXSIZE cfs_size_round(2 * NAME_MAX + 2 + \
-                                 changelog_rec_offset(CLF_SUPPORTED))
-
-/* 31 usable bytes string + null terminator. */
-#define LUSTRE_JOBID_SIZE      32
-
-/* This is the minimal changelog record. It can contain extensions
- * such as rename fields or process jobid. Its exact content is described
- * by the cr_flags.
- *
- * Extensions are packed in the same order as their corresponding flags.
- */
-struct changelog_rec {
-       __u16                   cr_namelen;
-       __u16                   cr_flags; /**< \a changelog_rec_flags */
-       __u32                   cr_type;  /**< \a changelog_rec_type */
-       __u64                   cr_index; /**< changelog record number */
-       __u64                   cr_prev;  /**< last index for this target fid */
-       __u64                   cr_time;
-       union {
-               lustre_fid      cr_tfid;        /**< target fid */
-               __u32           cr_markerflags; /**< CL_MARK flags */
-       };
-       lustre_fid              cr_pfid;        /**< parent fid */
-};
-
-/* Changelog extension for RENAME. */
-struct changelog_ext_rename {
-       lustre_fid              cr_sfid;     /**< source fid, or zero */
-       lustre_fid              cr_spfid;    /**< source parent fid, or zero */
-};
-
-/* Changelog extension to include JOBID. */
-struct changelog_ext_jobid {
-       char    cr_jobid[LUSTRE_JOBID_SIZE];    /**< zero-terminated string. */
-};
-
-
-static inline size_t changelog_rec_offset(enum changelog_rec_flags crf)
-{
-       size_t size = sizeof(struct changelog_rec);
-
-       if (crf & CLF_RENAME)
-               size += sizeof(struct changelog_ext_rename);
-
-       if (crf & CLF_JOBID)
-               size += sizeof(struct changelog_ext_jobid);
-
-       return size;
-}
-
-static inline size_t changelog_rec_size(const struct changelog_rec *rec)
-{
-       return changelog_rec_offset(rec->cr_flags);
-}
-
-static inline size_t changelog_rec_varsize(const struct changelog_rec *rec)
-{
-       return changelog_rec_size(rec) - sizeof(*rec) + rec->cr_namelen;
-}
-
-static inline
-struct changelog_ext_rename *changelog_rec_rename(const struct changelog_rec *rec)
-{
-       enum changelog_rec_flags crf = rec->cr_flags & CLF_VERSION;
-
-       return (struct changelog_ext_rename *)((char *)rec +
-                                              changelog_rec_offset(crf));
-}
-
-/* The jobid follows the rename extension, if present */
-static inline
-struct changelog_ext_jobid *changelog_rec_jobid(const struct changelog_rec *rec)
-{
-       enum changelog_rec_flags crf = rec->cr_flags &
-                                       (CLF_VERSION | CLF_RENAME);
-
-       return (struct changelog_ext_jobid *)((char *)rec +
-                                             changelog_rec_offset(crf));
-}
-
-/* The name follows the rename and jobid extensions, if present */
-static inline char *changelog_rec_name(const struct changelog_rec *rec)
-{
-       return (char *)rec + changelog_rec_offset(rec->cr_flags &
-                                                 CLF_SUPPORTED);
-}
-
-static inline size_t changelog_rec_snamelen(const struct changelog_rec *rec)
-{
-       return rec->cr_namelen - strlen(changelog_rec_name(rec)) - 1;
-}
-
-static inline char *changelog_rec_sname(const struct changelog_rec *rec)
-{
-       char *cr_name = changelog_rec_name(rec);
-
-       return cr_name + strlen(cr_name) + 1;
-}
-
-/**
- * Remap a record to the desired format as specified by the crf flags.
- * The record must be big enough to contain the final remapped version.
- * Superfluous extension fields are removed and missing ones are added
- * and zeroed. The flags of the record are updated accordingly.
- *
- * The jobid and rename extensions can be added to a record, to match the
- * format an application expects, typically. In this case, the newly added
- * fields will be zeroed.
- * The Jobid field can be removed, to guarantee compatibility with older
- * clients that don't expect this field in the records they process.
- *
- * The following assumptions are being made:
- *   - CLF_RENAME will not be removed
- *   - CLF_JOBID will not be added without CLF_RENAME being added too
- *
- * @param[in,out]  rec         The record to remap.
- * @param[in]      crf_wanted  Flags describing the desired extensions.
- */
-static inline void changelog_remap_rec(struct changelog_rec *rec,
-                                      enum changelog_rec_flags crf_wanted)
-{
-       char *jid_mov;
-       char *rnm_mov;
-
-       crf_wanted &= CLF_SUPPORTED;
-
-       if ((rec->cr_flags & CLF_SUPPORTED) == crf_wanted)
-               return;
-
-       /* First move the variable-length name field */
-       memmove((char *)rec + changelog_rec_offset(crf_wanted),
-               changelog_rec_name(rec), rec->cr_namelen);
-
-       /* Locations of jobid and rename extensions in the remapped record */
-       jid_mov = (char *)rec +
-                 changelog_rec_offset(crf_wanted & ~CLF_JOBID);
-       rnm_mov = (char *)rec +
-                 changelog_rec_offset(crf_wanted & ~(CLF_JOBID | CLF_RENAME));
-
-       /* Move the extension fields to the desired positions */
-       if ((crf_wanted & CLF_JOBID) && (rec->cr_flags & CLF_JOBID))
-               memmove(jid_mov, changelog_rec_jobid(rec),
-                       sizeof(struct changelog_ext_jobid));
-
-       if ((crf_wanted & CLF_RENAME) && (rec->cr_flags & CLF_RENAME))
-               memmove(rnm_mov, changelog_rec_rename(rec),
-                       sizeof(struct changelog_ext_rename));
-
-       /* Clear newly added fields */
-       if ((crf_wanted & CLF_JOBID) && !(rec->cr_flags & CLF_JOBID))
-               memset(jid_mov, 0, sizeof(struct changelog_ext_jobid));
-
-       if ((crf_wanted & CLF_RENAME) && !(rec->cr_flags & CLF_RENAME))
-               memset(rnm_mov, 0, sizeof(struct changelog_ext_rename));
-
-       /* Update the record's flags accordingly */
-       rec->cr_flags = (rec->cr_flags & CLF_FLAGMASK) | crf_wanted;
-}
-
-enum changelog_message_type {
-        CL_RECORD = 10, /* message is a changelog_rec */
-        CL_EOF    = 11, /* at end of current changelog */
-};
-
-/********* Misc **********/
-
-struct ioc_data_version {
-        __u64 idv_version;
-        __u64 idv_flags;     /* See LL_DV_xxx */
-};
-#define LL_DV_RD_FLUSH (1 << 0) /* Flush dirty pages from clients */
-#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)))
-#endif
-
-#define dot_lustre_name ".lustre"
-
-
-/********* HSM **********/
-
-/** HSM per-file state
- * See HSM_FLAGS below.
- */
-enum hsm_states {
-       HS_NONE         = 0x00000000,
-       HS_EXISTS       = 0x00000001,
-       HS_DIRTY        = 0x00000002,
-       HS_RELEASED     = 0x00000004,
-       HS_ARCHIVED     = 0x00000008,
-       HS_NORELEASE    = 0x00000010,
-       HS_NOARCHIVE    = 0x00000020,
-       HS_LOST         = 0x00000040,
-};
-
-/* HSM user-setable flags. */
-#define HSM_USER_MASK   (HS_NORELEASE | HS_NOARCHIVE | HS_DIRTY)
-
-/* Other HSM flags. */
-#define HSM_STATUS_MASK (HS_EXISTS | HS_LOST | HS_RELEASED | HS_ARCHIVED)
-
 /*
- * All HSM-related possible flags that could be applied to a file.
- * This should be kept in sync with hsm_states.
- */
-#define HSM_FLAGS_MASK  (HSM_USER_MASK | HSM_STATUS_MASK)
-
-/**
- * HSM request progress state
+ * NOTE: This file is DEPRECATED! Please include linux/lustre/lustre_user.h
+ * directly instead of this file. This file will be removed from a
+ * future version of lustre!
  */
-enum hsm_progress_states {
-       HPS_WAITING     = 1,
-       HPS_RUNNING     = 2,
-       HPS_DONE        = 3,
-};
-#define HPS_NONE       0
-
-static inline const char *hsm_progress_state2name(enum hsm_progress_states s)
-{
-       switch  (s) {
-       case HPS_WAITING:       return "waiting";
-       case HPS_RUNNING:       return "running";
-       case HPS_DONE:          return "done";
-       default:                return "unknown";
-       }
-}
-
-struct hsm_extent {
-       __u64 offset;
-       __u64 length;
-} __attribute__((packed));
-
-/**
- * Current HSM states of a Lustre file.
- *
- * This structure purpose is to be sent to user-space mainly. It describes the
- * current HSM flags and in-progress action.
- */
-struct hsm_user_state {
-       /** Current HSM states, from enum hsm_states. */
-       __u32                   hus_states;
-       __u32                   hus_archive_id;
-       /**  The current undergoing action, if there is one */
-       __u32                   hus_in_progress_state;
-       __u32                   hus_in_progress_action;
-       struct hsm_extent       hus_in_progress_location;
-       char                    hus_extended_info[];
-};
-
-struct hsm_state_set_ioc {
-       struct lu_fid   hssi_fid;
-       __u64           hssi_setmask;
-       __u64           hssi_clearmask;
-};
-
-/*
- * This structure describes the current in-progress action for a file.
- * it is retuned to user space and send over the wire
- */
-struct hsm_current_action {
-       /**  The current undergoing action, if there is one */
-       /* state is one of hsm_progress_states */
-       __u32                   hca_state;
-       /* action is one of hsm_user_action */
-       __u32                   hca_action;
-       struct hsm_extent       hca_location;
-};
-
-/***** HSM user requests ******/
-/* User-generated (lfs/ioctl) request types */
-enum hsm_user_action {
-        HUA_NONE    =  1, /* no action (noop) */
-        HUA_ARCHIVE = 10, /* copy to hsm */
-        HUA_RESTORE = 11, /* prestage */
-        HUA_RELEASE = 12, /* drop ost objects */
-        HUA_REMOVE  = 13, /* remove from archive */
-        HUA_CANCEL  = 14  /* cancel a request */
-};
-
-static inline const char *hsm_user_action2name(enum hsm_user_action  a)
-{
-        switch  (a) {
-        case HUA_NONE:    return "NOOP";
-        case HUA_ARCHIVE: return "ARCHIVE";
-        case HUA_RESTORE: return "RESTORE";
-        case HUA_RELEASE: return "RELEASE";
-        case HUA_REMOVE:  return "REMOVE";
-        case HUA_CANCEL:  return "CANCEL";
-        default:          return "UNKNOWN";
-        }
-}
-
-/*
- * List of hr_flags (bit field)
- */
-#define HSM_FORCE_ACTION 0x0001
-/* used by CT, cannot be set by user */
-#define HSM_GHOST_COPY   0x0002
-
-/**
- * Contains all the fixed part of struct hsm_user_request.
- *
- */
-struct hsm_request {
-       __u32 hr_action;        /* enum hsm_user_action */
-       __u32 hr_archive_id;    /* archive id, used only with HUA_ARCHIVE */
-       __u64 hr_flags;         /* request flags */
-       __u32 hr_itemcount;     /* item count in hur_user_item vector */
-       __u32 hr_data_len;
-};
-
-struct hsm_user_item {
-       lustre_fid        hui_fid;
-       struct hsm_extent hui_extent;
-} __attribute__((packed));
-
-struct hsm_user_request {
-       struct hsm_request      hur_request;
-       struct hsm_user_item    hur_user_item[0];
-       /* extra data blob at end of struct (after all
-        * hur_user_items), only use helpers to access it
-        */
-} __attribute__((packed));
-
-/** Return pointer to data field in a hsm user request */
-static inline void *hur_data(struct hsm_user_request *hur)
-{
-       return &(hur->hur_user_item[hur->hur_request.hr_itemcount]);
-}
-
-/**
- * Compute the current length of the provided hsm_user_request.  This returns -1
- * instead of an errno because ssize_t is defined to be only [ -1, SSIZE_MAX ]
- *
- * return -1 on bounds check error.
- */
-static inline ssize_t hur_len(struct hsm_user_request *hur)
-{
-       __u64   size;
-
-       /* can't overflow a __u64 since hr_itemcount is only __u32 */
-       size = offsetof(struct hsm_user_request, hur_user_item[0]) +
-               (__u64)hur->hur_request.hr_itemcount *
-               sizeof(hur->hur_user_item[0]) + hur->hur_request.hr_data_len;
-
-       if (size != (ssize_t)size)
-               return -1;
-
-       return size;
-}
-
-/****** HSM RPCs to copytool *****/
-/* Message types the copytool may receive */
-enum hsm_message_type {
-        HMT_ACTION_LIST = 100, /* message is a hsm_action_list */
-};
-
-/* Actions the copytool may be instructed to take for a given action_item */
-enum hsm_copytool_action {
-        HSMA_NONE    = 10, /* no action */
-        HSMA_ARCHIVE = 20, /* arbitrary offset */
-        HSMA_RESTORE = 21,
-        HSMA_REMOVE  = 22,
-        HSMA_CANCEL  = 23
-};
-
-static inline const char *hsm_copytool_action2name(enum hsm_copytool_action  a)
-{
-        switch  (a) {
-        case HSMA_NONE:    return "NOOP";
-        case HSMA_ARCHIVE: return "ARCHIVE";
-        case HSMA_RESTORE: return "RESTORE";
-        case HSMA_REMOVE:  return "REMOVE";
-        case HSMA_CANCEL:  return "CANCEL";
-        default:           return "UNKNOWN";
-        }
-}
-
-/* Copytool item action description */
-struct hsm_action_item {
-       __u32      hai_len;     /* valid size of this struct */
-       __u32      hai_action;  /* hsm_copytool_action, but use known size */
-       lustre_fid hai_fid;     /* Lustre FID to operate on */
-       lustre_fid hai_dfid;    /* fid used for data access */
-       struct hsm_extent hai_extent;  /* byte range to operate on */
-       __u64      hai_cookie;  /* action cookie from coordinator */
-       __u64      hai_gid;     /* grouplock id */
-       char       hai_data[0]; /* variable length */
-} __attribute__((packed));
-
-/**
- * helper function which print in hexa the first bytes of
- * hai opaque field
- *
- * \param hai [IN]        record to print
- * \param buffer [IN,OUT] buffer to write the hex string to
- * \param len [IN]        max buffer length
- *
- * \retval buffer
- */
-static inline char *hai_dump_data_field(const struct hsm_action_item *hai,
-                                       char *buffer, size_t len)
-{
-       int i;
-       int data_len;
-       char *ptr;
-
-       ptr = buffer;
-       data_len = hai->hai_len - sizeof(*hai);
-       for (i = 0; (i < data_len) && (len > 2); i++) {
-               snprintf(ptr, 3, "%02X", (unsigned char)hai->hai_data[i]);
-               ptr += 2;
-               len -= 2;
-       }
-
-       *ptr = '\0';
-
-       return buffer;
-}
-
-/* Copytool action list */
-#define HAL_VERSION 1
-#define HAL_MAXSIZE LNET_MTU /* bytes, used in userspace only */
-struct hsm_action_list {
-       __u32 hal_version;
-       __u32 hal_count;       /* number of hai's to follow */
-       __u64 hal_compound_id; /* returned by coordinator */
-       __u64 hal_flags;
-       __u32 hal_archive_id; /* which archive backend */
-       __u32 padding1;
-       char  hal_fsname[0];   /* null-terminated */
-       /* struct hsm_action_item[hal_count] follows, aligned on 8-byte
-          boundaries. See hai_zero */
-} __attribute__((packed));
-
-#ifndef HAVE_CFS_SIZE_ROUND
-static inline int cfs_size_round (int val)
-{
-        return (val + 7) & (~0x7);
-}
-#define HAVE_CFS_SIZE_ROUND
-#endif
-
-/* Return pointer to first hai in action list */
-static inline struct hsm_action_item *hai_first(struct hsm_action_list *hal)
-{
-       return (struct hsm_action_item *)(hal->hal_fsname +
-                                         cfs_size_round(strlen(hal-> \
-                                                               hal_fsname)
-                                                        + 1));
-}
-/* Return pointer to next hai */
-static inline struct hsm_action_item * hai_next(struct hsm_action_item *hai)
-{
-        return (struct hsm_action_item *)((char *)hai +
-                                          cfs_size_round(hai->hai_len));
-}
-
-/* Return size of an hsm_action_list */
-static inline size_t hal_size(struct hsm_action_list *hal)
-{
-       __u32 i;
-       size_t sz;
-       struct hsm_action_item *hai;
-
-       sz = sizeof(*hal) + cfs_size_round(strlen(hal->hal_fsname) + 1);
-       hai = hai_first(hal);
-       for (i = 0; i < hal->hal_count ; i++, hai = hai_next(hai))
-               sz += cfs_size_round(hai->hai_len);
-
-       return sz;
-}
-
-/* HSM file import
- * describe the attributes to be set on imported file
- */
-struct hsm_user_import {
-       __u64           hui_size;
-       __u64           hui_atime;
-       __u64           hui_mtime;
-       __u32           hui_atime_ns;
-       __u32           hui_mtime_ns;
-       __u32           hui_uid;
-       __u32           hui_gid;
-       __u32           hui_mode;
-       __u32           hui_archive_id;
-};
-
-/* Copytool progress reporting */
-#define HP_FLAG_COMPLETED 0x01
-#define HP_FLAG_RETRY     0x02
-
-struct hsm_progress {
-       lustre_fid              hp_fid;
-       __u64                   hp_cookie;
-       struct hsm_extent       hp_extent;
-       __u16                   hp_flags;
-       __u16                   hp_errval; /* positive val */
-       __u32                   padding;
-};
-
-struct hsm_copy {
-       __u64                   hc_data_version;
-       __u16                   hc_flags;
-       __u16                   hc_errval; /* positive val */
-       __u32                   padding;
-       struct hsm_action_item  hc_hai;
-};
-
-/* JSON objects */
-enum llapi_json_types {
-       LLAPI_JSON_INTEGER = 1,
-       LLAPI_JSON_BIGNUM,
-       LLAPI_JSON_REAL,
-       LLAPI_JSON_STRING
-};
-
-struct llapi_json_item {
-       char                    *lji_key;
-       __u32                   lji_type;
-       union {
-               int     lji_integer;
-               __u64   lji_u64;
-               double  lji_real;
-               char    *lji_string;
-       };
-       struct llapi_json_item  *lji_next;
-};
-
-struct llapi_json_item_list {
-       int                     ljil_item_count;
-       struct llapi_json_item  *ljil_items;
-};
-
-enum lu_ladvise_type {
-       LU_LADVISE_INVALID      = 0,
-       LU_LADVISE_WILLREAD     = 1,
-       LU_LADVISE_DONTNEED     = 2,
-};
-
-#define LU_LADVISE_NAMES {                                             \
-       [LU_LADVISE_WILLREAD]   = "willread",                           \
-       [LU_LADVISE_DONTNEED]   = "dontneed",                           \
-}
-
-/* This is the userspace argument for ladvise.  It is currently the same as
- * what goes on the wire (struct lu_ladvise), but is defined separately as we
- * may need info which is only used locally. */
-struct llapi_lu_ladvise {
-       __u16 lla_advice;       /* advice type */
-       __u16 lla_value1;       /* values for different advice types */
-       __u32 lla_value2;
-       __u64 lla_start;        /* first byte of extent for advice */
-       __u64 lla_end;          /* last byte of extent for advice */
-       __u32 lla_value3;
-       __u32 lla_value4;
-};
-
-enum ladvise_flag {
-       LF_ASYNC        = 0x00000001,
-};
-
-#define LADVISE_MAGIC 0x1ADF1CE0
-#define LF_MASK LF_ASYNC
-
-/* This is the userspace argument for ladvise, corresponds to ladvise_hdr which
- * is used on the wire.  It is defined separately as we may need info which is
- * only used locally. */
-struct llapi_ladvise_hdr {
-       __u32                   lah_magic;      /* LADVISE_MAGIC */
-       __u32                   lah_count;      /* number of advices */
-       __u64                   lah_flags;      /* from enum ladvise_flag */
-       __u32                   lah_value1;     /* unused */
-       __u32                   lah_value2;     /* unused */
-       __u64                   lah_value3;     /* unused */
-       struct llapi_lu_ladvise lah_advise[0];  /* advices in this header */
-};
-
-#define LAH_COUNT_MAX  (1024)
-
-/* Shared key */
-enum sk_crypt_alg {
-       SK_CRYPT_INVALID        = -1,
-       SK_CRYPT_EMPTY          = 0,
-       SK_CRYPT_AES256_CTR     = 1,
-       SK_CRYPT_MAX            = 2,
-};
-
-enum sk_hmac_alg {
-       SK_HMAC_INVALID = -1,
-       SK_HMAC_EMPTY   = 0,
-       SK_HMAC_SHA256  = 1,
-       SK_HMAC_SHA512  = 2,
-       SK_HMAC_MAX     = 3,
-};
-
-struct sk_crypt_type {
-       char    *sct_name;
-       size_t   sct_bytes;
-};
 
-struct sk_hmac_type {
-       char    *sht_name;
-       size_t   sht_bytes;
-};
+#include <linux/lustre/lustre_user.h>
 
-/** @} lustreuser */
-#endif /* _LUSTRE_USER_H */
+#warning "Including lustre_user.h is deprecated. Include linux/lustre/lustre_user.h directly."
index f2d6db8..974fc39 100644 (file)
@@ -40,7 +40,7 @@
 
 #include <stdarg.h>
 #include <stdint.h>
-#include <lustre/lustre_user.h>
+#include <linux/lustre/lustre_user.h>
 
 #ifndef LL_MAXQUOTAS
 #define LL_MAXQUOTAS 3
index 14f363d..92206ef 100644 (file)
@@ -48,7 +48,7 @@
 #include <linux/backing-dev.h>
 #include <linux/list.h>
 #include <libcfs/libcfs.h>
-#include <uapi/linux/lustre_disk.h>
+#include <uapi/linux/lustre/lustre_disk.h>
 
 #define IS_MDT(data)           ((data)->lsi_flags & LDD_F_SV_TYPE_MDT)
 #define IS_OST(data)           ((data)->lsi_flags & LDD_F_SV_TYPE_OST)
index 7299b68..1c2e347 100644 (file)
@@ -43,7 +43,7 @@
  */
 
 #include <lprocfs_status.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <lustre_dlm.h>
 
 struct mds_client_data;
index 8759b31..402cbef 100644 (file)
  */
 
 #include <libcfs/libcfs.h>
-#include <uapi/linux/lustre_fid.h>
-#include <lustre/lustre_idl.h>
-#include <uapi/linux/lustre_ostid.h>
+#include <uapi/linux/lustre/lustre_fid.h>
+#include <uapi/linux/lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_ostid.h>
 
 struct lu_env;
 struct lu_site;
index 2f39962..4d77253 100644 (file)
@@ -38,7 +38,7 @@
  * @{
  */
 
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <libcfs/libcfs.h>
 #include <seq_range.h>
 
index 1b44d32..108cec3 100644 (file)
@@ -44,8 +44,7 @@
  */
 
 #include <lustre_handles.h>
-#include <lustre/lustre_idl.h>
-
+#include <uapi/linux/lustre/lustre_idl.h>
 
 /**
  * Adaptive Timeout stuff
index cb8a29f..db681c4 100644 (file)
@@ -38,7 +38,7 @@
 #define __LUSTRE_KERNELCOMM_H__
 
 /* For declarations shared with userspace */
-#include <uapi_kernelcomm.h>
+#include <uapi/linux/lustre/lustre_kernelcomm.h>
 
 /* prototype for callback function on kuc groups */
 typedef int (*libcfs_kkuc_cb_t)(void *data, void *cb_arg);
index 37f6ee1..a48f510 100644 (file)
@@ -33,7 +33,7 @@
 #ifndef _LUSTRE_LFSCK_H
 # define _LUSTRE_LFSCK_H
 
-#include <lustre/lustre_lfsck_user.h>
+#include <uapi/linux/lustre/lustre_lfsck_user.h>
 #include <lustre_dlm.h>
 #include <lu_object.h>
 #include <dt_object.h>
index 325fc9b..f8330c1 100644 (file)
@@ -43,9 +43,9 @@
  */
 
 #include <libcfs/libcfs.h>
-#include <lustre/lustre_idl.h>
-#include <lustre_ver.h>
-#include <uapi/linux/lustre_cfg.h>
+#include <uapi/linux/lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_ver.h>
+#include <uapi/linux/lustre/lustre_cfg.h>
 
 /* target.c */
 struct ptlrpc_request;
index f936973..aaf3a26 100644 (file)
@@ -32,7 +32,7 @@
 
 #ifndef _LUSTRE_LMV_H
 #define _LUSTRE_LMV_H
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 
 struct lmv_oinfo {
        struct lu_fid   lmo_fid;
index 237da21..053bea1 100644 (file)
@@ -52,9 +52,9 @@
  */
 
 #include <obd_class.h>
-#include <lustre/lustre_idl.h>
 #include <dt_object.h>
-#include <lustre_log_user.h>
+#include <uapi/linux/lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_log_user.h>
 
 #define LOG_NAME_LIMIT(logname, name)                   \
         snprintf(logname, sizeof(logname), "LOGS/%s", name)
index be0eb77..de7bc74 100644 (file)
@@ -53,7 +53,7 @@
 #include <lustre_intent.h>
 #include <libcfs/libcfs.h>
 #include <obd_class.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <lustre_lib.h>
 #include <lustre_dlm.h>
 #include <lustre_export.h>
index c254c7f..ede98c7 100644 (file)
@@ -45,7 +45,7 @@
 
 #include <lustre_handles.h>
 #include <libcfs/libcfs.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <lustre_lib.h>
 #include <lustre_dlm.h>
 #include <lustre_export.h>
index b4fd0be..bf85c72 100644 (file)
@@ -55,7 +55,7 @@
 #include <libcfs/libcfs.h>
 #include <lnet/api.h>
 #include <uapi/linux/lnet/nidstr.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <lustre_ha.h>
 #include <lustre_sec.h>
 #include <lustre_import.h>
@@ -63,7 +63,7 @@
 #include <lu_object.h>
 #include <lustre_req_layout.h>
 #include <obd_support.h>
-#include <lustre_ver.h>
+#include <uapi/linux/lustre/lustre_ver.h>
 
 /* MD flags we _always_ use */
 #define PTLRPC_MD_OPTIONS  0
index d8553e9..65d2c08 100644 (file)
@@ -27,7 +27,7 @@
 #ifndef _LUSTRE_NODEMAP_H
 #define _LUSTRE_NODEMAP_H
 
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 
 #define LUSTRE_NODEMAP_NAME "nodemap"
 
index d3afac9..dd99eee 100644 (file)
@@ -35,7 +35,7 @@
 #ifndef _LUSTRE_OBDO_H_
 #define _LUSTRE_OBDO_H_
 
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 
 /**
  * Create an obdo to send over the wire
index 8f8b375..153ceeb 100644 (file)
@@ -48,7 +48,7 @@
 #ifndef _LUSTRE_SWAB_H_
 #define _LUSTRE_SWAB_H_
 
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 
 void lustre_swab_orphan_ent(struct lu_orphan_ent *ent);
 void lustre_swab_orphan_ent_v2(struct lu_orphan_ent_v2 *ent);
index 390e786..29a3cb9 100644 (file)
@@ -35,7 +35,7 @@
 
 #include <linux/spinlock.h>
 
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <lustre_lib.h>
 #include <libcfs/bitmap.h>
 #ifdef HAVE_SERVER_SUPPORT
@@ -314,7 +314,7 @@ struct client_obd {
         /* supported checksum types that are worked out at connect time */
         __u32                    cl_supp_cksum_types;
         /* checksum algorithm to be used */
-        cksum_type_t             cl_cksum_type;
+       enum cksum_types         cl_cksum_type;
 
         /* also protected by the poorly named _loi_list_lock lock above */
         struct osc_async_rc      cl_ar;
index 6a0cfe8..53ca52d 100644 (file)
@@ -34,9 +34,9 @@
 #define __OBD_CKSUM
 #include <libcfs/libcfs.h>
 #include <libcfs/libcfs_crypto.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 
-static inline unsigned char cksum_obd2cfs(cksum_type_t cksum_type)
+static inline unsigned char cksum_obd2cfs(enum cksum_types cksum_type)
 {
        switch (cksum_type) {
        case OBD_CKSUM_CRC32:
@@ -63,7 +63,7 @@ static inline unsigned char cksum_obd2cfs(cksum_type_t cksum_type)
  * because that is supported by all clients since 1.8
  *
  * In case multiple algorithms are supported the best one is used. */
-static inline u32 cksum_type_pack(cksum_type_t cksum_type)
+static inline u32 cksum_type_pack(enum cksum_types cksum_type)
 {
        unsigned int    performance = 0, tmp;
        u32             flag = OBD_FL_CKSUM_ADLER;
@@ -97,7 +97,7 @@ static inline u32 cksum_type_pack(cksum_type_t cksum_type)
        return flag;
 }
 
-static inline cksum_type_t cksum_type_unpack(u32 o_flags)
+static inline enum cksum_types cksum_type_unpack(u32 o_flags)
 {
        switch (o_flags & OBD_FL_CKSUM_ALL) {
        case OBD_FL_CKSUM_CRC32C:
@@ -115,9 +115,9 @@ static inline cksum_type_t cksum_type_unpack(u32 o_flags)
  * 1.8 supported ADLER it is base and not depend on hw
  * Client uses all available local algos
  */
-static inline cksum_type_t cksum_types_supported_client(void)
+static inline enum cksum_types cksum_types_supported_client(void)
 {
-       cksum_type_t ret = OBD_CKSUM_ADLER;
+       enum cksum_types ret = OBD_CKSUM_ADLER;
 
        CDEBUG(D_INFO, "Crypto hash speed: crc %d, crc32c %d, adler %d\n",
               cfs_crypto_hash_speed(cksum_obd2cfs(OBD_CKSUM_CRC32)),
@@ -163,7 +163,7 @@ static inline enum cksum_types cksum_types_supported_server(void)
  * checksum type due to its benchmarking at libcfs module load.
  * Caution is advised, however, since what is fastest on a single client may
  * not be the fastest or most efficient algorithm on the server.  */
-static inline cksum_type_t cksum_type_select(cksum_type_t cksum_types)
+static inline enum cksum_types cksum_type_select(enum cksum_types cksum_types)
 {
        return cksum_type_unpack(cksum_type_pack(cksum_types));
 }
index 72c43e5..21a7419 100644 (file)
@@ -38,7 +38,7 @@
 #include <lustre_net.h>
 #include <obd.h>
 #include <lustre_lib.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <lprocfs_status.h>
 
 #define OBD_STATFS_NODELAY      0x0001  /* requests should be send without delay
index c381f77..8c88de8 100644 (file)
@@ -31,7 +31,7 @@
 #ifndef _OBJ_UPDATE_H_
 #define _OBJ_UPDATE_H_
 
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 
 static inline size_t
 object_update_param_size(const struct object_update_param *param)
index 616ee3a..374d193 100644 (file)
@@ -34,7 +34,7 @@
 #ifndef _SEQ_RANGE_H_
 #define _SEQ_RANGE_H_
 
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 
 /**
  * computes the sequence range type \a range
similarity index 67%
rename from lustre/include/uapi/linux/Makefile.am
rename to lustre/include/uapi/linux/lustre/Makefile.am
index 06c3366..a2e099e 100644 (file)
 # Lustre is a trademark of Seagate, Inc.
 #
 
+lustreincludedir = /usr/include/linux/lustre
+lustreinclude_HEADERS = \
+       lustre_barrier_user.h \
+       lustre_cfg.h \
+       lustre_disk.h \
+       lustre_fid.h \
+       lustre_fiemap.h \
+       lustre_idl.h \
+       lustre_ioctl.h \
+       lustre_kernelcomm.h \
+       lustre_lfsck_user.h \
+       lustre_log_user.h \
+       lustre_ostid.h \
+       lustre_param.h \
+       lustre_user.h \
+       lustre_ver.h
+
 EXTRA_DIST = \
+       lustre_barrier_user.h \
        lustre_cfg.h \
        lustre_disk.h \
        lustre_fid.h \
+       lustre_fiemap.h \
+       lustre_idl.h \
        lustre_ioctl.h \
+       lustre_kernelcomm.h \
+       lustre_lfsck_user.h \
+       lustre_log_user.h \
        lustre_ostid.h \
-       lustre_param.h
+       lustre_param.h \
+       lustre_user.h \
+       lustre_ver.h
diff --git a/lustre/include/uapi/linux/lustre/lustre_barrier_user.h b/lustre/include/uapi/linux/lustre/lustre_barrier_user.h
new file mode 100644 (file)
index 0000000..8875a3d
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * 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 COPYING file that accompanied this code.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * GPL HEADER END
+ */
+/*
+ * Copyright (c) 2016, Intel Corporation.
+ *
+ * lustre/include/lustre/lustre_barrier_user.h
+ *
+ * Lustre write barrier (on MDT) userspace interfaces.
+ *
+ * Author: Fan, Yong <fan.yong@intel.com>
+ */
+#ifndef _LUSTRE_BARRIER_USER_H
+# define _LUSTRE_BARRIER_USER_H
+
+/*
+ * This is due to us being out of kernel and the way the OpenSFS branch
+ * handles CFLAGS.
+ */
+#ifdef __KERNEL__
+# include <uapi/linux/lustre/lustre_user.h>
+#else
+# include <linux/lustre/lustre_user.h>
+#endif
+
+#define BARRIER_VERSION_V1     1
+#define BARRIER_TIMEOUT_DEFAULT        30
+
+enum barrier_commands {
+       BC_FREEZE       = 1,
+       BC_THAW         = 2,
+       BC_STAT         = 3,
+       BC_RESCAN       = 4,
+};
+
+enum barrier_status {
+       BS_INIT         = 0,
+       BS_FREEZING_P1  = 1,
+       BS_FREEZING_P2  = 2,
+       BS_FROZEN       = 3,
+       BS_THAWING      = 4,
+       BS_THAWED       = 5,
+       BS_FAILED       = 6,
+       BS_EXPIRED      = 7,
+       BS_RESCAN       = 8,
+};
+
+struct barrier_ctl {
+       __u32   bc_version;
+       __u32   bc_cmd;
+       union {
+               __s32   bc_timeout;
+               __u32   bc_total;
+       };
+       union {
+               __u32   bc_status;
+               __u32   bc_absence;
+       };
+       char    bc_name[12];
+       __u32   bc_padding;
+};
+
+#endif /* _LUSTRE_BARRIER_USER_H */
similarity index 97%
rename from lustre/include/uapi/linux/lustre_cfg.h
rename to lustre/include/uapi/linux/lustre/lustre_cfg.h
index b1f68d5..c71be81 100644 (file)
 #ifndef _UAPI_LUSTRE_CFG_H
 #define _UAPI_LUSTRE_CFG_H
 
+#include <linux/errno.h>
 #include <linux/kernel.h>
-#include <lustre/lustre_user.h>
+/*
+ * This is due to us being out of kernel and the way the OpenSFS branch
+ * handles CFLAGS.
+ */
+#ifdef __KERNEL__
+# include <uapi/linux/lustre/lustre_user.h>
+#else
+# include <linux/lustre/lustre_user.h>
+#endif
 
 /* Handle older distros */
 #ifndef __ALIGN_KERNEL
similarity index 97%
rename from lustre/include/uapi/linux/lustre_fid.h
rename to lustre/include/uapi/linux/lustre/lustre_fid.h
index a43507e..e741a8f 100644 (file)
 #ifndef _UAPI_LUSTRE_FID_H_
 #define _UAPI_LUSTRE_FID_H_
 
-#include <lustre/lustre_idl.h>
+/*
+ * This is due to us being out of kernel and the way the OpenSFS branch
+ * handles CFLAGS.
+ */
+#ifdef __KERNEL__
+# include <uapi/linux/lustre/lustre_idl.h>
+#else
+# include <linux/lustre/lustre_idl.h>
+#endif
 
 /** returns fid object sequence */
 static inline __u64 fid_seq(const struct lu_fid *fid)
diff --git a/lustre/include/uapi/linux/lustre/lustre_fiemap.h b/lustre/include/uapi/linux/lustre/lustre_fiemap.h
new file mode 100644 (file)
index 0000000..cee135b
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * 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) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * Copyright (c) 2014, 2015, Intel Corporation.
+ */
+/*
+ * This file is part of Lustre, http://www.lustre.org/
+ * Lustre is a trademark of Sun Microsystems, Inc.
+ *
+ * lustre/include/lustre/ll_fiemap.h
+ *
+ * FIEMAP data structures and flags. This header file will be used until
+ * fiemap.h is available in the upstream kernel.
+ *
+ * Author: Kalpak Shah <kalpak.shah@sun.com>
+ * Author: Andreas Dilger <adilger@sun.com>
+ */
+
+#ifndef _LUSTRE_FIEMAP_H
+#define _LUSTRE_FIEMAP_H
+
+#ifndef __KERNEL__
+#include <stddef.h>
+#include <linux/fiemap.h>
+#endif
+
+/* XXX: We use fiemap_extent::fe_reserved[0] */
+#define fe_device      fe_reserved[0]
+
+static inline size_t fiemap_count_to_size(size_t extent_count)
+{
+       return sizeof(struct fiemap) + extent_count *
+                                      sizeof(struct fiemap_extent);
+}
+
+static inline unsigned fiemap_size_to_count(size_t array_size)
+{
+       return (array_size - sizeof(struct fiemap)) /
+              sizeof(struct fiemap_extent);
+}
+
+#define FIEMAP_FLAG_DEVICE_ORDER 0x40000000 /* return device ordered mapping */
+
+#ifdef FIEMAP_FLAGS_COMPAT
+#undef FIEMAP_FLAGS_COMPAT
+#endif
+
+/* Lustre specific flags - use a high bit, don't conflict with upstream flag */
+#define FIEMAP_EXTENT_NO_DIRECT 0x40000000 /* Data mapping undefined */
+#define FIEMAP_EXTENT_NET       0x80000000 /* Data stored remotely.
+                                           * Sets NO_DIRECT flag */
+
+#endif /* _LUSTRE_FIEMAP_H */
similarity index 99%
rename from lustre/include/lustre/lustre_idl.h
rename to lustre/include/uapi/linux/lustre/lustre_idl.h
index 9d02e4b..f124baa 100644 (file)
 #define _LUSTRE_IDL_H_
 
 #include <asm/byteorder.h>
+#include <linux/errno.h>
 #include <linux/types.h>
 
-#include <uapi/linux/lnet/lnet-types.h>
-#include <lustre/lustre_user.h> /* Defn's shared with user-space. */
-#include <lustre_ver.h>
+/*
+ * This is due to us being out of kernel and the way the OpenSFS branch
+ * handles CFLAGS.
+ */
+#ifdef __KERNEL__
+# include <uapi/linux/lnet/lnet-types.h>
+# include <uapi/linux/lustre/lustre_user.h> /* Defn's shared with user-space. */
+# include <uapi/linux/lustre/lustre_ver.h>
+#else
+# include <linux/lnet/lnet-types.h>
+# include <linux/lustre/lustre_user.h>
+# include <linux/lustre/lustre_ver.h>
+#endif
 
 /*
  *  GENERAL STUFF
similarity index 97%
rename from lustre/include/uapi/linux/lustre_ioctl.h
rename to lustre/include/uapi/linux/lustre/lustre_ioctl.h
index 2e8ee29..5469e29 100644 (file)
 #include <linux/ioctl.h>
 #include <linux/kernel.h>
 #include <linux/types.h>
-#include <lustre/lustre_idl.h>
+/*
+ * This is due to us being out of kernel and the way the OpenSFS branch
+ * handles CFLAGS.
+ */
+#ifdef __KERNEL__
+# include <uapi/linux/lustre/lustre_idl.h>
+#else
+# include <linux/lustre/lustre_idl.h>
+# define __user
+#endif
 
 #if !defined(__KERNEL__) && !defined(LUSTRE_UTILS)
 # error This file is for Lustre internal use only.
@@ -62,7 +71,6 @@ enum md_echo_cmd {
 
 #define OBD_IOCTL_VERSION      0x00010004
 #define OBD_DEV_BY_DEVNAME     0xffffd0de
-#define OBD_MAX_IOCTL_BUFFER   CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER
 
 struct obd_ioctl_data {
        __u32           ioc_len;
diff --git a/lustre/include/uapi/linux/lustre/lustre_lfsck_user.h b/lustre/include/uapi/linux/lustre/lustre_lfsck_user.h
new file mode 100644 (file)
index 0000000..44bd131
--- /dev/null
@@ -0,0 +1,246 @@
+/*
+ * 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 COPYING file that accompanied this code.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * GPL HEADER END
+ */
+/*
+ * Copyright (c) 2012, 2016, Intel Corporation.
+ */
+/*
+ * lustre/include/lustre/lustre_lfsck_user.h
+ *
+ * Lustre LFSCK userspace interfaces.
+ *
+ * Author: Fan, Yong <fan.yong@intel.com>
+ */
+
+#ifndef _LUSTRE_LFSCK_USER_H
+# define _LUSTRE_LFSCK_USER_H
+
+#include <linux/types.h>
+/*
+ * This is due to us being out of kernel and the way the OpenSFS branch
+ * handles CFLAGS.
+ */
+#ifdef __KERNEL__
+# include <uapi/linux/lustre/lustre_user.h>
+#else
+# include <linux/lustre/lustre_user.h>
+#endif
+
+/**
+ * state machine:
+ *
+ *                                     LS_INIT
+ *                                        |
+ *                                  (lfsck|start)
+ *                                        |
+ *                                        v
+ *                                LS_SCANNING_PHASE1
+ *                                     |       ^
+ *                                     |       :
+ *                                     | (lfsck:restart)
+ *                                     |       :
+ *                                     v       :
+ *     -----------------------------------------------------------------
+ *     |                   |^          |^         |^         |^        |^
+ *     |                   |:          |:         |:         |:        |:
+ *     v                   v:          v:         v:         v:        v:
+ * LS_SCANNING_PHASE2  LS_FAILED  LS_STOPPED  LS_PAUSED LS_CRASHED LS_PARTIAL
+ *                       (CO_)       (CO_)      (CO_)
+ *     |       ^           ^:          ^:         ^:         ^:        ^:
+ *     |       :           |:          |:         |:         |:        |:
+ *     | (lfsck:restart)   |:          |:         |:         |:        |:
+ *     v       :           |v          |v         |v         |v        |v
+ *     -----------------------------------------------------------------
+ *         |
+ *         v
+ *    LS_COMPLETED
+ */
+enum lfsck_status {
+       /* The lfsck file is new created, for new MDT, upgrading from old disk,
+        * or re-creating the lfsck file manually. */
+       LS_INIT                 = 0,
+
+       /* The first-step system scanning. The checked items during the phase1
+        * scanning depends on the LFSCK type. */
+       LS_SCANNING_PHASE1      = 1,
+
+       /* The second-step system scanning. The checked items during the phase2
+        * scanning depends on the LFSCK type. */
+       LS_SCANNING_PHASE2      = 2,
+
+       /* The LFSCK processing has completed for all objects. */
+       LS_COMPLETED            = 3,
+
+       /* The LFSCK exited automatically for failure, will not auto restart. */
+       LS_FAILED               = 4,
+
+       /* The LFSCK is stopped manually, will not auto restart. */
+       LS_STOPPED              = 5,
+
+       /* LFSCK is paused automatically when umount,
+        * will be restarted automatically when remount. */
+       LS_PAUSED               = 6,
+
+       /* System crashed during the LFSCK,
+        * will be restarted automatically after recovery. */
+       LS_CRASHED              = 7,
+
+       /* Some OST/MDT failed during the LFSCK, or not join the LFSCK. */
+       LS_PARTIAL              = 8,
+
+       /* The LFSCK is failed because its controller is failed. */
+       LS_CO_FAILED            = 9,
+
+       /* The LFSCK is stopped because its controller is stopped. */
+       LS_CO_STOPPED           = 10,
+
+       /* The LFSCK is paused because its controller is paused. */
+       LS_CO_PAUSED            = 11,
+
+       LS_MAX
+};
+
+static inline const char *lfsck_status2name(int status)
+{
+       static const char * const lfsck_status_names[] = {
+               [LS_INIT]               = "init",
+               [LS_SCANNING_PHASE1]    = "scanning-phase1",
+               [LS_SCANNING_PHASE2]    = "scanning-phase2",
+               [LS_COMPLETED]          = "completed",
+               [LS_FAILED]             = "failed",
+               [LS_STOPPED]            = "stopped",
+               [LS_PAUSED]             = "paused",
+               [LS_CRASHED]            = "crashed",
+               [LS_PARTIAL]            = "partial",
+               [LS_CO_FAILED]          = "co-failed",
+               [LS_CO_STOPPED]         = "co-stopped",
+               [LS_CO_PAUSED]          = "co-paused"
+       };
+
+       if (status < 0 || status >= LS_MAX)
+               return "unknown";
+
+       return lfsck_status_names[status];
+}
+
+enum lfsck_param_flags {
+       /* Reset LFSCK iterator position to the device beginning. */
+       LPF_RESET               = 0x0001,
+
+       /* Exit when fail. */
+       LPF_FAILOUT             = 0x0002,
+
+       /* Dryrun mode, only check without modification */
+       LPF_DRYRUN              = 0x0004,
+
+       /* LFSCK runs on all targets. */
+       LPF_ALL_TGT             = 0x0008,
+
+       /* Broadcast the command to other MDTs. Only valid on the sponsor MDT */
+       LPF_BROADCAST           = 0x0010,
+
+       /* Handle orphan OST-objects. */
+       LPF_OST_ORPHAN          = 0x0020,
+
+       /* Create OST-object for dangling LOV EA. */
+       LPF_CREATE_OSTOBJ       = 0x0040,
+
+       /* Create MDT-object for dangling name entry. */
+       LPF_CREATE_MDTOBJ       = 0x0080,
+
+       /* Do not return until the LFSCK not running. */
+       LPF_WAIT                = 0x0100,
+
+       /* Delay to create OST-object for dangling LOV EA. */
+       LPF_DELAY_CREATE_OSTOBJ = 0x0200,
+};
+
+enum lfsck_type {
+       /* For MDT and OST internal OSD consistency check/repair. */
+       LFSCK_TYPE_SCRUB        = 0x0000,
+
+       /* For MDT-OST (layout, object) consistency check/repair. */
+       LFSCK_TYPE_LAYOUT       = 0x0001,
+
+       /* For MDT (FID-in-dirent, linkEA) consistency check/repair. */
+       LFSCK_TYPE_NAMESPACE    = 0x0004,
+       LFSCK_TYPES_SUPPORTED   = (LFSCK_TYPE_SCRUB | LFSCK_TYPE_LAYOUT |
+                                  LFSCK_TYPE_NAMESPACE),
+       LFSCK_TYPES_DEF         = LFSCK_TYPES_SUPPORTED,
+       LFSCK_TYPES_ALL         = ((__u16)(~0))
+};
+
+#define LFSCK_VERSION_V1       1
+#define LFSCK_VERSION_V2       2
+
+#define LFSCK_SPEED_NO_LIMIT   0
+#define LFSCK_SPEED_LIMIT_DEF  LFSCK_SPEED_NO_LIMIT
+#define LFSCK_ASYNC_WIN_DEFAULT 1024
+#define LFSCK_ASYNC_WIN_MAX    ((__u16)(~0))
+#define LFSCK_TYPE_BITS                16
+
+enum lfsck_start_valid {
+       LSV_SPEED_LIMIT         = 0x00000001,
+       LSV_ERROR_HANDLE        = 0x00000002,
+       LSV_DRYRUN              = 0x00000004,
+       LSV_ASYNC_WINDOWS       = 0x00000008,
+       LSV_CREATE_OSTOBJ       = 0x00000010,
+       LSV_CREATE_MDTOBJ       = 0x00000020,
+       LSV_DELAY_CREATE_OSTOBJ = 0x00000040,
+};
+
+/* Arguments for starting lfsck. */
+struct lfsck_start {
+       /* Which arguments are valid, see 'enum lfsck_start_valid'. */
+       __u32   ls_valid;
+
+       /* How many items can be scanned at most per second. */
+       __u32   ls_speed_limit;
+
+       /* For compatibility between user space tools and kernel service. */
+       __u16   ls_version;
+
+       /* Which LFSCK components to be (have been) started. */
+       __u16   ls_active;
+
+       /* Flags for the LFSCK, see 'enum lfsck_param_flags'. */
+       __u16   ls_flags;
+
+       /* The windows size for async requests pipeline. */
+       __u16   ls_async_windows;
+};
+
+struct lfsck_stop {
+       __u32   ls_status;
+       __u16   ls_flags;
+       __u16   ls_padding_1; /* For 64-bits aligned. */
+       __u64   ls_padding_2;
+};
+
+struct lfsck_query {
+       __u16   lu_types;
+       __u16   lu_flags;
+       __u32   lu_mdts_count[LFSCK_TYPE_BITS][LS_MAX + 1];
+       __u32   lu_osts_count[LFSCK_TYPE_BITS][LS_MAX + 1];
+       __u64   lu_repaired[LFSCK_TYPE_BITS];
+};
+
+#endif /* _LUSTRE_LFSCK_USER_H */
similarity index 91%
rename from lustre/include/lustre_log_user.h
rename to lustre/include/uapi/linux/lustre/lustre_log_user.h
index ee5f0f7..1191c74 100644 (file)
 #ifndef _LUSTRE_LOG_USER_H
 #define _LUSTRE_LOG_USER_H
 
-#include <uapi/linux/lustre_fid.h>
+/*
+ * This is due to us being out of kernel and the way the OpenSFS branch
+ * handles CFLAGS.
+ */
+#ifdef __KERNEL__
+#include <uapi/linux/lustre/lustre_fid.h>
+#else
+#include <linux/lustre/lustre_fid.h>
+#endif
 
 /*  Lustre logs use FIDs constructed from oi_id and oi_seq directly,
  *  without attempting to use the IGIF and IDIF ranges as is done
similarity index 98%
rename from lustre/include/uapi/linux/lustre_ostid.h
rename to lustre/include/uapi/linux/lustre/lustre_ostid.h
index c0e662a..8282b09 100644 (file)
 #ifndef _UAPI_LUSTRE_OSTID_H_
 #define _UAPI_LUSTRE_OSTID_H_
 
+#include <linux/errno.h>
 /*
  * This is due to us being out of kernel and the way the OpenSFS branch
- * handles CFLAGS. Upstream will just have linux/lustre_fid.h
+ * handles CFLAGS.
  */
 #ifdef __KERNEL__
-#include <uapi/linux/lustre_fid.h>
+#include <uapi/linux/lustre/lustre_fid.h>
 #else
-#include <linux/lustre_fid.h>
+#include <linux/lustre/lustre_fid.h>
 #endif
 
 static inline __u64 lmm_oi_id(const struct ost_id *oi)
diff --git a/lustre/include/uapi/linux/lustre/lustre_user.h b/lustre/include/uapi/linux/lustre/lustre_user.h
new file mode 100644 (file)
index 0000000..83c45d3
--- /dev/null
@@ -0,0 +1,1619 @@
+/*
+ * 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) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * Copyright (c) 2010, 2016, Intel Corporation.
+ */
+/*
+ * This file is part of Lustre, http://www.lustre.org/
+ * Lustre is a trademark of Sun Microsystems, Inc.
+ *
+ * lustre/include/lustre/lustre_user.h
+ *
+ * Lustre public user-space interface definitions.
+ */
+
+#ifndef _LUSTRE_USER_H
+#define _LUSTRE_USER_H
+
+/** \defgroup lustreuser lustreuser
+ *
+ * @{
+ */
+
+#include <linux/types.h>
+
+#ifdef __KERNEL__
+# include <linux/fs.h>
+# include <linux/quota.h>
+# include <linux/string.h> /* snprintf() */
+# include <linux/version.h>
+# include <uapi/linux/lustre/lustre_fiemap.h>
+#else /* !__KERNEL__ */
+# define NEED_QUOTA_DEFS
+# include <limits.h>
+# include <stdbool.h>
+# include <stdio.h> /* snprintf() */
+# include <string.h>
+# include <sys/quota.h>
+# include <sys/stat.h>
+# include <linux/lustre/lustre_fiemap.h>
+#endif /* __KERNEL__ */
+
+/*
+ * This is a temporary solution of adding quota type.
+ * Should be removed as soon as system header is updated.
+ */
+#undef LL_MAXQUOTAS
+#define LL_MAXQUOTAS 3
+#undef INITQFNAMES
+#define INITQFNAMES { \
+    "user",    /* USRQUOTA */ \
+    "group",   /* GRPQUOTA */ \
+    "project", /* PRJQUOTA */ \
+    "undefined", \
+};
+#define PRJQUOTA 2
+
+#if defined(__x86_64__) || defined(__ia64__) || defined(__ppc64__) || \
+    defined(__craynv) || defined(__mips64__) || defined(__powerpc64__) || \
+    defined(__aarch64__)
+typedef struct stat    lstat_t;
+# define lstat_f       lstat
+# define fstat_f       fstat
+# define fstatat_f     fstatat
+# define HAVE_LOV_USER_MDS_DATA
+#elif defined(__USE_LARGEFILE64) || defined(__KERNEL__)
+typedef struct stat64  lstat_t;
+# define lstat_f       lstat64
+# define fstat_f       fstat64
+# define fstatat_f     fstatat64
+# define HAVE_LOV_USER_MDS_DATA
+#endif
+
+#define LUSTRE_EOF 0xffffffffffffffffULL
+
+/* for statfs() */
+#define LL_SUPER_MAGIC 0x0BD00BD0
+
+#ifndef FSFILT_IOC_GETFLAGS
+#define FSFILT_IOC_GETFLAGS               _IOR('f', 1, long)
+#define FSFILT_IOC_SETFLAGS               _IOW('f', 2, long)
+#define FSFILT_IOC_GETVERSION             _IOR('f', 3, long)
+#define FSFILT_IOC_SETVERSION             _IOW('f', 4, long)
+#define FSFILT_IOC_GETVERSION_OLD         _IOR('v', 1, long)
+#define FSFILT_IOC_SETVERSION_OLD         _IOW('v', 2, long)
+#endif
+
+/* FIEMAP flags supported by Lustre */
+#define LUSTRE_FIEMAP_FLAGS_COMPAT (FIEMAP_FLAG_SYNC | FIEMAP_FLAG_DEVICE_ORDER)
+
+enum obd_statfs_state {
+       OS_STATE_DEGRADED       = 0x00000001, /**< RAID degraded/rebuilding */
+       OS_STATE_READONLY       = 0x00000002, /**< filesystem is read-only */
+       OS_STATE_ENOSPC         = 0x00000020, /**< not enough free space */
+       OS_STATE_ENOINO         = 0x00000040, /**< not enough inodes */
+};
+
+struct obd_statfs {
+       __u64           os_type;
+       __u64           os_blocks;
+       __u64           os_bfree;
+       __u64           os_bavail;
+       __u64           os_files;
+       __u64           os_ffree;
+       __u8            os_fsid[40];
+       __u32           os_bsize;
+       __u32           os_namelen;
+       __u64           os_maxbytes;
+       __u32           os_state;       /**< obd_statfs_state OS_STATE_* flag */
+       __u32           os_fprecreated; /* objs available now to the caller */
+                                       /* used in QoS code to find preferred
+                                        * OSTs */
+       __u32           os_spare2;
+       __u32           os_spare3;
+       __u32           os_spare4;
+       __u32           os_spare5;
+       __u32           os_spare6;
+       __u32           os_spare7;
+       __u32           os_spare8;
+       __u32           os_spare9;
+};
+
+/**
+ * File IDentifier.
+ *
+ * FID is a cluster-wide unique identifier of a file or an object (stripe).
+ * FIDs are never reused.
+ **/
+struct lu_fid {
+       /**
+       * FID sequence. Sequence is a unit of migration: all files (objects)
+       * with FIDs from a given sequence are stored on the same server.
+       * Lustre should support 2^64 objects, so even if each sequence
+       * has only a single object we can still enumerate 2^64 objects.
+       **/
+       __u64 f_seq;
+       /* FID number within sequence. */
+       __u32 f_oid;
+       /**
+        * FID version, used to distinguish different versions (in the sense
+        * of snapshots, etc.) of the same file system object. Not currently
+        * used.
+        **/
+       __u32 f_ver;
+};
+
+static inline bool fid_is_zero(const struct lu_fid *fid)
+{
+       return fid->f_seq == 0 && fid->f_oid == 0;
+}
+
+/* Currently, the filter_fid::ff_parent::f_ver is not the real parent
+ * MDT-object's FID::f_ver, instead it is the OST-object index in its
+ * parent MDT-object's layout EA. */
+#define f_stripe_idx f_ver
+
+struct ost_layout {
+       __u32   ol_stripe_size;
+       __u32   ol_stripe_count;
+       __u64   ol_comp_start;
+       __u64   ol_comp_end;
+       __u32   ol_comp_id;
+} __attribute__((packed));
+
+/* keep this one for compatibility */
+struct filter_fid_old {
+       struct lu_fid   ff_parent;
+       __u64           ff_objid;
+       __u64           ff_seq;
+};
+
+struct filter_fid {
+       struct lu_fid           ff_parent;
+       struct ost_layout       ff_layout;
+} __attribute__((packed));
+
+/* Userspace should treat lu_fid as opaque, and only use the following methods
+ * to print or parse them.  Other functions (e.g. compare, swab) could be moved
+ * here from lustre_idl.h if needed. */
+typedef struct lu_fid lustre_fid;
+
+enum lma_compat {
+       LMAC_HSM         = 0x00000001,
+/*     LMAC_SOM         = 0x00000002, obsolete since 2.8.0 */
+       LMAC_NOT_IN_OI   = 0x00000004, /* the object does NOT need OI mapping */
+       LMAC_FID_ON_OST  = 0x00000008, /* For OST-object, its OI mapping is
+                                      * under /O/<seq>/d<x>. */
+       LMAC_STRIPE_INFO = 0x00000010, /* stripe info in the LMA EA. */
+       LMAC_COMP_INFO   = 0x00000020, /* Component info in the LMA EA. */
+};
+
+/**
+ * Masks for all features that should be supported by a Lustre version to
+ * access a specific file.
+ * This information is stored in lustre_mdt_attrs::lma_incompat.
+ */
+enum lma_incompat {
+       LMAI_RELEASED           = 0x00000001, /* file is released */
+       LMAI_AGENT              = 0x00000002, /* agent inode */
+       LMAI_REMOTE_PARENT      = 0x00000004, /* the parent of the object
+                                                is on the remote MDT */
+       LMAI_STRIPED            = 0x00000008, /* striped directory inode */
+       LMAI_ORPHAN             = 0x00000010, /* inode is orphan */
+       LMA_INCOMPAT_SUPP       = (LMAI_AGENT | LMAI_REMOTE_PARENT | \
+                                  LMAI_STRIPED | LMAI_ORPHAN)
+};
+
+
+/**
+ * Following struct for object attributes, that will be kept inode's EA.
+ * Introduced in 2.0 release (please see b15993, for details)
+ * Added to all objects since Lustre 2.4 as contains self FID
+ */
+struct lustre_mdt_attrs {
+       /**
+        * Bitfield for supported data in this structure. From enum lma_compat.
+        * lma_self_fid and lma_flags are always available.
+        */
+       __u32   lma_compat;
+       /**
+        * Per-file incompat feature list. Lustre version should support all
+        * flags set in this field. The supported feature mask is available in
+        * LMA_INCOMPAT_SUPP.
+        */
+       __u32   lma_incompat;
+       /** FID of this inode */
+       struct lu_fid  lma_self_fid;
+};
+
+struct lustre_ost_attrs {
+       /* Use lustre_mdt_attrs directly for now, need a common header
+        * structure if want to change lustre_mdt_attrs in future. */
+       struct lustre_mdt_attrs loa_lma;
+
+       /* Below five elements are for OST-object's PFID EA, the
+        * lma_parent_fid::f_ver is composed of the stripe_count (high 16 bits)
+        * and the stripe_index (low 16 bits), the size should not exceed
+        * 5 * sizeof(__u64)) to be accessable by old Lustre. If the flag
+        * LMAC_STRIPE_INFO is set, then loa_parent_fid and loa_stripe_size
+        * are valid; if the flag LMAC_COMP_INFO is set, then the next three
+        * loa_comp_* elements are valid. */
+       struct lu_fid   loa_parent_fid;
+       __u32           loa_stripe_size;
+       __u32           loa_comp_id;
+       __u64           loa_comp_start;
+       __u64           loa_comp_end;
+};
+
+/**
+ * Prior to 2.4, the LMA structure also included SOM attributes which has since
+ * been moved to a dedicated xattr
+ * lma_flags was also removed because of lma_compat/incompat fields.
+ */
+#define LMA_OLD_SIZE (sizeof(struct lustre_mdt_attrs) + 5 * sizeof(__u64))
+
+/**
+ * OST object IDentifier.
+ */
+struct ost_id {
+       union {
+               struct {
+                       __u64   oi_id;
+                       __u64   oi_seq;
+               } oi;
+               struct lu_fid oi_fid;
+       };
+};
+
+#define DOSTID "%#llx:%llu"
+#define POSTID(oi) ((unsigned long long)ostid_seq(oi)), \
+                  ((unsigned long long)ostid_id(oi))
+
+struct ll_futimes_3 {
+       __u64 lfu_atime_sec;
+       __u64 lfu_atime_nsec;
+       __u64 lfu_mtime_sec;
+       __u64 lfu_mtime_nsec;
+       __u64 lfu_ctime_sec;
+       __u64 lfu_ctime_nsec;
+};
+
+/*
+ * The ioctl naming rules:
+ * LL_*     - works on the currently opened filehandle instead of parent dir
+ * *_OBD_*  - gets data for both OSC or MDC (LOV, LMV indirectly)
+ * *_MDC_*  - gets/sets data related to MDC
+ * *_LOV_*  - gets/sets data related to OSC/LOV
+ * *FILE*   - called on parent dir and passes in a filename
+ * *STRIPE* - set/get lov_user_md
+ * *INFO    - set/get lov_user_mds_data
+ */
+/*     lustre_ioctl.h                  101-150 */
+#define LL_IOC_GETFLAGS                 _IOR ('f', 151, long)
+#define LL_IOC_SETFLAGS                 _IOW ('f', 152, long)
+#define LL_IOC_CLRFLAGS                 _IOW ('f', 153, long)
+#define LL_IOC_LOV_SETSTRIPE            _IOW ('f', 154, long)
+#define LL_IOC_LOV_SETSTRIPE_NEW       _IOWR('f', 154, struct lov_user_md)
+#define LL_IOC_LOV_GETSTRIPE            _IOW ('f', 155, long)
+#define LL_IOC_LOV_GETSTRIPE_NEW       _IOR('f', 155, struct lov_user_md)
+#define LL_IOC_LOV_SETEA                _IOW ('f', 156, long)
+/*     LL_IOC_RECREATE_OBJ             157 obsolete */
+/*     LL_IOC_RECREATE_FID             157 obsolete */
+#define LL_IOC_GROUP_LOCK               _IOW ('f', 158, long)
+#define LL_IOC_GROUP_UNLOCK             _IOW ('f', 159, long)
+/*     LL_IOC_QUOTACHECK               160 OBD_IOC_QUOTACHECK */
+/*     LL_IOC_POLL_QUOTACHECK          161 OBD_IOC_POLL_QUOTACHECK */
+/*     LL_IOC_QUOTACTL                 162 OBD_IOC_QUOTACTL */
+#define IOC_OBD_STATFS                  _IOWR('f', 164, struct obd_statfs *)
+/*     IOC_LOV_GETINFO                 165 obsolete */
+#define LL_IOC_FLUSHCTX                 _IOW ('f', 166, long)
+/*     LL_IOC_RMTACL                   167 obsolete */
+#define LL_IOC_GETOBDCOUNT              _IOR ('f', 168, long)
+#define LL_IOC_LLOOP_ATTACH             _IOWR('f', 169, long)
+#define LL_IOC_LLOOP_DETACH             _IOWR('f', 170, long)
+#define LL_IOC_LLOOP_INFO               _IOWR('f', 171, struct lu_fid)
+#define LL_IOC_LLOOP_DETACH_BYDEV       _IOWR('f', 172, long)
+#define LL_IOC_PATH2FID                 _IOR ('f', 173, long)
+#define LL_IOC_GET_CONNECT_FLAGS        _IOWR('f', 174, __u64 *)
+#define LL_IOC_GET_MDTIDX               _IOR ('f', 175, int)
+#define LL_IOC_FUTIMES_3               _IOWR('f', 176, struct ll_futimes_3)
+/*     lustre_ioctl.h                  177-210 */
+#define LL_IOC_HSM_STATE_GET           _IOR('f', 211, struct hsm_user_state)
+#define LL_IOC_HSM_STATE_SET           _IOW('f', 212, struct hsm_state_set)
+#define LL_IOC_HSM_CT_START            _IOW('f', 213, struct lustre_kernelcomm)
+#define LL_IOC_HSM_COPY_START          _IOW('f', 214, struct hsm_copy *)
+#define LL_IOC_HSM_COPY_END            _IOW('f', 215, struct hsm_copy *)
+#define LL_IOC_HSM_PROGRESS            _IOW('f', 216, struct hsm_user_request)
+#define LL_IOC_HSM_REQUEST             _IOW('f', 217, struct hsm_user_request)
+#define LL_IOC_DATA_VERSION            _IOR('f', 218, struct ioc_data_version)
+#define LL_IOC_LOV_SWAP_LAYOUTS                _IOW('f', 219, \
+                                               struct lustre_swap_layouts)
+#define LL_IOC_HSM_ACTION              _IOR('f', 220, \
+                                               struct hsm_current_action)
+/*     lustre_ioctl.h                  221-232 */
+#define LL_IOC_LMV_SETSTRIPE           _IOWR('f', 240, struct lmv_user_md)
+#define LL_IOC_LMV_GETSTRIPE           _IOWR('f', 241, struct lmv_user_md)
+#define LL_IOC_REMOVE_ENTRY            _IOWR('f', 242, __u64)
+#define LL_IOC_SET_LEASE               _IOWR('f', 243, long)
+#define LL_IOC_GET_LEASE               _IO('f', 244)
+#define LL_IOC_HSM_IMPORT              _IOWR('f', 245, struct hsm_user_import)
+#define LL_IOC_LMV_SET_DEFAULT_STRIPE  _IOWR('f', 246, struct lmv_user_md)
+#define LL_IOC_MIGRATE                 _IOR('f', 247, int)
+#define LL_IOC_FID2MDTIDX              _IOWR('f', 248, struct lu_fid)
+#define LL_IOC_GETPARENT               _IOWR('f', 249, struct getparent)
+#define LL_IOC_LADVISE                 _IOR('f', 250, struct llapi_lu_ladvise)
+
+#ifndef        FS_IOC_FSGETXATTR
+/*
+ * Structure for FS_IOC_FSGETXATTR and FS_IOC_FSSETXATTR.
+*/
+struct fsxattr {
+       __u32           fsx_xflags;     /* xflags field value (get/set) */
+       __u32           fsx_extsize;    /* extsize field value (get/set)*/
+       __u32           fsx_nextents;   /* nextents field value (get)   */
+       __u32           fsx_projid;     /* project identifier (get/set) */
+       unsigned char   fsx_pad[12];
+};
+#define FS_IOC_FSGETXATTR              _IOR('X', 31, struct fsxattr)
+#define FS_IOC_FSSETXATTR              _IOW('X', 32, struct fsxattr)
+#endif
+#define LL_IOC_FSGETXATTR              FS_IOC_FSGETXATTR
+#define LL_IOC_FSSETXATTR              FS_IOC_FSSETXATTR
+
+
+/* Lease types for use as arg and return of LL_IOC_{GET,SET}_LEASE ioctl. */
+enum ll_lease_type {
+       LL_LEASE_RDLCK  = 0x1,
+       LL_LEASE_WRLCK  = 0x2,
+       LL_LEASE_UNLCK  = 0x4,
+};
+
+#define LL_STATFS_LMV          1
+#define LL_STATFS_LOV          2
+#define LL_STATFS_NODELAY      4
+
+#define IOC_MDC_TYPE            'i'
+#define IOC_MDC_LOOKUP          _IOWR(IOC_MDC_TYPE, 20, struct obd_device *)
+#define IOC_MDC_GETFILESTRIPE   _IOWR(IOC_MDC_TYPE, 21, struct lov_user_md *)
+#define IOC_MDC_GETFILEINFO     _IOWR(IOC_MDC_TYPE, 22, struct lov_user_mds_data *)
+#define LL_IOC_MDC_GETINFO      _IOWR(IOC_MDC_TYPE, 23, struct lov_user_mds_data *)
+
+#define MAX_OBD_NAME 128 /* If this changes, a NEW ioctl must be added */
+
+/* Define O_LOV_DELAY_CREATE to be a mask that is not useful for regular
+ * files, but are unlikely to be used in practice and are not harmful if
+ * used incorrectly.  O_NOCTTY and FASYNC are only meaningful for character
+ * devices and are safe for use on new files. See LU-4209. */
+/* To be compatible with old statically linked binary we keep the check for
+ * the older 0100000000 flag.  This is already removed upstream.  LU-812. */
+#define O_LOV_DELAY_CREATE_1_8 0100000000 /* FMODE_NONOTIFY masked in 2.6.36 */
+#define O_LOV_DELAY_CREATE_MASK        (O_NOCTTY | FASYNC)
+#define O_LOV_DELAY_CREATE             (O_LOV_DELAY_CREATE_1_8 | \
+                                        O_LOV_DELAY_CREATE_MASK)
+
+#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 LOV_USER_MAGIC_V1      0x0BD10BD0
+#define LOV_USER_MAGIC         LOV_USER_MAGIC_V1
+#define LOV_USER_MAGIC_JOIN_V1 0x0BD20BD0
+#define LOV_USER_MAGIC_V3      0x0BD30BD0
+/* 0x0BD40BD0 is occupied by LOV_MAGIC_MIGRATE */
+#define LOV_USER_MAGIC_SPECIFIC 0x0BD50BD0     /* for specific OSTs */
+#define LOV_USER_MAGIC_COMP_V1 0x0BD60BD0
+
+#define LMV_USER_MAGIC    0x0CD30CD0    /*default lmv magic*/
+
+#define LOV_PATTERN_RAID0      0x001
+#define LOV_PATTERN_RAID1      0x002
+#define LOV_PATTERN_FIRST      0x100
+#define LOV_PATTERN_CMOBD      0x200
+
+#define LOV_PATTERN_F_MASK     0xffff0000
+#define LOV_PATTERN_F_HOLE     0x40000000 /* there is hole in LOV EA */
+#define LOV_PATTERN_F_RELEASED 0x80000000 /* HSM released file */
+
+static inline bool lov_pattern_supported(__u32 pattern)
+{
+       return pattern == LOV_PATTERN_RAID0 ||
+              pattern == (LOV_PATTERN_RAID0 | LOV_PATTERN_F_RELEASED);
+}
+
+#define LOV_MAXPOOLNAME 15
+#define LOV_POOLNAMEF "%.15s"
+
+#define LOV_MIN_STRIPE_BITS 16   /* maximum PAGE_SIZE (ia64), power of 2 */
+#define LOV_MIN_STRIPE_SIZE (1 << LOV_MIN_STRIPE_BITS)
+#define LOV_MAX_STRIPE_COUNT_OLD 160
+/* This calculation is crafted so that input of 4096 will result in 160
+ * which in turn is equal to old maximal stripe count.
+ * XXX: In fact this is too simpified for now, what it also need is to get
+ * ea_type argument to clearly know how much space each stripe consumes.
+ *
+ * The limit of 12 pages is somewhat arbitrary, but is a reasonably large
+ * allocation that is sufficient for the current generation of systems.
+ *
+ * (max buffer size - lov+rpc header) / sizeof(struct lov_ost_data_v1) */
+#define LOV_MAX_STRIPE_COUNT 2000  /* ((12 * 4096 - 256) / 24) */
+#define LOV_ALL_STRIPES       0xffff /* only valid for directories */
+#define LOV_V1_INSANE_STRIPE_COUNT 65532 /* maximum stripe count bz13933 */
+
+#define XATTR_LUSTRE_PREFIX    "lustre."
+#define XATTR_LUSTRE_LOV       XATTR_LUSTRE_PREFIX"lov"
+
+#define lov_user_ost_data lov_user_ost_data_v1
+struct lov_user_ost_data_v1 {     /* per-stripe data structure */
+       struct ost_id l_ost_oi;   /* OST object ID */
+       __u32 l_ost_gen;          /* generation of this OST index */
+       __u32 l_ost_idx;          /* OST index in LOV */
+} __attribute__((packed));
+
+#define lov_user_md lov_user_md_v1
+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 */
+       struct ost_id lmm_oi;     /* MDT parent inode id/seq (id/0 for 1.x) */
+       __u32 lmm_stripe_size;    /* size of stripe in bytes */
+       __u16 lmm_stripe_count;   /* num stripes in use for this object */
+       union {
+               __u16 lmm_stripe_offset;  /* starting stripe offset in
+                                          * lmm_objects, use when writing */
+               __u16 lmm_layout_gen;     /* layout generation number
+                                          * used when reading */
+       };
+       struct lov_user_ost_data_v1 lmm_objects[0]; /* per-stripe data */
+} __attribute__((packed,  __may_alias__));
+
+struct lov_user_md_v3 {           /* LOV EA user data (host-endian) */
+       __u32 lmm_magic;          /* magic number = LOV_USER_MAGIC_V3 */
+       __u32 lmm_pattern;        /* LOV_PATTERN_RAID0, LOV_PATTERN_RAID1 */
+       struct ost_id lmm_oi;     /* MDT parent inode id/seq (id/0 for 1.x) */
+       __u32 lmm_stripe_size;    /* size of stripe in bytes */
+       __u16 lmm_stripe_count;   /* num stripes in use for this object */
+       union {
+               __u16 lmm_stripe_offset;  /* starting stripe offset in
+                                          * lmm_objects, use when writing */
+               __u16 lmm_layout_gen;     /* layout generation number
+                                          * used when reading */
+       };
+       char  lmm_pool_name[LOV_MAXPOOLNAME + 1]; /* pool name */
+       struct lov_user_ost_data_v1 lmm_objects[0]; /* per-stripe data */
+} __attribute__((packed));
+
+struct lu_extent {
+       __u64   e_start;
+       __u64   e_end;
+};
+
+#define DEXT "[ %#llx , %#llx )"
+#define PEXT(ext) (ext)->e_start, (ext)->e_end
+
+static inline bool lu_extent_is_overlapped(struct lu_extent *e1,
+                                          struct lu_extent *e2)
+{
+       return e1->e_start < e2->e_end && e2->e_start < e1->e_end;
+}
+
+enum lov_comp_md_entry_flags {
+       LCME_FL_PRIMARY = 0x00000001,   /* Not used */
+       LCME_FL_STALE   = 0x00000002,   /* Not used */
+       LCME_FL_OFFLINE = 0x00000004,   /* Not used */
+       LCME_FL_PREFERRED = 0x00000008, /* Not used */
+       LCME_FL_INIT    = 0x00000010,   /* instantiated */
+       LCME_FL_NEG     = 0x80000000    /* used to indicate a negative flag,
+                                          won't be stored on disk */
+};
+
+#define LCME_KNOWN_FLAGS       (LCME_FL_NEG | LCME_FL_INIT)
+
+/* lcme_id can be specified as certain flags, and the the first
+ * bit of lcme_id is used to indicate that the ID is representing
+ * certain LCME_FL_* but not a real ID. Which implies we can have
+ * at most 31 flags (see LCME_FL_XXX). */
+enum lcme_id {
+       LCME_ID_INVAL   = 0x0,
+       LCME_ID_MAX     = 0x7FFFFFFF,
+       LCME_ID_ALL     = 0xFFFFFFFF,
+       LCME_ID_NOT_ID  = LCME_FL_NEG
+};
+
+#define LCME_ID_MASK   LCME_ID_MAX
+
+struct lov_comp_md_entry_v1 {
+       __u32                   lcme_id;        /* unique id of component */
+       __u32                   lcme_flags;     /* LCME_FL_XXX */
+       struct lu_extent        lcme_extent;    /* file extent for component */
+       __u32                   lcme_offset;    /* offset of component blob,
+                                                  start from lov_comp_md_v1 */
+       __u32                   lcme_size;      /* size of component blob */
+       __u64                   lcme_padding[2];
+} __attribute__((packed));
+
+enum lov_comp_md_flags;
+
+struct lov_comp_md_v1 {
+       __u32   lcm_magic;      /* LOV_USER_MAGIC_COMP_V1 */
+       __u32   lcm_size;       /* overall size including this struct */
+       __u32   lcm_layout_gen;
+       __u16   lcm_flags;
+       __u16   lcm_entry_count;
+       __u64   lcm_padding1;
+       __u64   lcm_padding2;
+       struct lov_comp_md_entry_v1 lcm_entries[0];
+} __attribute__((packed));
+
+static inline __u32 lov_user_md_size(__u16 stripes, __u32 lmm_magic)
+{
+       if (stripes == (__u16)-1)
+               stripes = 0;
+
+       if (lmm_magic == LOV_USER_MAGIC_V1)
+               return sizeof(struct lov_user_md_v1) +
+                             stripes * sizeof(struct lov_user_ost_data_v1);
+       return sizeof(struct lov_user_md_v3) +
+                               stripes * sizeof(struct lov_user_ost_data_v1);
+}
+
+/* Compile with -D_LARGEFILE64_SOURCE or -D_GNU_SOURCE (or #define) to
+ * use this.  It is unsafe to #define those values in this header as it
+ * is possible the application has already #included <sys/stat.h>. */
+#ifdef HAVE_LOV_USER_MDS_DATA
+#define lov_user_mds_data lov_user_mds_data_v1
+struct lov_user_mds_data_v1 {
+       lstat_t lmd_st;                 /* MDS stat struct */
+       struct lov_user_md_v1 lmd_lmm;  /* LOV EA V1 user data */
+} __attribute__((packed));
+
+struct lov_user_mds_data_v3 {
+       lstat_t lmd_st;                 /* MDS stat struct */
+       struct lov_user_md_v3 lmd_lmm;  /* LOV EA V3 user data */
+} __attribute__((packed));
+#endif
+
+struct lmv_user_mds_data {
+       struct lu_fid   lum_fid;
+       __u32           lum_padding;
+       __u32           lum_mds;
+};
+
+enum lmv_hash_type {
+       LMV_HASH_TYPE_UNKNOWN   = 0,    /* 0 is reserved for testing purpose */
+       LMV_HASH_TYPE_ALL_CHARS = 1,
+       LMV_HASH_TYPE_FNV_1A_64 = 2,
+       LMV_HASH_TYPE_MAX,
+};
+
+#define LMV_HASH_NAME_ALL_CHARS        "all_char"
+#define LMV_HASH_NAME_FNV_1A_64        "fnv_1a_64"
+
+extern char *mdt_hash_name[LMV_HASH_TYPE_MAX];
+
+/* Got this according to how get LOV_MAX_STRIPE_COUNT, see above,
+ * (max buffer size - lmv+rpc header) / sizeof(struct lmv_user_mds_data) */
+#define LMV_MAX_STRIPE_COUNT 2000  /* ((12 * 4096 - 256) / 24) */
+#define lmv_user_md lmv_user_md_v1
+struct lmv_user_md_v1 {
+       __u32   lum_magic;       /* must be the first field */
+       __u32   lum_stripe_count;  /* dirstripe count */
+       __u32   lum_stripe_offset; /* MDT idx for default dirstripe */
+       __u32   lum_hash_type;     /* Dir stripe policy */
+       __u32   lum_type;         /* LMV type: default or normal */
+       __u32   lum_padding1;
+       __u32   lum_padding2;
+       __u32   lum_padding3;
+       char    lum_pool_name[LOV_MAXPOOLNAME + 1];
+       struct  lmv_user_mds_data  lum_objects[0];
+} __attribute__((packed));
+
+static inline int lmv_user_md_size(int stripes, int lmm_magic)
+{
+       return sizeof(struct lmv_user_md) +
+                     stripes * sizeof(struct lmv_user_mds_data);
+}
+
+struct ll_recreate_obj {
+       __u64 lrc_id;
+       __u32 lrc_ost_idx;
+};
+
+struct ll_fid {
+       __u64 id;         /* holds object id */
+       __u32 generation; /* holds object generation */
+       __u32 f_type;     /* holds object type or stripe idx when passing it to
+                          * OST for saving into EA. */
+};
+
+#define UUID_MAX        40
+struct obd_uuid {
+       char uuid[UUID_MAX];
+};
+
+static inline bool obd_uuid_equals(const struct obd_uuid *u1,
+                                  const struct obd_uuid *u2)
+{
+       return strcmp((char *)u1->uuid, (char *)u2->uuid) == 0;
+}
+
+static inline int obd_uuid_empty(struct obd_uuid *uuid)
+{
+       return uuid->uuid[0] == '\0';
+}
+
+static inline void obd_str2uuid(struct obd_uuid *uuid, const char *tmp)
+{
+       strncpy((char *)uuid->uuid, tmp, sizeof(*uuid));
+       uuid->uuid[sizeof(*uuid) - 1] = '\0';
+}
+
+/* For printf's only, make sure uuid is terminated */
+static inline char *obd_uuid2str(const struct obd_uuid *uuid)
+{
+       if (uuid == NULL)
+               return NULL;
+
+       if (uuid->uuid[sizeof(*uuid) - 1] != '\0') {
+               /* Obviously not safe, but for printfs, no real harm done...
+                  we're always null-terminated, even in a race. */
+               static char temp[sizeof(*uuid)];
+               memcpy(temp, uuid->uuid, sizeof(*uuid) - 1);
+               temp[sizeof(*uuid) - 1] = '\0';
+               return temp;
+       }
+       return (char *)(uuid->uuid);
+}
+
+/* Extract fsname from uuid (or target name) of a target
+   e.g. (myfs-OST0007_UUID -> myfs)
+   see also deuuidify. */
+static inline void obd_uuid2fsname(char *buf, char *uuid, int buflen)
+{
+       char *p;
+
+       strncpy(buf, uuid, buflen - 1);
+       buf[buflen - 1] = '\0';
+       p = strrchr(buf, '-');
+       if (p != NULL)
+               *p = '\0';
+}
+
+/* printf display format for Lustre FIDs
+ * usage: printf("file FID is "DFID"\n", PFID(fid)); */
+#define FID_NOBRACE_LEN 40
+#define FID_LEN (FID_NOBRACE_LEN + 2)
+#define DFID_NOBRACE "%#llx:0x%x:0x%x"
+#define DFID "["DFID_NOBRACE"]"
+#define PFID(fid) (unsigned long long)(fid)->f_seq, (fid)->f_oid, (fid)->f_ver
+
+/* scanf input parse format for fids in DFID_NOBRACE format
+ * Need to strip '[' from DFID format first or use "["SFID"]" at caller.
+ * usage: sscanf(fidstr, SFID, RFID(&fid)); */
+#define SFID "0x%llx:0x%x:0x%x"
+#define RFID(fid) &((fid)->f_seq), &((fid)->f_oid), &((fid)->f_ver)
+
+/********* Quotas **********/
+
+#define LUSTRE_QUOTABLOCK_BITS 10
+#define LUSTRE_QUOTABLOCK_SIZE (1 << LUSTRE_QUOTABLOCK_BITS)
+
+static inline __u64 lustre_stoqb(size_t space)
+{
+       return (space + LUSTRE_QUOTABLOCK_SIZE - 1) >> LUSTRE_QUOTABLOCK_BITS;
+}
+
+#define Q_QUOTACHECK   0x800100 /* deprecated as of 2.4 */
+#define Q_INITQUOTA    0x800101 /* deprecated as of 2.4  */
+#define Q_GETOINFO     0x800102 /* get obd quota info */
+#define Q_GETOQUOTA    0x800103 /* get obd quotas */
+#define Q_FINVALIDATE  0x800104 /* deprecated as of 2.4 */
+
+/* these must be explicitly translated into linux Q_* in ll_dir_ioctl */
+#define LUSTRE_Q_QUOTAON    0x800002     /* deprecated as of 2.4 */
+#define LUSTRE_Q_QUOTAOFF   0x800003     /* deprecated as of 2.4 */
+#define LUSTRE_Q_GETINFO    0x800005     /* get information about quota files */
+#define LUSTRE_Q_SETINFO    0x800006     /* set information about quota files */
+#define LUSTRE_Q_GETQUOTA   0x800007     /* get user quota structure */
+#define LUSTRE_Q_SETQUOTA   0x800008     /* set user quota structure */
+/* lustre-specific control commands */
+#define LUSTRE_Q_INVALIDATE  0x80000b     /* deprecated as of 2.4 */
+#define LUSTRE_Q_FINVALIDATE 0x80000c     /* deprecated as of 2.4 */
+
+#define ALLQUOTA 255       /* set all quota */
+static inline char *qtype_name(int qtype)
+{
+       switch (qtype) {
+       case USRQUOTA:
+               return "usr";
+       case GRPQUOTA:
+               return "grp";
+       case PRJQUOTA:
+               return "prj";
+       }
+       return "unknown";
+}
+
+#define IDENTITY_DOWNCALL_MAGIC 0x6d6dd629
+
+/* permission */
+#define N_PERMS_MAX      64
+
+struct perm_downcall_data {
+       __u64 pdd_nid;
+       __u32 pdd_perm;
+       __u32 pdd_padding;
+};
+
+struct identity_downcall_data {
+       __u32                            idd_magic;
+       __u32                            idd_err;
+       __u32                            idd_uid;
+       __u32                            idd_gid;
+       __u32                            idd_nperms;
+       __u32                            idd_ngroups;
+       struct perm_downcall_data idd_perms[N_PERMS_MAX];
+       __u32                            idd_groups[0];
+};
+
+#ifdef NEED_QUOTA_DEFS
+#ifndef QIF_BLIMITS
+#define QIF_BLIMITS     1
+#define QIF_SPACE       2
+#define QIF_ILIMITS     4
+#define QIF_INODES      8
+#define QIF_BTIME       16
+#define QIF_ITIME       32
+#define QIF_LIMITS      (QIF_BLIMITS | QIF_ILIMITS)
+#define QIF_USAGE       (QIF_SPACE | QIF_INODES)
+#define QIF_TIMES       (QIF_BTIME | QIF_ITIME)
+#define QIF_ALL         (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
+#endif
+
+#endif /* !__KERNEL__ */
+
+/* lustre volatile file support
+ * file name header: .^L^S^T^R:volatile"
+ */
+#define LUSTRE_VOLATILE_HDR    ".\x0c\x13\x14\x12:VOLATILE"
+#define LUSTRE_VOLATILE_HDR_LEN        14
+
+typedef enum lustre_quota_version {
+       LUSTRE_QUOTA_V2 = 1
+} lustre_quota_version_t;
+
+/* XXX: same as if_dqinfo struct in kernel */
+struct obd_dqinfo {
+       __u64 dqi_bgrace;
+       __u64 dqi_igrace;
+       __u32 dqi_flags;
+       __u32 dqi_valid;
+};
+
+/* XXX: same as if_dqblk struct in kernel, plus one padding */
+struct obd_dqblk {
+       __u64 dqb_bhardlimit;
+       __u64 dqb_bsoftlimit;
+       __u64 dqb_curspace;
+       __u64 dqb_ihardlimit;
+       __u64 dqb_isoftlimit;
+       __u64 dqb_curinodes;
+       __u64 dqb_btime;
+       __u64 dqb_itime;
+       __u32 dqb_valid;
+       __u32 dqb_padding;
+};
+
+enum {
+       QC_GENERAL      = 0,
+       QC_MDTIDX       = 1,
+       QC_OSTIDX       = 2,
+       QC_UUID         = 3
+};
+
+struct if_quotactl {
+       __u32                   qc_cmd;
+       __u32                   qc_type;
+       __u32                   qc_id;
+       __u32                   qc_stat;
+       __u32                   qc_valid;
+       __u32                   qc_idx;
+       struct obd_dqinfo       qc_dqinfo;
+       struct obd_dqblk        qc_dqblk;
+       char                    obd_type[16];
+       struct obd_uuid         obd_uuid;
+};
+
+/* swap layout flags */
+#define SWAP_LAYOUTS_CHECK_DV1         (1 << 0)
+#define SWAP_LAYOUTS_CHECK_DV2         (1 << 1)
+#define SWAP_LAYOUTS_KEEP_MTIME                (1 << 2)
+#define SWAP_LAYOUTS_KEEP_ATIME                (1 << 3)
+#define SWAP_LAYOUTS_CLOSE             (1 << 4)
+
+/* Swap XATTR_NAME_HSM as well, only on the MDT so far */
+#define SWAP_LAYOUTS_MDS_HSM           (1 << 31)
+struct lustre_swap_layouts {
+       __u64   sl_flags;
+       __u32   sl_fd;
+       __u32   sl_gid;
+       __u64   sl_dv1;
+       __u64   sl_dv2;
+};
+
+
+/********* Changelogs **********/
+/** Changelog record types */
+enum changelog_rec_type {
+       CL_MARK     = 0,
+       CL_CREATE   = 1,  /* namespace */
+       CL_MKDIR    = 2,  /* namespace */
+       CL_HARDLINK = 3,  /* namespace */
+       CL_SOFTLINK = 4,  /* namespace */
+       CL_MKNOD    = 5,  /* namespace */
+       CL_UNLINK   = 6,  /* namespace */
+       CL_RMDIR    = 7,  /* namespace */
+       CL_RENAME   = 8,  /* namespace */
+       CL_EXT      = 9,  /* namespace extended record (2nd half of rename) */
+       CL_OPEN     = 10, /* not currently used */
+       CL_CLOSE    = 11, /* may be written to log only with mtime change */
+       CL_LAYOUT   = 12, /* file layout/striping modified */
+       CL_TRUNC    = 13,
+       CL_SETATTR  = 14,
+       CL_XATTR    = 15,
+       CL_HSM      = 16, /* HSM specific events, see flags */
+       CL_MTIME    = 17, /* Precedence: setattr > mtime > ctime > atime */
+       CL_CTIME    = 18,
+       CL_ATIME    = 19,
+       CL_MIGRATE  = 20,
+       CL_LAST
+};
+
+static inline const char *changelog_type2str(int type) {
+       static const char *changelog_str[] = {
+               "MARK",  "CREAT", "MKDIR", "HLINK", "SLINK", "MKNOD", "UNLNK",
+               "RMDIR", "RENME", "RNMTO", "OPEN",  "CLOSE", "LYOUT", "TRUNC",
+               "SATTR", "XATTR", "HSM",   "MTIME", "CTIME", "ATIME", "MIGRT"
+       };
+
+       if (type >= 0 && type < CL_LAST)
+               return changelog_str[type];
+       return NULL;
+}
+
+/* per-record flags */
+#define CLF_FLAGSHIFT   12
+#define CLF_FLAGMASK    ((1U << CLF_FLAGSHIFT) - 1)
+#define CLF_VERMASK     (~CLF_FLAGMASK)
+enum changelog_rec_flags {
+       CLF_VERSION     = 0x1000,
+       CLF_RENAME      = 0x2000,
+       CLF_JOBID       = 0x4000,
+       CLF_SUPPORTED   = CLF_VERSION | CLF_RENAME | CLF_JOBID
+};
+
+
+/* Anything under the flagmask may be per-type (if desired) */
+/* Flags for unlink */
+#define CLF_UNLINK_LAST       0x0001 /* Unlink of last hardlink */
+#define CLF_UNLINK_HSM_EXISTS 0x0002 /* File has something in HSM */
+                                    /* HSM cleaning needed */
+/* Flags for rename */
+#define CLF_RENAME_LAST                0x0001 /* rename unlink last hardlink
+                                       * of target */
+#define CLF_RENAME_LAST_EXISTS 0x0002 /* rename unlink last hardlink of target
+                                       * has an archive in backend */
+
+/* Flags for HSM */
+/* 12b used (from high weight to low weight):
+ * 2b for flags
+ * 3b for event
+ * 7b for error code
+ */
+#define CLF_HSM_ERR_L        0 /* HSM return code, 7 bits */
+#define CLF_HSM_ERR_H        6
+#define CLF_HSM_EVENT_L      7 /* HSM event, 3 bits, see enum hsm_event */
+#define CLF_HSM_EVENT_H      9
+#define CLF_HSM_FLAG_L      10 /* HSM flags, 2 bits, 1 used, 1 spare */
+#define CLF_HSM_FLAG_H      11
+#define CLF_HSM_SPARE_L     12 /* 4 spare bits */
+#define CLF_HSM_SPARE_H     15
+#define CLF_HSM_LAST        15
+
+/* 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
+#define CLF_HSM_ERROVERFLOW  0x7F
+
+#define CLF_HSM_DIRTY        1 /* file is dirty after HSM request end */
+
+/* 3 bits field => 8 values allowed */
+enum hsm_event {
+       HE_ARCHIVE      = 0,
+       HE_RESTORE      = 1,
+       HE_CANCEL       = 2,
+       HE_RELEASE      = 3,
+       HE_REMOVE       = 4,
+       HE_STATE        = 5,
+       HE_SPARE1       = 6,
+       HE_SPARE2       = 7,
+};
+
+static inline enum hsm_event hsm_get_cl_event(__u16 flags)
+{
+       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)
+{
+       *flags |= (he << CLF_HSM_EVENT_L);
+}
+
+static inline __u16 hsm_get_cl_flags(int 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)
+{
+       *flags |= (bits << CLF_HSM_FLAG_L);
+}
+
+static inline int hsm_get_cl_error(int 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)
+{
+       *flags |= (error << CLF_HSM_ERR_L);
+}
+
+enum changelog_send_flag {
+       /* Not yet implemented */
+       CHANGELOG_FLAG_FOLLOW   = 0x01,
+       /* Blocking IO makes sense in case of slow user parsing of the records,
+        * but it also prevents us from cleaning up if the records are not
+        * consumed. */
+       CHANGELOG_FLAG_BLOCK    = 0x02,
+       /* Pack jobid into the changelog records if available. */
+       CHANGELOG_FLAG_JOBID    = 0x04,
+};
+
+#define CR_MAXSIZE cfs_size_round(2 * NAME_MAX + 2 + \
+                                 changelog_rec_offset(CLF_SUPPORTED))
+
+/* 31 usable bytes string + null terminator. */
+#define LUSTRE_JOBID_SIZE      32
+
+/* This is the minimal changelog record. It can contain extensions
+ * such as rename fields or process jobid. Its exact content is described
+ * by the cr_flags.
+ *
+ * Extensions are packed in the same order as their corresponding flags.
+ */
+struct changelog_rec {
+       __u16                   cr_namelen;
+       __u16                   cr_flags; /**< \a changelog_rec_flags */
+       __u32                   cr_type;  /**< \a changelog_rec_type */
+       __u64                   cr_index; /**< changelog record number */
+       __u64                   cr_prev;  /**< last index for this target fid */
+       __u64                   cr_time;
+       union {
+               lustre_fid      cr_tfid;        /**< target fid */
+               __u32           cr_markerflags; /**< CL_MARK flags */
+       };
+       lustre_fid              cr_pfid;        /**< parent fid */
+};
+
+/* Changelog extension for RENAME. */
+struct changelog_ext_rename {
+       lustre_fid              cr_sfid;     /**< source fid, or zero */
+       lustre_fid              cr_spfid;    /**< source parent fid, or zero */
+};
+
+/* Changelog extension to include JOBID. */
+struct changelog_ext_jobid {
+       char    cr_jobid[LUSTRE_JOBID_SIZE];    /**< zero-terminated string. */
+};
+
+
+static inline size_t changelog_rec_offset(enum changelog_rec_flags crf)
+{
+       size_t size = sizeof(struct changelog_rec);
+
+       if (crf & CLF_RENAME)
+               size += sizeof(struct changelog_ext_rename);
+
+       if (crf & CLF_JOBID)
+               size += sizeof(struct changelog_ext_jobid);
+
+       return size;
+}
+
+static inline size_t changelog_rec_size(const struct changelog_rec *rec)
+{
+       return changelog_rec_offset(rec->cr_flags);
+}
+
+static inline size_t changelog_rec_varsize(const struct changelog_rec *rec)
+{
+       return changelog_rec_size(rec) - sizeof(*rec) + rec->cr_namelen;
+}
+
+static inline
+struct changelog_ext_rename *changelog_rec_rename(const struct changelog_rec *rec)
+{
+       enum changelog_rec_flags crf = rec->cr_flags & CLF_VERSION;
+
+       return (struct changelog_ext_rename *)((char *)rec +
+                                              changelog_rec_offset(crf));
+}
+
+/* The jobid follows the rename extension, if present */
+static inline
+struct changelog_ext_jobid *changelog_rec_jobid(const struct changelog_rec *rec)
+{
+       enum changelog_rec_flags crf = rec->cr_flags &
+                                       (CLF_VERSION | CLF_RENAME);
+
+       return (struct changelog_ext_jobid *)((char *)rec +
+                                             changelog_rec_offset(crf));
+}
+
+/* The name follows the rename and jobid extensions, if present */
+static inline char *changelog_rec_name(const struct changelog_rec *rec)
+{
+       return (char *)rec + changelog_rec_offset(rec->cr_flags &
+                                                 CLF_SUPPORTED);
+}
+
+static inline size_t changelog_rec_snamelen(const struct changelog_rec *rec)
+{
+       return rec->cr_namelen - strlen(changelog_rec_name(rec)) - 1;
+}
+
+static inline char *changelog_rec_sname(const struct changelog_rec *rec)
+{
+       char *cr_name = changelog_rec_name(rec);
+
+       return cr_name + strlen(cr_name) + 1;
+}
+
+/**
+ * Remap a record to the desired format as specified by the crf flags.
+ * The record must be big enough to contain the final remapped version.
+ * Superfluous extension fields are removed and missing ones are added
+ * and zeroed. The flags of the record are updated accordingly.
+ *
+ * The jobid and rename extensions can be added to a record, to match the
+ * format an application expects, typically. In this case, the newly added
+ * fields will be zeroed.
+ * The Jobid field can be removed, to guarantee compatibility with older
+ * clients that don't expect this field in the records they process.
+ *
+ * The following assumptions are being made:
+ *   - CLF_RENAME will not be removed
+ *   - CLF_JOBID will not be added without CLF_RENAME being added too
+ *
+ * @param[in,out]  rec         The record to remap.
+ * @param[in]      crf_wanted  Flags describing the desired extensions.
+ */
+static inline void changelog_remap_rec(struct changelog_rec *rec,
+                                      enum changelog_rec_flags crf_wanted)
+{
+       char *jid_mov;
+       char *rnm_mov;
+
+       crf_wanted &= CLF_SUPPORTED;
+
+       if ((rec->cr_flags & CLF_SUPPORTED) == crf_wanted)
+               return;
+
+       /* First move the variable-length name field */
+       memmove((char *)rec + changelog_rec_offset(crf_wanted),
+               changelog_rec_name(rec), rec->cr_namelen);
+
+       /* Locations of jobid and rename extensions in the remapped record */
+       jid_mov = (char *)rec +
+                 changelog_rec_offset(crf_wanted & ~CLF_JOBID);
+       rnm_mov = (char *)rec +
+                 changelog_rec_offset(crf_wanted & ~(CLF_JOBID | CLF_RENAME));
+
+       /* Move the extension fields to the desired positions */
+       if ((crf_wanted & CLF_JOBID) && (rec->cr_flags & CLF_JOBID))
+               memmove(jid_mov, changelog_rec_jobid(rec),
+                       sizeof(struct changelog_ext_jobid));
+
+       if ((crf_wanted & CLF_RENAME) && (rec->cr_flags & CLF_RENAME))
+               memmove(rnm_mov, changelog_rec_rename(rec),
+                       sizeof(struct changelog_ext_rename));
+
+       /* Clear newly added fields */
+       if ((crf_wanted & CLF_JOBID) && !(rec->cr_flags & CLF_JOBID))
+               memset(jid_mov, 0, sizeof(struct changelog_ext_jobid));
+
+       if ((crf_wanted & CLF_RENAME) && !(rec->cr_flags & CLF_RENAME))
+               memset(rnm_mov, 0, sizeof(struct changelog_ext_rename));
+
+       /* Update the record's flags accordingly */
+       rec->cr_flags = (rec->cr_flags & CLF_FLAGMASK) | crf_wanted;
+}
+
+enum changelog_message_type {
+       CL_RECORD = 10, /* message is a changelog_rec */
+       CL_EOF    = 11, /* at end of current changelog */
+};
+
+/********* Misc **********/
+
+struct ioc_data_version {
+       __u64 idv_version;
+       __u64 idv_flags;     /* See LL_DV_xxx */
+};
+#define LL_DV_RD_FLUSH (1 << 0) /* Flush dirty pages from clients */
+#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)))
+#endif
+
+#define dot_lustre_name ".lustre"
+
+
+/********* HSM **********/
+
+/** HSM per-file state
+ * See HSM_FLAGS below.
+ */
+enum hsm_states {
+       HS_NONE         = 0x00000000,
+       HS_EXISTS       = 0x00000001,
+       HS_DIRTY        = 0x00000002,
+       HS_RELEASED     = 0x00000004,
+       HS_ARCHIVED     = 0x00000008,
+       HS_NORELEASE    = 0x00000010,
+       HS_NOARCHIVE    = 0x00000020,
+       HS_LOST         = 0x00000040,
+};
+
+/* HSM user-setable flags. */
+#define HSM_USER_MASK   (HS_NORELEASE | HS_NOARCHIVE | HS_DIRTY)
+
+/* Other HSM flags. */
+#define HSM_STATUS_MASK (HS_EXISTS | HS_LOST | HS_RELEASED | HS_ARCHIVED)
+
+/*
+ * All HSM-related possible flags that could be applied to a file.
+ * This should be kept in sync with hsm_states.
+ */
+#define HSM_FLAGS_MASK  (HSM_USER_MASK | HSM_STATUS_MASK)
+
+/**
+ * HSM request progress state
+ */
+enum hsm_progress_states {
+       HPS_WAITING     = 1,
+       HPS_RUNNING     = 2,
+       HPS_DONE        = 3,
+};
+#define HPS_NONE       0
+
+static inline const char *hsm_progress_state2name(enum hsm_progress_states s)
+{
+       switch  (s) {
+       case HPS_WAITING:       return "waiting";
+       case HPS_RUNNING:       return "running";
+       case HPS_DONE:          return "done";
+       default:                return "unknown";
+       }
+}
+
+struct hsm_extent {
+       __u64 offset;
+       __u64 length;
+} __attribute__((packed));
+
+/**
+ * Current HSM states of a Lustre file.
+ *
+ * This structure purpose is to be sent to user-space mainly. It describes the
+ * current HSM flags and in-progress action.
+ */
+struct hsm_user_state {
+       /** Current HSM states, from enum hsm_states. */
+       __u32                   hus_states;
+       __u32                   hus_archive_id;
+       /**  The current undergoing action, if there is one */
+       __u32                   hus_in_progress_state;
+       __u32                   hus_in_progress_action;
+       struct hsm_extent       hus_in_progress_location;
+       char                    hus_extended_info[];
+};
+
+struct hsm_state_set_ioc {
+       struct lu_fid   hssi_fid;
+       __u64           hssi_setmask;
+       __u64           hssi_clearmask;
+};
+
+/*
+ * This structure describes the current in-progress action for a file.
+ * it is retuned to user space and send over the wire
+ */
+struct hsm_current_action {
+       /**  The current undergoing action, if there is one */
+       /* state is one of hsm_progress_states */
+       __u32                   hca_state;
+       /* action is one of hsm_user_action */
+       __u32                   hca_action;
+       struct hsm_extent       hca_location;
+};
+
+/***** HSM user requests ******/
+/* User-generated (lfs/ioctl) request types */
+enum hsm_user_action {
+       HUA_NONE    =  1, /* no action (noop) */
+       HUA_ARCHIVE = 10, /* copy to hsm */
+       HUA_RESTORE = 11, /* prestage */
+       HUA_RELEASE = 12, /* drop ost objects */
+       HUA_REMOVE  = 13, /* remove from archive */
+       HUA_CANCEL  = 14  /* cancel a request */
+};
+
+static inline const char *hsm_user_action2name(enum hsm_user_action  a)
+{
+       switch  (a) {
+       case HUA_NONE:    return "NOOP";
+       case HUA_ARCHIVE: return "ARCHIVE";
+       case HUA_RESTORE: return "RESTORE";
+       case HUA_RELEASE: return "RELEASE";
+       case HUA_REMOVE:  return "REMOVE";
+       case HUA_CANCEL:  return "CANCEL";
+       default:          return "UNKNOWN";
+       }
+}
+
+/*
+ * List of hr_flags (bit field)
+ */
+#define HSM_FORCE_ACTION 0x0001
+/* used by CT, cannot be set by user */
+#define HSM_GHOST_COPY   0x0002
+
+/**
+ * Contains all the fixed part of struct hsm_user_request.
+ *
+ */
+struct hsm_request {
+       __u32 hr_action;        /* enum hsm_user_action */
+       __u32 hr_archive_id;    /* archive id, used only with HUA_ARCHIVE */
+       __u64 hr_flags;         /* request flags */
+       __u32 hr_itemcount;     /* item count in hur_user_item vector */
+       __u32 hr_data_len;
+};
+
+struct hsm_user_item {
+       lustre_fid        hui_fid;
+       struct hsm_extent hui_extent;
+} __attribute__((packed));
+
+struct hsm_user_request {
+       struct hsm_request      hur_request;
+       struct hsm_user_item    hur_user_item[0];
+       /* extra data blob at end of struct (after all
+        * hur_user_items), only use helpers to access it
+        */
+} __attribute__((packed));
+
+/** Return pointer to data field in a hsm user request */
+static inline void *hur_data(struct hsm_user_request *hur)
+{
+       return &(hur->hur_user_item[hur->hur_request.hr_itemcount]);
+}
+
+/**
+ * Compute the current length of the provided hsm_user_request.  This returns -1
+ * instead of an errno because ssize_t is defined to be only [ -1, SSIZE_MAX ]
+ *
+ * return -1 on bounds check error.
+ */
+static inline ssize_t hur_len(struct hsm_user_request *hur)
+{
+       __u64   size;
+
+       /* can't overflow a __u64 since hr_itemcount is only __u32 */
+       size = offsetof(struct hsm_user_request, hur_user_item[0]) +
+               (__u64)hur->hur_request.hr_itemcount *
+               sizeof(hur->hur_user_item[0]) + hur->hur_request.hr_data_len;
+
+       if (size != (ssize_t)size)
+               return -1;
+
+       return size;
+}
+
+/****** HSM RPCs to copytool *****/
+/* Message types the copytool may receive */
+enum hsm_message_type {
+       HMT_ACTION_LIST = 100, /* message is a hsm_action_list */
+};
+
+/* Actions the copytool may be instructed to take for a given action_item */
+enum hsm_copytool_action {
+       HSMA_NONE    = 10, /* no action */
+       HSMA_ARCHIVE = 20, /* arbitrary offset */
+       HSMA_RESTORE = 21,
+       HSMA_REMOVE  = 22,
+       HSMA_CANCEL  = 23
+};
+
+static inline const char *hsm_copytool_action2name(enum hsm_copytool_action  a)
+{
+       switch  (a) {
+       case HSMA_NONE:    return "NOOP";
+       case HSMA_ARCHIVE: return "ARCHIVE";
+       case HSMA_RESTORE: return "RESTORE";
+       case HSMA_REMOVE:  return "REMOVE";
+       case HSMA_CANCEL:  return "CANCEL";
+       default:           return "UNKNOWN";
+       }
+}
+
+/* Copytool item action description */
+struct hsm_action_item {
+       __u32      hai_len;     /* valid size of this struct */
+       __u32      hai_action;  /* hsm_copytool_action, but use known size */
+       lustre_fid hai_fid;     /* Lustre FID to operate on */
+       lustre_fid hai_dfid;    /* fid used for data access */
+       struct hsm_extent hai_extent;  /* byte range to operate on */
+       __u64      hai_cookie;  /* action cookie from coordinator */
+       __u64      hai_gid;     /* grouplock id */
+       char       hai_data[0]; /* variable length */
+} __attribute__((packed));
+
+/**
+ * helper function which print in hexa the first bytes of
+ * hai opaque field
+ *
+ * \param hai [IN]        record to print
+ * \param buffer [IN,OUT] buffer to write the hex string to
+ * \param len [IN]        max buffer length
+ *
+ * \retval buffer
+ */
+static inline char *hai_dump_data_field(const struct hsm_action_item *hai,
+                                       char *buffer, size_t len)
+{
+       int i;
+       int data_len;
+       char *ptr;
+
+       ptr = buffer;
+       data_len = hai->hai_len - sizeof(*hai);
+       for (i = 0; (i < data_len) && (len > 2); i++) {
+               snprintf(ptr, 3, "%02X", (unsigned char)hai->hai_data[i]);
+               ptr += 2;
+               len -= 2;
+       }
+
+       *ptr = '\0';
+
+       return buffer;
+}
+
+/* Copytool action list */
+#define HAL_VERSION 1
+#define HAL_MAXSIZE LNET_MTU /* bytes, used in userspace only */
+struct hsm_action_list {
+       __u32 hal_version;
+       __u32 hal_count;       /* number of hai's to follow */
+       __u64 hal_compound_id; /* returned by coordinator */
+       __u64 hal_flags;
+       __u32 hal_archive_id; /* which archive backend */
+       __u32 padding1;
+       char  hal_fsname[0];   /* null-terminated */
+       /* struct hsm_action_item[hal_count] follows, aligned on 8-byte
+          boundaries. See hai_zero */
+} __attribute__((packed));
+
+#ifndef HAVE_CFS_SIZE_ROUND
+static inline int cfs_size_round (int val)
+{
+       return (val + 7) & (~0x7);
+}
+#define HAVE_CFS_SIZE_ROUND
+#endif
+
+/* Return pointer to first hai in action list */
+static inline struct hsm_action_item *hai_first(struct hsm_action_list *hal)
+{
+       return (struct hsm_action_item *)(hal->hal_fsname +
+                                         cfs_size_round(strlen(hal-> \
+                                                               hal_fsname)
+                                                        + 1));
+}
+/* Return pointer to next hai */
+static inline struct hsm_action_item * hai_next(struct hsm_action_item *hai)
+{
+       return (struct hsm_action_item *)((char *)hai +
+                                         cfs_size_round(hai->hai_len));
+}
+
+/* Return size of an hsm_action_list */
+static inline size_t hal_size(struct hsm_action_list *hal)
+{
+       __u32 i;
+       size_t sz;
+       struct hsm_action_item *hai;
+
+       sz = sizeof(*hal) + cfs_size_round(strlen(hal->hal_fsname) + 1);
+       hai = hai_first(hal);
+       for (i = 0; i < hal->hal_count ; i++, hai = hai_next(hai))
+               sz += cfs_size_round(hai->hai_len);
+
+       return sz;
+}
+
+/* HSM file import
+ * describe the attributes to be set on imported file
+ */
+struct hsm_user_import {
+       __u64           hui_size;
+       __u64           hui_atime;
+       __u64           hui_mtime;
+       __u32           hui_atime_ns;
+       __u32           hui_mtime_ns;
+       __u32           hui_uid;
+       __u32           hui_gid;
+       __u32           hui_mode;
+       __u32           hui_archive_id;
+};
+
+/* Copytool progress reporting */
+#define HP_FLAG_COMPLETED 0x01
+#define HP_FLAG_RETRY     0x02
+
+struct hsm_progress {
+       lustre_fid              hp_fid;
+       __u64                   hp_cookie;
+       struct hsm_extent       hp_extent;
+       __u16                   hp_flags;
+       __u16                   hp_errval; /* positive val */
+       __u32                   padding;
+};
+
+struct hsm_copy {
+       __u64                   hc_data_version;
+       __u16                   hc_flags;
+       __u16                   hc_errval; /* positive val */
+       __u32                   padding;
+       struct hsm_action_item  hc_hai;
+};
+
+/* JSON objects */
+enum llapi_json_types {
+       LLAPI_JSON_INTEGER = 1,
+       LLAPI_JSON_BIGNUM,
+       LLAPI_JSON_REAL,
+       LLAPI_JSON_STRING
+};
+
+struct llapi_json_item {
+       char                    *lji_key;
+       __u32                   lji_type;
+       union {
+               int     lji_integer;
+               __u64   lji_u64;
+               double  lji_real;
+               char    *lji_string;
+       };
+       struct llapi_json_item  *lji_next;
+};
+
+struct llapi_json_item_list {
+       int                     ljil_item_count;
+       struct llapi_json_item  *ljil_items;
+};
+
+enum lu_ladvise_type {
+       LU_LADVISE_INVALID      = 0,
+       LU_LADVISE_WILLREAD     = 1,
+       LU_LADVISE_DONTNEED     = 2,
+};
+
+#define LU_LADVISE_NAMES {                                             \
+       [LU_LADVISE_WILLREAD]   = "willread",                           \
+       [LU_LADVISE_DONTNEED]   = "dontneed",                           \
+}
+
+/* This is the userspace argument for ladvise.  It is currently the same as
+ * what goes on the wire (struct lu_ladvise), but is defined separately as we
+ * may need info which is only used locally. */
+struct llapi_lu_ladvise {
+       __u16 lla_advice;       /* advice type */
+       __u16 lla_value1;       /* values for different advice types */
+       __u32 lla_value2;
+       __u64 lla_start;        /* first byte of extent for advice */
+       __u64 lla_end;          /* last byte of extent for advice */
+       __u32 lla_value3;
+       __u32 lla_value4;
+};
+
+enum ladvise_flag {
+       LF_ASYNC        = 0x00000001,
+};
+
+#define LADVISE_MAGIC 0x1ADF1CE0
+#define LF_MASK LF_ASYNC
+
+/* This is the userspace argument for ladvise, corresponds to ladvise_hdr which
+ * is used on the wire.  It is defined separately as we may need info which is
+ * only used locally. */
+struct llapi_ladvise_hdr {
+       __u32                   lah_magic;      /* LADVISE_MAGIC */
+       __u32                   lah_count;      /* number of advices */
+       __u64                   lah_flags;      /* from enum ladvise_flag */
+       __u32                   lah_value1;     /* unused */
+       __u32                   lah_value2;     /* unused */
+       __u64                   lah_value3;     /* unused */
+       struct llapi_lu_ladvise lah_advise[0];  /* advices in this header */
+};
+
+#define LAH_COUNT_MAX  (1024)
+
+/* Shared key */
+enum sk_crypt_alg {
+       SK_CRYPT_INVALID        = -1,
+       SK_CRYPT_EMPTY          = 0,
+       SK_CRYPT_AES256_CTR     = 1,
+       SK_CRYPT_MAX            = 2,
+};
+
+enum sk_hmac_alg {
+       SK_HMAC_INVALID = -1,
+       SK_HMAC_EMPTY   = 0,
+       SK_HMAC_SHA256  = 1,
+       SK_HMAC_SHA512  = 2,
+       SK_HMAC_MAX     = 3,
+};
+
+struct sk_crypt_type {
+       char    *sct_name;
+       size_t   sct_bytes;
+};
+
+struct sk_hmac_type {
+       char    *sht_name;
+       size_t   sht_bytes;
+};
+
+/** @} lustreuser */
+#endif /* _LUSTRE_USER_H */
index 2e0a2fd..2209253 100644 (file)
@@ -40,7 +40,7 @@
 #include <linux/kthread.h>
 #include <linux/list.h>
 #include <libcfs/libcfs.h>
-#include <lustre/lustre_errno.h>
+#include <lustre_errno.h>
 #include <lustre_dlm.h>
 #include <obd_class.h>
 #include "ldlm_internal.h"
index c7f150c..c2ee9bc 100644 (file)
@@ -57,8 +57,7 @@
 
 #define DEBUG_SUBSYSTEM S_LDLM
 
-#include <lustre/lustre_errno.h>
-
+#include <lustre_errno.h>
 #include <lustre_dlm.h>
 #include <obd_class.h>
 #include <obd.h>
index 76b6f11..c7dbc63 100644 (file)
@@ -33,7 +33,6 @@
 #include <lu_object.h>
 #include <dt_object.h>
 #include <lustre_fid.h>
-#include <lustre/lustre_user.h>
 
 #include "lfsck_internal.h"
 
index 942b247..ecb43f5 100644 (file)
@@ -33,9 +33,6 @@
 #ifndef _LFSCK_INTERNAL_H
 # define _LFSCK_INTERNAL_H
 
-#include <lustre/lustre_lfsck_user.h>
-#include <lustre/lustre_user.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_lfsck.h>
 #include <obd.h>
 #include <lu_object.h>
index d31c74a..3946d51 100644 (file)
 #include <linux/bitops.h>
 #include <linux/rbtree.h>
 
-#include <lustre/lustre_idl.h>
 #include <lu_object.h>
 #include <dt_object.h>
 #include <lustre_fid.h>
 #include <lustre_lib.h>
 #include <lustre_net.h>
-#include <lustre/lustre_user.h>
 #include <md_object.h>
 #include <obd_class.h>
 
index 42b0c44..0facc9b 100644 (file)
@@ -40,7 +40,6 @@
 #include <lustre_lib.h>
 #include <lustre_net.h>
 #include <lustre_lfsck.h>
-#include <lustre/lustre_lfsck_user.h>
 
 #include "lfsck_internal.h"
 
index b706833..14885df 100644 (file)
 
 #define DEBUG_SUBSYSTEM S_LFSCK
 
-#include <lustre/lustre_idl.h>
 #include <lu_object.h>
 #include <dt_object.h>
 #include <md_object.h>
 #include <lustre_fid.h>
 #include <lustre_lib.h>
 #include <lustre_net.h>
-#include <lustre/lustre_user.h>
 
 #include "lfsck_internal.h"
 
index 0872896..5ac0cb7 100644 (file)
 
 #define DEBUG_SUBSYSTEM S_LFSCK
 
-#include <lustre/lustre_idl.h>
 #include <lu_object.h>
 #include <dt_object.h>
 #include <md_object.h>
 #include <lustre_lib.h>
 #include <lustre_net.h>
 #include <lustre_lmv.h>
-#include <lustre/lustre_user.h>
 
 #include "lfsck_internal.h"
 
index 6da6b59..875eebd 100644 (file)
@@ -38,7 +38,6 @@
 #define DEBUG_SUBSYSTEM S_LLITE
 
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_dlm.h>
 
 #include "llite_internal.h"
index 45dd02e..958dc9e 100644 (file)
 
 #define DEBUG_SUBSYSTEM S_LLITE
 
-#include <lustre/lustre_idl.h>
-
 #include <obd_support.h>
 #include <obd_class.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_lib.h>
 #include <lustre_dlm.h>
 #include <lustre_fid.h>
index 0a89689..ade596f 100644 (file)
@@ -45,9 +45,8 @@
 #ifdef HAVE_UIDGID_HEADER
 # include <linux/uidgid.h>
 #endif
-#include <lustre/ll_fiemap.h>
 
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_swab.h>
 
 #include "cl_object.h"
index 9ea2bd7..93deb63 100644 (file)
@@ -47,7 +47,6 @@
 #include <obd_support.h>
 #include <lustre_fid.h>
 #include <lustre_dlm.h>
-#include <lustre_ver.h>
 #include <lustre_mdc.h>
 #include <cl_object.h>
 
index 1e472ca..9ebbaf7 100644 (file)
@@ -33,7 +33,6 @@
 #ifndef LLITE_INTERNAL_H
 #define LLITE_INTERNAL_H
 #include <lustre_debug.h>
-#include <lustre_ver.h>
 #include <lustre_disk.h>  /* for s2sbi */
 #include <lustre_eacl.h>
 #include <lustre_linkea.h>
index 4acf584..5299cf5 100644 (file)
 #endif
 #include <linux/security.h>
 
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_ha.h>
 #include <lustre_dlm.h>
 #include <lprocfs_status.h>
 #include <lustre_disk.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_log.h>
 #include <cl_object.h>
 #include <obd_cksum.h>
index 2f61758..467484a 100644 (file)
@@ -36,7 +36,7 @@
 #ifdef HAVE_UIDGID_HEADER
 # include <linux/uidgid.h>
 #endif
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lprocfs_status.h>
 #include <obd_support.h>
 
index de168ab..f008826 100644 (file)
@@ -47,7 +47,6 @@
 #include <obd_support.h>
 #include <lustre_fid.h>
 #include <lustre_dlm.h>
-#include <lustre_ver.h>
 #include "llite_internal.h"
 
 static int ll_create_it(struct inode *dir, struct dentry *dentry,
index 56e1291..9795bb9 100644 (file)
@@ -34,7 +34,7 @@
  * Author: Bobi Jam <bobijam.xu@intel.com>
  */
 #include "range_lock.h"
-#include <lustre/lustre_user.h>
+#include <uapi/linux/lustre/lustre_user.h>
 
 /**
  * Initialize a range lock tree
index 645b4b5..e1f3041 100644 (file)
@@ -37,7 +37,6 @@
 #ifndef VVP_INTERNAL_H
 #define VVP_INTERNAL_H
 
-#include <lustre/lustre_idl.h>
 #include <cl_object.h>
 
 enum obd_notify_event;
index 243219b..34e46cd 100644 (file)
@@ -40,7 +40,6 @@
 
 #include <obd_support.h>
 #include <lustre_dlm.h>
-#include <lustre_ver.h>
 #include <lustre_eacl.h>
 
 #include "llite_internal.h"
index 84e9b8b..00c59ce 100644 (file)
@@ -40,7 +40,7 @@
 
 #include <obd_support.h>
 #include <lustre_dlm.h>
-#include <lustre_ver.h>
+#include <uapi/linux/lustre/lustre_ver.h>
 #include <lustre_eacl.h>
 
 #include "llite_internal.h"
index 18a289b..fca7ab0 100644 (file)
@@ -37,7 +37,6 @@
 #include <linux/mm.h>
 #include <obd_support.h>
 #include <lustre_dlm.h>
-#include <lustre_ver.h>
 #include "llite_internal.h"
 
 /* If we ever have hundreds of extended attributes, we might want to consider
index b5ec306..b439d87 100644 (file)
@@ -40,7 +40,6 @@
 #include <linux/seq_file.h>
 
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_fid.h>
 #include <lustre_lib.h>
 #include <lustre_net.h>
index 08a5a60..8fc27d6 100644 (file)
@@ -42,7 +42,6 @@
 #include <lustre_intent.h>
 
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_lib.h>
 #include <lustre_net.h>
 #include <lustre_dlm.h>
index a9dd664..2c9dd05 100644 (file)
@@ -33,7 +33,6 @@
 #ifndef _LMV_INTERNAL_H_
 #define _LMV_INTERNAL_H_
 
-#include <lustre/lustre_idl.h>
 #include <obd.h>
 #include <lustre_lmv.h>
 
index f226c5a..68ed668 100644 (file)
@@ -45,7 +45,6 @@
 #include <linux/seq_file.h>
 #include <linux/namei.h>
 
-#include <lustre/lustre_idl.h>
 #include <obd_support.h>
 #include <lustre_lib.h>
 #include <lustre_net.h>
@@ -54,7 +53,7 @@
 #include <lprocfs_status.h>
 #include <cl_object.h>
 #include <lustre_fid.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_kernelcomm.h>
 #include "lmv_internal.h"
 
index c66bfbe..d6d77c6 100644 (file)
@@ -93,7 +93,7 @@
 #include <obd_class.h>
 #include <md_object.h>
 #include <lustre_fid.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_update.h>
 #include <lustre_log.h>
 
index 2970d93..139ec4e 100644 (file)
@@ -39,7 +39,7 @@
 #define _LOD_INTERNAL_H
 
 #include <libcfs/libcfs.h>
-#include <uapi/linux/lustre_cfg.h>
+#include <uapi/linux/lustre/lustre_cfg.h>
 #include <obd.h>
 #include <dt_object.h>
 
index bc1ac0e..f2e3d6f 100644 (file)
@@ -47,9 +47,9 @@
 #include <lustre_fid.h>
 #include <lustre_linkea.h>
 #include <lustre_lmv.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_swab.h>
-#include <lustre_ver.h>
+#include <uapi/linux/lustre/lustre_ver.h>
 #include <lprocfs_status.h>
 #include <md_object.h>
 
index 7103414..cb3ac44 100644 (file)
@@ -39,7 +39,7 @@
 
 #include <asm/div64.h>
 #include <libcfs/libcfs.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <lustre_swab.h>
 #include <obd_class.h>
 
index a81d619..e0d0ac1 100644 (file)
 
 #include <obd.h>
 #include <obd_class.h>
-#include <lustre_ver.h>
+#include <uapi/linux/lustre/lustre_ver.h>
 #include <obd_support.h>
 #include <lprocfs_status.h>
 
 #include <lustre_fid.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <md_object.h>
 #include <lustre_linkea.h>
 #include <lustre_log.h>
index 4986f1f..8003fb6 100644 (file)
@@ -35,7 +35,7 @@
 #include <obd_class.h>
 #include <linux/seq_file.h>
 #include "lod_internal.h"
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 
 /*
  * Notice, all the functions below (except for lod_procfs_init() and
index 1315681..f7e9137 100644 (file)
@@ -41,9 +41,6 @@
 #include <libcfs/libcfs.h>
 
 #include <obd_class.h>
-#include <lustre/lustre_idl.h>
-#include <lustre/lustre_user.h>
-
 #include "lov_internal.h"
 
 static inline void
index 6f74868..edbad91 100644 (file)
@@ -34,7 +34,7 @@
 #define LOV_INTERNAL_H
 
 #include <obd_class.h>
-#include <lustre/lustre_user.h>
+#include <uapi/linux/lustre/lustre_user.h>
 
 /* If we are unable to get the maximum object size from the OST in
  * ocd_maxbytes using OBD_CONNECT_MAXBYTES, then we fall back to using
index 10972cd..31203b5 100644 (file)
 #define DEBUG_SUBSYSTEM S_LOV
 #include <libcfs/libcfs.h>
 
-#include <lustre/lustre_idl.h>
-
 #include <cl_object.h>
 #include <lustre_dlm.h>
 #include <lustre_fid.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_lib.h>
 #include <lustre_mds.h>
 #include <lustre_net.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_swab.h>
 #include <lprocfs_status.h>
 #include <obd_class.h>
index bdcf146..e630913 100644 (file)
@@ -38,9 +38,6 @@
 
 #define DEBUG_SUBSYSTEM S_LOV
 
-#include <lustre/lustre_idl.h>
-#include <lustre/lustre_user.h>
-
 #include <lustre_net.h>
 #include <lustre_swab.h>
 #include <obd.h>
index c343dfb..a48dca8 100644 (file)
@@ -35,8 +35,6 @@
 #include <libcfs/libcfs.h>
 
 #include <obd_class.h>
-#include <lustre/lustre_idl.h>
-
 #include "lov_internal.h"
 
 static void lov_init_set(struct lov_request_set *set)
index 98c9db5..1a18e40 100644 (file)
@@ -35,7 +35,7 @@
 #include <asm/statfs.h>
 #include <lprocfs_status.h>
 #include <obd_class.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include "lov_internal.h"
 
 #ifdef CONFIG_PROC_FS
index 5c2acf8..6cbc258 100644 (file)
@@ -36,7 +36,6 @@
 # include <linux/uidgid.h>
 #endif
 #include <lustre_net.h>
-#include <lustre/lustre_idl.h>
 #include <obd_class.h>
 #include <obd.h>
 #include <cl_object.h>
index 128eaea..b00fc44 100644 (file)
 # include <linux/uidgid.h>
 #endif
 
-#include <lustre/lustre_errno.h>
+#include <lustre_errno.h>
 
 #include <cl_object.h>
 #include <llog_swab.h>
 #include <lprocfs_status.h>
 #include <lustre_acl.h>
 #include <lustre_fid.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_kernelcomm.h>
 #include <lustre_lmv.h>
 #include <lustre_log.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_swab.h>
 #include <obd_class.h>
 
index d11d1ea..c034a40 100644 (file)
 #include <linux/module.h>
 #include <linux/kthread.h>
 #include <obd_class.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_mds.h>
 #include <obd_support.h>
 #include <lu_object.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_fid.h>
 #include <lustre_nodemap.h>
 #include <lustre_barrier.h>
index 97d8870..193de6e 100644 (file)
@@ -39,7 +39,6 @@
 #define DEBUG_SUBSYSTEM S_MDS
 
 #include <linux/module.h>
-#include <lustre_ver.h>
 #include "mdd_internal.h"
 
 void mdd_write_lock(const struct lu_env *env, struct mdd_object *obj,
index 03e8e5a..76e2fd2 100644 (file)
@@ -46,9 +46,8 @@
 /* fid_be_cpu(), fid_cpu_to_be(). */
 #include <lustre_fid.h>
 #include <lustre_idmap.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_mds.h>
-#include <lustre/lustre_idl.h>
 
 #include "mdd_internal.h"
 
index e821f17..08f5846 100644 (file)
@@ -41,7 +41,6 @@
 
 #include <obd.h>
 #include <obd_class.h>
-#include <lustre_ver.h>
 #include <obd_support.h>
 #include <lustre_fid.h>
 #include "mdd_internal.h"
index 4b4f9b9..6204b4f 100644 (file)
@@ -40,7 +40,6 @@
 #define DEBUG_SUBSYSTEM S_MDS
 
 #include <obd_class.h>
-#include <lustre_ver.h>
 #include <lprocfs_status.h>
 #include <lustre_mds.h>
 #include <lustre_idmap.h>
index 439ec41..dfaa281 100644 (file)
 #include <dt_object.h>
 #include <lustre_acl.h>
 #include <lustre_export.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_lfsck.h>
 #include <lustre_log.h>
 #include <lustre_nodemap.h>
 #include <lustre_mds.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_quota.h>
 #include <lustre_swab.h>
 #include <obd.h>
index 58a106d..bbd3b48 100644 (file)
@@ -37,7 +37,7 @@
 
 #define DEBUG_SUBSYSTEM S_MDS
 
-#include <lustre/lustre_errno.h>
+#include <lustre_errno.h>
 #include "mdt_internal.h"
 
 /* Max allocation to satisfy single HSM RPC. */
index d73b20a..4947d28 100644 (file)
@@ -40,7 +40,6 @@
 #include <obd.h>
 #include <obd_support.h>
 #include <lustre_export.h>
-#include <lustre/lustre_user.h>
 #include <lprocfs_status.h>
 #include <lustre_kernelcomm.h>
 #include "mdt_internal.h"
index 8b6dec7..4ab3db1 100644 (file)
@@ -39,7 +39,6 @@
 #include <libcfs/libcfs.h>
 #include <libcfs/libcfs_hash.h>
 #include <obd_support.h>
-#include <lustre/lustre_user.h>
 #include <lprocfs_status.h>
 #include "mdt_internal.h"
 
index c67d090..3dc5943 100644 (file)
@@ -47,7 +47,6 @@
 #include <libcfs/libcfs.h>
 #include <libcfs/libcfs_hash.h>
 #include <upcall_cache.h>
-#include <lustre/lustre_idl.h>
 #include <obd_class.h>
 #include <lustre_disk.h>
 #include <lu_target.h>
index 7814842..0c70243 100644 (file)
@@ -43,7 +43,7 @@
 #include <linux/module.h>
 #include <uapi/linux/lnet/nidstr.h>
 /* LUSTRE_VERSION_CODE */
-#include <lustre_ver.h>
+#include <uapi/linux/lustre/lustre_ver.h>
 /*
  * struct OBD_{ALLOC,FREE}*()
  * MDT_FAIL_CHECK
index eee7e16..a06e102 100644 (file)
@@ -52,7 +52,7 @@
 #include "mdt_internal.h"
 #include <lustre_quota.h>
 #include <lustre_acl.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 
 struct mds_device {
        /* super-class */
index 1a37720..465c652 100644 (file)
@@ -34,7 +34,6 @@
 #define _MGC_INTERNAL_H
 
 #include <libcfs/libcfs.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_lib.h>
 #include <lustre_dlm.h>
 #include <lustre_log.h>
index fd6cc3b..aecb740 100644 (file)
@@ -36,7 +36,7 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <lprocfs_status.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include "mgs_internal.h"
 
 #ifdef CONFIG_PROC_FS
index 7d98937..36e99a4 100644 (file)
@@ -30,9 +30,9 @@
 #define DEBUG_SUBSYSTEM S_MGS
 #define D_MGS D_CONFIG
 
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_swab.h>
-#include <lustre/lustre_barrier_user.h>
+#include <uapi/linux/lustre/lustre_barrier_user.h>
 
 #include "mgs_internal.h"
 
index 35efe5b..dc13c3d 100644 (file)
@@ -41,9 +41,9 @@
 
 #include <obd_class.h>
 #include <lprocfs_status.h>
-#include <uapi/linux/lustre_ioctl.h>
-#include <uapi/linux/lustre_param.h>
-#include <lustre/lustre_barrier_user.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_param.h>
+#include <uapi/linux/lustre/lustre_barrier_user.h>
 
 #include "mgs_internal.h"
 
index 58adec2..a583d6d 100644 (file)
@@ -42,8 +42,8 @@
 #define D_MGS D_CONFIG
 
 #include <obd.h>
-#include <uapi/linux/lustre_ioctl.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_sec.h>
 #include <lustre_quota.h>
 
index 7b18eb8..1eda71f 100644 (file)
 #include <lustre_debug.h>
 #include <lustre_kernelcomm.h>
 #include <lprocfs_status.h>
-#include <lustre_ver.h>
 #include <cl_object.h>
 #ifdef HAVE_SERVER_SUPPORT
 # include <dt_object.h>
 # include <md_object.h>
 #endif /* HAVE_SERVER_SUPPORT */
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include "llog_internal.h"
 
 #ifdef CONFIG_PROC_FS
index a1bcc3d..694a3cf 100644 (file)
@@ -27,7 +27,6 @@
  * Author: Di Wang <di.wang@intel.com>
  */
 
-#include <lustre/lustre_idl.h>
 #include <obd.h>
 #include <lustre_linkea.h>
 
index aedcb0c..d67aa05 100644 (file)
 #include <obd_class.h>
 #include <lprocfs_status.h>
 #include <uapi/linux/lnet/lnetctl.h>
-#include <uapi/linux/lustre_ioctl.h>
-#include <lustre_ver.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ver.h>
+
+#define OBD_MAX_IOCTL_BUFFER   8192
 
 static int obd_ioctl_is_invalid(struct obd_ioctl_data *data)
 {
index 5f8e2b5..ace43ab 100644 (file)
@@ -41,7 +41,6 @@
 #include <linux/fs.h>
 #include <linux/module.h>
 #include <linux/pagemap.h> /* for PAGE_SIZE */
-#include <lustre/lustre_idl.h>
 #include <obd_class.h>
 
 /*FIXME: Just copy from obdo_from_inode*/
index 906e6e6..0c708d6 100644 (file)
@@ -33,7 +33,7 @@
 #define DEBUG_SUBSYSTEM S_LOG
 
 #include <obd_class.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_log.h>
 #include "llog_internal.h"
 
index dc1f6b2..fd25e74 100644 (file)
 
 #define DEBUG_SUBSYSTEM S_CLASS
 
-
 #include <obd_class.h>
 #include <lprocfs_status.h>
-#include <lustre/lustre_idl.h>
 
 #ifdef CONFIG_PROC_FS
 
index 0f7b5b9..e5efd82 100644 (file)
@@ -38,7 +38,6 @@
 
 #include <obd_class.h>
 #include <lprocfs_status.h>
-#include <lustre/lustre_idl.h>
 
 #ifdef CONFIG_PROC_FS
 
index e32c8e8..686ec70 100644 (file)
@@ -39,7 +39,6 @@
 
 #include <obd_class.h>
 #include <lprocfs_status.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_nodemap.h>
 
 static ssize_t uuid_show(struct kobject *kobj, struct attribute *attr,
index 8500393..4e608d5 100644 (file)
@@ -26,9 +26,6 @@
  *
  * Author: Johann Lombardi <johann.lombardi@intel.com>
  */
-
-#include <lustre/lustre_idl.h>
-
 #include <llog_swab.h>
 #include <lustre_swab.h>
 #include <obd.h>
index 64ebf6e..bcb9375 100644 (file)
@@ -41,9 +41,9 @@
 #include <llog_swab.h>
 #include <lprocfs_status.h>
 #include <lustre_disk.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_log.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <obd_class.h>
 
 #include "llog_internal.h"
index f6797c1..6388b87 100644 (file)
 
 #include <obd.h>
 #include <obd_class.h>
-#include <lustre/lustre_user.h>
 #include <linux/version.h>
 #include <lustre_log.h>
 #include <lustre_disk.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 
 static int (*client_fill_super)(struct super_block *sb,
                                struct vfsmount *mnt);
index 8a4883a..194441c 100644 (file)
 #include <linux/smp_lock.h>
 #endif
 
-#include <lustre/lustre_idl.h>
-#include <lustre/lustre_user.h>
-
 #include <llog_swab.h>
 #include <lustre_disk.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_log.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <obd.h>
 #include <obd_class.h>
 
index dddb24b..322b2f5 100644 (file)
@@ -43,7 +43,6 @@
 # include <linux/uidgid.h>
 #endif
 #include <obd_class.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_obdo.h>
 
 void obdo_set_parent_fid(struct obdo *dst, const struct lu_fid *parent)
index 1d7b517..71ec99f 100644 (file)
@@ -46,7 +46,7 @@
 #include <cl_object.h>
 #include <lustre_fid.h>
 #include <lustre_acl.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_net.h>
 #ifdef HAVE_SERVER_SUPPORT
 # include <md_object.h>
index 6879a92..88ccc89 100644 (file)
 
 #include <obd_class.h>
 #include <obd_cksum.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_fid.h>
 #include <lustre_lfsck.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_dlm.h>
 #include <lustre_quota.h>
 #include <lustre_nodemap.h>
index cc04521..bb4e1be 100644 (file)
 
 #define DEBUG_SUBSYSTEM S_FILTER
 
-#include <lustre/lustre_idl.h>
 #include "ofd_internal.h"
 #include <obd_cksum.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_quota.h>
 #include <lustre_lfsck.h>
 #include <lustre_nodemap.h>
index eb959e4..9f76081 100644 (file)
@@ -41,7 +41,6 @@
 #define DEBUG_SUBSYSTEM S_FILTER
 
 #include <dt_object.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_lfsck.h>
 
 #include "ofd_internal.h"
index 5e590c5..26436f1 100644 (file)
 
 #include <libcfs/libcfs.h>
 
-#include <lustre/lustre_user.h>
-
 #include <lprocfs_status.h>
 #include <lustre_debug.h>
 #include <lustre_dlm.h>
 #include <lustre_fid.h>
 #include <lustre_ha.h>
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_net.h>
 #include <lustre_obdo.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <obd.h>
 #include <obd_cksum.h>
 #include <obd_class.h>
@@ -1059,7 +1057,7 @@ static inline int can_merge_pages(struct brw_page *p1, struct brw_page *p2)
 
 static u32 osc_checksum_bulk(int nob, size_t pg_count,
                             struct brw_page **pga, int opc,
-                            cksum_type_t cksum_type)
+                            enum cksum_types cksum_type)
 {
        u32                             cksum;
        int                             i = 0;
@@ -1255,7 +1253,7 @@ osc_brw_prep_request(int cmd, struct client_obd *cli, struct obdo *oa,
                     !sptlrpc_flavor_has_bulk(&req->rq_flvr)) {
                         /* store cl_cksum_type in a local variable since
                          * it can be changed via lprocfs */
-                        cksum_type_t cksum_type = cli->cl_cksum_type;
+                       enum cksum_types cksum_type = cli->cl_cksum_type;
 
                         if ((body->oa.o_valid & OBD_MD_FLFLAGS) == 0)
                                 body->oa.o_flags = 0;
@@ -1394,7 +1392,7 @@ check_write_checksum(struct obdo *oa, const lnet_process_id_t *peer,
 {
         __u32 new_cksum;
         char *msg;
-        cksum_type_t cksum_type;
+       enum cksum_types cksum_type;
 
         if (server_cksum == client_cksum) {
                 CDEBUG(D_PAGE, "checksum %x confirmed\n", client_cksum);
@@ -1530,7 +1528,7 @@ static int osc_brw_fini_request(struct ptlrpc_request *req, int rc)
                u32        server_cksum = body->oa.o_cksum;
                char      *via = "";
                char      *router = "";
-                cksum_type_t cksum_type;
+               enum cksum_types cksum_type;
 
                 cksum_type = cksum_type_unpack(body->oa.o_valid &OBD_MD_FLFLAGS?
                                                body->oa.o_flags : 0);
index a6e313e..3bc2fcb 100644 (file)
@@ -36,8 +36,6 @@
  * Author: Alex Zhuravlev <bzzz@whamcloud.com>
  */
 
-/* LUSTRE_VERSION_CODE */
-#include <lustre_ver.h>
 /* prerequisite for linux/xattr.h */
 #include <linux/types.h>
 /* prerequisite for linux/xattr.h */
index aabc3e6..7dd693a 100644 (file)
@@ -45,8 +45,6 @@
 # include <linux/uidgid.h>
 #endif
 
-/* LUSTRE_VERSION_CODE */
-#include <lustre_ver.h>
 /* prerequisite for linux/xattr.h */
 #include <linux/types.h>
 /* prerequisite for linux/xattr.h */
@@ -67,7 +65,7 @@
 #include <lustre_net.h>
 #include <lustre_fid.h>
 /* process_config */
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 
 #include "osd_internal.h"
 #include "osd_dynlocks.h"
index 56e5231..c3f43e9 100644 (file)
@@ -38,8 +38,6 @@
  *
  */
 
-/* LUSTRE_VERSION_CODE */
-#include <lustre_ver.h>
 /* prerequisite for linux/xattr.h */
 #include <linux/types.h>
 /* prerequisite for linux/xattr.h */
index 8b018cf..dccec1b 100644 (file)
@@ -37,7 +37,6 @@
 #define DEBUG_SUBSYSTEM S_OSD
 
 #include <lprocfs_status.h>
-#include <lustre/lustre_idl.h>
 
 #include "osd_internal.h"
 
index cd1db06..d46763d 100644 (file)
@@ -40,8 +40,6 @@
 
 #include <linux/module.h>
 
-/* LUSTRE_VERSION_CODE */
-#include <lustre_ver.h>
 /*
  * struct OBD_{ALLOC,FREE}*()
  * OBD_FAIL_CHECK
index c94a3b0..e25b521 100644 (file)
@@ -38,7 +38,7 @@
 #define DEBUG_SUBSYSTEM S_LFSCK
 
 #include <linux/kthread.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <lustre_disk.h>
 #include <dt_object.h>
 #include <linux/xattr.h>
index 36e3e46..44a0c99 100644 (file)
@@ -39,7 +39,6 @@
 
 #define DEBUG_SUBSYSTEM S_OSD
 
-#include <lustre_ver.h>
 #include <libcfs/libcfs.h>
 #include <obd_support.h>
 #include <lustre_net.h>
@@ -47,7 +46,7 @@
 #include <obd_class.h>
 #include <lustre_disk.h>
 #include <lustre_fid.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <md_object.h>
 
 #include "osd_internal.h"
index e3083ef..bc1b494 100644 (file)
@@ -37,7 +37,6 @@
 
 #define DEBUG_SUBSYSTEM S_OSD
 
-#include <lustre_ver.h>
 #include <libcfs/libcfs.h>
 #include <obd_support.h>
 #include <lustre_net.h>
index 41e6ee7..856b2e1 100644 (file)
@@ -37,7 +37,6 @@
 
 #define DEBUG_SUBSYSTEM S_OSD
 
-#include <lustre_ver.h>
 #include <libcfs/libcfs.h>
 #include <obd_support.h>
 #include <lustre_net.h>
@@ -45,7 +44,6 @@
 #include <obd_class.h>
 #include <lustre_disk.h>
 #include <lustre_fid.h>
-#include <lustre/lustre_idl.h> /* LLOG_MIN_CHUNK_SIZE definition */
 
 #include "osd_internal.h"
 
index 88c1600..89f0f16 100644 (file)
@@ -40,7 +40,6 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <lprocfs_status.h>
-#include <lustre/lustre_idl.h>
 
 #include "osd_internal.h"
 
index c68f8de..cceeecf 100644 (file)
@@ -38,7 +38,6 @@
 
 #define DEBUG_SUBSYSTEM S_OSD
 
-#include <lustre_ver.h>
 #include <libcfs/libcfs.h>
 #include <obd_support.h>
 #include <lustre_net.h>
index a9de9e3..e350ba8 100644 (file)
@@ -39,7 +39,6 @@
 
 #define DEBUG_SUBSYSTEM S_OSD
 
-#include <lustre_ver.h>
 #include <libcfs/libcfs.h>
 #include <obd_support.h>
 #include <lustre_net.h>
index fac11ba..98032bc 100644 (file)
@@ -38,7 +38,6 @@
 
 #define DEBUG_SUBSYSTEM S_OSD
 
-#include <lustre_ver.h>
 #include <libcfs/libcfs.h>
 #include <obd_support.h>
 #include <lustre_net.h>
index c83b84b..e4e6364 100644 (file)
@@ -40,7 +40,7 @@
 #define DEBUG_SUBSYSTEM S_OST
 
 #include <obd_class.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_log.h>
 #include <linux/kthread.h>
 
index 982a46f..81a62c7 100644 (file)
 
 #include <linux/kthread.h>
 
-#include <uapi/linux/lustre_ioctl.h>
+#include <uapi/linux/lustre/lustre_ioctl.h>
 #include <lustre_log.h>
 #include <lustre_obdo.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <obd_class.h>
 
 #include "osp_internal.h"
index fb302c7..7d58758 100644 (file)
@@ -26,7 +26,7 @@
  */
 
 #include <libcfs/libcfs.h>
-#include <lustre/lustre_errno.h>
+#include <lustre_errno.h>
 
 #ifdef LUSTRE_TRANSLATE_ERRNOS
 
index 3f70337..041dd12 100644 (file)
@@ -46,7 +46,6 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_net.h>
 #include <lustre_import.h>
 #include <lustre_sec.h>
index d1fa920..9ae9d8f 100644 (file)
@@ -45,7 +45,6 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_net.h>
 #include <lustre_import.h>
 #include <lustre_sec.h>
index 3c4e63b..23506f8 100644 (file)
@@ -50,7 +50,6 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_net.h>
 #include <lustre_import.h>
 #include <lustre_sec.h>
index 81aad1f..4b8891e 100644 (file)
@@ -51,7 +51,7 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <lustre_sec.h>
 #include <lustre_net.h>
 #include <lustre_import.h>
index 000d7a8..bd52ff1 100644 (file)
@@ -58,7 +58,6 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_net.h>
 #include <lustre_import.h>
 #include <lustre_sec.h>
index be66ffd..6ab4af3 100644 (file)
@@ -52,7 +52,6 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_net.h>
 #include <lustre_import.h>
 #include <lustre_sec.h>
index 016d455..5e1e7ca 100644 (file)
@@ -62,7 +62,7 @@ struct rpc_clnt; /* for rpc_pipefs */
 #include <obd.h>
 #include <obd_class.h>
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <lustre_sec.h>
 #include <lustre_net.h>
 #include <lustre_import.h>
index fd1b071..53aaa52 100644 (file)
@@ -39,7 +39,6 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <obd_support.h>
-#include <lustre/lustre_user.h>
 
 #include "gss_err.h"
 #include "gss_crypto.h"
index e9ae2a3..7f4a129 100644 (file)
@@ -60,7 +60,6 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_import.h>
 #include <lustre_net.h>
 #include <lustre_nodemap.h>
index 610f0b3..b210604 100644 (file)
@@ -41,7 +41,6 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <obd_support.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_net.h>
 #include <lustre_import.h>
 #include <lprocfs_status.h>
index bee52f3..25cb573 100644 (file)
@@ -59,7 +59,6 @@
 #include <obd_class.h>
 #include <obd_support.h>
 #include <obd_cksum.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_net.h>
 #include <lustre_import.h>
 #include <lustre_sec.h>
index d720645..9ffb860 100644 (file)
 
 #include <linux/module.h>
 
-#include <lustre/lustre_idl.h>
-
 #include <llog_swab.h>
 #include <lustre_debug.h>
 #include <lustre_swab.h>
-#include <lustre_ver.h>
 #include <obd.h>
 #include <obd_support.h>
 
index 532cbaa..f3b110d 100644 (file)
@@ -35,7 +35,6 @@
 #include <obd_support.h>
 #include <obd.h>
 #include <lprocfs_status.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_net.h>
 #include <obd_class.h>
 #include "ptlrpc_internal.h"
index 7894459..1e27dfe 100644 (file)
@@ -51,7 +51,7 @@
 #include <linux/string.h>
 #include <linux/types.h>
 #include <uapi/linux/lnet/lnet-types.h>
-#include <lustre/lustre_idl.h>
+#include <uapi/linux/lustre/lustre_idl.h>
 #include <dt_object.h>
 #include <lu_object.h>
 #include <lustre_net.h>
index 857b333..c848cde 100644 (file)
@@ -45,7 +45,6 @@
 #include <obd_support.h>
 #include <obd_class.h>
 #include <lustre_net.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_req_layout.h>
 #include "ptlrpc_internal.h"
 
index 0b2a137..5f40082 100644 (file)
@@ -42,8 +42,6 @@
 
 #include <libcfs/libcfs.h>
 
-#include <lustre/ll_fiemap.h>
-
 #include <llog_swab.h>
 #include <lustre_net.h>
 #include <lustre_swab.h>
index 4951efe..050003a 100644 (file)
@@ -44,7 +44,7 @@
 #include <lustre_log.h>
 #include <lustre_disk.h>
 #include <lustre_dlm.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <lustre_sec.h>
 
 #include "ptlrpc_internal.h"
index 0a1fe03..1f6afb7 100644 (file)
@@ -40,8 +40,8 @@
 #include <obd_support.h>
 #include <obd_class.h>
 #include <lustre_net.h>
-#include <lustre/lustre_lfsck_user.h>
 #include <lustre_disk.h>
+#include <uapi/linux/lustre/lustre_lfsck_user.h>
 
 void lustre_assert_wire_constants(void)
 {
index 91e1386..2701a08 100644 (file)
@@ -31,7 +31,7 @@
 #define DEBUG_SUBSYSTEM S_LQUOTA
 
 #include <obd_class.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 
 #include "qsd_internal.h"
 
index b9363a2..5926f37 100644 (file)
 
 #include <linux/percpu_counter.h>
 
-#include <lustre/lustre_idl.h>
 #include <dt_object.h>
 #include <obd.h>
 #include <obd_class.h>
 #include <lustre_barrier.h>
-#include <lustre/lustre_barrier_user.h>
+#include <uapi/linux/lustre/lustre_barrier_user.h>
 
 static LIST_HEAD(barrier_instance_list);
 static DEFINE_SPINLOCK(barrier_instance_lock);
index d630d85..8460774 100644 (file)
@@ -1660,7 +1660,7 @@ void tgt_brw_unlock(struct obd_ioobj *obj, struct niobuf_remote *niob,
 
 static __u32 tgt_checksum_bulk(struct lu_target *tgt,
                               struct ptlrpc_bulk_desc *desc, int opc,
-                              cksum_type_t cksum_type)
+                              enum cksum_types cksum_type)
 {
        struct cfs_crypto_hash_desc     *hdesc;
        unsigned int                    bufsize;
@@ -1821,10 +1821,10 @@ static void dump_all_bulk_pages(struct obdo *oa, int count,
 static int check_read_checksum(struct ptlrpc_bulk_desc *desc, struct obdo *oa,
                               const lnet_process_id_t *peer,
                               __u32 client_cksum, __u32 server_cksum,
-                              cksum_type_t server_cksum_type)
+                              enum cksum_types server_cksum_type)
 {
        char *msg;
-       cksum_type_t cksum_type;
+       enum cksum_types cksum_type;
 
        /* unlikely to happen and only if resend does not occur due to cksum
         * control failure on Client */
@@ -1991,7 +1991,7 @@ int tgt_brw_read(struct tgt_session_info *tsi)
                rc = -E2BIG;
 
        if (body->oa.o_valid & OBD_MD_FLCKSUM) {
-               cksum_type_t cksum_type =
+               enum cksum_types cksum_type =
                        cksum_type_unpack(body->oa.o_valid & OBD_MD_FLFLAGS ?
                                          body->oa.o_flags : 0);
 
@@ -2129,7 +2129,7 @@ int tgt_brw_write(struct tgt_session_info *tsi)
        __u32                   *rcs;
        int                      objcount, niocount, npages;
        int                      rc, i, j;
-       cksum_type_t             cksum_type = OBD_CKSUM_CRC32;
+       enum cksum_types cksum_type = OBD_CKSUM_CRC32;
        bool                     no_reply = false, mmap;
        struct tgt_thread_big_cache *tbc = req->rq_svc_thread->t_data;
        bool wait_sync = false;
index 981e2ab..ec32234 100644 (file)
@@ -35,7 +35,6 @@
 #define _TG_INTERNAL_H
 
 #include <lustre_net.h>
-#include <lustre/lustre_idl.h>
 #include <lu_target.h>
 #include <lustre_export.h>
 #include <lustre_fid.h>
index 4460dbf..7080ee8 100644 (file)
@@ -43,7 +43,7 @@
 #include <sys/stat.h>
 #include <sys/syscall.h>
 
-#include <lustre/lustre_user.h>
+#include <linux/lustre/lustre_user.h>
 
 #define MAX_HANDLE_SZ 128
 
index e8e2ff3..2dea812 100644 (file)
@@ -40,7 +40,7 @@
 #include <getopt.h>
 #include <linux/types.h>
 #include <linux/fs.h>
-#include <lustre/lustre_user.h>
+#include <linux/lustre/lustre_user.h>
 
 #ifndef FS_IOC_FIEMAP
 # define FS_IOC_FIEMAP (_IOWR('f', 11, struct fiemap))
index 6849b1c..24d584b 100644 (file)
@@ -50,7 +50,7 @@
 #include <libcfs/util/param.h>
 #include <libcfs/util/string.h>
 #include <lustre/lustreapi.h>
-#include <lustre/lustre_idl.h>
+#include <linux/lustre/lustre_idl.h>
 
 #define MAX_LOV_UUID_COUNT      1000
 
index c0fe8c4..ba8cd1e 100644 (file)
@@ -42,7 +42,7 @@
 #include <time.h>
 
 #include <lustre/lustreapi.h>
-#include <lustre/lustre_idl.h>
+#include <linux/lustre/lustre_idl.h>
 
 #define ERROR(fmt, ...)                                                        \
        fprintf(stderr, "%s: %s:%d: %s: " fmt "\n",                     \
index 5406148..b312534 100644 (file)
@@ -35,7 +35,7 @@
 #ifndef __LP_UTILS_H__
 #define __LP_UTILS_H__
 
-#include "lustre/lustre_user.h"
+#include <linux/lustre/lustre_user.h>
 
 #define FAIL(msg) \
  \
index 879e814..4a68beb 100644 (file)
@@ -44,7 +44,6 @@
 #include <sys/ioctl.h>
 #include <fcntl.h>
 #include <errno.h>
-#include "lustre/lustre_user.h"
 #include "lp_utils.h"
 
 #define MAX_PROCESSES 8
index c541690..e30b60f 100644 (file)
@@ -35,7 +35,7 @@
 #ifndef __LP_UTILS_H__
 #define __LP_UTILS_H__
 
-#include "lustre/lustre_user.h"
+#include <linux/lustre/lustre_user.h>
 
 #define FAIL(msg) \
  \
index dfe3cfa..fb38130 100644 (file)
@@ -45,7 +45,6 @@
 #include <unistd.h>
 #include <time.h>
 #include <errno.h>
-#include <lustre/lustre_user.h>
 #include "lp_utils.h"
 
 #define LPGL_BUF_LEN 8192
index 96cef6c..0a7bb8c 100644 (file)
@@ -45,7 +45,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <lustre/lustre_user.h>
+#include <linux/lustre/lustre_user.h>
 
 typedef struct flag_mapping {
        const char *string;
index 5e0cf1a..5e54d6d 100755 (executable)
@@ -15987,7 +15987,6 @@ test_400a() { # LU-1606, was conf-sanity test_74
 
        if ! [[ -d $prefix ]]; then
                # Assume we're running in tree and fixup the include path.
-               extra_flags+=" -I$LUSTRE/../libcfs/include"
                extra_flags+=" -I$LUSTRE/include"
                extra_flags+=" -L$LUSTRE/utils"
        fi
@@ -16003,7 +16002,7 @@ run_test 400a "Lustre client api program can compile and link"
 test_400b() { # LU-1606, LU-5011
        local header
        local out=$TMP/$tfile
-       local prefix=/usr/include/lustre
+       local prefix=/usr/include/linux/lustre
 
        # We use a hard coded prefix so that this test will not fail
        # when run in tree. There are headers in lustre/include/lustre/
@@ -16022,8 +16021,8 @@ test_400b() { # LU-1606, LU-5011
                        continue
                fi
 
-               if [[ "$(basename $header)" == liblustreapi.h ]]; then
-                       continue # liblustreapi.h is deprecated.
+               if [[ "$(basename $header)" == lustre_ioctl.h ]]; then
+                       continue # lustre_ioctl.h is internal header
                fi
 
                $CC -Wall -Werror -include $header -c -x c /dev/null -o $out ||
index e0430a3..1263944 100644 (file)
@@ -40,7 +40,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
-#include <lustre/lustre_idl.h>
+#include <linux/lustre/lustre_user.h>
 
 #include "sk_utils.h"
 #include "err_util.h"
index c7dbe77..6f7c027 100644 (file)
@@ -30,7 +30,7 @@
 
 #include <gssapi/gssapi.h>
 #include <keyutils.h>
-#include <lustre/lustre_idl.h>
+#include <linux/lustre/lustre_idl.h>
 #include <openssl/dh.h>
 #include <openssl/evp.h>
 #include <sys/types.h>
index 0ed4f4c..7c11575 100644 (file)
@@ -46,7 +46,6 @@
 #include <fcntl.h>
 #include <errno.h>
 
-
 #include <unistd.h>
 #include <err.h>
 #include <stdio.h>
@@ -58,7 +57,7 @@
 #include "gss_util.h"
 #include "err_util.h"
 #include "lsupport.h"
-#include "lustre_ver.h"
+#include <linux/lustre/lustre_ver.h>
 
 int null_enabled;
 int krb_enabled;
index 367c9d1..5516bc1 100644 (file)
@@ -57,7 +57,6 @@
 #include "lsupport.h"
 #include "gss_oids.h"
 #include "sk_utils.h"
-#include <lustre/lustre_idl.h>
 
 #define SVCGSSD_CONTEXT_CHANNEL "/proc/net/rpc/auth.sptlrpc.context/channel"
 #define SVCGSSD_INIT_CHANNEL    "/proc/net/rpc/auth.sptlrpc.init/channel"
index 1646079..29b0c5e 100644 (file)
@@ -48,8 +48,8 @@
 #include <libcfs/util/param.h>
 #include <libcfs/util/string.h>
 #include <linux/lnet/nidstr.h>
-#include <lustre/lustre_user.h>
-#include <lustre/lustre_idl.h>
+#include <linux/lustre/lustre_user.h>
+#include <linux/lustre/lustre_idl.h>
 
 #define PERM_PATHNAME "/etc/lustre/perm.conf"
 
index 282ce02..6764100 100644 (file)
@@ -44,7 +44,7 @@
 #include <libcfs/util/parser.h>
 #include <linux/lnet/lnetctl.h>
 #include "obdctl.h"
-#include <lustre_ver.h>
+#include <linux/lustre/lustre_ver.h>
 
 static int lctl_list_commands(int argc, char **argv);
 
index 35c908e..d758248 100644 (file)
@@ -65,8 +65,8 @@
 #include <libcfs/util/ioctl.h>
 #include <libcfs/util/parser.h>
 #include <lustre/lustreapi.h>
-#include <lustre_ver.h>
-#include <linux/lustre_param.h>
+#include <linux/lustre/lustre_ver.h>
+#include <linux/lustre/lustre_param.h>
 
 #ifndef ARRAY_SIZE
 # define ARRAY_SIZE(a) ((sizeof(a)) / (sizeof((a)[0])))
index 3bdaa42..804dbe7 100644 (file)
@@ -57,7 +57,7 @@
 #include <sys/types.h>
 
 #include <libcfs/util/string.h>
-#include <linux/lustre_fid.h>
+#include <linux/lustre/lustre_fid.h>
 #include <lustre/lustreapi.h>
 
 /* Progress reporting period */
index b68662d..5074e43 100644 (file)
@@ -74,8 +74,8 @@
 #include <libcfs/util/string.h>
 #include <linux/lnet/lnetctl.h>
 #include <lustre/lustreapi.h>
-#include <linux/lustre_ostid.h>
-#include <linux/lustre_ioctl.h>
+#include <linux/lustre/lustre_ostid.h>
+#include <linux/lustre/lustre_ioctl.h>
 #include "lustreapi_internal.h"
 
 static int llapi_msg_level = LLAPI_MSG_MAX;
@@ -3957,7 +3957,7 @@ static int cb_migrate_mdt_init(char *path, DIR *parent, DIR **dirp,
 {
        struct find_param       *param = (struct find_param *)param_data;
        DIR                     *tmp_parent = parent;
-       char                    raw[OBD_MAX_IOCTL_BUFFER] = {'\0'};
+       char                    raw[MAX_IOC_BUFLEN] = {'\0'};
        char                    *rawbuf = raw;
        struct obd_ioctl_data   data = { 0 };
        int                     fd;
@@ -4271,7 +4271,7 @@ int llapi_getstripe(char *path, struct find_param *param)
 int llapi_obd_fstatfs(int fd, __u32 type, __u32 index,
                      struct obd_statfs *stat_buf, struct obd_uuid *uuid_buf)
 {
-        char raw[OBD_MAX_IOCTL_BUFFER] = {'\0'};
+       char raw[MAX_IOC_BUFLEN] = {'\0'};
         char *rawbuf = raw;
         struct obd_ioctl_data data = { 0 };
         int rc = 0;
index ad9f229..ed3511f 100644 (file)
@@ -58,7 +58,6 @@
 #endif
 
 #include <linux/lnet/lnetctl.h>
-#include <lustre/lustre_idl.h>
 #include <lustre/lustreapi.h>
 #include "lustreapi_internal.h"
 
index 0168de2..5df0ae6 100644 (file)
@@ -38,7 +38,6 @@
 
 #include <libcfs/util/list.h>
 #include <lustre/lustreapi.h>
-#include <lustre/lustre_idl.h>
 #include "lustreapi_internal.h"
 
 /**
index 56c1979..b9f86e8 100644 (file)
@@ -28,7 +28,7 @@
 #include <stdint.h>
 
 #include <libcfs/util/param.h>
-#include <lustre/lustre_user.h>
+#include <linux/lustre/lustre_user.h>
 #include <lustre/lustreapi.h>
 #include "lustreapi_internal.h"
 
index 44eeb31..52e7f9c 100644 (file)
@@ -42,7 +42,7 @@
 #include <sys/syscall.h>
 #include <lustre/lustreapi.h>
 #include <libcfs/util/string.h>        /* only needed for compat strlcpy() */
-#include <lustre_ver.h>                /* only until LUSTRE_VERSION_CODE is gone */
+#include <linux/lustre/lustre_ver.h>   /* only until LUSTRE_VERSION_CODE is gone */
 #include "lustreapi_internal.h"
 
 /*
index c6751fc..c6ece22 100644 (file)
@@ -69,7 +69,7 @@
 #include <linux/types.h>
 #include <linux/version.h>
 #include <linux/lnet/lnetctl.h>
-#include <lustre_ver.h>
+#include <linux/lustre/lustre_ver.h>
 
 #ifdef HAVE_SELINUX
 #include <selinux/selinux.h>
index ea10e6d..c8370fb 100644 (file)
@@ -43,7 +43,7 @@
 #include <sys/types.h>
 #include <sys/xattr.h>
 #include <asm/byteorder.h>
-#include <lustre/lustre_user.h>
+#include <linux/lustre/lustre_user.h>
 
 #define PFID_STRIPE_IDX_BITS   16
 #define PFID_STRIPE_COUNT_MASK ((1 << PFID_STRIPE_IDX_BITS) - 1)
index 0e3f863..1038df3 100644 (file)
@@ -38,7 +38,7 @@
 #include <limits.h>
 #include <sys/types.h>
 #include <sys/xattr.h>
-#include <linux/lustre_fid.h>
+#include <linux/lustre/lustre_fid.h>
 
 #define BUFFER_SIZE 65536
 
index 49f1f2a..3548d25 100644 (file)
 #include <errno.h>
 #include <time.h>
 #include <linux/lnet/nidstr.h>
-#include <linux/lustre_fid.h>
-#include <linux/lustre_ostid.h>
+#include <linux/lustre/lustre_cfg.h>
+#include <linux/lustre/lustre_fid.h>
+#include <linux/lustre/lustre_ostid.h>
+#include <linux/lustre/lustre_log_user.h>
 #include <lustre/lustreapi.h>
-#include <lustre_log_user.h>
-#include <linux/lustre_cfg.h>
 
 static inline int ext2_test_bit(int nr, const void *addr)
 {
index 1b39180..a6d94c1 100644 (file)
@@ -60,8 +60,8 @@
 #include <getopt.h>
 
 #include <asm/byteorder.h>
-#include <linux/lustre_disk.h>
-#include <lustre_ver.h>
+#include <linux/lustre/lustre_disk.h>
+#include <linux/lustre/lustre_ver.h>
 
 char *progname;
 static struct option const long_opts[] = {
index 67f8587..5667ea0 100644 (file)
@@ -49,7 +49,7 @@
 #include <errno.h>
 #include <libgen.h>
 
-#include <lustre/lustre_user.h>
+#include <linux/lustre/lustre_user.h>
 #include "nidlist.h"
 #include "lustreapi_internal.h"
 
index 856c6e9..309bbd8 100644 (file)
@@ -44,8 +44,8 @@
 
 #include <libcfs/util/list.h>
 #include <libcfs/util/ioctl.h>
-#include <linux/lustre_ioctl.h>
-#include <lustre/lustre_barrier_user.h>
+#include <linux/lustre/lustre_ioctl.h>
+#include <linux/lustre/lustre_barrier_user.h>
 
 #include "obdctl.h"
 
index 45c3d5a..cb60057 100644 (file)
@@ -56,9 +56,9 @@
 #include <libcfs/util/parser.h>
 #include <linux/lnet/nidstr.h>
 #include <linux/lnet/lnetctl.h>
-#include <linux/lustre_cfg.h>
-#include <linux/lustre_ioctl.h>
-#include <lustre_ver.h>
+#include <linux/lustre/lustre_cfg.h>
+#include <linux/lustre/lustre_ioctl.h>
+#include <linux/lustre/lustre_ver.h>
 
 #include <sys/un.h>
 #include <time.h>
index 45f492d..2524f99 100644 (file)
@@ -42,9 +42,9 @@
 #include "obdctl.h"
 #include "lustreapi_internal.h"
 
-#include <lustre/lustre_lfsck_user.h>
 #include <linux/lnet/lnetctl.h>
-#include <linux/lustre_ioctl.h>
+#include <linux/lustre/lustre_ioctl.h>
+#include <linux/lustre/lustre_lfsck_user.h>
 /* Needs to be last to avoid clashes */
 #include <libcfs/util/ioctl.h>
 #include <libcfs/util/param.h>
index ba2a847..3b94298 100644 (file)
 #include <libcfs/util/ioctl.h>
 #include <libcfs/util/param.h>
 
-#include <linux/lustre_ioctl.h>
-#include <uapi_kernelcomm.h>
+#include <linux/lustre/lustre_ioctl.h>
+#include <linux/lustre/lustre_kernelcomm.h>
+
+#define MAX_IOC_BUFLEN 8192
 
 #define WANT_PATH   0x1
 #define WANT_FSNAME 0x2
index c95e5be..a9faace 100644 (file)
@@ -62,8 +62,8 @@
 #include <ctype.h>
 #include <linux/lnet/nidstr.h>
 #include <linux/lnet/lnetctl.h>
-#include <linux/lustre_param.h>
-#include <lustre_ver.h>
+#include <linux/lustre/lustre_param.h>
+#include <linux/lustre/lustre_ver.h>
 
 #include "mount_utils.h"
 
index 9cd75f2..4c6e597 100644 (file)
@@ -49,7 +49,7 @@
 #include <string.h>
 #include <sys/mount.h>
 #include <sys/param.h>
-#include <lustre_ver.h>
+#include <linux/lustre/lustre_ver.h>
 #include <ctype.h>
 #include <limits.h>
 #include <linux/lnet/nidstr.h>
index 21c0968..e3f44d0 100644 (file)
@@ -42,7 +42,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <config.h>
-#include <lustre_ver.h>
+#include <linux/lustre/lustre_ver.h>
 #include <sys/mount.h>
 #include <sys/stat.h>
 #include <sys/utsname.h>
@@ -50,8 +50,7 @@
 #include <sys/types.h>
 #include <dirent.h>
 #include <dlfcn.h>
-#include <lustre/lustre_idl.h>
-#include <linux/lustre_cfg.h>
+#include <linux/lustre/lustre_cfg.h>
 #include <dirent.h>
 #include <sys/types.h>
 #include <sys/xattr.h>
index 251a1fc..a8cff6d 100644 (file)
@@ -55,8 +55,8 @@
 #include <sys/stat.h>
 
 #include <libcfs/util/list.h>
-#include <linux/lustre_disk.h>
-#include <linux/lustre_param.h>
+#include <linux/lustre/lustre_disk.h>
+#include <linux/lustre/lustre_param.h>
 
 extern char *progname;
 extern int verbose;
index cb523a7..db5d248 100644 (file)
 
 #include <linux/lnet/nidstr.h>
 #include <linux/lnet/lnetctl.h>
-#include <linux/lustre_ostid.h>
-#include <linux/lustre_cfg.h>
-#include <linux/lustre_ioctl.h>
-#include <lustre_ver.h>
+#include <linux/lustre/lustre_barrier_user.h>
+#include <linux/lustre/lustre_cfg.h>
+#include <linux/lustre/lustre_ioctl.h>
+#include <linux/lustre/lustre_ostid.h>
+#include <linux/lustre/lustre_param.h>
+#include <linux/lustre/lustre_ver.h>
 
 #include <lustre/lustreapi.h>
-#include <linux/lustre_param.h>
-#include <lustre/lustre_barrier_user.h>
 
 #define MAX_STRING_SIZE 128
 
@@ -1010,8 +1010,8 @@ int jt_obd_list_ioctl(int argc, char **argv)
                 memset(buf, 0, sizeof(rawbuf));
                 data->ioc_version = OBD_IOCTL_VERSION;
                 data->ioc_inllen1 =
-                        sizeof(rawbuf) - cfs_size_round(sizeof(*data));
-                data->ioc_inlbuf1 = buf + cfs_size_round(sizeof(*data));
+                       sizeof(rawbuf) - __ALIGN_KERNEL(sizeof(*data), 8);
+               data->ioc_inlbuf1 = buf + __ALIGN_KERNEL(sizeof(*data), 8);
                 data->ioc_len = obd_ioctl_packlen(data);
                 data->ioc_count = index;
 
@@ -2221,7 +2221,7 @@ int jt_obd_lov_getconfig(int argc, char **argv)
 
         memset(&desc, 0, sizeof(desc));
         obd_str2uuid(&desc.ld_uuid, argv[1]);
-        desc.ld_tgt_count = ((OBD_MAX_IOCTL_BUFFER-sizeof(data)-sizeof(desc)) /
+       desc.ld_tgt_count = ((MAX_IOC_BUFLEN-sizeof(data)-sizeof(desc)) /
                              (sizeof(*uuidarray) + sizeof(*obdgens)));
 
 repeat:
index ad2c56a..41823b2 100644 (file)
@@ -33,9 +33,7 @@
 #ifndef _OBDCTL_H_
 #define _OBDCTL_H_
 
-#include <lustre/lustre_barrier_user.h>
-
-#define MAX_IOC_BUFLEN 8192
+#include <linux/lustre/lustre_barrier_user.h>
 
 /* ptlctl.a */
 int ptl_initialize(int argc, char **argv);
index e13c636..1788512 100644 (file)
@@ -35,9 +35,9 @@
 #include <stdio.h>
 #include <string.h>
 
-#include <lustre/lustre_idl.h>
-#include <lustre/lustre_lfsck_user.h>
-#include <linux/lustre_disk.h>
+#include <linux/lustre/lustre_idl.h>
+#include <linux/lustre/lustre_lfsck_user.h>
+#include <linux/lustre/lustre_disk.h>
 
 #define LASSERT(cond) if (!(cond)) { printf("failed " #cond "\n"); ret = 1; }
 #define LASSERTF(cond, fmt, ...) if (!(cond)) { printf("failed '" #cond "'" fmt, ## __VA_ARGS__);ret = 1;}