summaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_receiver.c
diff options
context:
space:
mode:
authorPhilipp Reisner2011-02-09 18:09:48 +0100
committerPhilipp Reisner2011-09-28 10:33:15 +0200
commit00d56944ff086f895e9ad184a7785ca1eece4a3b (patch)
tree81d441db6b28215a7050ef208d40aa5c1bb1b812 /drivers/block/drbd/drbd_receiver.c
parentdrbd: Moved some initializing code into drbd_new_tconn() (diff)
downloadkernel-qcow2-linux-00d56944ff086f895e9ad184a7785ca1eece4a3b.tar.gz
kernel-qcow2-linux-00d56944ff086f895e9ad184a7785ca1eece4a3b.tar.xz
kernel-qcow2-linux-00d56944ff086f895e9ad184a7785ca1eece4a3b.zip
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>
Diffstat (limited to 'drivers/block/drbd/drbd_receiver.c')
-rw-r--r--drivers/block/drbd/drbd_receiver.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index f21b0efff6d8..02fa1b25dce5 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -65,7 +65,7 @@ static int drbd_do_auth(struct drbd_tconn *tconn);
static int drbd_disconnected(int vnr, void *p, void *data);
static enum finish_epoch drbd_may_finish_epoch(struct drbd_conf *, struct drbd_epoch *, enum epoch_event);
-static int e_end_block(struct drbd_conf *, struct drbd_work *, int);
+static int e_end_block(struct drbd_work *, int);
#define GFP_TRY (__GFP_HIGHMEM | __GFP_NOWARN)
@@ -420,7 +420,7 @@ static int drbd_process_done_ee(struct drbd_conf *mdev)
*/
list_for_each_entry_safe(peer_req, t, &work_list, w.list) {
/* list_del not necessary, next/prev members not touched */
- ok = peer_req->w.cb(mdev, &peer_req->w, !ok) && ok;
+ ok = peer_req->w.cb(&peer_req->w, !ok) && ok;
drbd_free_ee(mdev, peer_req);
}
wake_up(&mdev->ee_wait);
@@ -1447,9 +1447,10 @@ static int recv_dless_read(struct drbd_conf *mdev, struct drbd_request *req,
/* e_end_resync_block() is called via
* drbd_process_done_ee() by asender only */
-static int e_end_resync_block(struct drbd_conf *mdev, struct drbd_work *w, int unused)
+static int e_end_resync_block(struct drbd_work *w, int unused)
{
struct drbd_peer_request *peer_req = (struct drbd_peer_request *)w;
+ struct drbd_conf *mdev = w->mdev;
sector_t sector = peer_req->i.sector;
int ok;
@@ -1584,9 +1585,10 @@ static int receive_RSDataReply(struct drbd_conf *mdev, enum drbd_packet cmd,
/* e_end_block() is called via drbd_process_done_ee().
* this means this function only runs in the asender thread
*/
-static int e_end_block(struct drbd_conf *mdev, struct drbd_work *w, int cancel)
+static int e_end_block(struct drbd_work *w, int cancel)
{
struct drbd_peer_request *peer_req = (struct drbd_peer_request *)w;
+ struct drbd_conf *mdev = w->mdev;
sector_t sector = peer_req->i.sector;
int ok = 1, pcmd;
@@ -1621,9 +1623,10 @@ static int e_end_block(struct drbd_conf *mdev, struct drbd_work *w, int cancel)
return ok;
}
-static int e_send_discard_ack(struct drbd_conf *mdev, struct drbd_work *w, int unused)
+static int e_send_discard_ack(struct drbd_work *w, int unused)
{
struct drbd_peer_request *peer_req = (struct drbd_peer_request *)w;
+ struct drbd_conf *mdev = w->mdev;
int ok = 1;
D_ASSERT(mdev->tconn->net_conf->wire_protocol == DRBD_PROT_C);