2019-05-27 09:55:05 +03:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2005-04-17 02:20:36 +04:00
/*
2006-10-02 18:55:27 +04:00
* Copyright ( C ) International Business Machines Corp . , 2000 - 2002
2005-04-17 02:20:36 +04:00
*/
# ifndef H_JFS_XATTR
# define H_JFS_XATTR
2016-04-22 15:43:49 +03:00
# include <linux/xattr.h>
2005-04-17 02:20:36 +04:00
/*
* jfs_ea_list describe the on - disk format of the extended attributes .
* I know the null - terminator is redundant since namelen is stored , but
* I am maintaining compatibility with OS / 2 where possible .
*/
struct jfs_ea {
u8 flag ; /* Unused? */
u8 namelen ; /* Length of name */
__le16 valuelen ; /* Length of value */
2020-03-09 21:23:08 +03:00
char name [ ] ; /* Attribute name (includes null-terminator) */
2005-04-17 02:20:36 +04:00
} ; /* Value immediately follows name */
struct jfs_ea_list {
__le32 size ; /* overall size */
2020-03-09 21:23:08 +03:00
struct jfs_ea ea [ ] ; /* Variable length list */
2005-04-17 02:20:36 +04:00
} ;
/* Macros for defining maxiumum number of bytes supported for EAs */
# define MAXEASIZE 65535
# define MAXEALISTSIZE MAXEASIZE
/*
* some macros for dealing with variable length EA lists .
*/
# define EA_SIZE(ea) \
( sizeof ( struct jfs_ea ) + ( ea ) - > namelen + 1 + \
le16_to_cpu ( ( ea ) - > valuelen ) )
# define NEXT_EA(ea) ((struct jfs_ea *) (((char *) (ea)) + (EA_SIZE (ea))))
# define FIRST_EA(ealist) ((ealist)->ea)
# define EALIST_SIZE(ealist) le32_to_cpu((ealist)->size)
# define END_EALIST(ealist) \
( ( struct jfs_ea * ) ( ( ( char * ) ( ealist ) ) + EALIST_SIZE ( ealist ) ) )
2005-09-01 18:02:43 +04:00
extern int __jfs_setxattr ( tid_t , struct inode * , const char * , const void * ,
size_t , int ) ;
2005-04-17 02:20:36 +04:00
extern ssize_t __jfs_getxattr ( struct inode * , const char * , void * , size_t ) ;
extern ssize_t jfs_listxattr ( struct dentry * , char * , size_t ) ;
2013-12-20 17:16:51 +04:00
extern const struct xattr_handler * jfs_xattr_handlers [ ] ;
2005-09-01 18:05:39 +04:00
# ifdef CONFIG_JFS_SECURITY
2011-02-01 19:05:39 +03:00
extern int jfs_init_security ( tid_t , struct inode * , struct inode * ,
const struct qstr * ) ;
2005-09-01 18:05:39 +04:00
# else
static inline int jfs_init_security ( tid_t tid , struct inode * inode ,
2011-02-01 19:05:39 +03:00
struct inode * dir , const struct qstr * qstr )
2005-09-01 18:05:39 +04:00
{
return 0 ;
}
# endif
2005-04-17 02:20:36 +04:00
# endif /* H_JFS_XATTR */