Re: [PATCH v2 2/3] libceph: make ceph_pr_addr take an struct ceph_entity_addr pointer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2019-05-06 at 12:33 +0200, Ilya Dryomov wrote:
> On Thu, May 2, 2019 at 8:46 PM Jeff Layton <jlayton@xxxxxxxxxx> wrote:
> > GCC9 is throwing a lot of warnings about unaligned accesses by
> > callers of ceph_pr_addr. All of the current callers are passing a
> > pointer to the sockaddr inside struct ceph_entity_addr.
> > 
> > Rename the existing function to ceph_pr_sockaddr, and add a new
> > ceph_pr_addr that takes an ceph_entity_addr instead. We can then
> > have it make a copy of the sockaddr before printing.
> 
> Looks like a leftover from v1?
> 

Yep. I realized it after I had sent it. I'll fix it up in tree (if the
rest looks ok).

> > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
> > ---
> >  fs/ceph/debugfs.c              |  2 +-
> >  fs/ceph/mdsmap.c               |  2 +-
> >  include/linux/ceph/messenger.h |  3 ++-
> >  net/ceph/cls_lock_client.c     |  2 +-
> >  net/ceph/debugfs.c             |  4 +--
> >  net/ceph/messenger.c           | 48 +++++++++++++++++-----------------
> >  net/ceph/mon_client.c          |  6 ++---
> >  net/ceph/osd_client.c          |  2 +-
> >  8 files changed, 35 insertions(+), 34 deletions(-)
> > 
> > diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c
> > index b014fc7d4e3c..b3fc5fe26a1a 100644
> > --- a/fs/ceph/debugfs.c
> > +++ b/fs/ceph/debugfs.c
> > @@ -37,7 +37,7 @@ static int mdsmap_show(struct seq_file *s, void *p)
> >                 struct ceph_entity_addr *addr = &mdsmap->m_info[i].addr;
> >                 int state = mdsmap->m_info[i].state;
> >                 seq_printf(s, "\tmds%d\t%s\t(%s)\n", i,
> > -                              ceph_pr_addr(&addr->in_addr),
> > +                              ceph_pr_addr(addr),
> >                                ceph_mds_state_name(state));
> >         }
> >         return 0;
> > diff --git a/fs/ceph/mdsmap.c b/fs/ceph/mdsmap.c
> > index 977cacd3825f..45a815c7975e 100644
> > --- a/fs/ceph/mdsmap.c
> > +++ b/fs/ceph/mdsmap.c
> > @@ -205,7 +205,7 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
> > 
> >                 dout("mdsmap_decode %d/%d %lld mds%d.%d %s %s\n",
> >                      i+1, n, global_id, mds, inc,
> > -                    ceph_pr_addr(&addr.in_addr),
> > +                    ceph_pr_addr(&addr),
> >                      ceph_mds_state_name(state));
> > 
> >                 if (mds < 0 || state <= 0)
> > diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h
> > index 800a2128d411..23895d178149 100644
> > --- a/include/linux/ceph/messenger.h
> > +++ b/include/linux/ceph/messenger.h
> > @@ -323,7 +323,8 @@ struct ceph_connection {
> >  };
> > 
> > 
> > -extern const char *ceph_pr_addr(const struct sockaddr_storage *ss);
> > +extern const char *ceph_pr_addr(const struct ceph_entity_addr *addr);
> > +
> >  extern int ceph_parse_ips(const char *c, const char *end,
> >                           struct ceph_entity_addr *addr,
> >                           int max_count, int *count);
> > diff --git a/net/ceph/cls_lock_client.c b/net/ceph/cls_lock_client.c
> > index 2105a6eaa66c..4cc28541281b 100644
> > --- a/net/ceph/cls_lock_client.c
> > +++ b/net/ceph/cls_lock_client.c
> > @@ -271,7 +271,7 @@ static int decode_locker(void **p, void *end, struct ceph_locker *locker)
> > 
> >         dout("%s %s%llu cookie %s addr %s\n", __func__,
> >              ENTITY_NAME(locker->id.name), locker->id.cookie,
> > -            ceph_pr_addr(&locker->info.addr.in_addr));
> > +            ceph_pr_addr(&locker->info.addr));
> >         return 0;
> >  }
> > 
> > diff --git a/net/ceph/debugfs.c b/net/ceph/debugfs.c
> > index 46f65709a6ff..63aef9915f75 100644
> > --- a/net/ceph/debugfs.c
> > +++ b/net/ceph/debugfs.c
> > @@ -46,7 +46,7 @@ static int monmap_show(struct seq_file *s, void *p)
> > 
> >                 seq_printf(s, "\t%s%lld\t%s\n",
> >                            ENTITY_NAME(inst->name),
> > -                          ceph_pr_addr(&inst->addr.in_addr));
> > +                          ceph_pr_addr(&inst->addr));
> >         }
> >         return 0;
> >  }
> > @@ -82,7 +82,7 @@ static int osdmap_show(struct seq_file *s, void *p)
> >                 char sb[64];
> > 
> >                 seq_printf(s, "osd%d\t%s\t%3d%%\t(%s)\t%3d%%\n",
> > -                          i, ceph_pr_addr(&addr->in_addr),
> > +                          i, ceph_pr_addr(addr),
> >                            ((map->osd_weight[i]*100) >> 16),
> >                            ceph_osdmap_state_str(sb, sizeof(sb), state),
> >                            ((ceph_get_primary_affinity(map, i)*100) >> 16));
> > diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
> > index 54713836cac3..a4432c220d02 100644
> > --- a/net/ceph/messenger.c
> > +++ b/net/ceph/messenger.c
> > @@ -186,17 +186,18 @@ static atomic_t addr_str_seq = ATOMIC_INIT(0);
> > 
> >  static struct page *zero_page;         /* used in certain error cases */
> > 
> > -const char *ceph_pr_addr(const struct sockaddr_storage *ss)
> > +const char *ceph_pr_addr(const struct ceph_entity_addr *addr)
> >  {
> >         int i;
> >         char *s;
> > -       struct sockaddr_in *in4 = (struct sockaddr_in *) ss;
> > -       struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) ss;
> > +       const struct sockaddr_storage ss = addr->in_addr;
> 
> Is this const really needed?  I'd add a comment here, same as in
> previous patch.

Probably not, but does it harm anything? We're only copying to print the
thing out and we'll never change it. I'll add the comment though.

Thanks,
-- 
Jeff Layton <jlayton@xxxxxxxxxx>




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux