Re: librados3

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

 



On Thu, Oct 26, 2017 at 3:06 AM, Josh Durgin <jdurgin@xxxxxxxxxx> wrote:
>
>
> The most common culprit for ABI issues is bufferlist since we expose the
> internal ceph type directly. This has caused problems with almost every
> release lately.
>
> At this point it it seems worth finally separating the internal and
> external types there, without doing a full new version of librados.

i don't think we can do this without doing a new version of librados.
the legacy librados clients are still expecting the internal types at
some degree, that's how we noticed the problem
(http://tracker.ceph.com/issues/21573), where the librados client was
compiled with an old librados header, and inlined the old constructor
in its binary. and some APIs force us to do so, for example,
"ObjectReadOperation::getxattrs(std::map<std::string, bufferlist>
*pattrs, int *prval)" requires a complete type definition of
ceph::bufferlist. in other words, the buffer.h exposing the innards of
ceph::buffer types was shipped with librados2, and the librados client
is using them, we can hardly fix this w/o bumping the so version.

>
> It may be possible to do this without introducing a new type, by freezing
> the existing bufferlist as the external type for librados and librbd, and
> making a conversion if necessary. We could add a true pimpl wrapper as a new
> type to avoid the overhead of conversion if it is a problem.

yeah, probably by introducing a bufferlist2, which is a pimpl wrapper,
and start to deprecate APIs like getxattrs() with the ones using
bufferlist2. and convert bufferlist to the actual bufferlist in the
legacy APIs. feasible, but a pains-taking plan..

i still like librados3. =)


-- 
Regards
Kefu Chai
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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