Re: [Nbd] NBD Super Size io operations
- To: Paul Clements <paul.clements@...856...>
- Cc: "nbd-general@lists.sourceforge.net" <nbd-general@lists.sourceforge.net>, Rohan Sharma <rickyrohan14@...58...>
- Subject: Re: [Nbd] NBD Super Size io operations
- From: Michal Belczyk <belczyk@...1274...>
- Date: Tue, 9 Apr 2013 17:42:17 +0200
- Message-id: <20130409154216.GC67997@...1273...>
- In-reply-to: <CAECXXi59Zea8BVLER3S9Kf=uJ3pikuUxzO1QG_wQUVQqs6axAg@...18...>
- References: <BAY403-EAS415E8D3A1CC43EB4134B824DADE0@...59...> <CAECXXi5ouWsq09pxTGzDeYP+Q6eLF4+SbBRDKShVcUXm13Oi4g@...18...> <20130401202523.GR14908@...1273...> <20130402140706.GI30504@...855...> <20130403193632.GY30504@...855...> <20130407215919.GB67997@...1273...> <CAECXXi5fiTnfgcHhmW_A84nwXUhvvCX_CZf1QLzydSG09hZ6Pw@...18...> <CAECXXi59Zea8BVLER3S9Kf=uJ3pikuUxzO1QG_wQUVQqs6axAg@...18...>
On Mon, Apr 08, 2013 at 05:19:02PM -0400, Paul Clements wrote:
> On Mon, Apr 8, 2013 at 4:17 PM, Paul Clements <paul.clements@...856...> wrote:
> > On Sun, Apr 7, 2013 at 5:59 PM, Michal Belczyk <belczyk@...1274...> wrote:
> >
> >> Paul, is there a chance for this and _the_ ERESTARTSYS patches got into
> >> 3.9?
> >
> > You were copied on the submit to Andrew for the max_sectors change.
> > That one's still pending.
> >
> > The ERESTARTSYS one we were discussing here. I don't think that just
> > restarting the wait_event when we get a signal is the right approach.
> > It wouldn't allow the signal to be handled in all cases -- it happens
> > to work in the SIGCHLD case that we saw, since we don't really need to
> > handle that. But if nbd-client is sent a SIGKILL, for instance, it
> > should die. Just restarting the wait_event_interruptible doesn't allow
> > that. I think masking signals before we enter the NBD_DO_IT ioctl is
> > probably a better approach.
>
> If you do something like the following in nbd-client just before the
> call to NBD_DO_IT, does this fix the problem:
>
>
> + sigfillset(&block);
> + sigdelset(&block, SIGKILL);
> + sigprocmask(SIG_SETMASK, &block, &old);
> if (ioctl(nbd, NBD_DO_IT) < 0)
>
> (block and old are sigset_t).
>
> Could anyone who's seeing the problem test that?
I ran some benchmarks which were previously triggering this bug with
this patch applied and the driver patch reverted and it does seem to be working
fine.
Folkert, you had a repro to trigger this failure set up, right?
Could you confirm?
Thanks!
--
Michal Belczyk Sr.
Reply to: