13 Jan, 2012

1 commit


05 Nov, 2011

1 commit

  • * 'for-3.2/core' of git://git.kernel.dk/linux-block: (29 commits)
    block: don't call blk_drain_queue() if elevator is not up
    blk-throttle: use queue_is_locked() instead of lockdep_is_held()
    blk-throttle: Take blkcg->lock while traversing blkcg->policy_list
    blk-throttle: Free up policy node associated with deleted rule
    block: warn if tag is greater than real_max_depth.
    block: make gendisk hold a reference to its queue
    blk-flush: move the queue kick into
    blk-flush: fix invalid BUG_ON in blk_insert_flush
    block: Remove the control of complete cpu from bio.
    block: fix a typo in the blk-cgroup.h file
    block: initialize the bounce pool if high memory may be added later
    block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown
    block: drop @tsk from attempt_plug_merge() and explain sync rules
    block: make get_request[_wait]() fail if queue is dead
    block: reorganize throtl_get_tg() and blk_throtl_bio()
    block: reorganize queue draining
    block: drop unnecessary blk_get/put_queue() in scsi_cmd_ioctl() and blk_get_tg()
    block: pass around REQ_* flags instead of broken down booleans during request alloc/free
    block: move blk_throtl prototypes to block/blk.h
    block: fix genhd refcounting in blkio_policy_parse_and_set()
    ...

    Fix up trivial conflicts due to "mddev_t" -> "struct mddev" conversion
    and making the request functions be of type "void" instead of "int" in
    - drivers/md/{faulty.c,linear.c,md.c,md.h,multipath.c,raid0.c,raid1.c,raid10.c,raid5.c}
    - drivers/staging/zram/zram_drv.c

    Linus Torvalds
     

19 Oct, 2011

1 commit


15 Sep, 2011

4 commits


12 Sep, 2011

1 commit

  • There is very little benefit in allowing to let a ->make_request
    instance update the bios device and sector and loop around it in
    __generic_make_request when we can archive the same through calling
    generic_make_request from the driver and letting the loop in
    generic_make_request handle it.

    Note that various drivers got the return value from ->make_request and
    returned non-zero values for errors.

    Signed-off-by: Christoph Hellwig
    Acked-by: NeilBrown
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     

02 Aug, 2011

1 commit


30 Jun, 2011

7 commits


26 May, 2011

1 commit

  • * 'for-2.6.40/drivers' of git://git.kernel.dk/linux-2.6-block: (110 commits)
    loop: handle on-demand devices correctly
    loop: limit 'max_part' module param to DISK_MAX_PARTS
    drbd: fix warning
    drbd: fix warning
    drbd: Fix spelling
    drbd: fix schedule in atomic
    drbd: Take a more conservative approach when deciding max_bio_size
    drbd: Fixed state transitions after async outdate-peer-handler returned
    drbd: Disallow the peer_disk_state to be D_OUTDATED while connected
    drbd: Fix for the connection problems on high latency links
    drbd: fix potential activity log refcount imbalance in error path
    drbd: Only downgrade the disk state in case of disk failures
    drbd: fix disconnect/reconnect loop, if ping-timeout == ping-int
    drbd: fix potential distributed deadlock
    lru_cache.h: fix comments referring to ts_ instead of lc_
    drbd: Fix for application IO with the on-io-error=pass-on policy
    xen/p2m: Add EXPORT_SYMBOL_GPL to the M2P override functions.
    xen/p2m/m2p/gnttab: Support GNTMAP_host_map in the M2P override.
    xen/blkback: don't fail empty barrier requests
    xen/blkback: fix xenbus_transaction_start() hang caused by double xenbus_transaction_end()
    ...

    Linus Torvalds
     

24 May, 2011

