qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 2/3] ide: Set BSY bit during FLUSH


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH 2/3] ide: Set BSY bit during FLUSH
Date: Wed, 29 May 2013 14:46:37 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Am 29.05.2013 um 13:50 hat Andreas Färber geschrieben:
> Am 29.05.2013 13:34, schrieb Kevin Wolf:
> > From: Andreas Färber <address@hidden>
> > 
> > The implementation of the ATA FLUSH command invokes a flush at the block
> > layer, which may on raw files on POSIX entail a synchronous fdatasync().
> > This may in some cases take so long that the SLES 11 SP1 guest driver
> > reports I/O errors and filesystems get corrupted or remounted read-only.
> > 
> > Avoid this by setting BUSY_STAT, so that the guest is made aware we are
> > in the middle of an operation and no ATA commands are attempted to be
> > processed concurrently.
> > 
> > Addresses BNC#637297.
> > 
> > Suggested-by: Gonglei (Arei) <address@hidden>
> > Signed-off-by: Andreas Färber <address@hidden>
> > Signed-off-by: Kevin Wolf <address@hidden>
> > ---
> >  hw/ide/core.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/hw/ide/core.c b/hw/ide/core.c
> > index c7a8041..bf1ff18 100644
> > --- a/hw/ide/core.c
> > +++ b/hw/ide/core.c
> > @@ -795,6 +795,8 @@ static void ide_flush_cb(void *opaque, int ret)
> >  {
> >      IDEState *s = opaque;
> >  
> > +    s->status &= ~BUSY_STAT;
> > +
> >      if (ret < 0) {
> >          /* XXX: What sector number to set here? */
> >          if (ide_handle_rw_error(s, -ret, BM_STATUS_RETRY_FLUSH)) {
> 
> Didn't you want this hunk to be dropped?
> 
> But thanks for picking the patch up already.

Ah, right, dropped it now. Thanks.

Kevin



reply via email to

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