From e023a38dc3dc7c91a0c0d4bd127675893e9b4788 Mon Sep 17 00:00:00 2001 From: Matheus Date: Tue, 30 Jul 2024 20:29:39 -0300 Subject: [PATCH] vioblk: possible fix for a bug and remove unused slab cache --- kernel-src/io/block/vioblk.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/kernel-src/io/block/vioblk.c b/kernel-src/io/block/vioblk.c index e9e3067a..30f63eaf 100644 --- a/kernel-src/io/block/vioblk.c +++ b/kernel-src/io/block/vioblk.c @@ -36,7 +36,6 @@ typedef struct { #define HEADER_TYPE_WRITE 1 static hashtable_t inttable; // int id -> vioblkdev -static scache_t *headercache; static void vioblk_dpc(context_t *context, dpcarg_t arg) { vioblkdev_t *blkdev = arg; @@ -85,12 +84,13 @@ static void vioblk_enqueue(vioblkdev_t *blkdev, void *driver, size_t driverlen, buffers[idx + OTHER_BUFFER].length = devicelen; buffers[idx + OTHER_BUFFER].flags = VIO_QUEUE_BUFFER_DEVICE; - size_t driveridx = VIO_QUEUE_DRV_IDX(&blkdev->queue)++; + size_t driveridx = VIO_QUEUE_DRV_IDX(&blkdev->queue); VIO_QUEUE_DRV_RING(&blkdev->queue)[driveridx % blkdev->queue.size] = idx; sched_preparesleep(false); blkdev->queuewaiting[idx] = _cpu()->thread; + ++VIO_QUEUE_DRV_IDX(&blkdev->queue); *blkdev->queue.notify = 0; spinlock_release(&blkdev->queuelock); @@ -198,6 +198,4 @@ int vioblk_newdevice(viodevice_t *viodevice) { void vioblk_init() { __assert(hashtable_init(&inttable, 10) == 0); - headercache = slab_newcache(sizeof(requestheader_t), 0, NULL, NULL); - __assert(headercache); }