2005-04-17 02:20:36 +04:00
/*
* linux / fs / ext2 / xattr_user . c
* Handler for extended user attributes .
*
* Copyright ( C ) 2001 by Andreas Gruenbacher , < a . gruenbacher @ computer . org >
*/
# include <linux/init.h>
# include <linux/string.h>
# include "ext2.h"
# include "xattr.h"
2015-12-02 16:44:43 +03:00
static bool
ext2_xattr_user_list ( struct dentry * dentry )
2005-04-17 02:20:36 +04:00
{
2015-12-02 16:44:43 +03:00
return test_opt ( dentry - > d_sb , XATTR_USER ) ;
2005-04-17 02:20:36 +04:00
}
static int
2015-10-04 20:18:51 +03:00
ext2_xattr_user_get ( const struct xattr_handler * handler ,
2016-04-11 03:48:24 +03:00
struct dentry * unused , struct inode * inode ,
const char * name , void * buffer , size_t size )
2005-04-17 02:20:36 +04:00
{
2016-04-11 03:48:24 +03:00
if ( ! test_opt ( inode - > i_sb , XATTR_USER ) )
2005-04-17 02:20:36 +04:00
return - EOPNOTSUPP ;
2016-04-11 03:48:24 +03:00
return ext2_xattr_get ( inode , EXT2_XATTR_INDEX_USER ,
2009-11-13 12:52:56 +03:00
name , buffer , size ) ;
2005-04-17 02:20:36 +04:00
}
static int
2015-10-04 20:18:51 +03:00
ext2_xattr_user_set ( const struct xattr_handler * handler ,
2016-05-27 17:19:30 +03:00
struct dentry * unused , struct inode * inode ,
const char * name , const void * value ,
size_t size , int flags )
2005-04-17 02:20:36 +04:00
{
2016-05-27 17:19:30 +03:00
if ( ! test_opt ( inode - > i_sb , XATTR_USER ) )
2005-04-17 02:20:36 +04:00
return - EOPNOTSUPP ;
2016-05-27 17:19:30 +03:00
return ext2_xattr_set ( inode , EXT2_XATTR_INDEX_USER ,
2009-11-13 12:52:56 +03:00
name , value , size , flags ) ;
2005-04-17 02:20:36 +04:00
}
2010-05-14 04:53:16 +04:00
const struct xattr_handler ext2_xattr_user_handler = {
2005-04-17 02:20:36 +04:00
. prefix = XATTR_USER_PREFIX ,
. list = ext2_xattr_user_list ,
. get = ext2_xattr_user_get ,
. set = ext2_xattr_user_set ,
} ;