linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sage Weil <sage@newdream.net>
To: Ingo Oeser <ioe-lkml@rameria.de>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 05/24] ceph: ref counted buffer
Date: Sat, 5 Dec 2009 10:13:00 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.64.0912051010450.15568@cobra.newdream.net> (raw)
In-Reply-To: <200912050231.23530.ioe-lkml@rameria.de>

On Sat, 5 Dec 2009, Ingo Oeser wrote:

> On Friday 04 December 2009, Sage Weil wrote:
> > struct ceph_buffer is a simple ref-counted buffer.  We transparently
> > choose between kmalloc for small buffers and vmalloc for large ones.
> > 
> > This is currently used only for allocating memory for xattr data.
> 
> Could you wrap parts of this refcounting logic around kref?
> see #include <linux/kref.h> and lib/kref.c
> 
> It avoids a bug with memory areas for free and if anybody
> optimizes or changes refcounting stuff, you get all changes for free :-)

The only real difference it looks like are

	smp_mb();

in get() and

	smp_mb__after_atomic_inc();

in put.  Is that needed for all other atomic_t refcounting too?

Switched to kref, and cleaned up the (partially unused) interface.

 fs/ceph/buffer.c    |   37 ++++++++++++++++++++++++++++++++-----
 fs/ceph/buffer.h    |   30 ++++++------------------------
 fs/ceph/inode.c     |   11 +++++++----
 fs/ceph/messenger.c |    2 +-
 fs/ceph/xattr.c     |    8 +++++---
 5 files changed, 51 insertions(+), 37 deletions(-)

sage

      reply	other threads:[~2009-12-05 18:12 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-03 23:41 [PATCH 00/24] ceph distributed file system client Sage Weil
2009-12-03 23:41 ` [PATCH 01/24] ceph: documentation Sage Weil
2009-12-03 23:41   ` [PATCH 02/24] ceph: on-wire types Sage Weil
2009-12-03 23:41     ` [PATCH 03/24] ceph: client types Sage Weil
2009-12-03 23:41       ` [PATCH 04/24] ceph: hash function Sage Weil
2009-12-03 23:41         ` [PATCH 05/24] ceph: ref counted buffer Sage Weil
2009-12-03 23:41           ` [PATCH 06/24] ceph: super.c Sage Weil
2009-12-03 23:41             ` [PATCH 07/24] ceph: inode operations Sage Weil
2009-12-03 23:41               ` [PATCH 08/24] ceph: directory operations Sage Weil
2009-12-03 23:41                 ` [PATCH 09/24] ceph: file operations Sage Weil
2009-12-03 23:41                   ` [PATCH 10/24] ceph: address space operations Sage Weil
2009-12-03 23:41                     ` [PATCH 11/24] ceph: MDS client Sage Weil
2009-12-03 23:41                       ` [PATCH 12/24] ceph: OSD client Sage Weil
2009-12-03 23:41                         ` [PATCH 13/24] ceph: CRUSH mapping algorithm Sage Weil
2009-12-03 23:41                           ` [PATCH 14/24] ceph: monitor client Sage Weil
2009-12-03 23:41                             ` [PATCH 15/24] ceph: authentication interface Sage Weil
2009-12-03 23:41                               ` [PATCH 16/24] ceph: trivial 'auth_none' authentication scheme Sage Weil
2009-12-03 23:41                                 ` [PATCH 17/24] ceph: capability management Sage Weil
2009-12-03 23:41                                   ` [PATCH 18/24] ceph: snapshot management Sage Weil
2009-12-03 23:41                                     ` [PATCH 19/24] ceph: messenger library Sage Weil
2009-12-03 23:41                                       ` [PATCH 20/24] ceph: message pools Sage Weil
2009-12-03 23:41                                         ` [PATCH 21/24] ceph: nfs re-export support Sage Weil
2009-12-03 23:41                                           ` [PATCH 22/24] ceph: ioctls Sage Weil
2009-12-03 23:41                                             ` [PATCH 23/24] ceph: debugfs Sage Weil
2009-12-03 23:41                                               ` [PATCH 24/24] ceph: Kconfig, Makefile Sage Weil
2009-12-05  1:31           ` [PATCH 05/24] ceph: ref counted buffer Ingo Oeser
2009-12-05 18:13             ` Sage Weil [this message]

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=Pine.LNX.4.64.0912051010450.15568@cobra.newdream.net \
    --to=sage@newdream.net \
    --cc=ioe-lkml@rameria.de \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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 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).