[DragonFlyBSD - Submit #2468] (Closed) [PATCH] kernel -- nata: Move ata_finish to MPSAFE taskqueue.

Venkatesh Srinivas via Redmine bugtracker-admin at leaf.dragonflybsd.org
Mon Dec 10 18:22:56 PST 2012

Issue #2468 has been updated by Venkatesh Srinivas.

Status changed from New to Closed

Committed as cf5f86b6a177ae06633f7456d6414de7aca47f1b.
Submit #2468: [PATCH] kernel -- nata: Move ata_finish to MPSAFE taskqueue.

Author: Venkatesh Srinivas
Status: Closed
Priority: Normal
Target version: 

ata_finish() doesn't need the MP Lock; moving it from taskqueue_swi
to taskqueue_swi_mp will make sure it's not taken.

Note that taskqueue_swi(_mp) will be processed when this ithread
attempts to switch back to the thread it preempted. This means that
taskqueue_swi(_mp) processing exclude processing further interrupts
on the ithread while they're running. This may not be desirable and
is different than taskqueue_swi / swi_* / setsoft* in FreeBSD 4.x.
  sys/dev/disk/nata/ata-queue.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sys/dev/disk/nata/ata-queue.c b/sys/dev/disk/nata/ata-queue.c
index b1b96a3..157d5cf 100644
--- a/sys/dev/disk/nata/ata-queue.c
+++ b/sys/dev/disk/nata/ata-queue.c
@@ -285,8 +285,8 @@ ata_finish(struct ata_request *request)
  	/* put request on the proper taskqueue for completion */
  	/* XXX FreeBSD has some sort of bio_taskqueue code here */
          TASK_INIT(&request->task, 0, ata_completed, request);
-	ATA_DEBUG_RQ(request, "finish taskqueue_swi");
-	taskqueue_enqueue(taskqueue_swi, &request->task);
+	ATA_DEBUG_RQ(request, "finish taskqueue_swi_mp");
+	taskqueue_enqueue(taskqueue_swi_mp, &request->task);

-- vs

You have received this notification because you have either subscribed to it, or are involved in it.
To change your notification preferences, please click here: http://bugs.dragonflybsd.org/my/account

More information about the Submit mailing list