All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@redhat.com>
To: Ricardo Dias <rdias@suse.com>, kefu chai <tchaikov@gmail.com>,
	"ceph-devel@vger.kernel.org" <ceph-devel@vger.kernel.org>
Subject: Re: turn libcommon into a shared library and package it
Date: Fri, 06 Jan 2017 07:20:39 -0500	[thread overview]
Message-ID: <1483705239.2733.2.camel@redhat.com> (raw)
In-Reply-To: <000e3136-5222-cdf2-6479-476f120dabc5@suse.com>

On Fri, 2017-01-06 at 11:48 +0000, Ricardo Dias wrote:
> 
> On 06-01-2017 11:38, kefu chai wrote:
> > 
> > hi cephers,
> > 
> > libcommon is a convenient library and is statically linked into
> > librados, librbd and libcephfs. and there are some static variables
> > living in libcommon, for instance, the ones defined in lockdep.cc. so,
> > we will have multiple copies of these global variables if an
> > application is linked against librados and (librbd | libcephfs).  the
> > "ceph" cli does link against librados and libcephfs via the their
> > python bindings.
> > 
> > this incurs some problems:
> > 
> > - cross reference each other's global variables: in my testbed, i ran
> > into https://github.com/ceph/ceph/pull/12249#issuecomment-264105597.
> > where libcephfs was referencing the lockdeps variables in librados
> > when relinquishing a lock. when libcephfs tries to acquire this lock
> > again, it found that this lock is *already* locked.
> > - more memory foot print and disk space: apparently, libcommon is
> > included by librados, librbd and libcephfs. so it's a waste to have
> > multiple copies of libcommon if librbd and/or libcephfs are loaded
> > into memory or installed onto disk.
> > 
> > after turning libcommon into a shared library, these problems are solved.
> 
> I agree with this approach. In RBD we also had the same problems 
> sometime ago, and we discussed the problem here
> https://github.com/ceph/ceph/pull/8537
> 
> > 
> > 
> > but yes, unlike librados and its friends, libcommon is not a user
> > facing library, so we will not install it right under /usr/lib/.
> > instead, it will be living in /usr/lib/ceph.  please note, the erasure
> > plugins are installed into /usr/lib/ceph/erasure-code/ and rados
> > classes are installed into /usr/lib/rados-classes/. this follows the
> > related section of FHS [1].
> > 
> > what do you think?
> 
> +1 here. Please go forward with this :-)
> 
> > 
> > 
> > --
> > [1] http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLIBLIBRARIESFORPROGRAMMINGANDPA
> > 
> 

Sounds good to me.

It might also not hurt to rename it. libcommon as a name is awfully
generic and could run afoul of other libs on the machine that have
nothing to do with ceph (regardless of whether you install it in this
private location). Maybe libceph-common?

-- 
Jeff Layton <jlayton@redhat.com>

  reply	other threads:[~2017-01-06 12:20 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-06 11:38 turn libcommon into a shared library and package it kefu chai
2017-01-06 11:48 ` Ricardo Dias
2017-01-06 12:20   ` Jeff Layton [this message]
2017-01-09  8:59     ` kefu chai
2017-01-06 12:36 ` John Spray
2017-01-06 13:40   ` Brett Niver

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1483705239.2733.2.camel@redhat.com \
    --to=jlayton@redhat.com \
    --cc=ceph-devel@vger.kernel.org \
    --cc=rdias@suse.com \
    --cc=tchaikov@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.