hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/fs/fuse/xattr.c
....@@ -14,29 +14,29 @@
1414 int fuse_setxattr(struct inode *inode, const char *name, const void *value,
1515 size_t size, int flags)
1616 {
17
- struct fuse_conn *fc = get_fuse_conn(inode);
17
+ struct fuse_mount *fm = get_fuse_mount(inode);
1818 FUSE_ARGS(args);
1919 struct fuse_setxattr_in inarg;
2020 int err;
2121
22
- if (fc->no_setxattr)
22
+ if (fm->fc->no_setxattr)
2323 return -EOPNOTSUPP;
2424
2525 memset(&inarg, 0, sizeof(inarg));
2626 inarg.size = size;
2727 inarg.flags = flags;
28
- args.in.h.opcode = FUSE_SETXATTR;
29
- args.in.h.nodeid = get_node_id(inode);
30
- args.in.numargs = 3;
31
- args.in.args[0].size = sizeof(inarg);
32
- args.in.args[0].value = &inarg;
33
- args.in.args[1].size = strlen(name) + 1;
34
- args.in.args[1].value = name;
35
- args.in.args[2].size = size;
36
- args.in.args[2].value = value;
37
- err = fuse_simple_request(fc, &args);
28
+ args.opcode = FUSE_SETXATTR;
29
+ args.nodeid = get_node_id(inode);
30
+ args.in_numargs = 3;
31
+ args.in_args[0].size = sizeof(inarg);
32
+ args.in_args[0].value = &inarg;
33
+ args.in_args[1].size = strlen(name) + 1;
34
+ args.in_args[1].value = name;
35
+ args.in_args[2].size = size;
36
+ args.in_args[2].value = value;
37
+ err = fuse_simple_request(fm, &args);
3838 if (err == -ENOSYS) {
39
- fc->no_setxattr = 1;
39
+ fm->fc->no_setxattr = 1;
4040 err = -EOPNOTSUPP;
4141 }
4242 if (!err) {
....@@ -49,39 +49,39 @@
4949 ssize_t fuse_getxattr(struct inode *inode, const char *name, void *value,
5050 size_t size)
5151 {
52
- struct fuse_conn *fc = get_fuse_conn(inode);
52
+ struct fuse_mount *fm = get_fuse_mount(inode);
5353 FUSE_ARGS(args);
5454 struct fuse_getxattr_in inarg;
5555 struct fuse_getxattr_out outarg;
5656 ssize_t ret;
5757
58
- if (fc->no_getxattr)
58
+ if (fm->fc->no_getxattr)
5959 return -EOPNOTSUPP;
6060
6161 memset(&inarg, 0, sizeof(inarg));
6262 inarg.size = size;
63
- args.in.h.opcode = FUSE_GETXATTR;
64
- args.in.h.nodeid = get_node_id(inode);
65
- args.in.numargs = 2;
66
- args.in.args[0].size = sizeof(inarg);
67
- args.in.args[0].value = &inarg;
68
- args.in.args[1].size = strlen(name) + 1;
69
- args.in.args[1].value = name;
63
+ args.opcode = FUSE_GETXATTR;
64
+ args.nodeid = get_node_id(inode);
65
+ args.in_numargs = 2;
66
+ args.in_args[0].size = sizeof(inarg);
67
+ args.in_args[0].value = &inarg;
68
+ args.in_args[1].size = strlen(name) + 1;
69
+ args.in_args[1].value = name;
7070 /* This is really two different operations rolled into one */
71
- args.out.numargs = 1;
71
+ args.out_numargs = 1;
7272 if (size) {
73
- args.out.argvar = 1;
74
- args.out.args[0].size = size;
75
- args.out.args[0].value = value;
73
+ args.out_argvar = true;
74
+ args.out_args[0].size = size;
75
+ args.out_args[0].value = value;
7676 } else {
77
- args.out.args[0].size = sizeof(outarg);
78
- args.out.args[0].value = &outarg;
77
+ args.out_args[0].size = sizeof(outarg);
78
+ args.out_args[0].value = &outarg;
7979 }
80
- ret = fuse_simple_request(fc, &args);
80
+ ret = fuse_simple_request(fm, &args);
8181 if (!ret && !size)
8282 ret = min_t(ssize_t, outarg.size, XATTR_SIZE_MAX);
8383 if (ret == -ENOSYS) {
84
- fc->no_getxattr = 1;
84
+ fm->fc->no_getxattr = 1;
8585 ret = -EOPNOTSUPP;
8686 }
8787 return ret;
....@@ -107,7 +107,7 @@
107107 ssize_t fuse_listxattr(struct dentry *entry, char *list, size_t size)
108108 {
109109 struct inode *inode = d_inode(entry);
110
- struct fuse_conn *fc = get_fuse_conn(inode);
110
+ struct fuse_mount *fm = get_fuse_mount(inode);
111111 FUSE_ARGS(args);
112112 struct fuse_getxattr_in inarg;
113113 struct fuse_getxattr_out outarg;
....@@ -116,36 +116,36 @@
116116 if (fuse_is_bad(inode))
117117 return -EIO;
118118
119
- if (!fuse_allow_current_process(fc))
119
+ if (!fuse_allow_current_process(fm->fc))
120120 return -EACCES;
121121
122
- if (fc->no_listxattr)
122
+ if (fm->fc->no_listxattr)
123123 return -EOPNOTSUPP;
124124
125125 memset(&inarg, 0, sizeof(inarg));
126126 inarg.size = size;
127
- args.in.h.opcode = FUSE_LISTXATTR;
128
- args.in.h.nodeid = get_node_id(inode);
129
- args.in.numargs = 1;
130
- args.in.args[0].size = sizeof(inarg);
131
- args.in.args[0].value = &inarg;
127
+ args.opcode = FUSE_LISTXATTR;
128
+ args.nodeid = get_node_id(inode);
129
+ args.in_numargs = 1;
130
+ args.in_args[0].size = sizeof(inarg);
131
+ args.in_args[0].value = &inarg;
132132 /* This is really two different operations rolled into one */
133
- args.out.numargs = 1;
133
+ args.out_numargs = 1;
134134 if (size) {
135
- args.out.argvar = 1;
136
- args.out.args[0].size = size;
137
- args.out.args[0].value = list;
135
+ args.out_argvar = true;
136
+ args.out_args[0].size = size;
137
+ args.out_args[0].value = list;
138138 } else {
139
- args.out.args[0].size = sizeof(outarg);
140
- args.out.args[0].value = &outarg;
139
+ args.out_args[0].size = sizeof(outarg);
140
+ args.out_args[0].value = &outarg;
141141 }
142
- ret = fuse_simple_request(fc, &args);
142
+ ret = fuse_simple_request(fm, &args);
143143 if (!ret && !size)
144144 ret = min_t(ssize_t, outarg.size, XATTR_LIST_MAX);
145145 if (ret > 0 && size)
146146 ret = fuse_verify_xattr_list(list, ret);
147147 if (ret == -ENOSYS) {
148
- fc->no_listxattr = 1;
148
+ fm->fc->no_listxattr = 1;
149149 ret = -EOPNOTSUPP;
150150 }
151151 return ret;
....@@ -153,21 +153,21 @@
153153
154154 int fuse_removexattr(struct inode *inode, const char *name)
155155 {
156
- struct fuse_conn *fc = get_fuse_conn(inode);
156
+ struct fuse_mount *fm = get_fuse_mount(inode);
157157 FUSE_ARGS(args);
158158 int err;
159159
160
- if (fc->no_removexattr)
160
+ if (fm->fc->no_removexattr)
161161 return -EOPNOTSUPP;
162162
163
- args.in.h.opcode = FUSE_REMOVEXATTR;
164
- args.in.h.nodeid = get_node_id(inode);
165
- args.in.numargs = 1;
166
- args.in.args[0].size = strlen(name) + 1;
167
- args.in.args[0].value = name;
168
- err = fuse_simple_request(fc, &args);
163
+ args.opcode = FUSE_REMOVEXATTR;
164
+ args.nodeid = get_node_id(inode);
165
+ args.in_numargs = 1;
166
+ args.in_args[0].size = strlen(name) + 1;
167
+ args.in_args[0].value = name;
168
+ err = fuse_simple_request(fm, &args);
169169 if (err == -ENOSYS) {
170
- fc->no_removexattr = 1;
170
+ fm->fc->no_removexattr = 1;
171171 err = -EOPNOTSUPP;
172172 }
173173 if (!err) {
....@@ -179,7 +179,7 @@
179179
180180 static int fuse_xattr_get(const struct xattr_handler *handler,
181181 struct dentry *dentry, struct inode *inode,
182
- const char *name, void *value, size_t size)
182
+ const char *name, void *value, size_t size, int flags)
183183 {
184184 if (fuse_is_bad(inode))
185185 return -EIO;
....@@ -208,7 +208,7 @@
208208
209209 static int no_xattr_get(const struct xattr_handler *handler,
210210 struct dentry *dentry, struct inode *inode,
211
- const char *name, void *value, size_t size)
211
+ const char *name, void *value, size_t size, int flags)
212212 {
213213 return -EOPNOTSUPP;
214214 }