Re: scheduling with io_lock held in 2.4.6

Andrew Morton (akpm@zip.com.au)
Thu, 16 Aug 2001 17:08:26 -0700


"Peter T. Breuer" wrote:
>
> I've been plagued for a month by smp lockups in my block driver
> that I eventually deduced were due to somebody else scheduling while
> holding the io_request_lock spinlock.
>
> There's nothing so impressive as a direct test, so I put a test for
> the spinlock being held at the front of schedule(), and sure enough, it
> fires every 20s or so when I'm doing nothing in particular on the
> machine:
>
> Aug 17 01:36:42 xilofon kernel: Scheduling with io lock held in process 0
>
> doing a dd to /dev/null from the ide disk seems to trigger it, but from
> differnt contexts ...
>
> Aug 17 01:40:58 xilofon kernel: Scheduling with io lock held in process 0
> Aug 17 01:41:00 xilofon last message repeated 150 times
> Aug 17 01:41:00 xilofon kernel: Scheduling with io lock held in process 1139
> Aug 17 01:41:00 xilofon kernel: Scheduling with io lock held in process 0
> Aug 17 01:41:01 xilofon last message repeated 87 times
> Aug 17 01:41:01 xilofon kernel: Scheduling with io lock held in process 1141
> Aug 17 01:41:01 xilofon kernel: Scheduling with io lock held in process 0
>
> Surprise, 1139 and 1141 are klogd and syslogd respectively.
>
> Any suggestions as to how to track this further?

Replace the printk with a BUG(), feed the result into ksymooops.
Or use show_trace(0).

But if you're running SMP, scheduling with a lock held
is quite legal - it'll be held by another CPU. In that case
you'll need to record which CPU holds the lock.

Or just run the SMP kernel on a single CPU (boot with `nosmp')
and see if it still happens.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/