From 07bc952cb9d72339e5aee3f37e8e8da3a63cf83e Mon Sep 17 00:00:00 2001 From: Francesco Cozzuto Date: Sat, 24 Jan 2026 11:53:38 +0100 Subject: [PATCH] Add fault injection of disk operations --- quakey/src/quakey.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/quakey/src/quakey.c b/quakey/src/quakey.c index 56c616a..0534e62 100644 --- a/quakey/src/quakey.c +++ b/quakey/src/quakey.c @@ -1695,6 +1695,10 @@ static int host_read(Host *host, int desc_idx, char *dst, int len) if (desc->type == DESC_SOCKET_C) { num = recv_inner(desc, dst, len); } else if (desc->type == DESC_FILE) { +#ifdef FAULT_INJECTION + uint64_t roll = sim_random(host->sim) % 1000; + if (roll == 0) return HOST_ERROR_IO; +#endif int ret = mockfs_read(&desc->file, dst, len); if (ret < 0) return mockfs_to_quakey_error(ret); @@ -1724,6 +1728,12 @@ static int host_write(Host *host, int desc_idx, char *src, int len) if (desc->type == DESC_SOCKET_C) { num = send_inner(desc, src, len); } else if (desc->type == DESC_FILE) { +#ifdef FAULT_INJECTION + uint64_t roll = sim_random(host->sim) % 1000; + if (roll == 0) return HOST_ERROR_IO; + if (roll == 1) return HOST_ERROR_NOSPC; + // TODO: inject corruptions +#endif int ret = mockfs_write(&desc->file, src, len); if (ret < 0) return mockfs_to_quakey_error(ret); @@ -1874,6 +1884,12 @@ static int host_fsync(Host *host, int desc_idx) if (desc->type != DESC_FILE) return HOST_ERROR_BADIDX; +#ifdef FAULT_INJECTION + uint64_t roll = sim_random(host->sim) % 100; + if (roll == 0) + return HOST_ERROR_IO; +#endif + int ret = mockfs_sync(&desc->file); if (ret < 0) return mockfs_to_quakey_error(ret);