* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
- * Copyright (c) 2010, 2013, Intel Corporation.
+ * Copyright (c) 2010, 2014, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
#include <libcfs/types.h>
#ifdef __KERNEL__
+# include <linux/quota.h>
# include <linux/string.h> /* snprintf() */
-#else
+# include <linux/version.h>
+#else /* !__KERNEL__ */
+# define NEED_QUOTA_DEFS
# include <stdio.h> /* snprintf() */
-#endif
+# include <string.h>
+# include <sys/quota.h>
+# include <sys/stat.h>
+#endif /* __KERNEL__ */
#include <lustre/ll_fiemap.h>
-#include <linux/lustre_user.h>
+
+#if defined(__x86_64__) || defined(__ia64__) || defined(__ppc64__) || \
+ defined(__craynv) || defined(__mips64__) || defined(__powerpc64__)
+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
#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)
-#define FSFILT_IOC_FIEMAP _IOWR('f', 11, struct ll_user_fiemap)
#endif
/* FIEMAP flags supported by Lustre */
/* 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 *)
-#define IOC_LOV_GETINFO _IOWR('f', 165, struct lov_user_mds_data *)
+/* IOC_LOV_GETINFO 165 obsolete */
#define LL_IOC_FLUSHCTX _IOW ('f', 166, long)
#define LL_IOC_RMTACL _IOW ('f', 167, long)
#define LL_IOC_GETOBDCOUNT _IOR ('f', 168, long)
#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 /* turn quotas on */
-#define LUSTRE_Q_QUOTAOFF 0x800003 /* turn quotas off */
+#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 /* invalidate quota data */
-#define LUSTRE_Q_FINVALIDATE 0x80000c /* invalidate filter quota data */
+#define LUSTRE_Q_INVALIDATE 0x80000b /* deprecated as of 2.4 */
+#define LUSTRE_Q_FINVALIDATE 0x80000c /* deprecated as of 2.4 */
#define UGQUOTA 2 /* set both USRQUOTA and GRPQUOTA */
-struct if_quotacheck {
- char obd_type[16];
- struct obd_uuid obd_uuid;
-};
-
#define IDENTITY_DOWNCALL_MAGIC 0x6d6dd629
/* permission */
#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)
return size;
}
-static inline size_t changelog_rec_size(struct changelog_rec *rec)
+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(struct changelog_rec *rec)
+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(struct changelog_rec *rec)
+struct changelog_ext_rename *changelog_rec_rename(const struct changelog_rec *rec)
{
enum changelog_rec_flags crf = rec->cr_flags & CLF_VERSION;
/* The jobid follows the rename extension, if present */
static inline
-struct changelog_ext_jobid *changelog_rec_jobid(struct changelog_rec *rec)
+struct changelog_ext_jobid *changelog_rec_jobid(const struct changelog_rec *rec)
{
enum changelog_rec_flags crf = rec->cr_flags &
(CLF_VERSION | CLF_RENAME);
}
/* The name follows the rename and jobid extensions, if present */
-static inline char *changelog_rec_name(struct changelog_rec *rec)
+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(struct changelog_rec *rec)
+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(struct changelog_rec *rec)
+static inline char *changelog_rec_sname(const struct changelog_rec *rec)
{
char *cr_name = changelog_rec_name(rec);
* List of hr_flags (bit field)
*/
#define HSM_FORCE_ACTION 0x0001
-/* used by CT, connot be set by user */
+/* used by CT, cannot be set by user */
#define HSM_GHOST_COPY 0x0002
/**
(__u64)hur->hur_request.hr_itemcount *
sizeof(hur->hur_user_item[0]) + hur->hur_request.hr_data_len;
- if (size > ~((size_t)0)>>1)
+ if (size != (ssize_t)size)
return -1;
return size;
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 operated on */
+ 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 */