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 10:57:34 -0600	[thread overview]
Message-ID: <50CF4EFE.4050003@inktank.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1212170841450.6695@cobra.newdream.net>

On 12/17/2012 10:45 AM, Sage Weil wrote:
> On Mon, 17 Dec 2012, Alex Elder wrote:
>> 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).
> 
> It sounds like RB_CLEAR_NODE is the right path.  From the commit message 
> it looks like rb_init_node() is broken and/or going away.  Let's just 
> switch to that?

Until you questioned it I actually hadn't looked deep enough to
know there was this good a reason to do the initialization...  It
was more that I prefer to see things initialized explicitly sort
of thing.

> And I guess we probably need to do the same in the request tree, too?

Yes I already have a patch put together for that.  I'll post it
shortly, I was waiting to hear back first.

					-Alex
> s
> 
>> 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 16:57 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
2012-12-17 16:45       ` Sage Weil
2012-12-17 16:57         ` Alex Elder [this message]
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=50CF4EFE.4050003@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.