[ENBD] 2.5.46 update
Tad Kollar
enbd@lists.community.tummy.com
Tue, 12 Nov 2002 13:25:59 -0500
> Now, is this a lockup, or an oops? No - scratch that. Are you running
> SMP? If not, then the fact that there's a spinlock ther is immaterial.
> If you are running SMP, then the spinlock may be the problem.
It's a lockup... running SMP (Tyan MPX mb, AthlonMP 2000+)
> If you are on SMP, can you change the call of nbd_end_request_lock to be
> just nbd_end_request? Or even better, replace the call in enbd.h to
> give some warning, thus ..
>
> static void nbd_end_request_lock(struct request *req) {
>
> // PTB the kernel has only 2 queues, read and write, and it uses
> // the cmd field to determine to which the req belongs. We add a
> // seqno to it in nbd_do_req, so we reestablish it here.
> static void rq_set_seqno(struct request *, int);
>
> rq_set_seqno(req, 0); // PTB Zero extra seqno info
> + if (spin_trylock(req->q->queue_lock) != 0) {
> + printk(KERN_ALERT "nbd: end_request_lock called with lock held!\n");
> + } else {
> + spin_unlock(req->q->queue_lock);
> + }
> end_request_lock( req, !req->errors );
> }
Thanks, I'll put that in and give it a try presently.
> And are you running a preemptible kernel? That's another kettle of
> fish.
No, that caused me too many problems in the past...