[lkml]   [2005]   [Nov]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [NBD] Use per-device semaphore instead of BKL
    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.

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-11-20 18:22    [W:0.022 / U:3.496 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site