diff --git a/kernel-src/include/kernel/vfs.h b/kernel-src/include/kernel/vfs.h index bd0c390c..2d02f370 100644 --- a/kernel-src/include/kernel/vfs.h +++ b/kernel-src/include/kernel/vfs.h @@ -98,11 +98,27 @@ typedef struct vops_t { int (*resize)(vnode_t *node, size_t newsize, cred_t *cred); } vops_t; +#define VFS_INIT(v, o, f) \ + (v)->next = NULL; \ + (v)->ops = o; \ + (v)->nodecovered = NULL; \ + (v)->root = NULL; \ + (v)->flags = f; + #define VFS_MOUNT(vfs, mp, b, d) (vfs)->ops->mount(vfs, mp, b, d) #define VFS_UNMOUNT(vfs) (vfs)->ops->unmount(vfs) #define VFS_ROOT(vfs, r) (vfs)->ops->root(vfs, r) #define VFS_SYNC(vfs) (vfs)->ops->sync(vfs) +#define VOP_INIT(vn, o, f, t, v) \ + (vn)->ops = o; \ + SPINLOCK_INIT((vn)->lock); \ + (vn)->refcount = 1; \ + (vn)->flags = f; \ + (vn)->type = t; \ + (vn)->vfs = v; \ + (vn)->vfsmounted = NULL; + #define VOP_LOCK(v) spinlock_acquire(&(v)->lock) #define VOP_UNLOCK(v) spinlock_release(&(v)->lock) @@ -130,7 +146,7 @@ typedef struct vops_t { #define VOP_RELEASE(v) {\ if (__atomic_sub_fetch(&(v)->refcount, 1, __ATOMIC_SEQ_CST) == 0) {\ (v)->ops->inactive(v); \ - v = NULL; \ + (v) = NULL; \ } \ } diff --git a/kernel-src/io/block/nvme.c b/kernel-src/io/block/nvme.c index 89a94d06..f299b69c 100644 --- a/kernel-src/io/block/nvme.c +++ b/kernel-src/io/block/nvme.c @@ -438,7 +438,7 @@ static int createiosubqueue(nvmecontroller_t *controller, queuedesc_t *desc, siz entrypair_t pair = {0}; PAIR_INIT(&pair, SUB_DW0_OPCODE_CREATEIOSUBQUEUE, SUB_DW0_UNFUSED, SUB_DW0_PRP, 0); - size_t size = entrycount * sizeof(compentry_t); + size_t size = entrycount * sizeof(subentry_t); size_t pagesize = ROUND_UP(size, PAGE_SIZE) / PAGE_SIZE; void *queuepages = pmm_alloc(pagesize, PMM_SECTION_DEFAULT);