From 2d07400f07469cadfe8dc60ec68dceea46e71eb6 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 10 Sep 2024 18:13:32 -0400 Subject: [PATCH] nvme_disk: Unlock the ReadLocker before notifying the IORequest. SetStatusAndNotify might call us back for more I/O, and we don't need (or want) to hold a read-lock for that. It will be acquired anew if necessary. --- src/add-ons/kernel/drivers/disk/nvme/nvme_disk.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/add-ons/kernel/drivers/disk/nvme/nvme_disk.cpp b/src/add-ons/kernel/drivers/disk/nvme/nvme_disk.cpp index 3522c89014..975b696053 100644 --- a/src/add-ons/kernel/drivers/disk/nvme/nvme_disk.cpp +++ b/src/add-ons/kernel/drivers/disk/nvme/nvme_disk.cpp @@ -780,6 +780,8 @@ nvme_disk_io(void* cookie, io_request* request) if (status != B_OK) TRACE_ERROR("I/O failed: %s\n", strerror(status)); + readLocker.Unlock(); + request->SetTransferredBytes(status != B_OK, (nvme_request.lba_start * block_size) - rounded_pos); request->SetStatusAndNotify(status);