* [Cluster-devel] [PATCH] gfs2: Get rid of gfs2_ea_strlen
@ 2018-08-03 11:29 Andreas Gruenbacher
2018-08-03 11:45 ` Andrew Price
2018-08-03 12:11 ` Bob Peterson
0 siblings, 2 replies; 3+ messages in thread
From: Andreas Gruenbacher @ 2018-08-03 11:29 UTC (permalink / raw)
To: cluster-devel.redhat.com
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>
---
fs/gfs2/xattr.c | 59 ++++++++++++++++++-------------------------------
1 file changed, 22 insertions(+), 37 deletions(-)
diff --git a/fs/gfs2/xattr.c b/fs/gfs2/xattr.c
index f2bce1e0f6fb..38515988aaf7 100644
--- a/fs/gfs2/xattr.c
+++ b/fs/gfs2/xattr.c
@@ -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;
--
2.17.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Cluster-devel] [PATCH] gfs2: Get rid of gfs2_ea_strlen
2018-08-03 11:29 [Cluster-devel] [PATCH] gfs2: Get rid of gfs2_ea_strlen Andreas Gruenbacher
@ 2018-08-03 11:45 ` Andrew Price
2018-08-03 12:11 ` Bob Peterson
1 sibling, 0 replies; 3+ messages in thread
From: Andrew Price @ 2018-08-03 11:45 UTC (permalink / raw)
To: cluster-devel.redhat.com
On 03/08/18 12:29, Andreas Gruenbacher wrote:
> 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>
Looks much cleaner.
Reviewed-by: Andrew Price <anprice@redhat.com>
Andy
> ---
> fs/gfs2/xattr.c | 59 ++++++++++++++++++-------------------------------
> 1 file changed, 22 insertions(+), 37 deletions(-)
>
> diff --git a/fs/gfs2/xattr.c b/fs/gfs2/xattr.c
> index f2bce1e0f6fb..38515988aaf7 100644
> --- a/fs/gfs2/xattr.c
> +++ b/fs/gfs2/xattr.c
> @@ -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;
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Cluster-devel] [PATCH] gfs2: Get rid of gfs2_ea_strlen
2018-08-03 11:29 [Cluster-devel] [PATCH] gfs2: Get rid of gfs2_ea_strlen Andreas Gruenbacher
2018-08-03 11:45 ` Andrew Price
@ 2018-08-03 12:11 ` Bob Peterson
1 sibling, 0 replies; 3+ messages in thread
From: Bob Peterson @ 2018-08-03 12:11 UTC (permalink / raw)
To: cluster-devel.redhat.com
Hi,
----- Original Message -----
> 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>
> ---
Definitely an improvement.
Reviewed-by: Bob Peterson <rpeterso@redhat.com>
Bob Peterson
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-08-03 12:11 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-03 11:29 [Cluster-devel] [PATCH] gfs2: Get rid of gfs2_ea_strlen Andreas Gruenbacher
2018-08-03 11:45 ` Andrew Price
2018-08-03 12:11 ` Bob Peterson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).