Philipp Reisner
774b305518
drbd: Implemented new commands to create/delete connections/minors
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:48:00 +02:00
Philipp Reisner
80883197da
drbd: Converted drbd_nl_(net_conf|disconnect)() from mdev to tconn
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:48:00 +02:00
Philipp Reisner
1aba4d7fcf
drbd: Preparing the connector interface to operator on connections
...
Up to now it only operated on minor numbers. Now it can work also
on named connections.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:59 +02:00
Philipp Reisner
2f5cdd0b2c
drbd: Converted the transfer log from mdev to tconn
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:58 +02:00
Andreas Gruenbacher
6e849ce88c
drbd: Get rid of P_MAX_CMD
...
Instead of artificially enlarging the command decoding arrays to
P_MAX_CMD entries, check if an index is within the valid range using the
ARRAY_SIZE() macro.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:53 +02:00
Andreas Gruenbacher
7be8da0798
drbd: Improve how conflicting writes are handled
...
The previous algorithm for dealing with overlapping concurrent writes
was generating unnecessary warnings for scenarios which could be
legitimate, and did not always handle partially overlapping requests
correctly. Improve it algorithm as follows:
* While local or remote write requests are in progress, conflicting new
local write requests will be delayed (commit 82172f7).
* When a conflict between a local and remote write request is detected,
the node with the discard flag decides how to resolve the conflict: It
will ask its peer to discard conflicting requests which are fully
contained in the local request and retry requests which overlap only
partially. This involves a protocol change.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:51 +02:00
Andreas Gruenbacher
8ccf218e9f
drbd: Replace atomic_add_return with atomic_inc_return
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:50 +02:00
Lars Ellenberg
7ad651b522
drbd: new on-disk activity log transaction format
...
Use a new on-disk transaction format for the activity log, which allows
for multiple changes to the active set per transaction.
Using 4k transaction blocks, we can now get rid of the work-around code
to deal with devices not supporting 512 byte logical block size.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:46 +02:00
Lars Ellenberg
4738fa1690
drbd: use clear_bit_unlock() where appropriate
...
Some open-coded clear_bit(); smp_mb__after_clear_bit();
should in fact have been smp_mb__before_clear_bit(); clear_bit();
Instead, use clear_bit_unlock() to annotate the intention,
and have it do the right thing.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:42 +02:00
Philipp Reisner
047cd4a682
drbd: implemented receiving of P_CONN_ST_CHG_REQ
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:45:05 +02:00
Philipp Reisner
cf29c9d8c8
drbd: Implemented conn_send_state_req()
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:45:02 +02:00
Philipp Reisner
8410da8f0e
drbd: Introduced tconn->cstate_mutex
...
In compatibility mode with old DRBDs, use that as the state_mutex
as well.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:45:01 +02:00
Philipp Reisner
bbeb641c3e
drbd: Killed volume0; last step of multi-volume-enablement
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:44:58 +02:00
Philipp Reisner
2a67d8b93b
drbd: Converted drbd_send_ping() and related functions from mdev to tconn
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:33:16 +02:00
Philipp Reisner
00d56944ff
drbd: Generalized the work callbacks
...
No longer work callbacks must operate on a mdev. From now on they
can also operate on a tconn.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:33:15 +02:00
Philipp Reisner
6699b65533
drbd: Moved some initializing code into drbd_new_tconn()
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:33:14 +02:00
Philipp Reisner
392c880192
drbd: drbd_thread has now a pointer to a tconn instead of to a mdev
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:33:13 +02:00
Philipp Reisner
f1b3a6ec7d
drbd: Consolidated the setup of the thread name into the framework
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:33:09 +02:00
Philipp Reisner
a21e929827
drbd: Moved the mdev member into drbd_work (from drbd_request and drbd_peer_request)
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:33:08 +02:00
Philipp Reisner
360cc74052
drbd: Converted drbd_free_sock() and drbd_disconnect() from mdev to tconn
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:33:06 +02:00
Philipp Reisner
808222845d
drbd: Converted drbd_calc_cpu_mask() and drbd_thread_current_set_cpu() from mdev to tconn
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:33:04 +02:00
Philipp Reisner
062e879c8b
drbd: Use and idr data structure to map volume numbers to mdev pointers
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:33:02 +02:00
Philipp Reisner
dc8228d107
drbd: Converted drbd_send_protocol() from mdev to tconn
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:33:01 +02:00
Philipp Reisner
611208706f
drbd: Converted drbd_(get|put)_data_sock() and drbd_send_cmd2() to tconn
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:32:59 +02:00
Philipp Reisner
d38e787ecc
drbd: Converted drbd_send_fp() from mdev to tconn
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:29:45 +02:00
Philipp Reisner
bedbd2a53a
drbd: Converted drbd_send() from mdev to tconn
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:27:00 +02:00
Philipp Reisner
1a7ba646e9
drbd: Converted helper functions for drbd_send() to tconn
...
* drbd_update_congested()
* we_should_drop_the_connection()
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:59 +02:00
Philipp Reisner
0625ac190d
drbd: Converted wake_asender() and request_ping() from mdev to tconn
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:58 +02:00
Philipp Reisner
01a311a589
drbd: Started to separated connection flags (tconn) from block device flags (mdev)
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:54 +02:00
Philipp Reisner
60ae496626
drbd: conn_printk() a dev_printk() alike for drbd's connections
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:50 +02:00
Philipp Reisner
8ea62f5464
drbd: Revert "Make sure we dont send state if a cluster wide state change is in progress"
...
This reverts commit 6e9fdc92b77915d5c7ab8fea751f48378f8b0080.
1) This did not fixed the issue
2) Long sleeping work items can cause IO requests to take as long as
the longest work item
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:48 +02:00
Philipp Reisner
bc31fe3352
drbd: Eliminated the user of drbd_task_to_thread()
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:45 +02:00
Philipp Reisner
bed879ae90
drbd: Moved the thread name into the data structure
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:44 +02:00
Philipp Reisner
b890733953
drbd: Moved the state functions into its own source file
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:43 +02:00
Andreas Gruenbacher
db830c464b
drbd: Local variable renames: e -> peer_req
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:42 +02:00
Andreas Gruenbacher
6c852beca1
drbd: Update some comments
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:41 +02:00
Andreas Gruenbacher
f6ffca9f42
drbd: Rename struct drbd_epoch_entry to struct drbd_peer_request
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:39 +02:00
Andreas Gruenbacher
5e4722645a
drbd: _req_conflicts(): Get rid of the epoch_entries tree
...
Instead of keeping a separate tree for local and remote write requests
for finding requests and for conflict detection, use the same tree for
both purposes. Introduce a flag to allow distinguishing the two
possible types of entries in this tree.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:32 +02:00
Andreas Gruenbacher
9e204cddaf
drbd: Move some functions to where they are used
...
Move drbd_update_congested() to drbd_main.c, and drbd_req_new() and
drbd_req_free() to drbd_req.c: those functions are not used anywhere
else.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:28 +02:00
Andreas Gruenbacher
cc378270e4
drbd: Initialize the sequence number sent over the network even when not used
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:26 +02:00
Andreas Gruenbacher
bdc7adb006
drbd: Remove redundant initialization
...
packet_seq is initialized by both sides of a connection in
drbd_connect().
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:25 +02:00
Andreas Gruenbacher
d876302306
drbd: Rename "enum drbd_packets" to "enum drbd_packet"
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:24 +02:00
Andreas Gruenbacher
f2ad906379
drbd: Move cmdname() out of drbd_int.h
...
There is no good reason for cmdname() to be an inline function.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:23 +02:00
Philipp Reisner
b42a70ad32
drbd: Do not access tconn after it was freed
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:22 +02:00
Philipp Reisner
fd340c12c9
drbd: Use new header layout
...
The new header layout will only be used if the peer supports
it of course.
For the first packet and the handshake packet the old (h80)
layout is used for compatibility reasons.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:23:03 +02:00
Philipp Reisner
c012949a40
drbd: Replaced all p_header80 with a generic p_header
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-08-29 11:30:26 +02:00
Philipp Reisner
a0638456c6
drbd: moved crypto transformations and friends from mdev to tconn
...
sed -i \
-e 's/mdev->cram_hmac_tfm/mdev->tconn->cram_hmac_tfm/g' \
-e 's/mdev->integrity_w_tfm/mdev->tconn->integrity_w_tfm/g' \
-e 's/mdev->integrity_r_tfm/mdev->tconn->integrity_r_tfm/g' \
-e 's/mdev->int_dig_out/mdev->tconn->int_dig_out/g' \
-e 's/mdev->int_dig_in/mdev->tconn->int_dig_in/g' \
-e 's/mdev->int_dig_vv/mdev->tconn->int_dig_vv/g' \
*.[ch]
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-08-29 11:30:23 +02:00
Philipp Reisner
87eeee41f8
drbd: moved req_lock and transfer log from mdev to tconn
...
sed -i \
-e 's/mdev->req_lock/mdev->tconn->req_lock/g' \
-e 's/mdev->unused_spare_tle/mdev->tconn->unused_spare_tle/g' \
-e 's/mdev->newest_tle/mdev->tconn->newest_tle/g' \
-e 's/mdev->oldest_tle/mdev->tconn->oldest_tle/g' \
-e 's/mdev->out_of_sequence_requests/mdev->tconn->out_of_sequence_requests/g' \
*.[ch]
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-08-29 11:30:15 +02:00
Philipp Reisner
31890f4ab2
drbd: moved agreed_pro_version, last_received and ko_count to tconn
...
sed -i \
-e 's/mdev->agreed_pro_version/mdev->tconn->agreed_pro_version/g' \
-e 's/mdev->last_received/mdev->tconn->last_received/g' \
-e 's/mdev->ko_count/mdev->tconn->ko_count/g' \
*.[ch]
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-08-29 11:27:07 +02:00
Philipp Reisner
e6b3ea83bc
drbd: moved receiver, worker and asender from mdev to tconn
...
Patch mostly:
sed -i -e 's/mdev->receiver/mdev->tconn->receiver/g' \
-e 's/mdev->worker/mdev->tconn->worker/g' \
-e 's/mdev->asender/mdev->tconn->asender/g' \
*.[ch]
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-08-29 11:27:06 +02:00