03 Jun, 2010

1 commit


29 Apr, 2008

2 commits

  • Since already tests for __GNUC__, there's no point in nbd.h
    repeating that test.

    Signed-off-by: Robert P. J. Day
    Cc: Paul Clements
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Robert P. J. Day
     
  • This patch allows Network Block Device to be mounted locally (nbd-client to
    nbd-server over 127.0.0.1).

    It creates a kthread to avoid the deadlock described in NBD tools
    documentation. So, if nbd-client hangs waiting for pages, the kblockd thread
    can continue its work and free pages.

    I have tested the patch to verify that it avoids the hang that always occurs
    when writing to a localhost nbd connection. I have also tested to verify that
    no performance degradation results from the additional thread and queue.

    Patch originally from Laurent Vivier.

    Signed-off-by: Paul Clements
    Signed-off-by: Laurent Vivier
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Laurent Vivier
     

09 Feb, 2008

1 commit


17 Oct, 2007

1 commit

  • Allow NBD I/O to be cancelled when a network outage occurs. Previously, I/O
    would just hang, and if enough I/O was hung in nbd, the system (at least
    user-level) would completely hang until a TCP timeout (default, 15 minutes)
    occurred.

    The patch introduces a new ioctl NBD_SET_TIMEOUT that allows a transmit
    timeout value (in seconds) to be specified. Any network send that exceeds the
    timeout will be cancelled and the nbd connection will be shut down. I've
    tested with various timeout values and 6 seconds seems to be a good choice for
    the timeout. If the NBD_SET_TIMEOUT ioctl is not called, you get the old (I/O
    hang) behavior.

    Signed-off-by: Paul Clements
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Clements
     

08 Dec, 2006

1 commit

  • Allow nbd to expose the nbd-client daemon's PID in /sys/block/nbd/pid.

    This is helpful for tracking connection status of a device and for
    determining which nbd devices are currently in use.

    Signed-off-by: Paul Clements
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Clements
     

12 Oct, 2006

1 commit


26 Jun, 2006

1 commit


04 May, 2006

1 commit


23 Mar, 2006

1 commit

  • Semaphore to mutex conversion.

    The conversion was generated via scripts, and the result was validated
    automatically via a script as well.

    Signed-off-by: Ingo Molnar
    Cc: Paul Clements
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     

07 Jan, 2006

1 commit

  • Janos Haar of First NetCenter Bt. reported numerous crashes involving the
    NBD driver. With his help, this was tracked down to bogus bio vectors
    which in turn was the result of a race condition between the
    receive/transmit routines in the NBD driver.

    The bug manifests itself like this:

    CPU0 CPU1
    do_nbd_request
    add req to queuelist
    nbd_send_request
    send req head
    for each bio
    kmap
    send
    nbd_read_stat
    nbd_find_request
    nbd_end_request
    kunmap

    When CPU1 finishes nbd_end_request, the request and all its associated
    bio's are freed. So when CPU0 calls kunmap whose argument is derived from
    the last bio, it may crash.

    Under normal circumstances, the race occurs only on the last bio. However,
    if an error is encountered on the remote NBD server (such as an incorrect
    magic number in the request), or if there were a bug in the server, it is
    possible for the nbd_end_request to occur any time after the request's
    addition to the queuelist.

    The following patch fixes this problem by making sure that requests are not
    added to the queuelist until after they have been completed transmission.

    In order for the receiving side to be ready for responses involving
    requests still being transmitted, the patch introduces the concept of the
    active request.

    When a response matches the current active request, its processing is
    delayed until after the tranmission has come to a stop.

    This has been tested by Janos and it has been successful in curing this
    race condition.

    From: Herbert Xu

    Here is an updated patch which removes the active_req wait in
    nbd_clear_queue and the associated memory barrier.

    I've also clarified this in the comment.

    Signed-off-by: Herbert Xu
    Cc:
    Cc: Paul Clements
    Signed-off-by: Herbert Xu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Herbert Xu
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds