mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 20:48:49 +08:00
gfs2: Get rid of gfs2_ea_strlen
Function gfs2_ea_strlen is only called from ea_list_i, so inline it there. Remove the duplicate switch statement and the creative use of memcpy to set a null byte. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Reviewed-by: Andrew Price <anprice@redhat.com> Reviewed-by: Bob Peterson <rpeterso@redhat.com>
This commit is contained in:
parent
3f30f929bb
commit
21e2156f3c
@ -343,60 +343,45 @@ struct ea_list {
|
||||
unsigned int ei_size;
|
||||
};
|
||||
|
||||
static inline unsigned int gfs2_ea_strlen(struct gfs2_ea_header *ea)
|
||||
{
|
||||
switch (ea->ea_type) {
|
||||
case GFS2_EATYPE_USR:
|
||||
return 5 + ea->ea_name_len + 1;
|
||||
case GFS2_EATYPE_SYS:
|
||||
return 7 + ea->ea_name_len + 1;
|
||||
case GFS2_EATYPE_SECURITY:
|
||||
return 9 + ea->ea_name_len + 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int ea_list_i(struct gfs2_inode *ip, struct buffer_head *bh,
|
||||
struct gfs2_ea_header *ea, struct gfs2_ea_header *prev,
|
||||
void *private)
|
||||
{
|
||||
struct ea_list *ei = private;
|
||||
struct gfs2_ea_request *er = ei->ei_er;
|
||||
unsigned int ea_size = gfs2_ea_strlen(ea);
|
||||
unsigned int ea_size;
|
||||
char *prefix;
|
||||
unsigned int l;
|
||||
|
||||
if (ea->ea_type == GFS2_EATYPE_UNUSED)
|
||||
return 0;
|
||||
|
||||
if (er->er_data_len) {
|
||||
char *prefix = NULL;
|
||||
unsigned int l = 0;
|
||||
char c = 0;
|
||||
switch (ea->ea_type) {
|
||||
case GFS2_EATYPE_USR:
|
||||
prefix = "user.";
|
||||
l = 5;
|
||||
break;
|
||||
case GFS2_EATYPE_SYS:
|
||||
prefix = "system.";
|
||||
l = 7;
|
||||
break;
|
||||
case GFS2_EATYPE_SECURITY:
|
||||
prefix = "security.";
|
||||
l = 9;
|
||||
break;
|
||||
default:
|
||||
BUG();
|
||||
}
|
||||
|
||||
ea_size = l + ea->ea_name_len + 1;
|
||||
if (er->er_data_len) {
|
||||
if (ei->ei_size + ea_size > er->er_data_len)
|
||||
return -ERANGE;
|
||||
|
||||
switch (ea->ea_type) {
|
||||
case GFS2_EATYPE_USR:
|
||||
prefix = "user.";
|
||||
l = 5;
|
||||
break;
|
||||
case GFS2_EATYPE_SYS:
|
||||
prefix = "system.";
|
||||
l = 7;
|
||||
break;
|
||||
case GFS2_EATYPE_SECURITY:
|
||||
prefix = "security.";
|
||||
l = 9;
|
||||
break;
|
||||
}
|
||||
|
||||
BUG_ON(l == 0);
|
||||
|
||||
memcpy(er->er_data + ei->ei_size, prefix, l);
|
||||
memcpy(er->er_data + ei->ei_size + l, GFS2_EA2NAME(ea),
|
||||
ea->ea_name_len);
|
||||
memcpy(er->er_data + ei->ei_size + ea_size - 1, &c, 1);
|
||||
er->er_data[ei->ei_size + ea_size - 1] = 0;
|
||||
}
|
||||
|
||||
ei->ei_size += ea_size;
|
||||
|
Loading…
Reference in New Issue
Block a user