xfs: move the legacy xfs_attr_list to xfs_ioctl.c
The old xfs_attr_list code is only used by the attrlist by handle ioctl. Move it to xfs_ioctl.c with its user. Also move the attrlist and attrlist_ent structure to xfs_fs.h, as they are exposed user ABIs. They are used through libattr headers with the same name by at least xfsdump. Also document this relation so that it doesn't require a research project to figure out. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Chandan Rajendra <chandanrlinux@gmail.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:

committed by
Darrick J. Wong

parent
2f014aad03
commit
3e7a779937
@@ -48,27 +48,6 @@ struct xfs_attr_list_context;
|
||||
*/
|
||||
#define ATTR_MAX_VALUELEN (64*1024) /* max length of a value */
|
||||
|
||||
/*
|
||||
* Define how lists of attribute names are returned to the user from
|
||||
* the attr_list() call. A large, 32bit aligned, buffer is passed in
|
||||
* along with its size. We put an array of offsets at the top that each
|
||||
* reference an attrlist_ent_t and pack the attrlist_ent_t's at the bottom.
|
||||
*/
|
||||
typedef struct attrlist {
|
||||
__s32 al_count; /* number of entries in attrlist */
|
||||
__s32 al_more; /* T/F: more attrs (do call again) */
|
||||
__s32 al_offset[1]; /* byte offsets of attrs [var-sized] */
|
||||
} attrlist_t;
|
||||
|
||||
/*
|
||||
* Show the interesting info about one attribute. This is what the
|
||||
* al_offset[i] entry points to.
|
||||
*/
|
||||
typedef struct attrlist_ent { /* data from attr_list() */
|
||||
__u32 a_valuelen; /* number bytes in value of attr */
|
||||
char a_name[1]; /* attr name (NULL terminated) */
|
||||
} attrlist_ent_t;
|
||||
|
||||
/*
|
||||
* Kernel-internal version of the attrlist cursor.
|
||||
*/
|
||||
@@ -131,8 +110,6 @@ int xfs_attr_get(struct xfs_da_args *args);
|
||||
int xfs_attr_set(struct xfs_da_args *args);
|
||||
int xfs_attr_set_args(struct xfs_da_args *args);
|
||||
int xfs_attr_remove_args(struct xfs_da_args *args);
|
||||
int xfs_attr_list(struct xfs_inode *dp, char *buffer, int bufsize,
|
||||
int flags, struct attrlist_cursor_kern *cursor);
|
||||
bool xfs_attr_namecheck(const void *name, size_t length);
|
||||
|
||||
#endif /* __XFS_ATTR_H__ */
|
||||
|
@@ -572,6 +572,26 @@ typedef struct xfs_attrlist_cursor {
|
||||
__u32 opaque[4];
|
||||
} xfs_attrlist_cursor_t;
|
||||
|
||||
/*
|
||||
* Define how lists of attribute names are returned to userspace from the
|
||||
* XFS_IOC_ATTRLIST_BY_HANDLE ioctl. struct xfs_attrlist is the header at the
|
||||
* beginning of the returned buffer, and a each entry in al_offset contains the
|
||||
* relative offset of an xfs_attrlist_ent containing the actual entry.
|
||||
*
|
||||
* NOTE: struct xfs_attrlist must match struct attrlist defined in libattr, and
|
||||
* struct xfs_attrlist_ent must match struct attrlist_ent defined in libattr.
|
||||
*/
|
||||
struct xfs_attrlist {
|
||||
__s32 al_count; /* number of entries in attrlist */
|
||||
__s32 al_more; /* T/F: more attrs (do call again) */
|
||||
__s32 al_offset[1]; /* byte offsets of attrs [var-sized] */
|
||||
};
|
||||
|
||||
struct xfs_attrlist_ent { /* data from attr_list() */
|
||||
__u32 a_valuelen; /* number bytes in value of attr */
|
||||
char a_name[1]; /* attr name (NULL terminated) */
|
||||
};
|
||||
|
||||
typedef struct xfs_fsop_attrlist_handlereq {
|
||||
struct xfs_fsop_handlereq hreq; /* handle interface structure */
|
||||
struct xfs_attrlist_cursor pos; /* opaque cookie, list offset */
|
||||
|
Reference in New Issue
Block a user