All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Sage Weil <sage@newdream.net>
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	yehuda@newdream.net, sage@newdream.net
Subject: Re: [PATCH 03/21] ceph: client types
Date: Tue, 29 Sep 2009 16:57:58 -0700	[thread overview]
Message-ID: <20090929165758.1b7df6c9.akpm@linux-foundation.org> (raw)
In-Reply-To: <1253641129-28434-4-git-send-email-sage@newdream.net>

On Tue, 22 Sep 2009 10:38:31 -0700
Sage Weil <sage@newdream.net> wrote:

> We first define constants, types, and prototypes for the kernel client
> proper.
> 
> A few subsystems are defined separately later: the MDS, OSD, and
> monitor clients, and the messaging layer.
> 
>
> ...
>
> +static inline bool ceph_i_test(struct inode *inode, unsigned mask)
> +{
> +	struct ceph_inode_info *ci = ceph_inode(inode);
> +	bool r;
> +
> +	spin_lock(&inode->i_lock);
> +	r = (ci->i_ceph_flags & mask) == mask;
> +	spin_unlock(&inode->i_lock);
> +	return r;
> +}

I'm not sure that the locking in ceph_i_test() makes much sense.  The
condition we just checked could change one femtosecond after we dropped
the lock, so why take the lock?

> +
> +/* find a specific frag @f */
> +static inline struct ceph_inode_frag *
> +__ceph_find_frag(struct ceph_inode_info *ci, u32 f)
> +{
> +	struct rb_node *n = ci->i_fragtree.rb_node;
> +
> +	while (n) {
> +		struct ceph_inode_frag *frag =
> +			rb_entry(n, struct ceph_inode_frag, node);
> +		int c = frag_compare(f, frag->frag);
> +		if (c < 0)
> +			n = n->rb_left;
> +		else if (c > 0)
> +			n = n->rb_right;
> +		else
> +			return frag;
> +	}
> +	return NULL;
> +}

Please review the entire fs and verify that all inlining decisions were
appropriate.  Unless this function has a single call site, this
decision wasn't appropriate.

And if it _does_ have a single callsite, it should be defined in the
relevant .c file, not in .h

> +/*
> + * choose fragment for value @v.  copy frag content to pfrag, if leaf
> + * exists
> + */
> +extern u32 ceph_choose_frag(struct ceph_inode_info *ci, u32 v,
> +			    struct ceph_inode_frag *pfrag,
> +			    int *found);
> +
>
> ...
>


  parent reply	other threads:[~2009-09-29 23:57 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-22 17:38 [PATCH 00/21] ceph distributed file system client Sage Weil
2009-09-22 17:38 ` [PATCH 01/21] ceph: documentation Sage Weil
2009-09-22 17:38   ` [PATCH 02/21] ceph: on-wire types Sage Weil
2009-09-22 17:38     ` [PATCH 03/21] ceph: client types Sage Weil
2009-09-22 17:38       ` [PATCH 04/21] ceph: ref counted buffer Sage Weil
2009-09-22 17:38         ` [PATCH 05/21] ceph: super.c Sage Weil
2009-09-22 17:38           ` [PATCH 06/21] ceph: inode operations Sage Weil
2009-09-22 17:38             ` [PATCH 07/21] ceph: directory operations Sage Weil
2009-09-22 17:38               ` [PATCH 08/21] ceph: file operations Sage Weil
2009-09-22 17:38                 ` [PATCH 09/21] ceph: address space operations Sage Weil
2009-09-22 17:38                   ` [PATCH 10/21] ceph: MDS client Sage Weil
2009-09-22 17:38                     ` [PATCH 11/21] ceph: OSD client Sage Weil
2009-09-22 17:38                       ` [PATCH 12/21] ceph: CRUSH mapping algorithm Sage Weil
2009-09-22 17:38                         ` [PATCH 13/21] ceph: monitor client Sage Weil
2009-09-22 17:38                           ` [PATCH 14/21] ceph: capability management Sage Weil
2009-09-22 17:38                             ` [PATCH 15/21] ceph: snapshot management Sage Weil
2009-09-22 17:38                               ` [PATCH 16/21] ceph: messenger library Sage Weil
2009-09-22 17:38                                 ` [PATCH 17/21] ceph: message pools Sage Weil
2009-09-22 17:38                                   ` [PATCH 18/21] ceph: nfs re-export support Sage Weil
2009-09-22 17:38                                     ` [PATCH 19/21] ceph: ioctls Sage Weil
2009-09-22 17:38                                       ` [PATCH 20/21] ceph: debugfs Sage Weil
2009-09-22 17:38                                         ` [PATCH 21/21] ceph: Kconfig, Makefile Sage Weil
2009-10-02  4:18                                       ` [PATCH 19/21] ceph: ioctls Andi Kleen
2009-10-02 15:55                                         ` Sage Weil
2009-10-02 16:36                                           ` Andi Kleen
2009-09-30  0:15             ` [PATCH 06/21] ceph: inode operations Andrew Morton
2009-09-30 17:45               ` Sage Weil
2009-12-03 20:27               ` ceph code review Sage Weil
2009-12-03 20:31                 ` Andrew Morton
2009-12-03 21:22                   ` Randy Dunlap
2009-09-30  0:13           ` [PATCH 05/21] ceph: super.c Andrew Morton
2009-09-30  0:02         ` [PATCH 04/21] ceph: ref counted buffer Andrew Morton
2009-09-22 18:08       ` [PATCH 03/21] ceph: client types Joe Perches
2009-09-29 23:57       ` Andrew Morton [this message]
2009-09-30 17:41         ` Sage Weil
2009-09-22 18:01     ` [PATCH 02/21] ceph: on-wire types Joe Perches
2009-09-22 18:21       ` Sage Weil
2009-09-29 23:52     ` Andrew Morton
2009-09-30 17:40       ` Sage Weil
  -- strict thread matches above, loose matches on Subject: below --
2009-10-05 22:50 [PATCH 00/21] ceph distributed file system client Sage Weil
2009-10-05 22:50 ` [PATCH 01/21] ceph: documentation Sage Weil
2009-10-05 22:50   ` [PATCH 02/21] ceph: on-wire types Sage Weil
2009-10-05 22:50     ` [PATCH 03/21] ceph: client types Sage Weil

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=20090929165758.1b7df6c9.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sage@newdream.net \
    --cc=yehuda@newdream.net \
    /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.