Re: [NBD] Use per-device semaphore instead of BKL
From: Paul Clements (paul.clements_at_steeleye.com)
Date: 11/20/05
- Previous message: Linus Torvalds: "Re: [git pull 00/14] Input updates for 2.6.15"
- In reply to: Herbert Xu: "[NBD] Use per-device semaphore instead of BKL"
- Next in thread: Herbert Xu: "Re: [NBD] Use per-device semaphore instead of BKL"
- Reply: Herbert Xu: "Re: [NBD] Use per-device semaphore instead of BKL"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sun, 20 Nov 2005 12:19:17 -0500 To: Herbert Xu <herbert@gondor.apana.org.au>
Herbert Xu wrote:
> On Sun, Nov 20, 2005 at 09:34:19AM +1100, herbert wrote:
>
>>This is intentional actually. nbd_clear_queue never races against
>>nbd_find_request because the ioctl is protected by the BKL. If it
>>weren't, then we have much worse problems to worry about (e.g.,
>>while you're clearing the queue someone else could have set the
>>socket again and started queueing requests).
>
>
> Actually, we do have bigger problems :) The BKL is dropped every
> time you sleep, and nbd_do_it is definitely a frequent sleeper :)
The dropping of the lock in nbd_do_it is actually critical to the way
nbd functions. nbd_do_it runs for the lifetime of the nbd device, so if
nbd_do_it were holding some lock (BKL or otherwise), we'd have big problems.
> This isn't really an issue in practice though because the NBD
> client program is single-threaded and doesn't share its file
> descriptors with anyone else.
Right, there's no problem in practice.
> However, we shouldn't make it too easy for the user to shoot himself
> in the foot. If he's going to do that, let him at least pay for the
> bullet :)
>
> So here is a patch to use a per-device semaphore instead of the
> BKL to protect the ioctl's against each other.
The problem with this patch is that no ioctls can come in once nbd_do_it
starts because nbd_do_it runs for the lifetime of the device.
I think we really just need to add the acquiring of queue_lock in
nbd_clear_que to your previous patch and leave it at that. I'll code
that up and test it.
Thanks,
Paul
-
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/
- Previous message: Linus Torvalds: "Re: [git pull 00/14] Input updates for 2.6.15"
- In reply to: Herbert Xu: "[NBD] Use per-device semaphore instead of BKL"
- Next in thread: Herbert Xu: "Re: [NBD] Use per-device semaphore instead of BKL"
- Reply: Herbert Xu: "Re: [NBD] Use per-device semaphore instead of BKL"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|
|