Re: scheduling with io_lock held in 2.4.6

From: Andrew Morton (akpm@zip.com.au)
Date: Thu Aug 16 2001 - 19:08:26 EST


"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/



This archive was generated by hypermail 2b29 : Thu Aug 23 2001 - 21:00:19 EST