summaryrefslogtreecommitdiffstats
path: root/src/io_redir.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/io_redir.c')
-rw-r--r--src/io_redir.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/io_redir.c b/src/io_redir.c
index a8f85ca7..449a3e85 100644
--- a/src/io_redir.c
+++ b/src/io_redir.c
@@ -55,6 +55,7 @@ struct info_io_redir
list_redir_t *list_redir;
};
+static void *io_redir_pread_fast(disk_t *disk_car, void *buffer, const unsigned int count, const uint64_t offset);
static int io_redir_pread(disk_t *disk_car, void *buffer, const unsigned int count, const uint64_t offset);
static int io_redir_clean(disk_t *clean);
@@ -78,6 +79,7 @@ int io_redir_add_redir(disk_t *disk_car, const uint64_t org_offset, const unsign
disk_car->data=data;
disk_car->description=old_disk_car->description;
disk_car->pwrite=old_disk_car->pwrite;
+ disk_car->pread_fast=io_redir_pread_fast;
disk_car->pread=io_redir_pread;
disk_car->clean=io_redir_clean;
}
@@ -217,6 +219,13 @@ static int io_redir_pread(disk_t *disk_car, void *buffer, const unsigned int cou
return count;
}
+static void *io_redir_pread_fast(disk_t *disk, void *buffer, const unsigned int count, const uint64_t offset)
+{
+ if(io_redir_pread(disk, buffer, count, offset)==count)
+ return buffer;
+ return NULL;
+}
+
static int io_redir_clean(disk_t *disk_car)
{
if(disk_car->data)