Re: [PATCH] net/ceph/osd_client.c add sem to osdmap destroy

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

 



On Wed, 20 Jun 2012, Guan Jun He wrote:
> 
> 
> >>> On 6/19/2012 at 11:33 PM, in message
> <Pine.LNX.4.64.1206190828510.21853@xxxxxxxxxxxxxxxxxx>, Sage Weil
> <sage@xxxxxxxxxxx> wrote: 
> > [Sorry for not responding earlier!]
> > 
> > On Tue, 19 Jun 2012, Guan Jun He wrote:
> >> Hi,
> >> 
> >>   Do you think this is needed? 
> >> The osdmap update need to hold this sem.As in function 
> >> void ceph_osdc_handle_map(struct ceph_osd_client *osdc, struct ceph_msg 
> > *msg)
> >> and 
> >> function static int __map_request(), 
> >> etc.
> > 
> > I'm skeptical that this is necessary.  At the point that we're tearing 
> > down the osd_client there shouldn't be anybody else referencing us, or the 
> > osdmap.
> > 
> > Actually, looking at the code a bit, I think the only kind of race we need 
> > to worry about is an incoming message.  The correct fix is probably a call 
> > to the messenger to drop all incoming traffic before we start to shut 
> > everything else down.  Even with this, we might still end up with a new 
> > osdmap that we leak, but stopping the msgr earlier would fix both issues.
> 
> Yes, stopping the msgr earlier is a better fix.
> I will do some test and produce a new patch to this.

Ok.  The trick here is that I think we want to set a flag to discard 
incoming messages and then flush the workqueue, do all this other 
tear down for osd_client etc., and then tear down the messenger.  I don't 
think we can tear down the msgr fully before that, though, because 
osd_client etc have their fingers in it.  We just need to prevent the race 
of incoming work during teardown...

Thanks for looking at this!
sage

> thanks,
> Guanjun
> 
> 
> 
> 
> > 
> > sage
> > 
> >> 
> >> Thanks a lot for your reply!
> >> 
> >> thanks,
> >> Guanjun
> >> 
> >> >>> On 6/15/2012 at 04:32 PM, in message
> >> <1339749120-7007-1-git-send-email-gjhe@xxxxxxxx>, Guanjun He
> >> <heguanbo@xxxxxxxxx> wrote: 
> >> > From: Guanjun He <heguanbo@xxxxxxxxx>
> >> > 
> >> > 	I think the osdmap destroy code shoule be protected by map_sem.
> >> > If I was wrong, please correct me, thanks!
> >> > 
> >> > Signed-off-by: Guanjun He <gjhe@xxxxxxxx>
> >> > ---
> >> >  net/ceph/osd_client.c |    2 ++
> >> >  1 files changed, 2 insertions(+), 0 deletions(-)
> >> > 
> >> > diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
> >> > index 1ffebed..718b100 100644
> >> > --- a/net/ceph/osd_client.c
> >> > +++ b/net/ceph/osd_client.c
> >> > @@ -1872,11 +1872,13 @@ void ceph_osdc_stop(struct ceph_osd_client *osdc)
> >> >  	destroy_workqueue(osdc->notify_wq);
> >> >  	cancel_delayed_work_sync(&osdc->timeout_work);
> >> >  	cancel_delayed_work_sync(&osdc->osds_timeout_work);
> >> > +	down_write(&osdc->map_sem);
> >> >  	if (osdc->osdmap) {
> >> >  		ceph_osdmap_destroy(osdc->osdmap);
> >> >  		osdc->osdmap = NULL;
> >> >  	}
> >> >  	remove_all_osds(osdc);
> >> > +	up_write(&osdc->map_sem);
> >> >  	mempool_destroy(osdc->req_mempool);
> >> >  	ceph_msgpool_destroy(&osdc->msgpool_op);
> >> >  	ceph_msgpool_destroy(&osdc->msgpool_op_reply);
> >> 
> >> 
> >> 
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux