* [Drbd-dev] [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window
@ 2012-11-09 11:36 ` Philipp Reisner
0 siblings, 0 replies; 18+ messages in thread
From: Philipp Reisner @ 2012-11-09 11:36 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-kernel, drbd-dev
Hi Jens,
Please pull drbd-8.4.2 into your for-3.8/drivers branch.
The most noticeable change is the support for multiple replicated
volumes in a single DRBD connection.
This release requires new drbd userland tools >= 8.4.0 (available
since July 2011).
8.4.x is network protocol compatible with all previous releaes.
This release brings a new meta-data format. Forward (8.3 -> 8.4)
conversion happens complete seamless. Backward conversion
is done by a single command (drbdadm apply-al res).
The "recent changes" chapter of our user's guide describes all
changes in detail:
http://www.drbd.org/users-guide/ap-recent-changes.html
Changelog
8.4.2 (api:genl1/proto:86-100)
--------
* Go into inconsistent disk state with on-io-error=pass-on policy
* Timeouts for requests processing on the peer (previously that
worked only if the data socket was congested)
* Conflicting write detection is now based on an interval tree,
removed the hash-tables (necessary for the unlimited BIO sizes)
* Support for multiple volumes (minors, block devices) per connection;
up to 65536 volumes per connection supported
* Reduced IO latencies during some state changes (esp. start resync)
* New on disk format for the AL: double capacity; 4k aligned IO; same space
* Multiple AL changes in a single transaction (precondition for
unlimited BIO sizes)
* DRBD no longer imposes any limit on BIO sizes
* Removed DRBD's limits on the number of minor devices
* DRBD's minors can now be removed (not only unconfigured)
* Switched the user space interface form connector to generic netlink
* The wire-protocol is now a regular connection option, which can be
changed while the device is online
* IO freezing/thawing is done on connection (all volumes) level
* fencing is done on connection (all volumes) level
* Enforce application of activity log after primary crash in user space
* New default values (compared to drbd-8.3) for: minor-count, ko-count, al-extents,
c-plan-ahead, c-fill-target, c-min-rate, use-rle, on-io-error
* Optional load balancing for read requests: new keyword "read-balance"
* New option 'al-updates no' to disable writing transactions into the
activity log. It is use full if you prefer a full sync after a primary
crash, for improved performance of a spread out random write work load
* Expose the data generation identifies via sysfs
Jens, regarding the code:
It has the sysfs bits in again. The reason for that is that we want to
expose more information by that, and remove the /proc/drbd with the
next evolutionary step. -- In case this is a show stopper, let me
remove the sysfs bits.
Here is the git-pull-request test:
(The patch subjects removed to make the mail more digestible)
The following changes since commit ccae7868b0c5697508a541c531cf96b361d62c1c:
drbd: log request sector offset and size for IO errors (2012-10-30 08:39:18 +0100)
are available in the git repository at:
git://git.drbd.org/linux-drbd.git for-jens_drbd-8.4.2
for you to fetch changes up to e877f7fdc0b1052b0e881e61f9290268eb21aa2f:
drbd: use copy_highpage (2012-11-09 12:06:44 +0100)
----------------------------------------------------------------
Akinobu Mita (1):
drbd: use copy_highpage
Andreas Gruenbacher (210):
drbd: Get rid of req_validator_fn typedef
[...]
David Howells (1):
DRBD: Fix comparison always false warning due to long/long long compare
Jing Wang (1):
drbd: check return of kmalloc in receive_uuids
Lars Ellenberg (138):
drbd: simplify condition in drbd_may_do_local_read()
[...]
Philipp Marek (1):
drbd: pass some more information to userspace.
Philipp Reisner (234):
idr: idr_for_each_entry() macro
[...]
drivers/block/drbd/Makefile | 2 +
drivers/block/drbd/drbd_actlog.c | 689 +++----
drivers/block/drbd/drbd_bitmap.c | 227 ++-
drivers/block/drbd/drbd_int.h | 1399 ++++++-------
drivers/block/drbd/drbd_interval.c | 207 ++
drivers/block/drbd/drbd_interval.h | 40 +
drivers/block/drbd/drbd_main.c | 3918 ++++++++++++++----------------------
drivers/block/drbd/drbd_nl.c | 3391 ++++++++++++++++++-------------
drivers/block/drbd/drbd_nla.c | 55 +
drivers/block/drbd/drbd_nla.h | 8 +
drivers/block/drbd/drbd_proc.c | 33 +-
drivers/block/drbd/drbd_receiver.c | 3883 ++++++++++++++++++++---------------
drivers/block/drbd/drbd_req.c | 1569 +++++++--------
drivers/block/drbd/drbd_req.h | 187 +-
drivers/block/drbd/drbd_state.c | 1857 +++++++++++++++++
drivers/block/drbd/drbd_state.h | 161 ++
drivers/block/drbd/drbd_strings.c | 1 +
drivers/block/drbd/drbd_sysfs.c | 86 +
drivers/block/drbd/drbd_worker.c | 1168 ++++++-----
drivers/block/drbd/drbd_wrappers.h | 11 +-
include/linux/drbd.h | 81 +-
include/linux/drbd_genl.h | 378 ++++
include/linux/drbd_genl_api.h | 55 +
include/linux/drbd_limits.h | 90 +-
include/linux/drbd_nl.h | 164 --
include/linux/drbd_tag_magic.h | 84 -
include/linux/genl_magic_func.h | 422 ++++
include/linux/genl_magic_struct.h | 277 +++
include/linux/idr.h | 11 +
include/linux/lru_cache.h | 67 +-
lib/lru_cache.c | 359 ++--
31 files changed, 12238 insertions(+), 8642 deletions(-)
create mode 100644 drivers/block/drbd/drbd_interval.c
create mode 100644 drivers/block/drbd/drbd_interval.h
create mode 100644 drivers/block/drbd/drbd_nla.c
create mode 100644 drivers/block/drbd/drbd_nla.h
create mode 100644 drivers/block/drbd/drbd_state.c
create mode 100644 drivers/block/drbd/drbd_state.h
create mode 100644 drivers/block/drbd/drbd_sysfs.c
create mode 100644 include/linux/drbd_genl.h
create mode 100644 include/linux/drbd_genl_api.h
delete mode 100644 include/linux/drbd_nl.h
delete mode 100644 include/linux/drbd_tag_magic.h
create mode 100644 include/linux/genl_magic_func.h
create mode 100644 include/linux/genl_magic_struct.h
Best regards,
Philipp
^ permalink raw reply [flat|nested] 18+ messages in thread* [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window @ 2012-11-09 11:36 ` Philipp Reisner 0 siblings, 0 replies; 18+ messages in thread From: Philipp Reisner @ 2012-11-09 11:36 UTC (permalink / raw) To: Jens Axboe; +Cc: drbd-dev, linux-kernel Hi Jens, Please pull drbd-8.4.2 into your for-3.8/drivers branch. The most noticeable change is the support for multiple replicated volumes in a single DRBD connection. This release requires new drbd userland tools >= 8.4.0 (available since July 2011). 8.4.x is network protocol compatible with all previous releaes. This release brings a new meta-data format. Forward (8.3 -> 8.4) conversion happens complete seamless. Backward conversion is done by a single command (drbdadm apply-al res). The "recent changes" chapter of our user's guide describes all changes in detail: http://www.drbd.org/users-guide/ap-recent-changes.html Changelog 8.4.2 (api:genl1/proto:86-100) -------- * Go into inconsistent disk state with on-io-error=pass-on policy * Timeouts for requests processing on the peer (previously that worked only if the data socket was congested) * Conflicting write detection is now based on an interval tree, removed the hash-tables (necessary for the unlimited BIO sizes) * Support for multiple volumes (minors, block devices) per connection; up to 65536 volumes per connection supported * Reduced IO latencies during some state changes (esp. start resync) * New on disk format for the AL: double capacity; 4k aligned IO; same space * Multiple AL changes in a single transaction (precondition for unlimited BIO sizes) * DRBD no longer imposes any limit on BIO sizes * Removed DRBD's limits on the number of minor devices * DRBD's minors can now be removed (not only unconfigured) * Switched the user space interface form connector to generic netlink * The wire-protocol is now a regular connection option, which can be changed while the device is online * IO freezing/thawing is done on connection (all volumes) level * fencing is done on connection (all volumes) level * Enforce application of activity log after primary crash in user space * New default values (compared to drbd-8.3) for: minor-count, ko-count, al-extents, c-plan-ahead, c-fill-target, c-min-rate, use-rle, on-io-error * Optional load balancing for read requests: new keyword "read-balance" * New option 'al-updates no' to disable writing transactions into the activity log. It is use full if you prefer a full sync after a primary crash, for improved performance of a spread out random write work load * Expose the data generation identifies via sysfs Jens, regarding the code: It has the sysfs bits in again. The reason for that is that we want to expose more information by that, and remove the /proc/drbd with the next evolutionary step. -- In case this is a show stopper, let me remove the sysfs bits. Here is the git-pull-request test: (The patch subjects removed to make the mail more digestible) The following changes since commit ccae7868b0c5697508a541c531cf96b361d62c1c: drbd: log request sector offset and size for IO errors (2012-10-30 08:39:18 +0100) are available in the git repository at: git://git.drbd.org/linux-drbd.git for-jens_drbd-8.4.2 for you to fetch changes up to e877f7fdc0b1052b0e881e61f9290268eb21aa2f: drbd: use copy_highpage (2012-11-09 12:06:44 +0100) ---------------------------------------------------------------- Akinobu Mita (1): drbd: use copy_highpage Andreas Gruenbacher (210): drbd: Get rid of req_validator_fn typedef [...] David Howells (1): DRBD: Fix comparison always false warning due to long/long long compare Jing Wang (1): drbd: check return of kmalloc in receive_uuids Lars Ellenberg (138): drbd: simplify condition in drbd_may_do_local_read() [...] Philipp Marek (1): drbd: pass some more information to userspace. Philipp Reisner (234): idr: idr_for_each_entry() macro [...] drivers/block/drbd/Makefile | 2 + drivers/block/drbd/drbd_actlog.c | 689 +++---- drivers/block/drbd/drbd_bitmap.c | 227 ++- drivers/block/drbd/drbd_int.h | 1399 ++++++------- drivers/block/drbd/drbd_interval.c | 207 ++ drivers/block/drbd/drbd_interval.h | 40 + drivers/block/drbd/drbd_main.c | 3918 ++++++++++++++---------------------- drivers/block/drbd/drbd_nl.c | 3391 ++++++++++++++++++------------- drivers/block/drbd/drbd_nla.c | 55 + drivers/block/drbd/drbd_nla.h | 8 + drivers/block/drbd/drbd_proc.c | 33 +- drivers/block/drbd/drbd_receiver.c | 3883 ++++++++++++++++++++--------------- drivers/block/drbd/drbd_req.c | 1569 +++++++-------- drivers/block/drbd/drbd_req.h | 187 +- drivers/block/drbd/drbd_state.c | 1857 +++++++++++++++++ drivers/block/drbd/drbd_state.h | 161 ++ drivers/block/drbd/drbd_strings.c | 1 + drivers/block/drbd/drbd_sysfs.c | 86 + drivers/block/drbd/drbd_worker.c | 1168 ++++++----- drivers/block/drbd/drbd_wrappers.h | 11 +- include/linux/drbd.h | 81 +- include/linux/drbd_genl.h | 378 ++++ include/linux/drbd_genl_api.h | 55 + include/linux/drbd_limits.h | 90 +- include/linux/drbd_nl.h | 164 -- include/linux/drbd_tag_magic.h | 84 - include/linux/genl_magic_func.h | 422 ++++ include/linux/genl_magic_struct.h | 277 +++ include/linux/idr.h | 11 + include/linux/lru_cache.h | 67 +- lib/lru_cache.c | 359 ++-- 31 files changed, 12238 insertions(+), 8642 deletions(-) create mode 100644 drivers/block/drbd/drbd_interval.c create mode 100644 drivers/block/drbd/drbd_interval.h create mode 100644 drivers/block/drbd/drbd_nla.c create mode 100644 drivers/block/drbd/drbd_nla.h create mode 100644 drivers/block/drbd/drbd_state.c create mode 100644 drivers/block/drbd/drbd_state.h create mode 100644 drivers/block/drbd/drbd_sysfs.c create mode 100644 include/linux/drbd_genl.h create mode 100644 include/linux/drbd_genl_api.h delete mode 100644 include/linux/drbd_nl.h delete mode 100644 include/linux/drbd_tag_magic.h create mode 100644 include/linux/genl_magic_func.h create mode 100644 include/linux/genl_magic_struct.h Best regards, Philipp ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Drbd-dev] [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window 2012-11-09 11:36 ` Philipp Reisner @ 2012-11-09 11:40 ` Jens Axboe -1 siblings, 0 replies; 18+ messages in thread From: Jens Axboe @ 2012-11-09 11:40 UTC (permalink / raw) To: Philipp Reisner; +Cc: linux-kernel, drbd-dev On 2012-11-09 12:36, Philipp Reisner wrote: > Hi Jens, > > Please pull drbd-8.4.2 into your for-3.8/drivers branch. > > The most noticeable change is the support for multiple replicated > volumes in a single DRBD connection. > > This release requires new drbd userland tools >= 8.4.0 (available > since July 2011). > 8.4.x is network protocol compatible with all previous releaes. > This release brings a new meta-data format. Forward (8.3 -> 8.4) > conversion happens complete seamless. Backward conversion > is done by a single command (drbdadm apply-al res). > > The "recent changes" chapter of our user's guide describes all > changes in detail: > http://www.drbd.org/users-guide/ap-recent-changes.html > > Changelog > > 8.4.2 (api:genl1/proto:86-100) > -------- > * Go into inconsistent disk state with on-io-error=pass-on policy > * Timeouts for requests processing on the peer (previously that > worked only if the data socket was congested) > * Conflicting write detection is now based on an interval tree, > removed the hash-tables (necessary for the unlimited BIO sizes) > * Support for multiple volumes (minors, block devices) per connection; > up to 65536 volumes per connection supported > * Reduced IO latencies during some state changes (esp. start resync) > * New on disk format for the AL: double capacity; 4k aligned IO; same space > * Multiple AL changes in a single transaction (precondition for > unlimited BIO sizes) > * DRBD no longer imposes any limit on BIO sizes > * Removed DRBD's limits on the number of minor devices > * DRBD's minors can now be removed (not only unconfigured) > * Switched the user space interface form connector to generic netlink > * The wire-protocol is now a regular connection option, which can be > changed while the device is online > * IO freezing/thawing is done on connection (all volumes) level > * fencing is done on connection (all volumes) level > * Enforce application of activity log after primary crash in user space > * New default values (compared to drbd-8.3) for: minor-count, ko-count, al-extents, > c-plan-ahead, c-fill-target, c-min-rate, use-rle, on-io-error > * Optional load balancing for read requests: new keyword "read-balance" > * New option 'al-updates no' to disable writing transactions into the > activity log. It is use full if you prefer a full sync after a primary > crash, for improved performance of a spread out random write work load > * Expose the data generation identifies via sysfs > > > Jens, regarding the code: > > It has the sysfs bits in again. The reason for that is that we want to > expose more information by that, and remove the /proc/drbd with the > next evolutionary step. -- In case this is a show stopper, let me > remove the sysfs bits. The exact same sysfs bits I complained about last time? If yes, then I don't understand why you haven't changed yet. Or why you are trying to push the same bits again that got rejected last time. > Here is the git-pull-request test: > (The patch subjects removed to make the mail more digestible) Please don't do that, it basically makes the pull request useless! A few hundred extra lines is not an issue. -- Jens Axboe ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window @ 2012-11-09 11:40 ` Jens Axboe 0 siblings, 0 replies; 18+ messages in thread From: Jens Axboe @ 2012-11-09 11:40 UTC (permalink / raw) To: Philipp Reisner; +Cc: drbd-dev, linux-kernel On 2012-11-09 12:36, Philipp Reisner wrote: > Hi Jens, > > Please pull drbd-8.4.2 into your for-3.8/drivers branch. > > The most noticeable change is the support for multiple replicated > volumes in a single DRBD connection. > > This release requires new drbd userland tools >= 8.4.0 (available > since July 2011). > 8.4.x is network protocol compatible with all previous releaes. > This release brings a new meta-data format. Forward (8.3 -> 8.4) > conversion happens complete seamless. Backward conversion > is done by a single command (drbdadm apply-al res). > > The "recent changes" chapter of our user's guide describes all > changes in detail: > http://www.drbd.org/users-guide/ap-recent-changes.html > > Changelog > > 8.4.2 (api:genl1/proto:86-100) > -------- > * Go into inconsistent disk state with on-io-error=pass-on policy > * Timeouts for requests processing on the peer (previously that > worked only if the data socket was congested) > * Conflicting write detection is now based on an interval tree, > removed the hash-tables (necessary for the unlimited BIO sizes) > * Support for multiple volumes (minors, block devices) per connection; > up to 65536 volumes per connection supported > * Reduced IO latencies during some state changes (esp. start resync) > * New on disk format for the AL: double capacity; 4k aligned IO; same space > * Multiple AL changes in a single transaction (precondition for > unlimited BIO sizes) > * DRBD no longer imposes any limit on BIO sizes > * Removed DRBD's limits on the number of minor devices > * DRBD's minors can now be removed (not only unconfigured) > * Switched the user space interface form connector to generic netlink > * The wire-protocol is now a regular connection option, which can be > changed while the device is online > * IO freezing/thawing is done on connection (all volumes) level > * fencing is done on connection (all volumes) level > * Enforce application of activity log after primary crash in user space > * New default values (compared to drbd-8.3) for: minor-count, ko-count, al-extents, > c-plan-ahead, c-fill-target, c-min-rate, use-rle, on-io-error > * Optional load balancing for read requests: new keyword "read-balance" > * New option 'al-updates no' to disable writing transactions into the > activity log. It is use full if you prefer a full sync after a primary > crash, for improved performance of a spread out random write work load > * Expose the data generation identifies via sysfs > > > Jens, regarding the code: > > It has the sysfs bits in again. The reason for that is that we want to > expose more information by that, and remove the /proc/drbd with the > next evolutionary step. -- In case this is a show stopper, let me > remove the sysfs bits. The exact same sysfs bits I complained about last time? If yes, then I don't understand why you haven't changed yet. Or why you are trying to push the same bits again that got rejected last time. > Here is the git-pull-request test: > (The patch subjects removed to make the mail more digestible) Please don't do that, it basically makes the pull request useless! A few hundred extra lines is not an issue. -- Jens Axboe ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Drbd-dev] [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window 2012-11-09 11:40 ` Jens Axboe @ 2012-11-09 12:42 ` Philipp Reisner -1 siblings, 0 replies; 18+ messages in thread From: Philipp Reisner @ 2012-11-09 12:42 UTC (permalink / raw) To: Jens Axboe; +Cc: linux-kernel, drbd-dev [...] > > It has the sysfs bits in again. The reason for that is that we want to > > expose more information by that, and remove the /proc/drbd with the > > next evolutionary step. -- In case this is a show stopper, let me > > remove the sysfs bits. > > The exact same sysfs bits I complained about last time? If yes, then I > don't understand why you haven't changed yet. Or why you are trying to > push the same bits again that got rejected last time. > I had the impression it was rejected because I submitted the pull request too late to you. In the sense of, it might go in, if it gets submitted for inclusion before the merge window opens... Apparently my impression was wrong. You will get an updated pull-request with the sysfs bits removed > > Here is the git-pull-request test: > > (The patch subjects removed to make the mail more digestible) > > Please don't do that, it basically makes the pull request useless! A few > hundred extra lines is not an issue. Ok. I intend to send the updated pull-request later today. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window @ 2012-11-09 12:42 ` Philipp Reisner 0 siblings, 0 replies; 18+ messages in thread From: Philipp Reisner @ 2012-11-09 12:42 UTC (permalink / raw) To: Jens Axboe; +Cc: drbd-dev, linux-kernel [...] > > It has the sysfs bits in again. The reason for that is that we want to > > expose more information by that, and remove the /proc/drbd with the > > next evolutionary step. -- In case this is a show stopper, let me > > remove the sysfs bits. > > The exact same sysfs bits I complained about last time? If yes, then I > don't understand why you haven't changed yet. Or why you are trying to > push the same bits again that got rejected last time. > I had the impression it was rejected because I submitted the pull request too late to you. In the sense of, it might go in, if it gets submitted for inclusion before the merge window opens... Apparently my impression was wrong. You will get an updated pull-request with the sysfs bits removed > > Here is the git-pull-request test: > > (The patch subjects removed to make the mail more digestible) > > Please don't do that, it basically makes the pull request useless! A few > hundred extra lines is not an issue. Ok. I intend to send the updated pull-request later today. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Drbd-dev] [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window 2012-11-09 12:42 ` Philipp Reisner @ 2012-11-09 12:56 ` Jens Axboe -1 siblings, 0 replies; 18+ messages in thread From: Jens Axboe @ 2012-11-09 12:56 UTC (permalink / raw) To: Philipp Reisner; +Cc: linux-kernel, drbd-dev On 2012-11-09 13:42, Philipp Reisner wrote: > [...] >>> It has the sysfs bits in again. The reason for that is that we want to >>> expose more information by that, and remove the /proc/drbd with the >>> next evolutionary step. -- In case this is a show stopper, let me >>> remove the sysfs bits. >> >> The exact same sysfs bits I complained about last time? If yes, then I >> don't understand why you haven't changed yet. Or why you are trying to >> push the same bits again that got rejected last time. >> > > I had the impression it was rejected because I submitted the pull request > too late to you. In the sense of, it might go in, if it gets submitted > for inclusion before the merge window opens... > Apparently my impression was wrong. You will get an updated pull-request > with the sysfs bits removed It was late, but that was a different issue. I just re-read the Oct 3rd emails on this, and I definitely did recommend that you looked at debugfs or similar for this. We're not putting another top-queue level directory in for a block device that is specific to drbd. -- Jens Axboe ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window @ 2012-11-09 12:56 ` Jens Axboe 0 siblings, 0 replies; 18+ messages in thread From: Jens Axboe @ 2012-11-09 12:56 UTC (permalink / raw) To: Philipp Reisner; +Cc: drbd-dev, linux-kernel On 2012-11-09 13:42, Philipp Reisner wrote: > [...] >>> It has the sysfs bits in again. The reason for that is that we want to >>> expose more information by that, and remove the /proc/drbd with the >>> next evolutionary step. -- In case this is a show stopper, let me >>> remove the sysfs bits. >> >> The exact same sysfs bits I complained about last time? If yes, then I >> don't understand why you haven't changed yet. Or why you are trying to >> push the same bits again that got rejected last time. >> > > I had the impression it was rejected because I submitted the pull request > too late to you. In the sense of, it might go in, if it gets submitted > for inclusion before the merge window opens... > Apparently my impression was wrong. You will get an updated pull-request > with the sysfs bits removed It was late, but that was a different issue. I just re-read the Oct 3rd emails on this, and I definitely did recommend that you looked at debugfs or similar for this. We're not putting another top-queue level directory in for a block device that is specific to drbd. -- Jens Axboe ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Drbd-dev] [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window 2012-11-09 12:56 ` Jens Axboe @ 2012-11-09 13:33 ` Philipp Reisner -1 siblings, 0 replies; 18+ messages in thread From: Philipp Reisner @ 2012-11-09 13:33 UTC (permalink / raw) To: Jens Axboe; +Cc: linux-kernel, drbd-dev Jens, here it is without the sysfs stuff The following changes since commit ccae7868b0c5697508a541c531cf96b361d62c1c: drbd: log request sector offset and size for IO errors (2012-10-30 08:39:18 +0100) are available in the git repository at: git://git.drbd.org/linux-drbd.git for-jens_drbd-8.4.2 for you to fetch changes up to f1d6a328bbe63b528721a25251ad8f5f1e997804: drbd: use copy_highpage (2012-11-09 14:22:26 +0100) ---------------------------------------------------------------- Akinobu Mita (1): drbd: use copy_highpage Andreas Gruenbacher (210): drbd: Get rid of req_validator_fn typedef drbd: Remove superfluous declaration drbd: Consistently use block_id == ID_SYNCER for checksum based resync and online verify drbd: Get rid of BE_DRBD_MAGIC and BE_DRBD_MAGIC_BIG drbd: Endianness convert the constants instead of the variables drbd: Magic reserved block_id value cleanup drbd: Move drbd_free_tl_hash() to drbd_main() drbd: Update outdated comment drbd: Request lookup code cleanup (1) drbd: Request lookup code cleanup (2) drbd: Request lookup code cleanup (3) drbd: Request lookup code cleanup (4) drbd: Add interval tree data structure drbd: Put sector and size in struct drbd_request into struct drbd_interval drbd: Use interval tree for overlapping write request detection drbd: Add read_requests tree drbd: Use the read and write request trees for request lookups drbd: Put sector and size in struct drbd_epoch_entry into struct drbd_interval drbd: Use interval tree for overlapping epoch entry detection drbd: Remove the unused hash tables drbd: Convert all constants in enum drbd_req_event to upper case drbd: Convert all constants in enum drbd_thread_state to upper case drbd: Replace the ERR_IF macro with an assert-like macro drbd: Remove some useless paranoia code drbd: Inline function overlaps() is now unused drbd: Interval tree bugfix drbd: Move cmdname() out of drbd_int.h drbd: Rename "enum drbd_packets" to "enum drbd_packet" drbd: Remove redundant initialization drbd: Initialize the sequence number sent over the network even when not used drbd: Move sequence number logic into drbd_receiver.c and simplify it drbd: Move some functions to where they are used drbd: struct drbd_request: Introduce a new collision flag drbd: Remove redundant check from drbd_contains_interval() drbd: Allow to wait for the completion of an epoch entry as well drbd: _req_conflicts(): Get rid of the epoch_entries tree drbd: Remove unnecessary reference counting left-over drbd: Defer new writes when detecting conflicting writes drbd: Make the peer_seq updating code more obvious drbd: Improve the drbd_find_overlap() documentation drbd: Remove unused variable in struct drbd_conf drbd: Rename struct drbd_epoch_entry to struct drbd_peer_request drbd: Clean up some left-overs drbd: Update some comments drbd: Local variable renames: e -> peer_req drbd: Rename drbd_submit_ee -> drbd_submit_peer_request drbd: Rename drbd_endio_{pri,sec} -> drbd_{,peer_}request_endio drbd: Iterate over all overlapping intervals in a tree drbd: Remove obsolete comment drbd: Use the IS_ALIGNED() macro in some more places drbd: Use container_of() instead of casting drbd: Concurrent write detection fix drbd: Replace atomic_add_return with atomic_inc_return drbd: Use ping-timeout when waiting for missing ack packets drbd: Improve how conflicting writes are handled drbd: Remove redundant check drbd: Get rid of P_MAX_CMD drbd: Replace get_asender_cmd() with its implementation drbd: Remove left-over function prototypes drbd: drbd_send(): Return a "real" error code if we have no socket drbd: drbd_get_data_sock(): Return 0 upon success and an error code otherwise drbd: Add drbd_send_all(): Send an entire buffer drbd: conn_send_cmd2(): Return 0 upon success and an error code otherwise drbd: _conn_send_cmd(): Return 0 upon success and an error code otherwise drbd: _drbd_send_cmd(): Return 0 upon success and an error code otherwise drbd: conn_send_cmd(): Return 0 upon success and an error code otherwise drbd: Get rid of USE_DATA_SOCKET and USE_META_SOCKET drbd: drbd_send_cmd(): Return 0 upon success and an error code otherwise drbd: drbd_send_sync_param(): Return 0 upon success and an error code otherwise drbd: drbd_send_state(): Return 0 upon success and an error code otherwise drbd: drbd_send_handshake(): Return 0 upon success and an error code otherwise drbd: drbd_send_protocol(): Return 0 upon success and an error code otherwise drbd: drbd_send_uuids() and its variants: Return 0 upon success and an error code otherwise drbd: drbd_gen_and_send_sync_uuid(): Return void: the result is never used drbd: drbd_send_sizes(): Return 0 upon success and an error code otherwise drbd: _conn_send_state_req(): Return 0 upon success and an error code otherwise drbd: conn_send_state_req(): Return 0 upon success and an error code otherwise drbd: drbd_send_state_req(): Return 0 upon success and an error code otherwise drbd: drbd_send_sr_reply(): Return void: the result is never used drbd: drbd_send_b_ack(): Return void: the result is never used drbd: _drbd_send_ack(): Return 0 upon success and an error code otherwise drbd: drbd_send_ack(): Return 0 upon success and an error code otherwise drbd: drbd_send_ack_{dp,rp}(): Return void: the result is never used drbd: drbd_send_ack_ex(): Return 0 upon success and an error code otherwise drbd: drbd_send_ov_request(): Return 0 upon success and an error code otherwise drbd: drbd_send_drequest(): Return 0 upon success and an error code otherwise drbd: drbd_send_drequest_csum(): Return 0 upon success and an error code otherwise drbd: drbd_send_oos(): Return 0 upon success and an error code otherwise drbd: _drbd_no_send_page(): Return 0 upon success and an error code otherwise drbd: _drbd_send_page(): Return 0 upon success and an error code otherwise drbd: _drbd_send_zc_ee(): Return 0 upon success and an error code otherwise drbd: drbd_send_block(): Return 0 upon success and an error code otherwise drbd: _drbd_send_bio(), _drbd_send_zc_bio(): Return 0 upon success and an error code otherwise drbd: drbd_send_dblock(): Return 0 upon success and an error code otherwise drbd: drbd_send_short_cmd(): Return 0 upon success and an error code otherwise drbd: Temporarily change the return type of all worker callbacks drbd: Make all worker callbacks return 0 upon success and an error code otherwise drbd: drbd_process_done_ee(): Return 0 upon success and an error code otherwise drbd: decode_header(): Return 0 upon success and an error code otherwise drbd: drbd_recv_header(): Return 0 upon success and an error code otherwise drbd: drbd_drain_block(): Return 0 upon success and an error code otherwise drbd: recv_dless_read(): Return 0 upon success and an error code otherwise drbd: recv_resync_read(): Return 0 upon success and an error code otherwise drbd: send_bitmap_rle_or_plain(): Error handling cleanup drbd: Add drbd_recv_all(): Receive an entire buffer drbd: Make all command handlers return 0 upon success and an error code otherwise drbd: drbd_bm_read() never returns a positive value through drbd_bitmap_io() drbd: _drbd_md_sync_page_io(): Return 0 upon success and an error code otherwise drbd: drbd_md_sync_page_io(): Return 0 upon success and an error code otherwise drbd: Remove duplicate initialization drbd: Remove unnecessary assertion drbd: drbd_may_do_local_read(): Use bool/true/false drbd: Rename various functions from *_oos_* to *_out_of_sync_* for clarity drbd: Get rid of typedef drbd_work_cb drbd: Introduce and use drbd_recv_all_warn() drbd: drbd_connected(): Return an error code upon failure. drbd: Always use the same protocol version for the same peer drbd: Move drbd_send_ping() and drbd_send_ping_ack() to drbd_main.c drbd: Make _drbd_send_bitmap() static drbd: Rename the DCBP_* functions to dcbp_* and move them to where they are used drbd: Preallocate one page per drbd_socket as a receive buffer drbd: receive_bitmap(): Use the pre-allocated receive buffer drbd: Preallocate one page per drbd_socket as a send buffer drbd: _drbd_send_bitmap(): Use the pre-allocated send buffer drbd: A small cleanup in drbdd() drbd: Remove useless error messages drbd: Pass struct packet_info down to the receive functions drbd: Map from (connection, volume number) to device in the receive handlers drbd: Pass struct packet_info down to the asender receive functions drbd: Map from (connection, volume number) to device in the asender handlers drbd: drbd_connect(): Initialize struct drbd_socket before sending anything drbd: _conn_send_cmd(), _drbd_send_cmd(): Pass a struct drbd_socket instead of a plain socket drbd: Change how the initial packets are called drbd: Change how the "handshake" packets are called drbd: drbd_send_ping(), drbd_send_ping(): Return 0 upon success and an error code otherwise drbd: Introduce new primitives for sending commands drbd: Introduce drbd_header_size() drbd: Replace and remove old primitives drbd: Remove now-unused int_dig_out buffer drbd: Remove some fixed header size assumptions drbd: Remove headers from on-the-wire data structures (struct p_*) drbd: Introduce protocol version 100 headers drbd: Removed outdated comments and code that envisioned VNRs in header 95 drbd: validate_req_change_req_state(): Return 0 upon success and an error code otherwise drbd: Make all asynchronous command handlers return 0 upon success and an error code otherwise drbd: drbd_init_ee() no longer exists drbd: Rename drbd_alloc_ee() to drbd_alloc_peer_req() drbd: Rename drbd_free_ee() and variants to *_peer_req() drbd: Rename drbd_release_ee() to drbd_free_peer_reqs() drbd: Rename reclaim_net_ee(), drbd_process_done_ee(), drbd_process_done_ee(), tconn_process_done_ee() to *_peer_reqs drbd: Rename drbd_{ ee -> peer_req }_has_active_page drbd: Make drbd_wait_ee_list_empty() and _drbd_wait_ee_list_empty() static drbd: Rename drbd_pp_first_pages_or_try_alloc() to __drbd_alloc_pages() drbd: Rename drbd_pp_alloc() to drbd_alloc_pages() and make it non-static drbd: Rename drbd_pp_free() to drbd_free_pages() drbd: Wrong use of RCU in receive_protocol() drbd: Rename integrity_w_tfm -> integrity_tfm drbd: Rename integrity_r_tfm -> peer_integrity_tfm drbd: Remove obsolete drbd_crypto_is_hash() drbd: Introduce a "lockless" variant of drbd_send_protocoll() drbd: Allow to change data-integrity-alg on the fly drbd: Remove left-over unused define drbd: Generate the drbd_set_*_defaults() functions from drbd_genl.h drbd: Convert boolean flags on netlink from NLA_FLAG to NLA_U8 drbd: Turn no-disk-flushes into disk-flushes={yes|no} drbd: Turn no-disk-drain into disk-drain={yes|no} drbd: Turn no-md-flushes into md-flushes={yes|no} drbd: Turn no-tcp-cork into tcp-cork={yes|no} drbd: Make broadcast events return NO_ERROR drbd: Also define the default values of boolean flags in a single place drbd: Rename the want_lose field/flag to discard_my_data drbd: Refer to resync-rate consistently throughout the code drbd: Refer to connect-int consistently throughout the code drbd: Fix the upper limit of resync-after drbd: Convert resync-after into a signed netlink field drbd: Rename DISK_SIZE_SECT -> DISK_SIZE drbd: Use more generic constant names drbd: Output signed / unsigned netlink fields correctly drbd: Remove unused GENLA_F_MAY_IGNORE flag drbd: Make drbd's use of netlink attribute flags less confusing drbd: drbd_nla_check_mandatory(): Need to remove the DRBD_GENLA_F_MANDATORY flag first drbd: drbd_adm_prepare(): Pass through error codes drbd: Don't use empty nested netlink attributes drbd: Use DRBD_MINOR_COUNT_DEF in one more place drbd: Use the terminology suggested by the command names in the source code and messages drbd: Also need to check for DRBD_GENLA_F_MANDATORY flags before nla_find_nested() drbd: Split off netlink mandatory attribute handling into separate file drbd: Rename DRBD_ADM_NEED_{CONN -> RESOURCE} drbd: Convert the generic netlink interface to accept connection endpoints drbd: Allow to pass resource options to the new-resource command drbd: Remove dead code drbd: Rename --dry-run to --tentative drbd: Improve the "unexpected packet" error messages drbd: Define scale factors in a single place drbd: Fix the maximum accepted minor device number drbd: Allow to create devices with a minor number > minor_count drbd: Print memory address in hex instead of decimal in error message drbd: receive_protocol(): Give variables more easily searchable names drbd: receive_protocol(): Make the program flow less confusing drbd: Be consistent in reporting incompatibilities in P_PROTOCOL settings drbd: receive_protocol(): We cannot change our own data-integrity-alg setting here drbd: Turn tl_apply() into tl_abort_disk_io() drbd: Fix the data-integrity-alg setting drbd: Get rid of MR_{READ,WRITE}_SHIFT drbd: Update some outdated comments to match the code drbd: Improve error reporting in drbd_md_sync_page_io() drbd: Remove leftover prototype drbd: drbd_bm_ALe_set_all(): Remove unused function drbd: Stop using NLA_PUT*(). drbd: Don't unregister socket state_change callback from within the callback David Howells (1): DRBD: Fix comparison always false warning due to long/long long compare Jing Wang (1): drbd: check return of kmalloc in receive_uuids Lars Ellenberg (135): drbd: simplify condition in drbd_may_do_local_read() drbd: fix typo in comment drbd: in drbd_suspend_al, set AL_SUSPENDED before unlocking the activity log drbd: use clear_bit_unlock() where appropriate lru_cache.h: fix comments referring to ts_ instead of lc_ lru_cache: consolidate lc_get and lc_try_get drbd: allow to select specific bitmap pages for writeout lru_cache: allow multiple changes per transaction drbd: new on-disk activity log transaction format drbd: silence some log messages on bitmap IO drbd: fix a wrong likely(), updated comments drbd: remove unused define drbd: default to detach on-io-error drbd: only wakeup if something changed in update_peer_seq drbd: add page pool to be used for meta data IO drbd: use the newly introduced page pool for bitmap IO drbd: introduce a bio_set to allocate housekeeping bios from drbd: fix drbd_delete_device: remove vnr from volumes; idr_remove(); synchronize_rcu(); before cleanup drbd: get rid of drbd_bcast_ee, it is of no use anymore drbd: prepare the transition from connector to genetlink drbd: switch configuration interface from connector to genetlink drbd: allow holes in minor and volume id allocation drbd: remove now unused connector related files drbd: drbd_adm_get_status needs to show some more detail drbd: simplify conn_all_vols_unconf, make it bool drbd: Allow a Diskless Secondary volume to be removed drbd: new-connection and new-minor succeed, if the object already exists drbd: bail out if a config requrest is over-determined, and not matching drbd: add forgotten spin_unlock drbd: introduce in-kernel "down" command drbd: fix conn_reconfig_start without conn_reconfig_done in drbd_adm_attach drbd: distribute former syncer_conf settings to disk, connection, and resource level drbd: introduce the "initialized" activity log transaction type drbd: preparation commit, pass drbd_interval to drbd_al_begin/complete_io drbd: prepare to activate two activity log extents at once drbd: get rid of bio_split, allow bios of "arbitrary" size drbd: improvements to activate/deactivate multiple activity log extents drbd: allow status dump request all volumes of a specific resource drbd: fix setsockopt for user mode linux drbd: cmdname() enum to string convertion was missing a few constants drbd: move comment about stopping the receiver thread to where it belongs drbd: remove useless kobject_uevent from drbd_adm_connect drbd: fix various disconnecting races drbd: on reconfiguration requests, mind the SET_DEFAULTS flag drbd: rename variable ndc to new_disk_conf drbd: rename variable sc to res_opts drbd: fix copy/paste error in comment drbd: fix race when forcefully disconnecting drbd: fix thread stop deadlock drbd: fix schedule in atomic drbd: Introduce __s32_field in the genetlink macro magic drbd: skip spurious wait_event in drbd_al_begin_io 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: on attach, enforce clean meta data drbd: report net config even for resources without a single volume drbd: detach must not try to abort non-local requests drbd: fix connect failure with all default net-options drbd: fix bitmap writeout after aborted resync drbd: add missing rcu locks around recently introduced idr_for_each drbd: explicitly clear unused dp_flags in drbd_send_block drbd: Fix a potential race that could case data inconsistency drbd: Fix a potential write ordering issue on SyncTarget nodes drbd: Fixed detach 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: fix memleak in error path in bm_rw and drbd_bm_write_range drbd: remove some very outdated comments drbd: remove unused static helper function drbd: don't pretend that barrier_nr == 0 was special drbd: fix potential deadlock during "restart" of conflicting writes 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: conflicting writes: make wake_up of waiting peer_requests explicit drbd: factor out master_bio completion and drbd_request destruction paths drbd: move put_ldev from __req_mod() to the endio callback drbd: simplify retry path of failed READ requests drbd: complete_conflicting_writes() should not care about connections drbd: ignore volume number for drbd barrier packet exchange 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: bm_page_async_io: properly initialize page->private drbd: grammar fix in log message drbd: fix access of unallocated pages and kernel panic drbd: fix local read error hung forever drbd: fix wrong assert in completion/retry path of failed local reads drbd: rename drbd_restart_write to drbd_restart_request drbd: transfer log epoch numbers are now per resource drbd: allow to dequeue batches of work at a time drbd: move the drbd_work_queue from drbd_socket to drbd_connection drbd: remove struct drbd_tl_epoch objects (barrier works) drbd: better separate WRITE and READ code paths in drbd_make_request drbd: __drbd_make_request() is now void drbd: introduce completion_ref and kref to struct drbd_request drbd: base completion and destruction of requests on ref counts drbd: __req_mod: make DISCARD_WRITE and independend case drbd: allow read requests to be retried after force-detach drbd: take error path in drbd_adm_down if interrupted by signal drbd: fix null pointer dereference with on-congestion policy when diskless drbd: cleanup, remove two unused global flags drbd: differentiate between normal and forced detach drbd: report congestion if we are waiting for some userland callback drbd: reset congestion information before reporting it in /proc/drbd drbd: do not reset rs_pending_cnt too early drbd: call local-io-error handler early drbd: flush drbd work queue before invalidate/invalidate remote drbd: introduce stop-sector to online verify drbd: announce FLUSH/FUA capability to upper layers drbd: fix drbd wire compatibility for empty flushes drbd: Fix a potential issue with the DISCARD_CONCURRENT flag drbd: only start a new epoch, if the current epoch contains writes drbd: NEG_ACK does not imply a barrier-ack drbd: cleanup, drop unused struct drbd: disambiguation, s/P_DISCARD_WRITE/P_SUPERSEDED/ drbd: disambiguation, s/DISCARD_CONCURRENT/RESOLVE_CONFLICTS/ drbd: disambiguation, s/ERR_DISCARD/ERR_DISCARD_IMPOSSIBLE/ drbd: properly call drbd_rs_cancel_all() in drbd_disconnected() drbd: don't send out P_BARRIER with stale information drbd: temporarily suspend io in drbd_adm_disk_opts drbd: mutex_unlock "... must no be used in interrupt context" drbd: dequeue single work items in wait_for_work() drbd: fix potential list_add corruption drbd: differentiate early and later "postponing" of requests drbd: use list_move_tail instead of list_del/list_add_tail drbd: fix potential deadlock during bitmap (re-)allocation drbd: a few more GFP_KERNEL -> GFP_NOIO drbd: wait for meta data IO completion even with failed disk, unless force-detached drbd: always write bitmap on detach drbd: log request sector offset and size for IO errors drbd: if the replication link breaks during handshake, keep retrying Philipp Marek (1): drbd: pass some more information to userspace. Philipp Reisner (232): idr: idr_for_each_entry() macro drbd: Minimal struct drbd_tconn drbd: moved net_conf from mdev to tconn drbd: moved net_cont and net_cnt_wait from mdev to tconn drbd: moved data and meta from mdev to tconn drbd: moved receiver, worker and asender from mdev to tconn drbd: moved agreed_pro_version, last_received and ko_count to tconn drbd: moved req_lock and transfer log from mdev to tconn drbd: moved crypto transformations and friends from mdev to tconn drbd: Made drbd_flush_workqueue() to take a tconn instead of an mdev drbd: Preparing to use p_header96 for all packets drbd: Replaced all p_header80 with a generic p_header drbd: Use new header layout drbd: Implemented receiving of new style packets on meta socket drbd: Do not access tconn after it was freed drbd: Moved the state functions into its own source file drbd: Moved the thread name into the data structure drbd: Eliminated the user of drbd_task_to_thread() drbd: Moved code drbd: Do no sleep long in drbd_start_resync drbd: Revert "Make sure we dont send state if a cluster wide state change is in progress" drbd: Moving state related macros to drbd_state.h drbd: conn_printk() a dev_printk() alike for drbd's connections drbd: Converted drbd_try_connect() from mdev to tconn drbd: Converted drbd_wait_for_connect() from mdev to tconn drbd: Started to separated connection flags (tconn) from block device flags (mdev) drbd: Moved DISCARD_CONCURRENT to the per connection (tconn) flags drbd: Moved SEND_PING to the per connection (tconn) flags drbd: Moved SIGNAL_ASENDER to the per connection (tconn) flags drbd: Converted wake_asender() and request_ping() from mdev to tconn drbd: Converted helper functions for drbd_send() to tconn drbd: Converted drbd_send() from mdev to tconn drbd: Converted drbd_send_fp() from mdev to tconn drbd: Removed unused mdev argument from drbd_recv_short() and drbd_socket_okay() drbd: Converted drbd_recv_fp() from mdev to tconn drbd: Converted drbd_send_handshake() from mdev to tconn drbd: Converted drbd_recv() from mdev to tconn drbd: struct packet_info to hold information of decoded packets drbd: Converted decode_header() from mdev to tconn drbd: Converted drbd_recv_header() from mdev to tconn drbd: Converted drbd_do_handshake() from mdev to tconn drbd: Converted drbd_(get|put)_data_sock() and drbd_send_cmd2() to tconn drbd: Converted drbd_do_auth() from mdev to tconn drbd: Converted drbd_send_protocol() from mdev to tconn drbd: Use and idr data structure to map volume numbers to mdev pointers drbd: Converted drbd_connect() from mdev to tconn drbd: Converted drbd_calc_cpu_mask() and drbd_thread_current_set_cpu() from mdev to tconn drbd: Converted drbdd() from mdev to tconn drbd: Converted drbd_free_sock() and drbd_disconnect() from mdev to tconn drbd: Moved the mdev member into drbd_work (from drbd_request and drbd_peer_request) drbd: Consolidated the setup of the thread name into the framework drbd: Converted drbdd_init() from mdev to tconn drbd: Converted drbd_asender() from mdev to tconn drbd: Converted drbd_worker() from mdev to tconn drbd: drbd_thread has now a pointer to a tconn instead of to a mdev drbd: Moved some initializing code into drbd_new_tconn() drbd: Generalized the work callbacks drbd: Converted drbd_send_ping() and related functions from mdev to tconn drbd: Extracted after_conn_state_ch() out of after_state_ch() drbd: Renamed is_valid_state_transition() to is_valid_soft_transition() drbd: Extracted is_valid_transition() out of sanitize_state() drbd: Extracted is_valid_conn_transition() out of is_valid_transition() drbd: Removed the os parameter form sanitize_state() drbd: Code de-duplication; new function apply_mask_val() drbd: Killed volume0; last step of multi-volume-enablement drbd: Removed drbd_state_lock() and drbd_state_unlock() drbd: Introduced tconn->cstate_mutex drbd: Implemented conn_send_state_req() drbd: Global_state_lock not necessary here... drbd: Implemented receiving of P_CONN_ST_CHG_REPLY drbd: implemented receiving of P_CONN_ST_CHG_REQ drbd: Implemented connection wide state changes drbd: Reworked the unconfiguring and thread stopping code drbd: Removed the mdev parameter from the ..to_tags() and ...from_tags() functions drbd: Improved the dec_*() macros drbd: Converted the transfer log from mdev to tconn drbd: Preparing the connector interface to operator on connections drbd: Converted drbd_nl_(net_conf|disconnect)() from mdev to tconn drbd: Implemented new commands to create/delete connections/minors drbd: Replaced the minor_table array by an idr drbd: Ignore packets for non existing volumes drbd: process_done_ee() has to handle unconfigured devices now drbd: New minors have to intherit the connection state form their connection drbd: Allow two diskless minors to be connected drbd: Do not modify the connection state with something else that conn_request_state() drbd: Moved CONN_DRY_RUN to the per connection (tconn) flags drbd: Allow packet handler functions that take a connection drbd: Converted receive_protocol() from mdev to tconn drbd: Separate connection state changes from minor dev state changes #1 drbd: Allow packet handler functions that take a connection (meta connection) drbd: Converted got_Ping() and got_PingAck() from mdev to tconn drbd: Separate connection state changes from minor dev state changes #2 drbd: Allow volumes to become primary only on one side drbd: conn_khelper() for user mode callbacks for connections drbd: Fixed conn_lowest_minor drbd: Converted drbd_try_outdate_peer() from mdev to tconn drbd: Use the idr_for_each_entry() iterator instead of idr_for_each() drbd: Fixed logging of old connection state drbd: Print common state changes of all volumes as connection state changes drbd: Allow to disconnect if one volume is diskless drbd: Do not segfault if a sync dependency reaches a diskless device drbd: Introduced drbd_read_state() drbd: Renamed id_susp(union drbd_state s) to drbd_suspended(struct drbd_conf *) drbd: Moved susp, susp_nod and susp_fen to the connection object drbd: Introduced a new type union drbd_dev_state drbd: Renamed nms to ns_max drbd: Calculate and provide ns_min to the w_after_conn_state_ch() work drbd: Implemented conn_lowest_conn() drbd: Implemented conn_lowest_disk() drbd: Implemented IO thawing for multiple volumes drbd: Improved logging of state changes drbd: Use tconn in request_timer_fn() drbd: drbd_delete_device() takes a struct drbd_conf * now drbd: Inlined drbd_free_mdev(); it got called only from one place drbd: rcu_read_[un]lock() for all idr accesses that do not sleep drbd: Converted drbd_cfg_mutex into drbd_cfg_rwsem drbd: protect all idr accesses that might sleep with drbd_cfg_rwsem drbd: Runtime changeable wire protocol drbd: Check consistency of net options when the get changed online drbd: Allow online change of replication protocol only with agreed_pv >= 100 drbd: rcu_read_lock() and rcu_dereference() for tconn->net_conf drbd: Proper locking for updates to net_conf under RCU drbd: Considering that the two_primaries config flag can change drbd: Eliminated drbd_free_resoruces() it is superseeded by conn_free_crypto() drbd: Basic refcounting for drbd_tconn drbd: Take a reference on tconn when finding a tconn by name drbd: Removed the OBJECT_DYING and the CONFIG_PENDING bits drbd: Consider all crypto options in connect and in net-options drbd: Removed dead code drbd: Renamed the net_conf_update mutex to conf_update drbd: drbd_dew_dev_size() gets the user requests disk_size as argument drbd: Split drbd_alter_sa() into drbd_sync_after_valid() and drbd_sync_after_changed() drbd: Renamed (old|new)_conf into (old|new)_net_conf in receive_SyncParam drbd: RCU for disk_conf drbd: Made the fifo object a self contained object (preparing for RCU) drbd: Enforce limits of disk_conf members; centralized these checks drbd: RCU for rs_plan_s drbd: Refcounting for mdev objects drbd: Use RCU for the drbd_tconns list drbd: Removing drbd_cfg_rwsem drbd: Refuse to change network options online when... drbd: protect updates to integrits_tfm by tconn->data->mutex drbd: Made cmp_after_sb() more generic into convert_after_sb() drbd: Allocation of int_dig_in and int_dig_vv was missing drbd: Receiving part for the PROTOCOL_UPDATE packet drbd: Send PROTOCOL_UPDATE packets when appropriate drbd: Lower log priority for an event that is definitely not an error drbd: Fixes from the 8.3 development branch drbd: Improve compatibility with drbd's older than 8.3.7 drbd: Fixed state transitions in case reading meta data failes drbd: detach from frozen backing device drbd: Fixed removal of volumes/devices from connected resources drbd: Eliminated the "notified peer" messages drbd: Correctly handle resources without volumes drbd: Changed some defaults drbd: Dropped wrong clause to generate new current UUIDs drbd: Consider that the no-data-condition could be in connected state drbd: Do not mod_timer() with a past time drbd: Missing assignment of mdev before drbd_queue_work() drbd: Fixed w_restart_disk_io() to handle non active AL-extents drbd: Bugfix for the connection behavior drbd: Do not display bogus log lines for pdsk in case pdsk < D_UNKNOWN drbd: The minor_count module parameter is only a hint nowadays drbd: Cleanup all epoch objects upon connection loss drbd: Remove dead code drbd: Remove unused code drbd: Consider the discard-my-data flag for all volumes [bugz 359] drbd: fix "stalled" empty resync drbd: Silenced compiler warnings drbd: Fixes from the drbd-8.3 branch drbd: Fixes from the drbd-8.3 branch drbd: Fixed an obvious copy-n-paste mistake drbd: Move the CREATE_BARRIER flag from connection to device drbd: Move write_ordering from mdev to tconn drbd: Prepare epochs per connection drbd: Move list of epochs from mdev to tconn drbd: Switch drbd_may_finish_epoch() from mdev to tconn drbd: Fix the WO=drain implementation for multiple volumes drbd: fix potential spinlock deadlock drbd: Get rid of "ASSERTION FAILED: tconn->current_epoch->list not empty" drbd: Load balancing of read requests drbd: Load balancing method: striping drbd: Do not call generic_make_request() while holding req_lock drbd: fix race between disconnect and receive_state drbd: Do not send state packets while lower than C_CONNECTED cstate drbd: Consider that read requests could be NEG_ACKEDed drbd: Log failures of connection state changes drbd: Restore late assigning of tconn->data.sock and meta.sock drbd: restart loop in drbd_make_request() [prepare for Linux-3.2] drbd: Fixed compat issue with disconnecting 8.4 from a primary 8.3 drbd: Reinstate disabling AL updates with invalidate-remote drbd: Consider the disk-timeout also for meta-data IO operations drbd: If disk timeout expires fail only the affected volume drbd: Fix module refcount leak in drbd_accept() drbd: add missing part_round_stats to _drbd_start_io_acct drbd: Consider that bio->bi_bdev might be modified below DRBD drbd: Fixed processing of disk-barrier, disk-flushes and disk-drain 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: fix spelling, remove boring development log message drbd: use bitmap_parse instead of __bitmap_parse drbd: Move the call to listen() out of drbd_accept() drbd: Remove drbd_accept() and use kernel_accept() instead drbd: New disk option al-updates drbd: pull prepare_listen_socket() out of drbd_wait_for_connect() drbd: Keep the listening socket open while trying to connect to the peer drbd: Remove redundant and wrong test for NULL simplification in conn_connect() drbd: Try to connec to peer only once per cycle drbd: More random to the connect logic drbd: Finish requests that completed while IO was frozen drbd: Fix completion of requests while the device is suspended drbd: Write all pages of the bitmap after an online resize drbd: Protect accesses to the uuid set with a spinlock drbd: Avoid NetworkFailure state during disconnect drbd: Remove dead code drbd: Fix a race condition that can lead to a BUG() drbd: Fix IO resuming after connection was established while executing the fence handler drbd: Improve readability of IO resuming after freeze due to no data access drbd: Do not check aspects that are not subject to change in _conn_requests_state() drbd: Fix the way the STATE_SENT bit is cleared drbd: Imporve the error reporting of failed conn state changes drbd: Fix postponed requests drbd: Call drbd_md_sync() explicitly after a state change on the connection drbd: Fix postponed requests drbd: Remove duplicate code drbd: Fix comparison of is_valid_transition()'s return code drbd: panic on delayed completion of aborted requests drbd: Fix clearing of MDF_AL_DISABLED drbd: fix regression: potential NULL pointer dereference drbd: don't try to clear bits once the disk has failed drbd: Broadcast sync progress no more often than once per second Merge branch 'drbd-8.4_ed6' into for-3.8-drivers-drbd-8.4_ed6 drivers/block/drbd/Makefile | 2 + drivers/block/drbd/drbd_actlog.c | 689 +++---- drivers/block/drbd/drbd_bitmap.c | 227 ++- drivers/block/drbd/drbd_int.h | 1398 ++++++------- drivers/block/drbd/drbd_interval.c | 207 ++ drivers/block/drbd/drbd_interval.h | 40 + drivers/block/drbd/drbd_main.c | 3883 ++++++++++++++---------------------- drivers/block/drbd/drbd_nl.c | 3378 ++++++++++++++++++------------- drivers/block/drbd/drbd_nla.c | 55 + drivers/block/drbd/drbd_nla.h | 8 + drivers/block/drbd/drbd_proc.c | 33 +- drivers/block/drbd/drbd_receiver.c | 3883 +++++++++++++++++++++--------------- drivers/block/drbd/drbd_req.c | 1569 +++++++-------- drivers/block/drbd/drbd_req.h | 187 +- drivers/block/drbd/drbd_state.c | 1857 +++++++++++++++++ drivers/block/drbd/drbd_state.h | 161 ++ drivers/block/drbd/drbd_strings.c | 1 + drivers/block/drbd/drbd_worker.c | 1168 ++++++----- drivers/block/drbd/drbd_wrappers.h | 11 +- include/linux/drbd.h | 81 +- include/linux/drbd_genl.h | 378 ++++ include/linux/drbd_genl_api.h | 55 + include/linux/drbd_limits.h | 90 +- include/linux/drbd_nl.h | 164 -- include/linux/drbd_tag_magic.h | 84 - include/linux/genl_magic_func.h | 422 ++++ include/linux/genl_magic_struct.h | 277 +++ include/linux/idr.h | 11 + include/linux/lru_cache.h | 67 +- lib/lru_cache.c | 359 ++-- 30 files changed, 12115 insertions(+), 8630 deletions(-) create mode 100644 drivers/block/drbd/drbd_interval.c create mode 100644 drivers/block/drbd/drbd_interval.h create mode 100644 drivers/block/drbd/drbd_nla.c create mode 100644 drivers/block/drbd/drbd_nla.h create mode 100644 drivers/block/drbd/drbd_state.c create mode 100644 drivers/block/drbd/drbd_state.h create mode 100644 include/linux/drbd_genl.h create mode 100644 include/linux/drbd_genl_api.h delete mode 100644 include/linux/drbd_nl.h delete mode 100644 include/linux/drbd_tag_magic.h create mode 100644 include/linux/genl_magic_func.h create mode 100644 include/linux/genl_magic_struct.h ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window @ 2012-11-09 13:33 ` Philipp Reisner 0 siblings, 0 replies; 18+ messages in thread From: Philipp Reisner @ 2012-11-09 13:33 UTC (permalink / raw) To: Jens Axboe; +Cc: drbd-dev, linux-kernel Jens, here it is without the sysfs stuff The following changes since commit ccae7868b0c5697508a541c531cf96b361d62c1c: drbd: log request sector offset and size for IO errors (2012-10-30 08:39:18 +0100) are available in the git repository at: git://git.drbd.org/linux-drbd.git for-jens_drbd-8.4.2 for you to fetch changes up to f1d6a328bbe63b528721a25251ad8f5f1e997804: drbd: use copy_highpage (2012-11-09 14:22:26 +0100) ---------------------------------------------------------------- Akinobu Mita (1): drbd: use copy_highpage Andreas Gruenbacher (210): drbd: Get rid of req_validator_fn typedef drbd: Remove superfluous declaration drbd: Consistently use block_id == ID_SYNCER for checksum based resync and online verify drbd: Get rid of BE_DRBD_MAGIC and BE_DRBD_MAGIC_BIG drbd: Endianness convert the constants instead of the variables drbd: Magic reserved block_id value cleanup drbd: Move drbd_free_tl_hash() to drbd_main() drbd: Update outdated comment drbd: Request lookup code cleanup (1) drbd: Request lookup code cleanup (2) drbd: Request lookup code cleanup (3) drbd: Request lookup code cleanup (4) drbd: Add interval tree data structure drbd: Put sector and size in struct drbd_request into struct drbd_interval drbd: Use interval tree for overlapping write request detection drbd: Add read_requests tree drbd: Use the read and write request trees for request lookups drbd: Put sector and size in struct drbd_epoch_entry into struct drbd_interval drbd: Use interval tree for overlapping epoch entry detection drbd: Remove the unused hash tables drbd: Convert all constants in enum drbd_req_event to upper case drbd: Convert all constants in enum drbd_thread_state to upper case drbd: Replace the ERR_IF macro with an assert-like macro drbd: Remove some useless paranoia code drbd: Inline function overlaps() is now unused drbd: Interval tree bugfix drbd: Move cmdname() out of drbd_int.h drbd: Rename "enum drbd_packets" to "enum drbd_packet" drbd: Remove redundant initialization drbd: Initialize the sequence number sent over the network even when not used drbd: Move sequence number logic into drbd_receiver.c and simplify it drbd: Move some functions to where they are used drbd: struct drbd_request: Introduce a new collision flag drbd: Remove redundant check from drbd_contains_interval() drbd: Allow to wait for the completion of an epoch entry as well drbd: _req_conflicts(): Get rid of the epoch_entries tree drbd: Remove unnecessary reference counting left-over drbd: Defer new writes when detecting conflicting writes drbd: Make the peer_seq updating code more obvious drbd: Improve the drbd_find_overlap() documentation drbd: Remove unused variable in struct drbd_conf drbd: Rename struct drbd_epoch_entry to struct drbd_peer_request drbd: Clean up some left-overs drbd: Update some comments drbd: Local variable renames: e -> peer_req drbd: Rename drbd_submit_ee -> drbd_submit_peer_request drbd: Rename drbd_endio_{pri,sec} -> drbd_{,peer_}request_endio drbd: Iterate over all overlapping intervals in a tree drbd: Remove obsolete comment drbd: Use the IS_ALIGNED() macro in some more places drbd: Use container_of() instead of casting drbd: Concurrent write detection fix drbd: Replace atomic_add_return with atomic_inc_return drbd: Use ping-timeout when waiting for missing ack packets drbd: Improve how conflicting writes are handled drbd: Remove redundant check drbd: Get rid of P_MAX_CMD drbd: Replace get_asender_cmd() with its implementation drbd: Remove left-over function prototypes drbd: drbd_send(): Return a "real" error code if we have no socket drbd: drbd_get_data_sock(): Return 0 upon success and an error code otherwise drbd: Add drbd_send_all(): Send an entire buffer drbd: conn_send_cmd2(): Return 0 upon success and an error code otherwise drbd: _conn_send_cmd(): Return 0 upon success and an error code otherwise drbd: _drbd_send_cmd(): Return 0 upon success and an error code otherwise drbd: conn_send_cmd(): Return 0 upon success and an error code otherwise drbd: Get rid of USE_DATA_SOCKET and USE_META_SOCKET drbd: drbd_send_cmd(): Return 0 upon success and an error code otherwise drbd: drbd_send_sync_param(): Return 0 upon success and an error code otherwise drbd: drbd_send_state(): Return 0 upon success and an error code otherwise drbd: drbd_send_handshake(): Return 0 upon success and an error code otherwise drbd: drbd_send_protocol(): Return 0 upon success and an error code otherwise drbd: drbd_send_uuids() and its variants: Return 0 upon success and an error code otherwise drbd: drbd_gen_and_send_sync_uuid(): Return void: the result is never used drbd: drbd_send_sizes(): Return 0 upon success and an error code otherwise drbd: _conn_send_state_req(): Return 0 upon success and an error code otherwise drbd: conn_send_state_req(): Return 0 upon success and an error code otherwise drbd: drbd_send_state_req(): Return 0 upon success and an error code otherwise drbd: drbd_send_sr_reply(): Return void: the result is never used drbd: drbd_send_b_ack(): Return void: the result is never used drbd: _drbd_send_ack(): Return 0 upon success and an error code otherwise drbd: drbd_send_ack(): Return 0 upon success and an error code otherwise drbd: drbd_send_ack_{dp,rp}(): Return void: the result is never used drbd: drbd_send_ack_ex(): Return 0 upon success and an error code otherwise drbd: drbd_send_ov_request(): Return 0 upon success and an error code otherwise drbd: drbd_send_drequest(): Return 0 upon success and an error code otherwise drbd: drbd_send_drequest_csum(): Return 0 upon success and an error code otherwise drbd: drbd_send_oos(): Return 0 upon success and an error code otherwise drbd: _drbd_no_send_page(): Return 0 upon success and an error code otherwise drbd: _drbd_send_page(): Return 0 upon success and an error code otherwise drbd: _drbd_send_zc_ee(): Return 0 upon success and an error code otherwise drbd: drbd_send_block(): Return 0 upon success and an error code otherwise drbd: _drbd_send_bio(), _drbd_send_zc_bio(): Return 0 upon success and an error code otherwise drbd: drbd_send_dblock(): Return 0 upon success and an error code otherwise drbd: drbd_send_short_cmd(): Return 0 upon success and an error code otherwise drbd: Temporarily change the return type of all worker callbacks drbd: Make all worker callbacks return 0 upon success and an error code otherwise drbd: drbd_process_done_ee(): Return 0 upon success and an error code otherwise drbd: decode_header(): Return 0 upon success and an error code otherwise drbd: drbd_recv_header(): Return 0 upon success and an error code otherwise drbd: drbd_drain_block(): Return 0 upon success and an error code otherwise drbd: recv_dless_read(): Return 0 upon success and an error code otherwise drbd: recv_resync_read(): Return 0 upon success and an error code otherwise drbd: send_bitmap_rle_or_plain(): Error handling cleanup drbd: Add drbd_recv_all(): Receive an entire buffer drbd: Make all command handlers return 0 upon success and an error code otherwise drbd: drbd_bm_read() never returns a positive value through drbd_bitmap_io() drbd: _drbd_md_sync_page_io(): Return 0 upon success and an error code otherwise drbd: drbd_md_sync_page_io(): Return 0 upon success and an error code otherwise drbd: Remove duplicate initialization drbd: Remove unnecessary assertion drbd: drbd_may_do_local_read(): Use bool/true/false drbd: Rename various functions from *_oos_* to *_out_of_sync_* for clarity drbd: Get rid of typedef drbd_work_cb drbd: Introduce and use drbd_recv_all_warn() drbd: drbd_connected(): Return an error code upon failure. drbd: Always use the same protocol version for the same peer drbd: Move drbd_send_ping() and drbd_send_ping_ack() to drbd_main.c drbd: Make _drbd_send_bitmap() static drbd: Rename the DCBP_* functions to dcbp_* and move them to where they are used drbd: Preallocate one page per drbd_socket as a receive buffer drbd: receive_bitmap(): Use the pre-allocated receive buffer drbd: Preallocate one page per drbd_socket as a send buffer drbd: _drbd_send_bitmap(): Use the pre-allocated send buffer drbd: A small cleanup in drbdd() drbd: Remove useless error messages drbd: Pass struct packet_info down to the receive functions drbd: Map from (connection, volume number) to device in the receive handlers drbd: Pass struct packet_info down to the asender receive functions drbd: Map from (connection, volume number) to device in the asender handlers drbd: drbd_connect(): Initialize struct drbd_socket before sending anything drbd: _conn_send_cmd(), _drbd_send_cmd(): Pass a struct drbd_socket instead of a plain socket drbd: Change how the initial packets are called drbd: Change how the "handshake" packets are called drbd: drbd_send_ping(), drbd_send_ping(): Return 0 upon success and an error code otherwise drbd: Introduce new primitives for sending commands drbd: Introduce drbd_header_size() drbd: Replace and remove old primitives drbd: Remove now-unused int_dig_out buffer drbd: Remove some fixed header size assumptions drbd: Remove headers from on-the-wire data structures (struct p_*) drbd: Introduce protocol version 100 headers drbd: Removed outdated comments and code that envisioned VNRs in header 95 drbd: validate_req_change_req_state(): Return 0 upon success and an error code otherwise drbd: Make all asynchronous command handlers return 0 upon success and an error code otherwise drbd: drbd_init_ee() no longer exists drbd: Rename drbd_alloc_ee() to drbd_alloc_peer_req() drbd: Rename drbd_free_ee() and variants to *_peer_req() drbd: Rename drbd_release_ee() to drbd_free_peer_reqs() drbd: Rename reclaim_net_ee(), drbd_process_done_ee(), drbd_process_done_ee(), tconn_process_done_ee() to *_peer_reqs drbd: Rename drbd_{ ee -> peer_req }_has_active_page drbd: Make drbd_wait_ee_list_empty() and _drbd_wait_ee_list_empty() static drbd: Rename drbd_pp_first_pages_or_try_alloc() to __drbd_alloc_pages() drbd: Rename drbd_pp_alloc() to drbd_alloc_pages() and make it non-static drbd: Rename drbd_pp_free() to drbd_free_pages() drbd: Wrong use of RCU in receive_protocol() drbd: Rename integrity_w_tfm -> integrity_tfm drbd: Rename integrity_r_tfm -> peer_integrity_tfm drbd: Remove obsolete drbd_crypto_is_hash() drbd: Introduce a "lockless" variant of drbd_send_protocoll() drbd: Allow to change data-integrity-alg on the fly drbd: Remove left-over unused define drbd: Generate the drbd_set_*_defaults() functions from drbd_genl.h drbd: Convert boolean flags on netlink from NLA_FLAG to NLA_U8 drbd: Turn no-disk-flushes into disk-flushes={yes|no} drbd: Turn no-disk-drain into disk-drain={yes|no} drbd: Turn no-md-flushes into md-flushes={yes|no} drbd: Turn no-tcp-cork into tcp-cork={yes|no} drbd: Make broadcast events return NO_ERROR drbd: Also define the default values of boolean flags in a single place drbd: Rename the want_lose field/flag to discard_my_data drbd: Refer to resync-rate consistently throughout the code drbd: Refer to connect-int consistently throughout the code drbd: Fix the upper limit of resync-after drbd: Convert resync-after into a signed netlink field drbd: Rename DISK_SIZE_SECT -> DISK_SIZE drbd: Use more generic constant names drbd: Output signed / unsigned netlink fields correctly drbd: Remove unused GENLA_F_MAY_IGNORE flag drbd: Make drbd's use of netlink attribute flags less confusing drbd: drbd_nla_check_mandatory(): Need to remove the DRBD_GENLA_F_MANDATORY flag first drbd: drbd_adm_prepare(): Pass through error codes drbd: Don't use empty nested netlink attributes drbd: Use DRBD_MINOR_COUNT_DEF in one more place drbd: Use the terminology suggested by the command names in the source code and messages drbd: Also need to check for DRBD_GENLA_F_MANDATORY flags before nla_find_nested() drbd: Split off netlink mandatory attribute handling into separate file drbd: Rename DRBD_ADM_NEED_{CONN -> RESOURCE} drbd: Convert the generic netlink interface to accept connection endpoints drbd: Allow to pass resource options to the new-resource command drbd: Remove dead code drbd: Rename --dry-run to --tentative drbd: Improve the "unexpected packet" error messages drbd: Define scale factors in a single place drbd: Fix the maximum accepted minor device number drbd: Allow to create devices with a minor number > minor_count drbd: Print memory address in hex instead of decimal in error message drbd: receive_protocol(): Give variables more easily searchable names drbd: receive_protocol(): Make the program flow less confusing drbd: Be consistent in reporting incompatibilities in P_PROTOCOL settings drbd: receive_protocol(): We cannot change our own data-integrity-alg setting here drbd: Turn tl_apply() into tl_abort_disk_io() drbd: Fix the data-integrity-alg setting drbd: Get rid of MR_{READ,WRITE}_SHIFT drbd: Update some outdated comments to match the code drbd: Improve error reporting in drbd_md_sync_page_io() drbd: Remove leftover prototype drbd: drbd_bm_ALe_set_all(): Remove unused function drbd: Stop using NLA_PUT*(). drbd: Don't unregister socket state_change callback from within the callback David Howells (1): DRBD: Fix comparison always false warning due to long/long long compare Jing Wang (1): drbd: check return of kmalloc in receive_uuids Lars Ellenberg (135): drbd: simplify condition in drbd_may_do_local_read() drbd: fix typo in comment drbd: in drbd_suspend_al, set AL_SUSPENDED before unlocking the activity log drbd: use clear_bit_unlock() where appropriate lru_cache.h: fix comments referring to ts_ instead of lc_ lru_cache: consolidate lc_get and lc_try_get drbd: allow to select specific bitmap pages for writeout lru_cache: allow multiple changes per transaction drbd: new on-disk activity log transaction format drbd: silence some log messages on bitmap IO drbd: fix a wrong likely(), updated comments drbd: remove unused define drbd: default to detach on-io-error drbd: only wakeup if something changed in update_peer_seq drbd: add page pool to be used for meta data IO drbd: use the newly introduced page pool for bitmap IO drbd: introduce a bio_set to allocate housekeeping bios from drbd: fix drbd_delete_device: remove vnr from volumes; idr_remove(); synchronize_rcu(); before cleanup drbd: get rid of drbd_bcast_ee, it is of no use anymore drbd: prepare the transition from connector to genetlink drbd: switch configuration interface from connector to genetlink drbd: allow holes in minor and volume id allocation drbd: remove now unused connector related files drbd: drbd_adm_get_status needs to show some more detail drbd: simplify conn_all_vols_unconf, make it bool drbd: Allow a Diskless Secondary volume to be removed drbd: new-connection and new-minor succeed, if the object already exists drbd: bail out if a config requrest is over-determined, and not matching drbd: add forgotten spin_unlock drbd: introduce in-kernel "down" command drbd: fix conn_reconfig_start without conn_reconfig_done in drbd_adm_attach drbd: distribute former syncer_conf settings to disk, connection, and resource level drbd: introduce the "initialized" activity log transaction type drbd: preparation commit, pass drbd_interval to drbd_al_begin/complete_io drbd: prepare to activate two activity log extents at once drbd: get rid of bio_split, allow bios of "arbitrary" size drbd: improvements to activate/deactivate multiple activity log extents drbd: allow status dump request all volumes of a specific resource drbd: fix setsockopt for user mode linux drbd: cmdname() enum to string convertion was missing a few constants drbd: move comment about stopping the receiver thread to where it belongs drbd: remove useless kobject_uevent from drbd_adm_connect drbd: fix various disconnecting races drbd: on reconfiguration requests, mind the SET_DEFAULTS flag drbd: rename variable ndc to new_disk_conf drbd: rename variable sc to res_opts drbd: fix copy/paste error in comment drbd: fix race when forcefully disconnecting drbd: fix thread stop deadlock drbd: fix schedule in atomic drbd: Introduce __s32_field in the genetlink macro magic drbd: skip spurious wait_event in drbd_al_begin_io 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: on attach, enforce clean meta data drbd: report net config even for resources without a single volume drbd: detach must not try to abort non-local requests drbd: fix connect failure with all default net-options drbd: fix bitmap writeout after aborted resync drbd: add missing rcu locks around recently introduced idr_for_each drbd: explicitly clear unused dp_flags in drbd_send_block drbd: Fix a potential race that could case data inconsistency drbd: Fix a potential write ordering issue on SyncTarget nodes drbd: Fixed detach 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: fix memleak in error path in bm_rw and drbd_bm_write_range drbd: remove some very outdated comments drbd: remove unused static helper function drbd: don't pretend that barrier_nr == 0 was special drbd: fix potential deadlock during "restart" of conflicting writes 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: conflicting writes: make wake_up of waiting peer_requests explicit drbd: factor out master_bio completion and drbd_request destruction paths drbd: move put_ldev from __req_mod() to the endio callback drbd: simplify retry path of failed READ requests drbd: complete_conflicting_writes() should not care about connections drbd: ignore volume number for drbd barrier packet exchange 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: bm_page_async_io: properly initialize page->private drbd: grammar fix in log message drbd: fix access of unallocated pages and kernel panic drbd: fix local read error hung forever drbd: fix wrong assert in completion/retry path of failed local reads drbd: rename drbd_restart_write to drbd_restart_request drbd: transfer log epoch numbers are now per resource drbd: allow to dequeue batches of work at a time drbd: move the drbd_work_queue from drbd_socket to drbd_connection drbd: remove struct drbd_tl_epoch objects (barrier works) drbd: better separate WRITE and READ code paths in drbd_make_request drbd: __drbd_make_request() is now void drbd: introduce completion_ref and kref to struct drbd_request drbd: base completion and destruction of requests on ref counts drbd: __req_mod: make DISCARD_WRITE and independend case drbd: allow read requests to be retried after force-detach drbd: take error path in drbd_adm_down if interrupted by signal drbd: fix null pointer dereference with on-congestion policy when diskless drbd: cleanup, remove two unused global flags drbd: differentiate between normal and forced detach drbd: report congestion if we are waiting for some userland callback drbd: reset congestion information before reporting it in /proc/drbd drbd: do not reset rs_pending_cnt too early drbd: call local-io-error handler early drbd: flush drbd work queue before invalidate/invalidate remote drbd: introduce stop-sector to online verify drbd: announce FLUSH/FUA capability to upper layers drbd: fix drbd wire compatibility for empty flushes drbd: Fix a potential issue with the DISCARD_CONCURRENT flag drbd: only start a new epoch, if the current epoch contains writes drbd: NEG_ACK does not imply a barrier-ack drbd: cleanup, drop unused struct drbd: disambiguation, s/P_DISCARD_WRITE/P_SUPERSEDED/ drbd: disambiguation, s/DISCARD_CONCURRENT/RESOLVE_CONFLICTS/ drbd: disambiguation, s/ERR_DISCARD/ERR_DISCARD_IMPOSSIBLE/ drbd: properly call drbd_rs_cancel_all() in drbd_disconnected() drbd: don't send out P_BARRIER with stale information drbd: temporarily suspend io in drbd_adm_disk_opts drbd: mutex_unlock "... must no be used in interrupt context" drbd: dequeue single work items in wait_for_work() drbd: fix potential list_add corruption drbd: differentiate early and later "postponing" of requests drbd: use list_move_tail instead of list_del/list_add_tail drbd: fix potential deadlock during bitmap (re-)allocation drbd: a few more GFP_KERNEL -> GFP_NOIO drbd: wait for meta data IO completion even with failed disk, unless force-detached drbd: always write bitmap on detach drbd: log request sector offset and size for IO errors drbd: if the replication link breaks during handshake, keep retrying Philipp Marek (1): drbd: pass some more information to userspace. Philipp Reisner (232): idr: idr_for_each_entry() macro drbd: Minimal struct drbd_tconn drbd: moved net_conf from mdev to tconn drbd: moved net_cont and net_cnt_wait from mdev to tconn drbd: moved data and meta from mdev to tconn drbd: moved receiver, worker and asender from mdev to tconn drbd: moved agreed_pro_version, last_received and ko_count to tconn drbd: moved req_lock and transfer log from mdev to tconn drbd: moved crypto transformations and friends from mdev to tconn drbd: Made drbd_flush_workqueue() to take a tconn instead of an mdev drbd: Preparing to use p_header96 for all packets drbd: Replaced all p_header80 with a generic p_header drbd: Use new header layout drbd: Implemented receiving of new style packets on meta socket drbd: Do not access tconn after it was freed drbd: Moved the state functions into its own source file drbd: Moved the thread name into the data structure drbd: Eliminated the user of drbd_task_to_thread() drbd: Moved code drbd: Do no sleep long in drbd_start_resync drbd: Revert "Make sure we dont send state if a cluster wide state change is in progress" drbd: Moving state related macros to drbd_state.h drbd: conn_printk() a dev_printk() alike for drbd's connections drbd: Converted drbd_try_connect() from mdev to tconn drbd: Converted drbd_wait_for_connect() from mdev to tconn drbd: Started to separated connection flags (tconn) from block device flags (mdev) drbd: Moved DISCARD_CONCURRENT to the per connection (tconn) flags drbd: Moved SEND_PING to the per connection (tconn) flags drbd: Moved SIGNAL_ASENDER to the per connection (tconn) flags drbd: Converted wake_asender() and request_ping() from mdev to tconn drbd: Converted helper functions for drbd_send() to tconn drbd: Converted drbd_send() from mdev to tconn drbd: Converted drbd_send_fp() from mdev to tconn drbd: Removed unused mdev argument from drbd_recv_short() and drbd_socket_okay() drbd: Converted drbd_recv_fp() from mdev to tconn drbd: Converted drbd_send_handshake() from mdev to tconn drbd: Converted drbd_recv() from mdev to tconn drbd: struct packet_info to hold information of decoded packets drbd: Converted decode_header() from mdev to tconn drbd: Converted drbd_recv_header() from mdev to tconn drbd: Converted drbd_do_handshake() from mdev to tconn drbd: Converted drbd_(get|put)_data_sock() and drbd_send_cmd2() to tconn drbd: Converted drbd_do_auth() from mdev to tconn drbd: Converted drbd_send_protocol() from mdev to tconn drbd: Use and idr data structure to map volume numbers to mdev pointers drbd: Converted drbd_connect() from mdev to tconn drbd: Converted drbd_calc_cpu_mask() and drbd_thread_current_set_cpu() from mdev to tconn drbd: Converted drbdd() from mdev to tconn drbd: Converted drbd_free_sock() and drbd_disconnect() from mdev to tconn drbd: Moved the mdev member into drbd_work (from drbd_request and drbd_peer_request) drbd: Consolidated the setup of the thread name into the framework drbd: Converted drbdd_init() from mdev to tconn drbd: Converted drbd_asender() from mdev to tconn drbd: Converted drbd_worker() from mdev to tconn drbd: drbd_thread has now a pointer to a tconn instead of to a mdev drbd: Moved some initializing code into drbd_new_tconn() drbd: Generalized the work callbacks drbd: Converted drbd_send_ping() and related functions from mdev to tconn drbd: Extracted after_conn_state_ch() out of after_state_ch() drbd: Renamed is_valid_state_transition() to is_valid_soft_transition() drbd: Extracted is_valid_transition() out of sanitize_state() drbd: Extracted is_valid_conn_transition() out of is_valid_transition() drbd: Removed the os parameter form sanitize_state() drbd: Code de-duplication; new function apply_mask_val() drbd: Killed volume0; last step of multi-volume-enablement drbd: Removed drbd_state_lock() and drbd_state_unlock() drbd: Introduced tconn->cstate_mutex drbd: Implemented conn_send_state_req() drbd: Global_state_lock not necessary here... drbd: Implemented receiving of P_CONN_ST_CHG_REPLY drbd: implemented receiving of P_CONN_ST_CHG_REQ drbd: Implemented connection wide state changes drbd: Reworked the unconfiguring and thread stopping code drbd: Removed the mdev parameter from the ..to_tags() and ...from_tags() functions drbd: Improved the dec_*() macros drbd: Converted the transfer log from mdev to tconn drbd: Preparing the connector interface to operator on connections drbd: Converted drbd_nl_(net_conf|disconnect)() from mdev to tconn drbd: Implemented new commands to create/delete connections/minors drbd: Replaced the minor_table array by an idr drbd: Ignore packets for non existing volumes drbd: process_done_ee() has to handle unconfigured devices now drbd: New minors have to intherit the connection state form their connection drbd: Allow two diskless minors to be connected drbd: Do not modify the connection state with something else that conn_request_state() drbd: Moved CONN_DRY_RUN to the per connection (tconn) flags drbd: Allow packet handler functions that take a connection drbd: Converted receive_protocol() from mdev to tconn drbd: Separate connection state changes from minor dev state changes #1 drbd: Allow packet handler functions that take a connection (meta connection) drbd: Converted got_Ping() and got_PingAck() from mdev to tconn drbd: Separate connection state changes from minor dev state changes #2 drbd: Allow volumes to become primary only on one side drbd: conn_khelper() for user mode callbacks for connections drbd: Fixed conn_lowest_minor drbd: Converted drbd_try_outdate_peer() from mdev to tconn drbd: Use the idr_for_each_entry() iterator instead of idr_for_each() drbd: Fixed logging of old connection state drbd: Print common state changes of all volumes as connection state changes drbd: Allow to disconnect if one volume is diskless drbd: Do not segfault if a sync dependency reaches a diskless device drbd: Introduced drbd_read_state() drbd: Renamed id_susp(union drbd_state s) to drbd_suspended(struct drbd_conf *) drbd: Moved susp, susp_nod and susp_fen to the connection object drbd: Introduced a new type union drbd_dev_state drbd: Renamed nms to ns_max drbd: Calculate and provide ns_min to the w_after_conn_state_ch() work drbd: Implemented conn_lowest_conn() drbd: Implemented conn_lowest_disk() drbd: Implemented IO thawing for multiple volumes drbd: Improved logging of state changes drbd: Use tconn in request_timer_fn() drbd: drbd_delete_device() takes a struct drbd_conf * now drbd: Inlined drbd_free_mdev(); it got called only from one place drbd: rcu_read_[un]lock() for all idr accesses that do not sleep drbd: Converted drbd_cfg_mutex into drbd_cfg_rwsem drbd: protect all idr accesses that might sleep with drbd_cfg_rwsem drbd: Runtime changeable wire protocol drbd: Check consistency of net options when the get changed online drbd: Allow online change of replication protocol only with agreed_pv >= 100 drbd: rcu_read_lock() and rcu_dereference() for tconn->net_conf drbd: Proper locking for updates to net_conf under RCU drbd: Considering that the two_primaries config flag can change drbd: Eliminated drbd_free_resoruces() it is superseeded by conn_free_crypto() drbd: Basic refcounting for drbd_tconn drbd: Take a reference on tconn when finding a tconn by name drbd: Removed the OBJECT_DYING and the CONFIG_PENDING bits drbd: Consider all crypto options in connect and in net-options drbd: Removed dead code drbd: Renamed the net_conf_update mutex to conf_update drbd: drbd_dew_dev_size() gets the user requests disk_size as argument drbd: Split drbd_alter_sa() into drbd_sync_after_valid() and drbd_sync_after_changed() drbd: Renamed (old|new)_conf into (old|new)_net_conf in receive_SyncParam drbd: RCU for disk_conf drbd: Made the fifo object a self contained object (preparing for RCU) drbd: Enforce limits of disk_conf members; centralized these checks drbd: RCU for rs_plan_s drbd: Refcounting for mdev objects drbd: Use RCU for the drbd_tconns list drbd: Removing drbd_cfg_rwsem drbd: Refuse to change network options online when... drbd: protect updates to integrits_tfm by tconn->data->mutex drbd: Made cmp_after_sb() more generic into convert_after_sb() drbd: Allocation of int_dig_in and int_dig_vv was missing drbd: Receiving part for the PROTOCOL_UPDATE packet drbd: Send PROTOCOL_UPDATE packets when appropriate drbd: Lower log priority for an event that is definitely not an error drbd: Fixes from the 8.3 development branch drbd: Improve compatibility with drbd's older than 8.3.7 drbd: Fixed state transitions in case reading meta data failes drbd: detach from frozen backing device drbd: Fixed removal of volumes/devices from connected resources drbd: Eliminated the "notified peer" messages drbd: Correctly handle resources without volumes drbd: Changed some defaults drbd: Dropped wrong clause to generate new current UUIDs drbd: Consider that the no-data-condition could be in connected state drbd: Do not mod_timer() with a past time drbd: Missing assignment of mdev before drbd_queue_work() drbd: Fixed w_restart_disk_io() to handle non active AL-extents drbd: Bugfix for the connection behavior drbd: Do not display bogus log lines for pdsk in case pdsk < D_UNKNOWN drbd: The minor_count module parameter is only a hint nowadays drbd: Cleanup all epoch objects upon connection loss drbd: Remove dead code drbd: Remove unused code drbd: Consider the discard-my-data flag for all volumes [bugz 359] drbd: fix "stalled" empty resync drbd: Silenced compiler warnings drbd: Fixes from the drbd-8.3 branch drbd: Fixes from the drbd-8.3 branch drbd: Fixed an obvious copy-n-paste mistake drbd: Move the CREATE_BARRIER flag from connection to device drbd: Move write_ordering from mdev to tconn drbd: Prepare epochs per connection drbd: Move list of epochs from mdev to tconn drbd: Switch drbd_may_finish_epoch() from mdev to tconn drbd: Fix the WO=drain implementation for multiple volumes drbd: fix potential spinlock deadlock drbd: Get rid of "ASSERTION FAILED: tconn->current_epoch->list not empty" drbd: Load balancing of read requests drbd: Load balancing method: striping drbd: Do not call generic_make_request() while holding req_lock drbd: fix race between disconnect and receive_state drbd: Do not send state packets while lower than C_CONNECTED cstate drbd: Consider that read requests could be NEG_ACKEDed drbd: Log failures of connection state changes drbd: Restore late assigning of tconn->data.sock and meta.sock drbd: restart loop in drbd_make_request() [prepare for Linux-3.2] drbd: Fixed compat issue with disconnecting 8.4 from a primary 8.3 drbd: Reinstate disabling AL updates with invalidate-remote drbd: Consider the disk-timeout also for meta-data IO operations drbd: If disk timeout expires fail only the affected volume drbd: Fix module refcount leak in drbd_accept() drbd: add missing part_round_stats to _drbd_start_io_acct drbd: Consider that bio->bi_bdev might be modified below DRBD drbd: Fixed processing of disk-barrier, disk-flushes and disk-drain 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: fix spelling, remove boring development log message drbd: use bitmap_parse instead of __bitmap_parse drbd: Move the call to listen() out of drbd_accept() drbd: Remove drbd_accept() and use kernel_accept() instead drbd: New disk option al-updates drbd: pull prepare_listen_socket() out of drbd_wait_for_connect() drbd: Keep the listening socket open while trying to connect to the peer drbd: Remove redundant and wrong test for NULL simplification in conn_connect() drbd: Try to connec to peer only once per cycle drbd: More random to the connect logic drbd: Finish requests that completed while IO was frozen drbd: Fix completion of requests while the device is suspended drbd: Write all pages of the bitmap after an online resize drbd: Protect accesses to the uuid set with a spinlock drbd: Avoid NetworkFailure state during disconnect drbd: Remove dead code drbd: Fix a race condition that can lead to a BUG() drbd: Fix IO resuming after connection was established while executing the fence handler drbd: Improve readability of IO resuming after freeze due to no data access drbd: Do not check aspects that are not subject to change in _conn_requests_state() drbd: Fix the way the STATE_SENT bit is cleared drbd: Imporve the error reporting of failed conn state changes drbd: Fix postponed requests drbd: Call drbd_md_sync() explicitly after a state change on the connection drbd: Fix postponed requests drbd: Remove duplicate code drbd: Fix comparison of is_valid_transition()'s return code drbd: panic on delayed completion of aborted requests drbd: Fix clearing of MDF_AL_DISABLED drbd: fix regression: potential NULL pointer dereference drbd: don't try to clear bits once the disk has failed drbd: Broadcast sync progress no more often than once per second Merge branch 'drbd-8.4_ed6' into for-3.8-drivers-drbd-8.4_ed6 drivers/block/drbd/Makefile | 2 + drivers/block/drbd/drbd_actlog.c | 689 +++---- drivers/block/drbd/drbd_bitmap.c | 227 ++- drivers/block/drbd/drbd_int.h | 1398 ++++++------- drivers/block/drbd/drbd_interval.c | 207 ++ drivers/block/drbd/drbd_interval.h | 40 + drivers/block/drbd/drbd_main.c | 3883 ++++++++++++++---------------------- drivers/block/drbd/drbd_nl.c | 3378 ++++++++++++++++++------------- drivers/block/drbd/drbd_nla.c | 55 + drivers/block/drbd/drbd_nla.h | 8 + drivers/block/drbd/drbd_proc.c | 33 +- drivers/block/drbd/drbd_receiver.c | 3883 +++++++++++++++++++++--------------- drivers/block/drbd/drbd_req.c | 1569 +++++++-------- drivers/block/drbd/drbd_req.h | 187 +- drivers/block/drbd/drbd_state.c | 1857 +++++++++++++++++ drivers/block/drbd/drbd_state.h | 161 ++ drivers/block/drbd/drbd_strings.c | 1 + drivers/block/drbd/drbd_worker.c | 1168 ++++++----- drivers/block/drbd/drbd_wrappers.h | 11 +- include/linux/drbd.h | 81 +- include/linux/drbd_genl.h | 378 ++++ include/linux/drbd_genl_api.h | 55 + include/linux/drbd_limits.h | 90 +- include/linux/drbd_nl.h | 164 -- include/linux/drbd_tag_magic.h | 84 - include/linux/genl_magic_func.h | 422 ++++ include/linux/genl_magic_struct.h | 277 +++ include/linux/idr.h | 11 + include/linux/lru_cache.h | 67 +- lib/lru_cache.c | 359 ++-- 30 files changed, 12115 insertions(+), 8630 deletions(-) create mode 100644 drivers/block/drbd/drbd_interval.c create mode 100644 drivers/block/drbd/drbd_interval.h create mode 100644 drivers/block/drbd/drbd_nla.c create mode 100644 drivers/block/drbd/drbd_nla.h create mode 100644 drivers/block/drbd/drbd_state.c create mode 100644 drivers/block/drbd/drbd_state.h create mode 100644 include/linux/drbd_genl.h create mode 100644 include/linux/drbd_genl_api.h delete mode 100644 include/linux/drbd_nl.h delete mode 100644 include/linux/drbd_tag_magic.h create mode 100644 include/linux/genl_magic_func.h create mode 100644 include/linux/genl_magic_struct.h ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Drbd-dev] [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window 2012-11-09 13:33 ` Philipp Reisner @ 2012-11-09 14:18 ` Jens Axboe -1 siblings, 0 replies; 18+ messages in thread From: Jens Axboe @ 2012-11-09 14:18 UTC (permalink / raw) To: Philipp Reisner; +Cc: linux-kernel, drbd-dev On 2012-11-09 14:33, Philipp Reisner wrote: > Jens, here it is without the sysfs stuff Thanks, pulled into for-3.8/drivers -- Jens Axboe ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window @ 2012-11-09 14:18 ` Jens Axboe 0 siblings, 0 replies; 18+ messages in thread From: Jens Axboe @ 2012-11-09 14:18 UTC (permalink / raw) To: Philipp Reisner; +Cc: drbd-dev, linux-kernel On 2012-11-09 14:33, Philipp Reisner wrote: > Jens, here it is without the sysfs stuff Thanks, pulled into for-3.8/drivers -- Jens Axboe ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Drbd-dev] [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window 2012-11-09 14:18 ` Jens Axboe @ 2012-11-09 14:50 ` Jens Axboe -1 siblings, 0 replies; 18+ messages in thread From: Jens Axboe @ 2012-11-09 14:50 UTC (permalink / raw) To: Philipp Reisner; +Cc: linux-kernel, drbd-dev On 2012-11-09 15:18, Jens Axboe wrote: > On 2012-11-09 14:33, Philipp Reisner wrote: >> Jens, here it is without the sysfs stuff > > Thanks, pulled into for-3.8/drivers I didn't say anything, but I've been fuming a bit the last few series of merge windows. You need to stop these insanely massive pull requests. I've been large since this is "just a driver", but it can't continue. We should have reached stability a long time ago. Your pull requests contain a shit load of items, are you guys paying per commit? Look at these: drbd: Request lookup code cleanup (1) drbd: Request lookup code cleanup (2) drbd: Request lookup code cleanup (3) drbd: Request lookup code cleanup (4) or drbd: conn_send_cmd2(): Return 0 upon success and an error code otherwise drbd: _conn_send_cmd(): Return 0 upon success and an error code otherwise drbd: _drbd_send_cmd(): Return 0 upon success and an error code otherwise drbd: conn_send_cmd(): Return 0 upon success and an error code otherwise along with FIFTY or so more of these. WTF is this? drbd: Converted helper functions for drbd_send() to tconn drbd: Converted drbd_send() from mdev to tconn drbd: Converted drbd_send_fp() from mdev to tconn ... I don't think I need to go on. So from now on, to get items into the kernel, what you will do is: - Stop doing insane commits like the above. It just doesn't make sense. - Send pull requests in a timely fashion. No more of this "lets collect ALL the things" then send it off. Collect small bug fixes, send those off. Develop some feature or make some changes, send that off. Etc. The fact that your initial pull request had to MASK all these commits should have rung big bells in your head. It's a clear sign of a huge problem in your development model. If you can't clean this up, then it's not going in. -- Jens Axboe ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window @ 2012-11-09 14:50 ` Jens Axboe 0 siblings, 0 replies; 18+ messages in thread From: Jens Axboe @ 2012-11-09 14:50 UTC (permalink / raw) To: Philipp Reisner; +Cc: drbd-dev, linux-kernel On 2012-11-09 15:18, Jens Axboe wrote: > On 2012-11-09 14:33, Philipp Reisner wrote: >> Jens, here it is without the sysfs stuff > > Thanks, pulled into for-3.8/drivers I didn't say anything, but I've been fuming a bit the last few series of merge windows. You need to stop these insanely massive pull requests. I've been large since this is "just a driver", but it can't continue. We should have reached stability a long time ago. Your pull requests contain a shit load of items, are you guys paying per commit? Look at these: drbd: Request lookup code cleanup (1) drbd: Request lookup code cleanup (2) drbd: Request lookup code cleanup (3) drbd: Request lookup code cleanup (4) or drbd: conn_send_cmd2(): Return 0 upon success and an error code otherwise drbd: _conn_send_cmd(): Return 0 upon success and an error code otherwise drbd: _drbd_send_cmd(): Return 0 upon success and an error code otherwise drbd: conn_send_cmd(): Return 0 upon success and an error code otherwise along with FIFTY or so more of these. WTF is this? drbd: Converted helper functions for drbd_send() to tconn drbd: Converted drbd_send() from mdev to tconn drbd: Converted drbd_send_fp() from mdev to tconn ... I don't think I need to go on. So from now on, to get items into the kernel, what you will do is: - Stop doing insane commits like the above. It just doesn't make sense. - Send pull requests in a timely fashion. No more of this "lets collect ALL the things" then send it off. Collect small bug fixes, send those off. Develop some feature or make some changes, send that off. Etc. The fact that your initial pull request had to MASK all these commits should have rung big bells in your head. It's a clear sign of a huge problem in your development model. If you can't clean this up, then it's not going in. -- Jens Axboe ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Drbd-dev] [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window 2012-11-09 14:50 ` Jens Axboe @ 2012-11-09 15:19 ` Philipp Reisner -1 siblings, 0 replies; 18+ messages in thread From: Philipp Reisner @ 2012-11-09 15:19 UTC (permalink / raw) To: Jens Axboe; +Cc: linux-kernel, drbd-dev Am Freitag, 9. November 2012, 15:50:24 schrieb Jens Axboe: > On 2012-11-09 15:18, Jens Axboe wrote: > > On 2012-11-09 14:33, Philipp Reisner wrote: > >> Jens, here it is without the sysfs stuff > > > > Thanks, pulled into for-3.8/drivers > > I didn't say anything, but I've been fuming a bit the last few series of > merge windows. You need to stop these insanely massive pull requests. > I've been large since this is "just a driver", but it can't continue. We > should have reached stability a long time ago. Your pull requests > contain a shit load of items, are you guys paying per commit? Look at > these: > > drbd: Request lookup code cleanup (1) > drbd: Request lookup code cleanup (2) > drbd: Request lookup code cleanup (3) > drbd: Request lookup code cleanup (4) > We are living there in the belief that we should break up big changes in review able chunks.... > or > > drbd: conn_send_cmd2(): Return 0 upon success and an error code > otherwise drbd: _conn_send_cmd(): Return 0 upon success and an error code > otherwise drbd: _drbd_send_cmd(): Return 0 upon success and an error code > otherwise drbd: conn_send_cmd(): Return 0 upon success and an error code > otherwise > Function by function gets converted to the "return 0 upon success" call semantics. Do you prefer that all of that should be done in a single commit? > along with FIFTY or so more of these. WTF is this? > > drbd: Converted helper functions for drbd_send() to tconn > drbd: Converted drbd_send() from mdev to tconn > drbd: Converted drbd_send_fp() from mdev to tconn > Should it instead be in a single commit? > > I don't think I need to go on. So from now on, to get items into the > kernel, what you will do is: > > - Stop doing insane commits like the above. It just doesn't make sense. > > - Send pull requests in a timely fashion. No more of this "lets collect > ALL the things" then send it off. Collect small bug fixes, send those > off. Develop some feature or make some changes, send that off. Etc. That works well for individual features, and we have been doing that for the last two Years. But at this time we changed the object model. In the old code we had a single kind of DRBD-in-kernel-object: a resource Now we have two kinds: resources and volumes. 8.3: a resource had a single implicit volume 8.4: a resource might contain multiple volumes, each volume belongs to a single resource. In the next ~12 month you will get only small features/updates etc... for the 8.4 code base. > The fact that your initial pull request had to MASK all these commits > should have rung big bells in your head. It's a clear sign of a huge > problem in your development model. If you can't clean this up, then > it's not going in. Fundamental changes in our object model require such huge change sets. Jens, we will not stop where we are today. We plan to introduce a new object: a connection. (The ability to mirror for one machine to *multiple* receivers.) Is it a better fit to introduce it then as a new driver? E.g. called it "drbd9". Should it use a new major number? Best, Phil ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window @ 2012-11-09 15:19 ` Philipp Reisner 0 siblings, 0 replies; 18+ messages in thread From: Philipp Reisner @ 2012-11-09 15:19 UTC (permalink / raw) To: Jens Axboe; +Cc: drbd-dev, linux-kernel Am Freitag, 9. November 2012, 15:50:24 schrieb Jens Axboe: > On 2012-11-09 15:18, Jens Axboe wrote: > > On 2012-11-09 14:33, Philipp Reisner wrote: > >> Jens, here it is without the sysfs stuff > > > > Thanks, pulled into for-3.8/drivers > > I didn't say anything, but I've been fuming a bit the last few series of > merge windows. You need to stop these insanely massive pull requests. > I've been large since this is "just a driver", but it can't continue. We > should have reached stability a long time ago. Your pull requests > contain a shit load of items, are you guys paying per commit? Look at > these: > > drbd: Request lookup code cleanup (1) > drbd: Request lookup code cleanup (2) > drbd: Request lookup code cleanup (3) > drbd: Request lookup code cleanup (4) > We are living there in the belief that we should break up big changes in review able chunks.... > or > > drbd: conn_send_cmd2(): Return 0 upon success and an error code > otherwise drbd: _conn_send_cmd(): Return 0 upon success and an error code > otherwise drbd: _drbd_send_cmd(): Return 0 upon success and an error code > otherwise drbd: conn_send_cmd(): Return 0 upon success and an error code > otherwise > Function by function gets converted to the "return 0 upon success" call semantics. Do you prefer that all of that should be done in a single commit? > along with FIFTY or so more of these. WTF is this? > > drbd: Converted helper functions for drbd_send() to tconn > drbd: Converted drbd_send() from mdev to tconn > drbd: Converted drbd_send_fp() from mdev to tconn > Should it instead be in a single commit? > > I don't think I need to go on. So from now on, to get items into the > kernel, what you will do is: > > - Stop doing insane commits like the above. It just doesn't make sense. > > - Send pull requests in a timely fashion. No more of this "lets collect > ALL the things" then send it off. Collect small bug fixes, send those > off. Develop some feature or make some changes, send that off. Etc. That works well for individual features, and we have been doing that for the last two Years. But at this time we changed the object model. In the old code we had a single kind of DRBD-in-kernel-object: a resource Now we have two kinds: resources and volumes. 8.3: a resource had a single implicit volume 8.4: a resource might contain multiple volumes, each volume belongs to a single resource. In the next ~12 month you will get only small features/updates etc... for the 8.4 code base. > The fact that your initial pull request had to MASK all these commits > should have rung big bells in your head. It's a clear sign of a huge > problem in your development model. If you can't clean this up, then > it's not going in. Fundamental changes in our object model require such huge change sets. Jens, we will not stop where we are today. We plan to introduce a new object: a connection. (The ability to mirror for one machine to *multiple* receivers.) Is it a better fit to introduce it then as a new driver? E.g. called it "drbd9". Should it use a new major number? Best, Phil ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Drbd-dev] [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window 2012-11-09 15:19 ` Philipp Reisner @ 2012-11-09 19:49 ` Jens Axboe -1 siblings, 0 replies; 18+ messages in thread From: Jens Axboe @ 2012-11-09 19:49 UTC (permalink / raw) To: Philipp Reisner; +Cc: linux-kernel, drbd-dev On 2012-11-09 16:19, Philipp Reisner wrote: > Am Freitag, 9. November 2012, 15:50:24 schrieb Jens Axboe: >> On 2012-11-09 15:18, Jens Axboe wrote: >>> On 2012-11-09 14:33, Philipp Reisner wrote: >>>> Jens, here it is without the sysfs stuff >>> >>> Thanks, pulled into for-3.8/drivers >> >> I didn't say anything, but I've been fuming a bit the last few series of >> merge windows. You need to stop these insanely massive pull requests. >> I've been large since this is "just a driver", but it can't continue. We >> should have reached stability a long time ago. Your pull requests >> contain a shit load of items, are you guys paying per commit? Look at >> these: >> >> drbd: Request lookup code cleanup (1) >> drbd: Request lookup code cleanup (2) >> drbd: Request lookup code cleanup (3) >> drbd: Request lookup code cleanup (4) >> > > We are living there in the belief that we should break up big > changes in review able chunks.... Don't be silly. Of course things should be broken up. But they should be broken up in logical steps needed to convert from state X to Y. What does reqeust code cleanup (1) mean? Nothing. Lets take a look at the commit message: Move _ar_id_to_req() to drbd_receiver.c and mark it non-inline. Remove the leading underscores from _ar_id_to_req() and _ack_id_to_req(). Mark ar_hash_slot() inline. which is exactly the wrong way as well. A commit message should explain why a given change is done. The above describes how it's done. We can all read the code and see that. In other words, you need to school people on what a commit is, and what a series of commits is. >> or >> >> drbd: conn_send_cmd2(): Return 0 upon success and an error code >> otherwise drbd: _conn_send_cmd(): Return 0 upon success and an error code >> otherwise drbd: _drbd_send_cmd(): Return 0 upon success and an error code >> otherwise drbd: conn_send_cmd(): Return 0 upon success and an error code >> otherwise >> > > Function by function gets converted to the "return 0 upon success" call > semantics. > Do you prefer that all of that should be done in a single commit? For this case, yes indeed. Then it'd make more sense to describe why that change was made. For this particular one, it's fairly easy to guess why the change was needed. >> along with FIFTY or so more of these. WTF is this? >> >> drbd: Converted helper functions for drbd_send() to tconn >> drbd: Converted drbd_send() from mdev to tconn >> drbd: Converted drbd_send_fp() from mdev to tconn >> > > Should it instead be in a single commit? > >> >> I don't think I need to go on. So from now on, to get items into the >> kernel, what you will do is: >> >> - Stop doing insane commits like the above. It just doesn't make sense. >> >> - Send pull requests in a timely fashion. No more of this "lets collect >> ALL the things" then send it off. Collect small bug fixes, send those >> off. Develop some feature or make some changes, send that off. Etc. > > That works well for individual features, and we have been doing that > for the last two Years. > > But at this time we changed the object model. In the old code we had > a single kind of DRBD-in-kernel-object: a resource > Now we have two kinds: resources and volumes. > > 8.3: a resource had a single implicit volume > > 8.4: a resource might contain multiple volumes, each volume belongs to > a single resource. > > In the next ~12 month you will get only small features/updates etc... for > the 8.4 code base. If you had just structured it a bit better, then 8.3 -> 8.4 transition would look a lot less painful. As it stands right now, it's just a huge mess of little changes. But I'm happy that you think that the next 12 months will have only gradual changes for bug fixes and features. >> The fact that your initial pull request had to MASK all these commits >> should have rung big bells in your head. It's a clear sign of a huge >> problem in your development model. If you can't clean this up, then >> it's not going in. > > Fundamental changes in our object model require such huge change sets. > Jens, we will not stop where we are today. We plan to introduce a new > object: a connection. (The ability to mirror for one machine to *multiple* > receivers.) If you think I'm asking you to stop developing, then you are completely missing the message. I'm asking you to CHANGE how you develop, or at least present, these changes. Tons of little changes reak of "hey lets do this in this function. then lets also do this in that function". A bit more structure would go a long way. What I usually do is that I may develop from the first model, then refactor and structure everything to look a lot nicer. A big part of being able to review a patch series is understanding where it's going. Step 1 does this, step 2 does that, etc. If you have 500 changes of "change return code from void to err/0", well... It may be that you have nice structure underneath it and it's just hidden behind this mess. If so, it'll be easier for you to make it better. > Is it a better fit to introduce it then as a new driver? > E.g. called it "drbd9". > Should it use a new major number? No, I definitely don't want another "here's drbd9" submission. We've already done that for v8, and it's not been smooth sailing. Incrementally move things over, make it a more open and logical development model. -- Jens Axboe ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window @ 2012-11-09 19:49 ` Jens Axboe 0 siblings, 0 replies; 18+ messages in thread From: Jens Axboe @ 2012-11-09 19:49 UTC (permalink / raw) To: Philipp Reisner; +Cc: drbd-dev, linux-kernel On 2012-11-09 16:19, Philipp Reisner wrote: > Am Freitag, 9. November 2012, 15:50:24 schrieb Jens Axboe: >> On 2012-11-09 15:18, Jens Axboe wrote: >>> On 2012-11-09 14:33, Philipp Reisner wrote: >>>> Jens, here it is without the sysfs stuff >>> >>> Thanks, pulled into for-3.8/drivers >> >> I didn't say anything, but I've been fuming a bit the last few series of >> merge windows. You need to stop these insanely massive pull requests. >> I've been large since this is "just a driver", but it can't continue. We >> should have reached stability a long time ago. Your pull requests >> contain a shit load of items, are you guys paying per commit? Look at >> these: >> >> drbd: Request lookup code cleanup (1) >> drbd: Request lookup code cleanup (2) >> drbd: Request lookup code cleanup (3) >> drbd: Request lookup code cleanup (4) >> > > We are living there in the belief that we should break up big > changes in review able chunks.... Don't be silly. Of course things should be broken up. But they should be broken up in logical steps needed to convert from state X to Y. What does reqeust code cleanup (1) mean? Nothing. Lets take a look at the commit message: Move _ar_id_to_req() to drbd_receiver.c and mark it non-inline. Remove the leading underscores from _ar_id_to_req() and _ack_id_to_req(). Mark ar_hash_slot() inline. which is exactly the wrong way as well. A commit message should explain why a given change is done. The above describes how it's done. We can all read the code and see that. In other words, you need to school people on what a commit is, and what a series of commits is. >> or >> >> drbd: conn_send_cmd2(): Return 0 upon success and an error code >> otherwise drbd: _conn_send_cmd(): Return 0 upon success and an error code >> otherwise drbd: _drbd_send_cmd(): Return 0 upon success and an error code >> otherwise drbd: conn_send_cmd(): Return 0 upon success and an error code >> otherwise >> > > Function by function gets converted to the "return 0 upon success" call > semantics. > Do you prefer that all of that should be done in a single commit? For this case, yes indeed. Then it'd make more sense to describe why that change was made. For this particular one, it's fairly easy to guess why the change was needed. >> along with FIFTY or so more of these. WTF is this? >> >> drbd: Converted helper functions for drbd_send() to tconn >> drbd: Converted drbd_send() from mdev to tconn >> drbd: Converted drbd_send_fp() from mdev to tconn >> > > Should it instead be in a single commit? > >> >> I don't think I need to go on. So from now on, to get items into the >> kernel, what you will do is: >> >> - Stop doing insane commits like the above. It just doesn't make sense. >> >> - Send pull requests in a timely fashion. No more of this "lets collect >> ALL the things" then send it off. Collect small bug fixes, send those >> off. Develop some feature or make some changes, send that off. Etc. > > That works well for individual features, and we have been doing that > for the last two Years. > > But at this time we changed the object model. In the old code we had > a single kind of DRBD-in-kernel-object: a resource > Now we have two kinds: resources and volumes. > > 8.3: a resource had a single implicit volume > > 8.4: a resource might contain multiple volumes, each volume belongs to > a single resource. > > In the next ~12 month you will get only small features/updates etc... for > the 8.4 code base. If you had just structured it a bit better, then 8.3 -> 8.4 transition would look a lot less painful. As it stands right now, it's just a huge mess of little changes. But I'm happy that you think that the next 12 months will have only gradual changes for bug fixes and features. >> The fact that your initial pull request had to MASK all these commits >> should have rung big bells in your head. It's a clear sign of a huge >> problem in your development model. If you can't clean this up, then >> it's not going in. > > Fundamental changes in our object model require such huge change sets. > Jens, we will not stop where we are today. We plan to introduce a new > object: a connection. (The ability to mirror for one machine to *multiple* > receivers.) If you think I'm asking you to stop developing, then you are completely missing the message. I'm asking you to CHANGE how you develop, or at least present, these changes. Tons of little changes reak of "hey lets do this in this function. then lets also do this in that function". A bit more structure would go a long way. What I usually do is that I may develop from the first model, then refactor and structure everything to look a lot nicer. A big part of being able to review a patch series is understanding where it's going. Step 1 does this, step 2 does that, etc. If you have 500 changes of "change return code from void to err/0", well... It may be that you have nice structure underneath it and it's just hidden behind this mess. If so, it'll be easier for you to make it better. > Is it a better fit to introduce it then as a new driver? > E.g. called it "drbd9". > Should it use a new major number? No, I definitely don't want another "here's drbd9" submission. We've already done that for v8, and it's not been smooth sailing. Incrementally move things over, make it a more open and logical development model. -- Jens Axboe ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2012-11-09 19:49 UTC | newest] Thread overview: 18+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-11-09 11:36 [Drbd-dev] [GIT PULL] drbd-8.4.2 for the linux-3.8 merge window Philipp Reisner 2012-11-09 11:36 ` Philipp Reisner 2012-11-09 11:40 ` [Drbd-dev] " Jens Axboe 2012-11-09 11:40 ` Jens Axboe 2012-11-09 12:42 ` [Drbd-dev] " Philipp Reisner 2012-11-09 12:42 ` Philipp Reisner 2012-11-09 12:56 ` [Drbd-dev] " Jens Axboe 2012-11-09 12:56 ` Jens Axboe 2012-11-09 13:33 ` [Drbd-dev] " Philipp Reisner 2012-11-09 13:33 ` Philipp Reisner 2012-11-09 14:18 ` [Drbd-dev] " Jens Axboe 2012-11-09 14:18 ` Jens Axboe 2012-11-09 14:50 ` [Drbd-dev] " Jens Axboe 2012-11-09 14:50 ` Jens Axboe 2012-11-09 15:19 ` [Drbd-dev] " Philipp Reisner 2012-11-09 15:19 ` Philipp Reisner 2012-11-09 19:49 ` [Drbd-dev] " Jens Axboe 2012-11-09 19:49 ` Jens Axboe
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.