summaryrefslogtreecommitdiffstats
path: root/cpukit/libblock/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libblock/src')
-rw-r--r--cpukit/libblock/src/bdbuf.c25
-rw-r--r--cpukit/libblock/src/flashdisk.c6
-rw-r--r--cpukit/libblock/src/nvdisk.c8
-rw-r--r--cpukit/libblock/src/ramdisk-driver.c6
4 files changed, 15 insertions, 30 deletions
diff --git a/cpukit/libblock/src/bdbuf.c b/cpukit/libblock/src/bdbuf.c
index 81f641ec33..8fb3848b16 100644
--- a/cpukit/libblock/src/bdbuf.c
+++ b/cpukit/libblock/src/bdbuf.c
@@ -1871,10 +1871,8 @@ rtems_bdbuf_get (rtems_disk_device *dd,
* @param status I/O completion status
*/
static void
-rtems_bdbuf_transfer_done (void* arg, rtems_status_code status)
+rtems_bdbuf_transfer_done (rtems_blkdev_request* req, rtems_status_code status)
{
- rtems_blkdev_request* req = (rtems_blkdev_request*) arg;
-
req->status = status;
rtems_event_transient_send (req->io_task);
@@ -1886,7 +1884,6 @@ rtems_bdbuf_execute_transfer_request (rtems_disk_device *dd,
bool cache_locked)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
- int result = 0;
uint32_t transfer_index = 0;
bool wake_transfer_waiters = false;
bool wake_buffer_waiters = false;
@@ -1894,15 +1891,12 @@ rtems_bdbuf_execute_transfer_request (rtems_disk_device *dd,
if (cache_locked)
rtems_bdbuf_unlock_cache ();
- result = dd->ioctl (dd->phys_dev, RTEMS_BLKIO_REQUEST, req);
+ /* The return value will be ignored for transfer requests */
+ dd->ioctl (dd->phys_dev, RTEMS_BLKIO_REQUEST, req);
- if (result == 0)
- {
- rtems_bdbuf_wait_for_transient_event ();
- sc = req->status;
- }
- else
- sc = RTEMS_IO_ERROR;
+ /* Wait for transfer request completion */
+ rtems_bdbuf_wait_for_transient_event ();
+ sc = req->status;
rtems_bdbuf_lock_cache ();
@@ -1977,10 +1971,8 @@ rtems_bdbuf_execute_read_request (rtems_disk_device *dd,
sizeof (rtems_blkdev_sg_buffer) * transfer_count);
req->req = RTEMS_BLKDEV_REQ_READ;
- req->req_done = rtems_bdbuf_transfer_done;
- req->done_arg = req;
+ req->done = rtems_bdbuf_transfer_done;
req->io_task = rtems_task_self ();
- req->status = RTEMS_RESOURCE_IN_USE;
req->bufnum = 0;
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);
@@ -2655,8 +2647,7 @@ rtems_bdbuf_swapout_writereq_alloc (void)
rtems_fatal_error_occurred (RTEMS_BLKDEV_FATAL_BDBUF_SO_NOMEM);
write_req->req = RTEMS_BLKDEV_REQ_WRITE;
- write_req->req_done = rtems_bdbuf_transfer_done;
- write_req->done_arg = write_req;
+ write_req->done = rtems_bdbuf_transfer_done;
write_req->io_task = rtems_task_self ();
return write_req;
diff --git a/cpukit/libblock/src/flashdisk.c b/cpukit/libblock/src/flashdisk.c
index ec1ace2aee..a9e56c938f 100644
--- a/cpukit/libblock/src/flashdisk.c
+++ b/cpukit/libblock/src/flashdisk.c
@@ -2086,8 +2086,7 @@ rtems_fdisk_read (rtems_flashdisk* fd, rtems_blkdev_request* req)
}
}
- req->status = ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL;
- req->req_done (req->done_arg, req->status);
+ rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
return 0;
}
@@ -2122,8 +2121,7 @@ rtems_fdisk_write (rtems_flashdisk* fd, rtems_blkdev_request* req)
}
}
- req->status = ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL;
- req->req_done (req->done_arg, req->status);
+ rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
return 0;
}
diff --git a/cpukit/libblock/src/nvdisk.c b/cpukit/libblock/src/nvdisk.c
index c90f319693..127291df71 100644
--- a/cpukit/libblock/src/nvdisk.c
+++ b/cpukit/libblock/src/nvdisk.c
@@ -597,10 +597,9 @@ rtems_nvdisk_read (rtems_nvdisk* nvd, rtems_blkdev_request* req)
}
}
- req->status = ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL;
- req->req_done (req->done_arg, req->status);
+ rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
- return ret;
+ return 0;
}
/**
@@ -637,8 +636,7 @@ rtems_nvdisk_write (rtems_nvdisk* nvd, rtems_blkdev_request* req)
}
}
- req->status = ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL;
- req->req_done (req->done_arg, req->status);
+ rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
return 0;
}
diff --git a/cpukit/libblock/src/ramdisk-driver.c b/cpukit/libblock/src/ramdisk-driver.c
index fb4a80fe97..881b7df2a5 100644
--- a/cpukit/libblock/src/ramdisk-driver.c
+++ b/cpukit/libblock/src/ramdisk-driver.c
@@ -67,8 +67,7 @@ ramdisk_read(struct ramdisk *rd, rtems_blkdev_request *req)
#endif
memcpy(sg->buffer, from + (sg->block * rd->block_size), sg->length);
}
- req->status = RTEMS_SUCCESSFUL;
- req->req_done(req->done_arg, RTEMS_SUCCESSFUL);
+ rtems_blkdev_request_done (req, RTEMS_SUCCESSFUL);
return 0;
}
@@ -92,8 +91,7 @@ ramdisk_write(struct ramdisk *rd, rtems_blkdev_request *req)
#endif
memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
}
- req->status = RTEMS_SUCCESSFUL;
- req->req_done(req->done_arg, RTEMS_SUCCESSFUL);
+ rtems_blkdev_request_done (req, RTEMS_SUCCESSFUL);
return 0;
}