X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flustre%2Flustre_user.h;h=500082c57ec6c473dab637b176a251f75d21e0fe;hp=1e8eccaa5835f9910e505a8283cac69984d4684f;hb=22b4247fe2d724a192661a911cd295c1bb566f97;hpb=c42b426c87c3d3b1dc9eda612cc831293dc80d68;ds=sidebyside diff --git a/lustre/include/lustre/lustre_user.h b/lustre/include/lustre/lustre_user.h index 1e8ecca..500082c 100644 --- a/lustre/include/lustre/lustre_user.h +++ b/lustre/include/lustre/lustre_user.h @@ -109,6 +109,40 @@ struct obd_statfs { __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; +}; + +struct filter_fid { + struct lu_fid ff_parent; /* ff_parent.f_ver == file stripe number */ + __u64 ff_objid; + __u64 ff_seq; +}; + +/* 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; /* * The ioctl naming rules: @@ -163,6 +197,15 @@ struct obd_statfs { #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) +/* see for ioctl numbers 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_STATFS_LMV 1 #define LL_STATFS_LOV 2 @@ -201,6 +244,9 @@ struct obd_statfs { #define LOV_USER_MAGIC_JOIN_V1 0x0BD20BD0 #define LOV_USER_MAGIC_V3 0x0BD30BD0 +#define LMV_MAGIC_V1 0x0CD10CD0 /*normal stripe lmv magic */ +#define LMV_USER_MAGIC 0x0CD20CD0 /*default lmv magic*/ + #define LOV_PATTERN_RAID0 0x001 #define LOV_PATTERN_RAID1 0x002 #define LOV_PATTERN_FIRST 0x100 @@ -209,7 +255,7 @@ struct obd_statfs { #define LOV_POOLNAMEF "%.16s" #define LOV_MIN_STRIPE_BITS 16 /* maximum PAGE_SIZE (ia64), power of 2 */ -#define LOV_MIN_STRIPE_SIZE (1<hur_user_item[hur->hur_itemcount]); + return &(hur->hur_user_item[hur->hur_request.hr_itemcount]); } /** Compute the current length of the provided hsm_user_request. */ static inline int hur_len(struct hsm_user_request *hur) { - int data_offset; - - data_offset = hur_data(hur) - (void *)hur; - return (data_offset + hur->hur_data_len); + return offsetof(struct hsm_user_request, + hur_user_item[hur->hur_request.hr_itemcount]) + + hur->hur_request.hr_data_len; } /****** HSM RPCs to copytool *****/ @@ -946,7 +1026,7 @@ struct hsm_action_list { __u32 hal_count; /* number of hai's to follow */ __u64 hal_compound_id; /* returned by coordinator */ __u64 hal_flags; - __u32 hal_archive_num; /* which archive backend */ + __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