All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Elder <elder@inktank.com>
To: Sage Weil <sage@inktank.com>
Cc: ceph-devel@vger.kernel.org
Subject: Re: [PATCH 5/9] libceph: init osd->o_node in create_osd()
Date: Mon, 17 Dec 2012 08:17:55 -0600	[thread overview]
Message-ID: <50CF2993.8050809@inktank.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1212141727390.14354@cobra.newdream.net>

On 12/14/2012 07:43 PM, Sage Weil wrote:
> We should drop this one, I think.  See upstream commit 
> 4c199a93a2d36b277a9fd209a0f2793f8460a215.  When we added the similar call 
> on teh request tree it caused some noise in linux-next and then got 
> removed.

Well, we need to initialize it.  In particular, there is a call
to RB_EMPTY_NODE() in __unregister_request() which assumes that
if a node is not in the tree, it has been initialized as it is
in RB_CLEAR_NODE().  Even if that's not a normal path (and even
if no current code path allows that condition), if we're using
RB_EMPTY_NODE() we need to be sure any node we'll pass is properly
set up or it's broken code.

So it's fine with me if we use RB_CLEAR_NODE() instead.  Or, we
could stop using RB_EMPTY_NODE() (but that's more work to verify).

The same goes for the event passed to __remove_event(), but that
should be fixed in a separate patch.

Please let me know what you think.

					-Alex

> sage
> 
> On Thu, 13 Dec 2012, Alex Elder wrote:
> 
>> It turns out to be harmless but the red-black node o_node in the
>> ceph osd structure is not initialized in create_osd().  Add a
>> call to rb_init_node() initialize it.
>>
>> Signed-off-by: Alex Elder <elder@inktank.com>
>> ---
>>  net/ceph/osd_client.c |    1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
>> index 60c74c1..470816c 100644
>> --- a/net/ceph/osd_client.c
>> +++ b/net/ceph/osd_client.c
>> @@ -642,6 +642,7 @@ static struct ceph_osd *create_osd(struct
>> ceph_osd_client *osdc, int onum)
>>  	atomic_set(&osd->o_ref, 1);
>>  	osd->o_osdc = osdc;
>>  	osd->o_osd = onum;
>> +	rb_init_node(&osd->o_node);
>>  	INIT_LIST_HEAD(&osd->o_requests);
>>  	INIT_LIST_HEAD(&osd->o_linger_requests);
>>  	INIT_LIST_HEAD(&osd->o_osd_lru);
>> -- 
>> 1.7.9.5
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>>


  reply	other threads:[~2012-12-17 14:17 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-13 16:57 [PATCH 0/9] ceph: re-post of bug fixes Alex Elder
2012-12-13 17:01 ` [PATCH 1/9] rbd: do not allow remove of mounted-on image Alex Elder
2012-12-15  1:19   ` Sage Weil
2012-12-13 17:01 ` [PATCH 2/9] ceph: don't reference req after put Alex Elder
2012-12-13 17:01 ` [PATCH 3/9] libceph: avoid using freed osd in __kick_osd_requests() Alex Elder
2012-12-15  1:23   ` Sage Weil
2012-12-13 17:01 ` [PATCH 4/9] rbd: get rid of RBD_MAX_SEG_NAME_LEN Alex Elder
2012-12-15  1:26   ` Sage Weil
2012-12-13 17:02 ` [PATCH 5/9] libceph: init osd->o_node in create_osd() Alex Elder
2012-12-15  1:43   ` Sage Weil
2012-12-17 14:17     ` Alex Elder [this message]
2012-12-17 16:45       ` Sage Weil
2012-12-17 16:57         ` Alex Elder
2012-12-13 17:02 ` [PATCH 6/9] rbd: remove linger unconditionally Alex Elder
2012-12-15  5:12   ` Sage Weil
2012-12-13 17:02 ` [PATCH 7/9] rbd: don't use ENOTSUPP Alex Elder
2012-12-15  5:12   ` Sage Weil
2012-12-13 17:02 ` [PATCH 8/9] rbd: fix ceph_pg_poolid_by_name() Alex Elder
2012-12-15  5:17   ` Sage Weil
2012-12-17 14:36     ` Alex Elder
2012-12-17 16:49       ` Sage Weil
2012-12-17 17:09         ` Alex Elder
2012-12-17 21:28           ` Alex Elder
2012-12-17 22:31             ` Alex Elder
2012-12-13 17:03 ` [PATCH 9/9] libceph: socket can close in any connection state Alex Elder
2012-12-15  5:18   ` 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=50CF2993.8050809@inktank.com \
    --to=elder@inktank.com \
    --cc=ceph-devel@vger.kernel.org \
    --cc=sage@inktank.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.