Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/fs/ext2/xattr_user.c
29267 views
1
// SPDX-License-Identifier: GPL-2.0
2
/*
3
* linux/fs/ext2/xattr_user.c
4
* Handler for extended user attributes.
5
*
6
* Copyright (C) 2001 by Andreas Gruenbacher, <[email protected]>
7
*/
8
9
#include <linux/init.h>
10
#include <linux/string.h>
11
#include "ext2.h"
12
#include "xattr.h"
13
14
static bool
15
ext2_xattr_user_list(struct dentry *dentry)
16
{
17
return test_opt(dentry->d_sb, XATTR_USER);
18
}
19
20
static int
21
ext2_xattr_user_get(const struct xattr_handler *handler,
22
struct dentry *unused, struct inode *inode,
23
const char *name, void *buffer, size_t size)
24
{
25
if (!test_opt(inode->i_sb, XATTR_USER))
26
return -EOPNOTSUPP;
27
return ext2_xattr_get(inode, EXT2_XATTR_INDEX_USER,
28
name, buffer, size);
29
}
30
31
static int
32
ext2_xattr_user_set(const struct xattr_handler *handler,
33
struct mnt_idmap *idmap,
34
struct dentry *unused, struct inode *inode,
35
const char *name, const void *value,
36
size_t size, int flags)
37
{
38
if (!test_opt(inode->i_sb, XATTR_USER))
39
return -EOPNOTSUPP;
40
41
return ext2_xattr_set(inode, EXT2_XATTR_INDEX_USER,
42
name, value, size, flags);
43
}
44
45
const struct xattr_handler ext2_xattr_user_handler = {
46
.prefix = XATTR_USER_PREFIX,
47
.list = ext2_xattr_user_list,
48
.get = ext2_xattr_user_get,
49
.set = ext2_xattr_user_set,
50
};
51
52