Lars Ellenberg
da4a75d2ef
drbd: introduce a bio_set to allocate housekeeping bios from
...
Don't rely on availability of bios from the global fs_bio_set,
we should use our own bio_set for meta data IO.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:48:06 +02:00
Lars Ellenberg
35abf59424
drbd: add page pool to be used for meta data IO
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:48:04 +02:00
Philipp Reisner
81a5d60ecf
drbd: Replaced the minor_table array by an idr
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:48:01 +02:00
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
Philipp Reisner
49559d87fd
drbd: Improved the dec_*() macros
...
Now those can be used with a struct drbd_conf * that has an other
name than 'mdev'.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:57 +02:00
Philipp Reisner
0e29d163f7
drbd: Reworked the unconfiguring and thread stopping code
...
* Moved CONFIG_PENDING and DEVICE_DYING from mdev to tconn.
* Renamed drbd_reconfig_start() and drbd_reconfig_done() to
conn_reconfig_start() and conn_reconfig_done().
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:55 +02:00
Andreas Gruenbacher
c66342d949
drbd: Remove left-over function prototypes
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:55 +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
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
45dfffebd0
drbd: allow to select specific bitmap pages for writeout
...
We are about to allow several changes to the active set in one activity
log transaction. We have to write out the corresponding bitmap pages as
well, if changed.
Introduce drbd_bm_mark_for_writeout(), then re-use the existing bitmap
writeout path to submit all marked pages in one go.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:44 +02:00
Andreas Gruenbacher
fcefa62e4c
drbd: Rename drbd_endio_{pri,sec} -> drbd_{,peer_}request_endio
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:36 +02:00
Andreas Gruenbacher
fbe29dec98
drbd: Rename drbd_submit_ee -> drbd_submit_peer_request
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:47:35 +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
fc3b10a45f
drbd: Implemented receiving of P_CONN_ST_CHG_REPLY
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-10-14 16:45:04 +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
dad2055481
drbd: Removed drbd_state_lock() and drbd_state_unlock()
...
The lock they constructed is only taken when the state_mutex
was already taken. It is superficial.
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
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
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
eefc2f7de2
drbd: Converted drbdd() from mdev to tconn
...
The drbd_md_sync(mdev) happens in the after state change anyways...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:33:05 +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
8a22cccc20
drbd: Converted drbd_send_handshake() 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:50 +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
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
808e37b803
drbd: Moved SIGNAL_ASENDER to the per connection (tconn) flags
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:57 +02:00
Philipp Reisner
e43ef195f8
drbd: Moved SEND_PING to the per connection (tconn) flags
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:56 +02:00
Philipp Reisner
25703f8320
drbd: Moved DISCARD_CONCURRENT to the per connection (tconn) flags
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:55 +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
b53339fce2
drbd: Moving state related macros to drbd_state.h
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:49 +02:00
Philipp Reisner
e64a329459
drbd: Do no sleep long in drbd_start_resync
...
Work items that sleep too long can cause requests to take as
long as the longest sleeping 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:47 +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
18b75d756b
drbd: Clean up some left-overs
...
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com >
2011-09-28 10:26:40 +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