13 commits

  • In file included from drivers/block/drbd/drbd_main.c:54: drivers/block/drbd/drbd_int.h:1190: warning: parameter has incomplete type

    Forward declarations of enums do not work.

    Fix it unpleasantly by moving the prototype.

    Cc: Jens Axboe
    Signed-off-by: Lars Ellenberg
    Signed-off-by: Philipp Reisner
    Signed-off-by: Andrew Morton

    Andrew Morton
     
  • Signed-off-by: Philipp Reisner

    Philipp Reisner
     
  • Found these with the help of ispell -l.

    Signed-off-by: Bart Van Assche
    Signed-off-by: Lars Ellenberg
    Signed-off-by: Philipp Reisner

    Bart Van Assche
     
  • An administrative detach used to request a state change directly to D_DISKLESS,
    first suspending IO to avoid the last put_ldev() occuring from an endio handler,
    potentially in irq context.

    This is not enough on the receiving side (typically secondary), we may miss
    some peer_req on the way to local disk, which then may do the last put_ldev()
    from their drbd_peer_request_endio().

    This patch makes the detach always go through the intermediate D_FAILED state.
    We may consider to rename it D_DETACHING.

    Alternative approach would be to create yet an other work item to be scheduled
    on the worker, do the destructor work from there, and get the timing right.

    manually picked commit 564040f from the drbd 8.4 branch.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Lars Ellenberg
     
  • The old (optimistic) implementation could shrink the bio size
    on an primary device.

    Shrinking the bio size on a primary device is bad. Since there
    we might get BIOs with the old (bigger) size shortly after
    we published the new size.

    The new implementation is more conservative, and eventually
    increases the max_bio_size on a primary device (which is valid).
    It does so, when it knows the local limit AND the remote limit.

    We cache the last seen max_bio_size of the peer in the meta
    data, and rely on that, to make the operation of single
    nodes more efficient.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • It seems that the real cause of all the issues where that
    we did not noticed in drbd_try_connect() when the other
    guy closes one socket if the round trip time gets higher
    than 100ms. There were that 100ms hard coded!

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • It is no longer sufficient to trigger on local WRITE,
    we need to check on (rq_state & RQ_IN_ACT_LOG)
    before calling drbd_al_complete_io also in the error path.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Lars Ellenberg
     
  • Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • If there is no replication traffic within the idle timeout
    (ping-int seconds), DRBD will send a P_PING,
    and adjust the timeout to ping-timeout.

    If there is no P_PING_ACK received within this ping-timeout,
    DRBD finally drops the connection, and tries to re-establish it.

    To decide which timeout was active, we compared the current timeout
    with the ping-timeout, and dropped the connection, if that was the case.

    By default, ping-int is 10 seconds, ping-timeout is 500 ms.

    Unfortunately, if you configure ping-timeout to be the same as ping-int,
    expiry of the idle-timeout had been mistaken for a missing ping ack,
    and caused an immediate reconnection attempt.

    Fix:
    Allow both timeouts to be equal, use a local variable
    to store which timeout is active.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Lars Ellenberg
     
  • We limit ourselves to a configurable maximum number of pages used as
    temporary bio pages.

    If the configured "max_buffers" is not big enough to match the bandwidth
    of the respective deployment, a distributed deadlock could be triggered
    by e.g. fast online verify and heavy application IO.

    TCP connections would block on congestion, because both receivers
    would wait on pages to become available.

    Fortunately the respective senders in this case would be able to give
    back some pages already. So do that.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Lars Ellenberg
     
  • In case a write failes on the local disk, go into D_INCONSISTENT
    disk state. That causes future reads of that block to be shipped
    to the peer.

    Read retry remote was already in place.

    Actually the documentation needs to get fixed now. Since the
    application is still shielded from the error. (as long as we have
    only a single disk failing) The difference to detach is that
    we keep the disk. And therefore might keep all the other, still
    working sectors up to date.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     

23 May, 2011

1 commit

  • After discovering that wide use of prefetch on modern CPUs
    could be a net loss instead of a win, net drivers which were
    relying on the implicit inclusion of prefetch.h via the list
    headers showed up in the resulting cleanup fallout. Give
    them an explicit include via the following $0.02 script.

    =========================================
    #!/bin/bash
    MANUAL=""
    for i in `git grep -l 'prefetch(.*)' .` ; do
    grep -q '' $i
    if [ $? = 0 ] ; then
    continue
    fi

    ( echo '?^#include '
    echo .
    echo w
    echo q
    ) | ed -s $i > /dev/null 2>&1
    if [ $? != 0 ]; then
    echo $i needs manual fixup
    MANUAL="$i $MANUAL"
    fi
    done
    echo ------------------- 8\
    [ Fixed up some incorrect #include placements, and added some
    non-network drivers and the fib_trie.c case - Linus ]
    Signed-off-by: Linus Torvalds

    Paul Gortmaker
     

