[GIT PULL] drbd-8.3 updates

From: Philipp Reisner
Date: Thu May 10 2012 - 08:25:51 EST


Hi Jens,

This are the updates we have in the drbd-8.3 tree. They are intended
for your "for-3.5/drivers" drivers branch.

These changes include one new feature:
* Allow detach from frozen backing devices with the new --force option;
configurable timeout for backing devices by the new disk-timeout option

And huge number of bug fixes:
* Fixed a write ordering problem on SyncTarget nodes for a write
to a block that gets resynced at the same time. The bug can
only be triggered with a device that has a firmware that
actually reorders writes to the same block
* Fixed a race between disconnect and receive_state, that could cause
a IO lockup
* Fixed resend/resubmit for requests with disk or network timeout
* Make sure that hard state changed do not disturb the connection
establishing process (I.e. detach due to an IO error). When the
bug was triggered it caused a retry in the connect process
* Postpone soft state changes to no disturb the connection
establishing process (I.e. becoming primary). When the bug
was triggered it could cause both nodes going into SyncSource state
* Fixed a refcount leak that could cause failures when trying to
unload a protocol family modules, that was used by DRBD
* Dedicated page pool for meta data IOs
* Deny normal detach (as opposed to --forced) if the user tries
to detach from the last UpToDate disk in the resource
* Fixed a possible protocol error that could be caused by
"unusual" BIOs.
* Enforce the disk-timeout option also on meta-data IO operations
* Implemented stable bitmap pages when we do a full write out of
the bitmap
* Fixed a rare compatibility issue with DRBD's older than 8.3.7
when negotiating the bio_size
* Fixed a rare race condition where an empty resync could stall with
if pause/unpause events happen in parallel
* Made the re-establishing of connections quicker, if it got a broken pipe
once. Previously there was a bug in the code caused it to waste the first
successful established connection after a broken pipe event.

PS: I am postponing the drbd-8.4 for mainline for one or two kernel
development cycles more (the ~400 patchets set).

Best regards,
Philipp

The following changes since commit 0b7877d4eea3f93e3dd941999522bbd8c538cb53:

Merge tag 'v3.4-rc5' into for-3.5/core (2012-05-01 14:29:55 +0200)

are available in the git repository at:

git@xxxxxxxxxxxx:linux-drbd for-jens

Andreas Gruenbacher (1):
drbd: drbd_nl_resize(): Fix missing put_ldev() on error path

Arne Redlich (1):
drbd: bm_page_async_io: properly initialize page->private

Cong Wang (1):
drbd: check MODULE for THIS_MODULE

David Howells (1):
DRBD: Fix comparison always false warning due to long/long long compare

Lars Ellenberg (31):
drbd: cosmetic: fix accidental division instead of modulo when pretty printing
drbd: spelling fix: too small
drbd: allow ping-timeout of up to 30 seconds
drbd: downgraded error printk to info
drbd: change some GFP_KERNEL to GFP_NOIO
drbd: fix "stalled" empty resync
drbd: fix harmless race to not trigger an ASSERT
drbd: fix spurious meta data IO "error"
drbd: send intermediate state change results to the peer
drbd: fix potential spinlock deadlock
drbd: fix race between disconnect and receive_state
drbd: Fix module refcount leak in drbd_accept()
drbd: add missing part_round_stats to _drbd_start_io_acct
drbd: fix potential data corruption and protocol error
drbd: remove now unused seq_num member from struct drbd_request
drbd: missing wakeup after drbd_rs_del_all
drbd: remove some very outdated comments
drbd: remove unused static helper function
drbd: don't pretend that barrier_nr == 0 was special
drbd: make OOS_HANDED_TO_NETWORK its own case
drbd: fix READ_RETRY_REMOTE_CANCELED to not complete if device is suspended
drbd: fix WRITE_ACKED_BY_PEER_AND_SIS to not set RQ_NET_DONE
drbd: move put_ldev from __req_mod() to the endio callback
drbd: fix resend/resubmit of frozen IO
drbd: fix race between drbdadm invalidate/verify and finishing resync
drbd: allow bitmap to change during writeout from resync_finished
drbd: add page pool to be used for meta data IO
drbd: use the newly introduced page pool for bitmap IO
drbd: remove unused define
drbd: introduce a bio_set to allocate housekeeping bios from
drbd: grammar fix in log message

Philipp Reisner (30):
drbd: Lower log priority for an event that is definitely not an error
drbd: Only print sanitize state's warnings, if the state change happens
drbd: Improve compatibility with drbd's older than 8.3.7
drbd: Keep a reference to barrier acked requests
drbd: Immediately allow completion of IOs, that wait for IO completions on a failed disk
drbd: moved md_io into mdev
drbd: Replaced md_io_mutex by an atomic: md_io_in_use
drbd: Implemented wait_until_done_or_disk_failure()
drbd: Keep a reference to the bio until the completion handler finished
drbd: Hold a reference to ldev while doing meta-data IO
drbd: Added a kref to bm_aio_ctx
drbd: Bitmap IO functions can now return prematurely if the disk breaks
drbd: Allow new IOs while the local disk in in FAILED state
drbd: Force flag for the detach operation
drbd: Implemented the disk-timeout option
drbd: Fixed current UUID generation
drbd: Consider that the no-data-condition could be in connected state
drbd: detach must not try to abort non-local requests from drbd-8.4
drbd: Cleanup all epoch objects upon connection loss
drbd: Bugfix for the connection behavior
drbd: Derive sync-UUIDs only from the bitmap-uuid if it is non-zero
drbd: Fixed a race condition between detach and start of resync
drbd: Fixed an obvious copy-n-paste mistake
drbd: Do not send state packets while lower than C_CONNECTED cstate
drbd: Consider the disk-timeout also for meta-data IO operations
drbd: Fix a potential race that could case data inconsistency
drbd: Fix a potential write ordering issue on SyncTarget nodes
drbd: Delay/reject other state changes while establishing a connection
drbd: Ensure that data_size is not 0 before using data_size-1 as index
drbd: Restore the request restart logic

drivers/block/drbd/drbd_actlog.c | 104 ++++++++---
drivers/block/drbd/drbd_bitmap.c | 146 +++++++++++----
drivers/block/drbd/drbd_int.h | 90 ++++++----
drivers/block/drbd/drbd_main.c | 357 +++++++++++++++++++++++++++---------
drivers/block/drbd/drbd_nl.c | 48 ++++-
drivers/block/drbd/drbd_proc.c | 2 +-
drivers/block/drbd/drbd_receiver.c | 95 ++++++++---
drivers/block/drbd/drbd_req.c | 132 +++++++++-----
drivers/block/drbd/drbd_req.h | 19 ++-
drivers/block/drbd/drbd_worker.c | 31 +++-
include/linux/drbd.h | 6 +-
include/linux/drbd_limits.h | 7 +-
include/linux/drbd_nl.h | 5 +-
13 files changed, 754 insertions(+), 288 deletions(-)

--
: Dipl-Ing Philipp Reisner
: LINBIT | Your Way to High Availability
: Tel: +43-1-8178292-50, Fax: +43-1-8178292-82
: http://www.linbit.com

DRBD(R) and LINBIT(R) are registered trademarks of LINBIT, Austria.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/