lkml.org 
[lkml]   [2005]   [Nov]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    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.

    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/

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