From: John Snow <jsnow@redhat.com>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: kwolf@redhat.com, pbonzini@redhat.com, qemu-devel@nongnu.org,
qemu-block@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 06/16] ahci: record ncq failures
Date: Fri, 26 Jun 2015 14:27:39 -0400 [thread overview]
Message-ID: <558D999B.9090001@redhat.com> (raw)
In-Reply-To: <20150626153514.GC31186@stefanha-thinkpad.redhat.com>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
On 06/26/2015 11:35 AM, Stefan Hajnoczi wrote:
> On Mon, Jun 22, 2015 at 08:21:05PM -0400, John Snow wrote:
>> Handle NCQ failures for cases where we want to halt the VM on IO
>> errors.
>>
>> Signed-off-by: John Snow <jsnow@redhat.com> --- hw/ide/ahci.c
>> | 17 +++++++++++++++-- hw/ide/ahci.h | 1 + hw/ide/internal.h
>> | 1 + 3 files changed, 17 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 71b5085..a838317
>> 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -959,13 +959,25
>> @@ static void ncq_cb(void *opaque, int ret) return; }
>>
>> + ncq_tfs->halt = false;
>
> Why does halt need to be cleared here?
>
Might make more sense to clear it just on the beginning of every
command, in execute().
There's no strong reason here other than "If there's an error and it
should be set, it'll get reset again pretty soon." It's just a default
state.
I could move it from process to execute.
>> if (ret < 0) { - ncq_err(ncq_tfs); + bool is_read =
>> ncq_tfs->cmd == READ_FPDMA_QUEUED; + BlockErrorAction
>> action = blk_get_error_action(ide_state->blk, +
>> is_read, -ret); + if (action == BLOCK_ERROR_ACTION_STOP)
>> { + ncq_tfs->halt = true; +
>> ide_state->bus->error_status = IDE_RETRY_HBA; + } else if
>> (action == BLOCK_ERROR_ACTION_REPORT) { +
>> ncq_err(ncq_tfs); + } +
>> blk_error_action(ide_state->blk, action, is_read, -ret); } else
>> { ide_state->status = READY_STAT | SEEK_STAT; }
>>
>> - ncq_finish(ncq_tfs); + if (!ncq_tfs->halt) { +
>> ncq_finish(ncq_tfs); + } }
>>
>> static int is_ncq(uint8_t ata_cmd) @@ -1042,6 +1054,7 @@ static
>> void process_ncq_command(AHCIState *s, int port, uint8_t
>> *cmd_fis, }
>>
>> ncq_tfs->used = 1; + ncq_tfs->halt = false; ncq_tfs->drive =
>> ad; ncq_tfs->slot = slot; ncq_tfs->cmd = ncq_fis->command; diff
>> --git a/hw/ide/ahci.h b/hw/ide/ahci.h index 33607d7..47a3122
>> 100644 --- a/hw/ide/ahci.h +++ b/hw/ide/ahci.h @@ -262,6 +262,7
>> @@ typedef struct NCQTransferState { uint8_t cmd; int slot; int
>> used; + bool halt; } NCQTransferState;
>>
>> struct AHCIDevice { diff --git a/hw/ide/internal.h
>> b/hw/ide/internal.h index 7a4a86d..5abee19 100644 ---
>> a/hw/ide/internal.h +++ b/hw/ide/internal.h @@ -499,6 +499,7 @@
>> struct IDEDevice { #define IDE_RETRY_READ 0x20 #define
>> IDE_RETRY_FLUSH 0x40 #define IDE_RETRY_TRIM 0x80 +#define
>> IDE_RETRY_HBA 0x100
>
> Feel free to squash this patch together with the next one. It is
> hard to review in isolation since IDE_RETRY_HBA and ->halt aren't
> used yet.
>
Will do.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAEBCAAGBQJVjZmbAAoJEH3vgQaq/DkOPUAP/26368m3XEWpWLPePLnBOvS+
tFuUnYyrWyWdq9p9lNBPcz+v+//CAdISQ8bRZX4OS+f3W+uVB04yJc+N5igiFJCe
9f8+lnLnVO6nmNPzeKPhfigBPF8fc5tnmk4P9bSYUcEmTkdPb+HD8tbNh4l9euWl
0+uqGUhn7Gj1G8aZSZ7UNv+6Ru7SBrygnn/GlMrqrVcbTSW2uj6JmpT1xvdk1iU8
mh+j76JIBYRn2dZf4ZIHJW51x5Zijvsi04Rc8EfRDqiGZ/7HK9EQwwoZ5vUImo/d
vuSufuxISAGc5ECeGpb7fFyGbfl7Y2R+l+qipUsYZ704wTGdnkBMAst0E/NK5y8U
IHCv/5IR9lLp1qaAL0DSmkuaz6xeiBktKmy0lRT1Yq38ZK2RMCzgRPHTbsPGfF/Z
XhRkz5lgqJAdzJJNlvUDNI0jAepiREsBP4Oqi7FMaKq7ix3haSCH0k21JIJbAls5
yRNP9hUNh0Q30E/09h4/ZYRhoQTbvzZS2tLJ8zG1lB0dnIK0uML6SjO2mKbsWpN6
hPIYku04BtqDtPlRcfsOQwJ04bHHKh46PSEWaC0xCsvMVhGzWhs4FqMCxsKOvSMC
rAEYzgEWaJdZUMC+qp4RS8aX2yJP/nmHivEEb2vI6196jsXdqrdmYLBNHcL+Q6kY
bDrMjWdP5CbDUu7E4pAY
=kgU+
-----END PGP SIGNATURE-----
next prev parent reply other threads:[~2015-06-26 18:27 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-23 0:20 [Qemu-devel] [PATCH 00/16] ahci: ncq cleanup, part 2 John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 01/16] ide: add limit to .prepare_buf() John Snow
2015-06-26 14:32 ` Stefan Hajnoczi
2015-06-26 18:16 ` John Snow
2015-06-29 13:34 ` [Qemu-devel] [Qemu-block] " Stefan Hajnoczi
2015-06-29 18:52 ` John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 02/16] ahci: stash ncq command John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 03/16] ahci: assert is_ncq for process_ncq John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 04/16] ahci: refactor process_ncq_command John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 05/16] ahci: factor ncq_finish out of ncq_cb John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 06/16] ahci: record ncq failures John Snow
2015-06-26 15:35 ` Stefan Hajnoczi
2015-06-26 18:27 ` John Snow [this message]
2015-06-29 14:10 ` [Qemu-devel] [Qemu-block] " Stefan Hajnoczi
2015-06-29 14:24 ` Stefan Hajnoczi
2015-06-29 15:42 ` John Snow
2015-06-29 15:47 ` John Snow
2015-06-30 13:56 ` Stefan Hajnoczi
2015-06-23 0:21 ` [Qemu-devel] [PATCH 07/16] ahci: kick NCQ queue John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 08/16] ahci: correct types in NCQTransferState John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 09/16] ahci: correct ncq sector count John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 10/16] qtest/ahci: halted NCQ test John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 11/16] ahci: add cmd header to ncq transfer state John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 12/16] ahci: ncq migration John Snow
2015-06-26 15:48 ` Stefan Hajnoczi
2015-06-26 16:46 ` John Snow
2015-06-29 14:25 ` [Qemu-devel] [Qemu-block] " Stefan Hajnoczi
2015-06-23 0:21 ` [Qemu-devel] [PATCH 13/16] ahci: add get_cmd_header helper John Snow
2015-06-26 15:51 ` Stefan Hajnoczi
2015-06-26 18:32 ` John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 14/16] ahci: Do not map cmd_fis to generate response John Snow
2015-06-26 15:59 ` Stefan Hajnoczi
2015-06-26 17:31 ` John Snow
2015-06-29 14:51 ` Stefan Hajnoczi
2015-06-29 15:07 ` John Snow
2015-06-30 14:50 ` Stefan Hajnoczi
2015-06-23 0:21 ` [Qemu-devel] [PATCH 15/16] qtest/ahci: halted ncq migration test John Snow
2015-06-23 0:21 ` [Qemu-devel] [PATCH 16/16] ahci: fix sdb fis semantics John Snow
2015-06-26 16:11 ` Stefan Hajnoczi
2015-06-26 17:36 ` John Snow
2015-06-29 14:52 ` [Qemu-devel] [Qemu-block] " Stefan Hajnoczi
2015-06-26 16:11 ` [Qemu-devel] [PATCH 00/16] ahci: ncq cleanup, part 2 Stefan Hajnoczi
2015-06-26 19:27 ` John Snow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=558D999B.9090001@redhat.com \
--to=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).