[XFS] Switches xfs_vn_listxattr to set it's put_listent callback directly
and not go through xfs_attr_list. SGI-PV: 983395 SGI-Modid: xfs-linux-melb:xfs-kern:31324a Signed-off-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: Tim Shimmin <tes@sgi.com> Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
This commit is contained in:

committed by
Niv Sardi

parent
caf8aabdbc
commit
ad9b463aa2
@@ -18,9 +18,11 @@
|
||||
#ifndef __XFS_ATTR_H__
|
||||
#define __XFS_ATTR_H__
|
||||
|
||||
struct xfs_inode;
|
||||
struct xfs_da_args;
|
||||
struct xfs_attr_list_context;
|
||||
|
||||
/*
|
||||
* xfs_attr.h
|
||||
*
|
||||
* Large attribute lists are structured around Btrees where all the data
|
||||
* elements are in the leaf nodes. Attribute names are hashed into an int,
|
||||
* then that int is used as the index into the Btree. Since the hashval
|
||||
@@ -35,17 +37,6 @@
|
||||
* External interfaces
|
||||
*========================================================================*/
|
||||
|
||||
struct cred;
|
||||
struct xfs_attr_list_context;
|
||||
|
||||
typedef struct attrnames {
|
||||
char * attr_name;
|
||||
unsigned int attr_namelen;
|
||||
} attrnames_t;
|
||||
|
||||
extern struct attrnames attr_user;
|
||||
extern struct attrnames attr_secure;
|
||||
extern struct attrnames attr_trusted;
|
||||
|
||||
#define ATTR_DONTFOLLOW 0x0001 /* -- unused, from IRIX -- */
|
||||
#define ATTR_ROOT 0x0002 /* use attrs in root (trusted) namespace */
|
||||
@@ -54,14 +45,8 @@ extern struct attrnames attr_trusted;
|
||||
#define ATTR_CREATE 0x0010 /* pure create: fail if attr already exists */
|
||||
#define ATTR_REPLACE 0x0020 /* pure set: fail if attr does not exist */
|
||||
|
||||
#define ATTR_KERNACCESS 0x0400 /* [kernel] iaccess, inode held io-locked */
|
||||
#define ATTR_KERNOTIME 0x1000 /* [kernel] don't update inode timestamps */
|
||||
#define ATTR_KERNOVAL 0x2000 /* [kernel] get attr size only, not value */
|
||||
#define ATTR_KERNAMELS 0x4000 /* [kernel] list attr names (simple list) */
|
||||
|
||||
#define ATTR_KERNORMALS 0x0800 /* [kernel] normal attr list: user+secure */
|
||||
#define ATTR_KERNROOTLS 0x8000 /* [kernel] include root in the attr list */
|
||||
#define ATTR_KERNFULLS (ATTR_KERNORMALS|ATTR_KERNROOTLS)
|
||||
|
||||
/*
|
||||
* The maximum size (into the kernel or returned from the kernel) of an
|
||||
@@ -129,20 +114,40 @@ typedef struct attrlist_cursor_kern {
|
||||
|
||||
|
||||
/*========================================================================
|
||||
* Function prototypes for the kernel.
|
||||
* Structure used to pass context around among the routines.
|
||||
*========================================================================*/
|
||||
|
||||
struct xfs_inode;
|
||||
struct attrlist_cursor_kern;
|
||||
struct xfs_da_args;
|
||||
|
||||
typedef int (*put_listent_func_t)(struct xfs_attr_list_context *, int,
|
||||
char *, int, int, char *);
|
||||
|
||||
typedef struct xfs_attr_list_context {
|
||||
struct xfs_inode *dp; /* inode */
|
||||
struct attrlist_cursor_kern *cursor; /* position in list */
|
||||
char *alist; /* output buffer */
|
||||
int seen_enough; /* T/F: seen enough of list? */
|
||||
int count; /* num used entries */
|
||||
int dupcnt; /* count dup hashvals seen */
|
||||
int bufsize; /* total buffer size */
|
||||
int firstu; /* first used byte in buffer */
|
||||
int flags; /* from VOP call */
|
||||
int resynch; /* T/F: resynch with cursor */
|
||||
int put_value; /* T/F: need value for listent */
|
||||
put_listent_func_t put_listent; /* list output fmt function */
|
||||
int index; /* index into output buffer */
|
||||
} xfs_attr_list_context_t;
|
||||
|
||||
|
||||
/*========================================================================
|
||||
* Function prototypes for the kernel.
|
||||
*========================================================================*/
|
||||
|
||||
/*
|
||||
* Overall external interface routines.
|
||||
*/
|
||||
int xfs_attr_inactive(struct xfs_inode *dp);
|
||||
|
||||
int xfs_attr_shortform_getvalue(struct xfs_da_args *);
|
||||
int xfs_attr_fetch(struct xfs_inode *, struct xfs_name *, char *, int *, int);
|
||||
int xfs_attr_rmtval_get(struct xfs_da_args *args);
|
||||
int xfs_attr_list_int(struct xfs_attr_list_context *);
|
||||
|
||||
#endif /* __XFS_ATTR_H__ */
|
||||
|
Reference in New Issue
Block a user