freeipmi-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Freeipmi-devel] ipmiconsole_engine_teardown does not seem to block


From: Levi Pearson
Subject: Re: [Freeipmi-devel] ipmiconsole_engine_teardown does not seem to block as advertised
Date: Thu, 28 Jun 2007 10:31:36 -0600

On Thu, 2007-06-28 at 09:19 -0700, Al Chu wrote:

> I really view the engine and the contexts as two separate "objects" the
> user is responsible for.  The user "creates" each context and thus is
> responsible for "destroying" each one.  The user "inits" the engine and
> responsible for "destroying" it as well. (Perhaps the function names
> aren't clear?  Should be "init" and "cleanup"??  "bringup" and
> "teardown"??)
> 
> But I can see how you (and others) might have been confused, thinking
> after you "submit" a context to the engine, the engine is responsible
> for destroying it.  Was this the confusion?
> 
> I should definitely make this more clear if it was confusing.

No, this isn't confusing at all.  I only started wondering if the engine
teardown might destroy the contexts as well when I started looking
through the code and headers and saw that it was supposedly blocking
until the sessions stopped.

> 
> > > This is fine--I can call ipmi_ctx_destroy() on them afterwards--but if I
> > > call ipmiconsole_engine_teardown() I have no way of knowing when the
> > > contexts have all closed their sessions so that I know it's safe to
> > > start cleaning them all up so I don't get failures due to active
> > > sessions.
> 
> If you are witnessing that IPMI sessions are not closed after after
> ipmiconsole_engine_teardown()?  Or just that the ipmi contexts are not
> destroyed?  The later is ok, the former is not ok.  Looking at the code
> again, the logic I put in there indicates that the engine_teardown
> should not return until each ipmi session closes or times out.  

I was calling ipmiconsole_engine_teardown(), which I was assuming would
block until the sessions all closed.  At which point I assumed that
calling ipmi_ctx_destroy() would succeed.  In my most recent test, I
call ipmiconsole_engine_teardown() followed by a spinning call to
ipmi_ctx_destroy() for each context, but they never do succeed.  I'm
guessing that instead of just calling ipmiconsole_engine_teardown(), I'm
going to have to loop over all the contexts and close their file
descriptors, then do the ipmi_ctx_destroy() calls, then do
ipmiconsole_engine_teardown().  It would be handy to have a call that
does trigger the closing of all sessions such that ipmi_ctx_destroy()
will work on them afterward, though.


                --Levi





reply via email to

[Prev in Thread] Current Thread [Next in Thread]