31 Mar, 2011

1 commit


28 Mar, 2011

2 commits

  • In commit 95a0f10cddbf ("drbd: store in-core bitmap little endian,
    regardless of architecture") drbd had made the sane choice to use
    little-endian bitmap functions everywhere. However, it used the
    horrible old functions names from , that were
    never really meant to be exported.

    In the meantime, things got cleaned up, and in commit c4945b9ed472
    ("asm-generic: rename generic little-endian bitops functions") we
    renamed the LE bitops to something sane, exactly so that they could be
    used in random code without people gouging their eyes out when seeing
    the crazy jumble of letters that were the old internal names.

    As a result the drbd thing merged cleanly (commit 8d49a77568d1: "Merge
    branch 'for-2.6.39/drivers' of git://git.kernel.dk/linux-2.6-block"),
    since there was no data conflict - but the end result obviously doesn't
    actually compile.

    Reported-and-tested-by: Ingo Molnar
    Cc: Jens Axboe
    Cc: Stephen Rothwell
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * 'for-2.6.39/drivers' of git://git.kernel.dk/linux-2.6-block: (122 commits)
    cciss: fix lost command issue
    drbd: need include for bitops functions declarations
    Revert "cciss: Add missing allocation in scsi_cmd_stack_setup and corresponding deallocation"
    cciss: fix missed command status value CMD_UNABORTABLE
    cciss: remove unnecessary casts
    cciss: Mask off error bits of c->busaddr in cmd_special_free when calling pci_free_consistent
    cciss: Inform controller we are using 32-bit tags.
    cciss: hoist tag masking out of loop
    cciss: Add missing allocation in scsi_cmd_stack_setup and corresponding deallocation
    cciss: export resettable host attribute
    drbd: drop code present under #ifdef which is relevant to 2.6.28 and below
    drbd: Fixed handling of read errors on a 'VerifyS' node
    drbd: Fixed handling of read errors on a 'VerifyT' node
    drbd: Implemented real timeout checking for request processing time
    drbd: Remove unused function atodb_endio()
    drbd: improve log message if received sector offset exceeds local capacity
    drbd: kill dead code
    drbd: don't BUG_ON, if bio_add_page of a single page to an empty bio fails
    drbd: Removed left over, now wrong comments
    drbd: serialize admin requests for new verify run with pending bitmap io
    ...

    Linus Torvalds
     

25 Mar, 2011

1 commit

  • * 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block: (65 commits)
    Documentation/iostats.txt: bit-size reference etc.
    cfq-iosched: removing unnecessary think time checking
    cfq-iosched: Don't clear queue stats when preempt.
    blk-throttle: Reset group slice when limits are changed
    blk-cgroup: Only give unaccounted_time under debug
    cfq-iosched: Don't set active queue in preempt
    block: fix non-atomic access to genhd inflight structures
    block: attempt to merge with existing requests on plug flush
    block: NULL dereference on error path in __blkdev_get()
    cfq-iosched: Don't update group weights when on service tree
    fs: assign sb->s_bdi to default_backing_dev_info if the bdi is going away
    block: Require subsystems to explicitly allocate bio_set integrity mempool
    jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging
    jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging
    fs: make fsync_buffers_list() plug
    mm: make generic_writepages() use plugging
    blk-cgroup: Add unaccounted time to timeslice_used.
    block: fixup plugging stubs for !CONFIG_BLOCK
    block: remove obsolete comments for blkdev_issue_zeroout.
    blktrace: Use rq->cmd_flags directly in blk_add_trace_rq.
    ...

    Fix up conflicts in fs/{aio.c,super.c}

    Linus Torvalds
     

17 Mar, 2011

1 commit


10 Mar, 2011

4 commits