Project

General

Profile

Bug #943

zio_interrupt ends up calling taskq_dispatch with TQ_SLEEP

Added by Rich Lowe over 8 years ago. Updated over 8 years ago.

Status:
Resolved
Priority:
High
Category:
zfs - Zettabyte File System
Start date:
2011-04-22
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage

Description

While digging through bug reports and such looking for hints toward an end-user deadlock, I happened upon a report suggesting that ZFS was calling taskq_dispatch with TQ_SLEEP while in interrupt context. Code inspection appears to bear this out.

The call chain ends up being: sdintr --> ... --> biodone --> vdev_disk_io_intr --> zio_interrupt --> zio_taskq_dispatch --> taskq_dispatch, where zio_taskq_dispatch explicitly ors TQ_SLEEP into any flags argument:
source:usr/src/uts/common/fs/zfs/zio.c#L1056


Related issues

Related to illumos gate - Feature #734: taskq_dispatch_prealloc() desiredResolved2011-02-16

Actions

History

#1

Updated by Garrett D'Amore over 8 years ago

  • Assignee set to Garrett D'Amore
  • Priority changed from Normal to High
  • Difficulty set to Medium
  • Tags set to needs-triage

I'll probably fix this as part of my changes for "prealloc'd" taskqs. This subsystem should never have to go to kmem.

#2

Updated by Garrett D'Amore over 8 years ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 100

Resolved in:

changeset: 13414:b42c1f0432b6
tag: tip
user: Garrett D'Amore <>
date: Wed Jul 27 07:13:44 2011 -0700
description:
734 taskq_dispatch_prealloc() desired
943 zio_interrupt ends up calling taskq_dispatch with TQ_SLEEP
Reviewed by: Albert Lee <>
Reviewed by: Richard Lowe <>
Reviewed by: Alexey Zaytsev <>
Reviewed by: Jason Brian King <>
Reviewed by: George Wilson <>
Reviewed by: Adam Leventhal <>
Approved by: Gordon Ross <>

Also available in: Atom PDF