aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph
diff options
context:
space:
mode:
authorJeff Layton <jlayton@kernel.org>2019-06-24 07:39:18 -0400
committerIlya Dryomov <idryomov@gmail.com>2019-07-08 08:01:44 -0400
commitf1d1b51deabbd1e7b8c24883145fbf784784d250 (patch)
tree711ff8cc400436b0d2602aa244c9240d1134e8e5 /fs/ceph
parent49ada6e8dc9f64ad1e8dd6f7b453c9e584e9f897 (diff)
ceph: make getxattr_cb return ssize_t
The getxattr_cb functions return size_t, which is unsigned and then cast that value to int and then ssize_t before returning it. While all of this works, it relies on implicit casting rules for signed/unsigned conversions. Change getxattr_cb to return ssize_t to better conform with what the caller actually wants. Also, remove some suspicious casts. Signed-off-by: Jeff Layton <jlayton@kernel.org> Reviewed-by: "Yan, Zheng" <zyan@redhat.com> Acked-by: Ilya Dryomov <idryomov@gmail.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph')
-rw-r--r--fs/ceph/xattr.c90
1 files changed, 45 insertions, 45 deletions
diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c
index 6621d27e64f5..e90e19e9660b 100644
--- a/fs/ceph/xattr.c
+++ b/fs/ceph/xattr.c
@@ -32,8 +32,8 @@ static bool ceph_is_valid_xattr(const char *name)
32struct ceph_vxattr { 32struct ceph_vxattr {
33 char *name; 33 char *name;
34 size_t name_size; /* strlen(name) + 1 (for '\0') */ 34 size_t name_size; /* strlen(name) + 1 (for '\0') */
35 size_t (*getxattr_cb)(struct ceph_inode_info *ci, char *val, 35 ssize_t (*getxattr_cb)(struct ceph_inode_info *ci, char *val,
36 size_t size); 36 size_t size);
37 bool (*exists_cb)(struct ceph_inode_info *ci); 37 bool (*exists_cb)(struct ceph_inode_info *ci);
38 unsigned int flags; 38 unsigned int flags;
39}; 39};
@@ -52,8 +52,8 @@ static bool ceph_vxattrcb_layout_exists(struct ceph_inode_info *ci)
52 rcu_dereference_raw(fl->pool_ns) != NULL); 52 rcu_dereference_raw(fl->pool_ns) != NULL);
53} 53}
54 54
55static size_t ceph_vxattrcb_layout(struct ceph_inode_info *ci, char *val, 55static ssize_t ceph_vxattrcb_layout(struct ceph_inode_info *ci, char *val,
56 size_t size) 56 size_t size)
57{ 57{
58 struct ceph_fs_client *fsc = ceph_sb_to_client(ci->vfs_inode.i_sb); 58 struct ceph_fs_client *fsc = ceph_sb_to_client(ci->vfs_inode.i_sb);
59 struct ceph_osd_client *osdc = &fsc->client->osdc; 59 struct ceph_osd_client *osdc = &fsc->client->osdc;
@@ -80,7 +80,7 @@ static size_t ceph_vxattrcb_layout(struct ceph_inode_info *ci, char *val,
80 len = snprintf(buf, sizeof(buf), 80 len = snprintf(buf, sizeof(buf),
81 "stripe_unit=%u stripe_count=%u object_size=%u pool=%lld", 81 "stripe_unit=%u stripe_count=%u object_size=%u pool=%lld",
82 ci->i_layout.stripe_unit, ci->i_layout.stripe_count, 82 ci->i_layout.stripe_unit, ci->i_layout.stripe_count,
83 ci->i_layout.object_size, (unsigned long long)pool); 83 ci->i_layout.object_size, pool);
84 total_len = len; 84 total_len = len;
85 } 85 }
86 86
@@ -112,28 +112,28 @@ static size_t ceph_vxattrcb_layout(struct ceph_inode_info *ci, char *val,
112 return ret; 112 return ret;
113} 113}
114 114
115static size_t ceph_vxattrcb_layout_stripe_unit(struct ceph_inode_info *ci, 115static ssize_t ceph_vxattrcb_layout_stripe_unit(struct ceph_inode_info *ci,
116 char *val, size_t size) 116 char *val, size_t size)
117{ 117{
118 return snprintf(val, size, "%u", ci->i_layout.stripe_unit); 118 return snprintf(val, size, "%u", ci->i_layout.stripe_unit);
119} 119}
120 120
121static size_t ceph_vxattrcb_layout_stripe_count(struct ceph_inode_info *ci, 121static ssize_t ceph_vxattrcb_layout_stripe_count(struct ceph_inode_info *ci,
122 char *val, size_t size) 122 char *val, size_t size)
123{ 123{
124 return snprintf(val, size, "%u", ci->i_layout.stripe_count); 124 return snprintf(val, size, "%u", ci->i_layout.stripe_count);
125} 125}
126 126
127static size_t ceph_vxattrcb_layout_object_size(struct ceph_inode_info *ci, 127static ssize_t ceph_vxattrcb_layout_object_size(struct ceph_inode_info *ci,
128 char *val, size_t size) 128 char *val, size_t size)
129{ 129{
130 return snprintf(val, size, "%u", ci->i_layout.object_size); 130 return snprintf(val, size, "%u", ci->i_layout.object_size);
131} 131}
132 132
133static size_t ceph_vxattrcb_layout_pool(struct ceph_inode_info *ci, 133static ssize_t ceph_vxattrcb_layout_pool(struct ceph_inode_info *ci,
134 char *val, size_t size) 134 char *val, size_t size)
135{ 135{
136 int ret; 136 ssize_t ret;
137 struct ceph_fs_client *fsc = ceph_sb_to_client(ci->vfs_inode.i_sb); 137 struct ceph_fs_client *fsc = ceph_sb_to_client(ci->vfs_inode.i_sb);
138 struct ceph_osd_client *osdc = &fsc->client->osdc; 138 struct ceph_osd_client *osdc = &fsc->client->osdc;
139 s64 pool = ci->i_layout.pool_id; 139 s64 pool = ci->i_layout.pool_id;
@@ -144,18 +144,18 @@ static size_t ceph_vxattrcb_layout_pool(struct ceph_inode_info *ci,
144 if (pool_name) 144 if (pool_name)
145 ret = snprintf(val, size, "%s", pool_name); 145 ret = snprintf(val, size, "%s", pool_name);
146 else 146 else
147 ret = snprintf(val, size, "%lld", (unsigned long long)pool); 147 ret = snprintf(val, size, "%lld", pool);
148 up_read(&osdc->lock); 148 up_read(&osdc->lock);
149 return ret; 149 return ret;
150} 150}
151 151
152static size_t ceph_vxattrcb_layout_pool_namespace(struct ceph_inode_info *ci, 152static ssize_t ceph_vxattrcb_layout_pool_namespace(struct ceph_inode_info *ci,
153 char *val, size_t size) 153 char *val, size_t size)
154{ 154{
155 int ret = 0; 155 int ret = 0;
156 struct ceph_string *ns = ceph_try_get_string(ci->i_layout.pool_ns); 156 struct ceph_string *ns = ceph_try_get_string(ci->i_layout.pool_ns);
157 if (ns) { 157 if (ns) {
158 ret = snprintf(val, size, "%.*s", (int)ns->len, ns->str); 158 ret = snprintf(val, size, "%.*s", ns->len, ns->str);
159 ceph_put_string(ns); 159 ceph_put_string(ns);
160 } 160 }
161 return ret; 161 return ret;
@@ -163,50 +163,50 @@ static size_t ceph_vxattrcb_layout_pool_namespace(struct ceph_inode_info *ci,
163 163
164/* directories */ 164/* directories */
165 165
166static size_t ceph_vxattrcb_dir_entries(struct ceph_inode_info *ci, char *val, 166static ssize_t ceph_vxattrcb_dir_entries(struct ceph_inode_info *ci, char *val,
167 size_t size) 167 size_t size)
168{ 168{
169 return snprintf(val, size, "%lld", ci->i_files + ci->i_subdirs); 169 return snprintf(val, size, "%lld", ci->i_files + ci->i_subdirs);
170} 170}
171 171
172static size_t ceph_vxattrcb_dir_files(struct ceph_inode_info *ci, char *val, 172static ssize_t ceph_vxattrcb_dir_files(struct ceph_inode_info *ci, char *val,
173 size_t size) 173 size_t size)
174{ 174{
175 return snprintf(val, size, "%lld", ci->i_files); 175 return snprintf(val, size, "%lld", ci->i_files);
176} 176}
177 177
178static size_t ceph_vxattrcb_dir_subdirs(struct ceph_inode_info *ci, char *val, 178static ssize_t ceph_vxattrcb_dir_subdirs(struct ceph_inode_info *ci, char *val,
179 size_t size) 179 size_t size)
180{ 180{
181 return snprintf(val, size, "%lld", ci->i_subdirs); 181 return snprintf(val, size, "%lld", ci->i_subdirs);
182} 182}
183 183
184static size_t ceph_vxattrcb_dir_rentries(struct ceph_inode_info *ci, char *val, 184static ssize_t ceph_vxattrcb_dir_rentries(struct ceph_inode_info *ci, char *val,
185 size_t size) 185 size_t size)
186{ 186{
187 return snprintf(val, size, "%lld", ci->i_rfiles + ci->i_rsubdirs); 187 return snprintf(val, size, "%lld", ci->i_rfiles + ci->i_rsubdirs);
188} 188}
189 189
190static size_t ceph_vxattrcb_dir_rfiles(struct ceph_inode_info *ci, char *val, 190static ssize_t ceph_vxattrcb_dir_rfiles(struct ceph_inode_info *ci, char *val,
191 size_t size) 191 size_t size)
192{ 192{
193 return snprintf(val, size, "%lld", ci->i_rfiles); 193 return snprintf(val, size, "%lld", ci->i_rfiles);
194} 194}
195 195
196static size_t ceph_vxattrcb_dir_rsubdirs(struct ceph_inode_info *ci, char *val, 196static ssize_t ceph_vxattrcb_dir_rsubdirs(struct ceph_inode_info *ci, char *val,
197 size_t size) 197 size_t size)
198{ 198{
199 return snprintf(val, size, "%lld", ci->i_rsubdirs); 199 return snprintf(val, size, "%lld", ci->i_rsubdirs);
200} 200}
201 201
202static size_t ceph_vxattrcb_dir_rbytes(struct ceph_inode_info *ci, char *val, 202static ssize_t ceph_vxattrcb_dir_rbytes(struct ceph_inode_info *ci, char *val,
203 size_t size) 203 size_t size)
204{ 204{
205 return snprintf(val, size, "%lld", ci->i_rbytes); 205 return snprintf(val, size, "%lld", ci->i_rbytes);
206} 206}
207 207
208static size_t ceph_vxattrcb_dir_rctime(struct ceph_inode_info *ci, char *val, 208static ssize_t ceph_vxattrcb_dir_rctime(struct ceph_inode_info *ci, char *val,
209 size_t size) 209 size_t size)
210{ 210{
211 return snprintf(val, size, "%lld.%09ld", ci->i_rctime.tv_sec, 211 return snprintf(val, size, "%lld.%09ld", ci->i_rctime.tv_sec,
212 ci->i_rctime.tv_nsec); 212 ci->i_rctime.tv_nsec);
@@ -218,8 +218,8 @@ static bool ceph_vxattrcb_dir_pin_exists(struct ceph_inode_info *ci)
218 return ci->i_dir_pin != -ENODATA; 218 return ci->i_dir_pin != -ENODATA;
219} 219}
220 220
221static size_t ceph_vxattrcb_dir_pin(struct ceph_inode_info *ci, char *val, 221static ssize_t ceph_vxattrcb_dir_pin(struct ceph_inode_info *ci, char *val,
222 size_t size) 222 size_t size)
223{ 223{
224 return snprintf(val, size, "%d", (int)ci->i_dir_pin); 224 return snprintf(val, size, "%d", (int)ci->i_dir_pin);
225} 225}
@@ -238,21 +238,21 @@ static bool ceph_vxattrcb_quota_exists(struct ceph_inode_info *ci)
238 return ret; 238 return ret;
239} 239}
240 240
241static size_t ceph_vxattrcb_quota(struct ceph_inode_info *ci, char *val, 241static ssize_t ceph_vxattrcb_quota(struct ceph_inode_info *ci, char *val,
242 size_t size) 242 size_t size)
243{ 243{
244 return snprintf(val, size, "max_bytes=%llu max_files=%llu", 244 return snprintf(val, size, "max_bytes=%llu max_files=%llu",
245 ci->i_max_bytes, ci->i_max_files); 245 ci->i_max_bytes, ci->i_max_files);
246} 246}
247 247
248static size_t ceph_vxattrcb_quota_max_bytes(struct ceph_inode_info *ci, 248static ssize_t ceph_vxattrcb_quota_max_bytes(struct ceph_inode_info *ci,
249 char *val, size_t size) 249 char *val, size_t size)
250{ 250{
251 return snprintf(val, size, "%llu", ci->i_max_bytes); 251 return snprintf(val, size, "%llu", ci->i_max_bytes);
252} 252}
253 253
254static size_t ceph_vxattrcb_quota_max_files(struct ceph_inode_info *ci, 254static ssize_t ceph_vxattrcb_quota_max_files(struct ceph_inode_info *ci,
255 char *val, size_t size) 255 char *val, size_t size)
256{ 256{
257 return snprintf(val, size, "%llu", ci->i_max_files); 257 return snprintf(val, size, "%llu", ci->i_max_files);
258} 258}
@@ -263,8 +263,8 @@ static bool ceph_vxattrcb_snap_btime_exists(struct ceph_inode_info *ci)
263 return (ci->i_snap_btime.tv_sec != 0 || ci->i_snap_btime.tv_nsec != 0); 263 return (ci->i_snap_btime.tv_sec != 0 || ci->i_snap_btime.tv_nsec != 0);
264} 264}
265 265
266static size_t ceph_vxattrcb_snap_btime(struct ceph_inode_info *ci, char *val, 266static ssize_t ceph_vxattrcb_snap_btime(struct ceph_inode_info *ci, char *val,
267 size_t size) 267 size_t size)
268{ 268{
269 return snprintf(val, size, "%lld.%09ld", ci->i_snap_btime.tv_sec, 269 return snprintf(val, size, "%lld.%09ld", ci->i_snap_btime.tv_sec,
270 ci->i_snap_btime.tv_nsec); 270 ci->i_snap_btime.tv_nsec);
@@ -791,7 +791,7 @@ ssize_t __ceph_getxattr(struct inode *inode, const char *name, void *value,
791 struct ceph_inode_xattr *xattr; 791 struct ceph_inode_xattr *xattr;
792 struct ceph_vxattr *vxattr = NULL; 792 struct ceph_vxattr *vxattr = NULL;
793 int req_mask; 793 int req_mask;
794 int err; 794 ssize_t err;
795 795
796 /* let's see if a virtual xattr was requested */ 796 /* let's see if a virtual xattr was requested */
797 vxattr = ceph_match_vxattr(inode, name); 797 vxattr = ceph_match_vxattr(inode, name);