much more stable now but still I/O errors when copying large volumes

This commit is contained in:
Markus Fröschle
2013-05-13 19:41:55 +00:00
parent f722fff16c
commit 3f2c9e5877
2 changed files with 6 additions and 9 deletions

View File

@@ -103,7 +103,6 @@ static uint8_t xchg_spi(uint8_t byte)
fifo = MCF_DSPI_DRFR; fifo = MCF_DSPI_DRFR;
MCF_DSPI_DSR = 0xffffffff;
res = fifo & 0xff; res = fifo & 0xff;
return res; return res;
} }

View File

@@ -126,20 +126,18 @@ uint32_t xhdi_read_write(uint16_t major, uint16_t minor, uint16_t rwflag,
if (major == MY_MAJOR) if (major == MY_MAJOR)
{ {
do { do {
num_sectors = ((s_count > 127) ? 127 : s_count); num_sectors = ((s_count > 128) ? 128 : s_count);
retries = 0; retries = 0;
do { do {
ret = ((rwflag & 1) ? disk_write(0, buf, recno, num_sectors) : disk_read(0, buf, recno, num_sectors)); ret = ((rwflag & 1) ? disk_write(0, buf, recno, num_sectors) : disk_read(0, buf, recno, num_sectors));
if (ret != RES_OK && retries > max_retries) if (ret != RES_OK)
{
xprintf("error: %d\r\n", ret);
return ERROR;
}
else if (ret != RES_OK)
{ {
retries++; retries++;
continue; if (retries < max_retries) continue;
xprintf("error: %d\r\n", ret);
return ERROR;
} }
} while (retries < max_retries && ret != RES_OK); } while (retries < max_retries && ret != RES_OK);