ref: ca929c334fedc59fc1240b2c64b887082ef331f2
parent: 8e31146d45d0612b82a5438012e6ed03be3995a9
author: Noam Preil <noam@pixelhero.dev>
date: Thu Jul 4 17:04:43 EDT 2024
disk: return error to client on read failure
--- a/disk.c
+++ b/disk.c
@@ -68,8 +68,10 @@
bucket -= s_sect->start;
u16int key = s_sect->cacheindex + (bucket >> 16);
if(!cachelookup((char**)&buf, key, bucket & 0xffff)){
- if(pread(s_sect->fd, (char*)buf, s_sect->blocksize, s_sect->blockbase + (bucket << s_sect->blocklog)) != s_sect->blocksize)
- sysfatal("Failed to read bucket");
+ if(pread(s_sect->fd, (char*)buf, s_sect->blocksize, s_sect->blockbase + (bucket << s_sect->blocklog)) != s_sect->blocksize){
+ werrstr("Failed to read bucket");
+ return 0;
+ }
}
if(s_sect->bucketmagic && U32GET(buf + 2) != s_sect->bucketmagic)
sysfatal("index is corrupt: invalid bucket magic: sect %ux, buck %ux", s_sect->bucketmagic, U32GET(buf + 2));
--
⑨