[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