Re: [PATCH 19/21] ceph: ioctls

Sage Weil
2009-10-02T15:55:25Z

On Fri, 2 Oct 2009, Andi Kleen wrote:

> Sage Weil <sage@newdream.net> writes:
> > +/*
> > + * Extract identity, address of the OSD and object storing a given
> > + * file offset.
> > + */
> > +struct ceph_ioctl_dataloc {
> > + __u64 file_offset; /* in+out: file offset */
> > + __u64 object_offset; /* out: offset in object */
> > + __u64 object_no; /* out: object # */
> > + __u64 object_size; /* out: object size */
> > + char object_name[64]; /* out: object name */
> > + __u64 block_offset; /* out: offset in block */
> > + __u64 block_size; /* out: block length */
> > + __s64 osd; /* out: osd # */
> > + struct sockaddr_in osd_addr; /* out: osd address */
>
> You'll have to revise that once you support IPv6. At least extend the structure
> better now? (_in is too small for IPv6)

Yes. I suspect an explicit

struct in6_addr osd_addr;
__be16 osd_port;

makes more sense. Then legacy IPv4 addresses can just be represented as
::ffff:1.2.3.4. That seems like the simplest route?

I should similarly update the struct ceph_entity_addr as well (it also
embeds a sockaddr_in). And/or embed that struct here.

sage