aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Reisner <philipp.reisner@linbit.com>2010-07-21 04:20:17 -0400
committerPhilipp Reisner <philipp.reisner@linbit.com>2010-10-14 12:38:15 -0400
commit85719573dd716bc2ac3e098b44adfed884250bab (patch)
tree494e7797c923c7c584dc3c16d4d6ab2fcd6996a0
parentd207450cf2731c6a2afa8c78fb31c7206cd35eba (diff)
drbd: Replaced some casts by an union. Improved comments
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
-rw-r--r--drivers/block/drbd/drbd_int.h13
-rw-r--r--drivers/block/drbd/drbd_receiver.c3
-rw-r--r--drivers/block/drbd/drbd_worker.c4
3 files changed, 12 insertions, 8 deletions
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
index facb72ccc56b..b0cbfa143775 100644
--- a/drivers/block/drbd/drbd_int.h
+++ b/drivers/block/drbd/drbd_int.h
@@ -759,7 +759,7 @@ struct digest_info {
759struct drbd_epoch_entry { 759struct drbd_epoch_entry {
760 struct drbd_work w; 760 struct drbd_work w;
761 struct hlist_node colision; 761 struct hlist_node colision;
762 struct drbd_epoch *epoch; 762 struct drbd_epoch *epoch; /* for writes */
763 struct drbd_conf *mdev; 763 struct drbd_conf *mdev;
764 struct page *pages; 764 struct page *pages;
765 atomic_t pending_bios; 765 atomic_t pending_bios;
@@ -767,7 +767,10 @@ struct drbd_epoch_entry {
767 /* see comments on ee flag bits below */ 767 /* see comments on ee flag bits below */
768 unsigned long flags; 768 unsigned long flags;
769 sector_t sector; 769 sector_t sector;
770 u64 block_id; 770 union {
771 u64 block_id;
772 struct digest_info *digest;
773 };
771}; 774};
772 775
773/* ee flag bits. 776/* ee flag bits.
@@ -1032,10 +1035,10 @@ struct drbd_conf {
1032 spinlock_t epoch_lock; 1035 spinlock_t epoch_lock;
1033 unsigned int epochs; 1036 unsigned int epochs;
1034 enum write_ordering_e write_ordering; 1037 enum write_ordering_e write_ordering;
1035 struct list_head active_ee; /* IO in progress */ 1038 struct list_head active_ee; /* IO in progress (P_DATA gets written to disk) */
1036 struct list_head sync_ee; /* IO in progress */ 1039 struct list_head sync_ee; /* IO in progress (P_RS_DATA_REPLY gets written to disk) */
1037 struct list_head done_ee; /* send ack */ 1040 struct list_head done_ee; /* send ack */
1038 struct list_head read_ee; /* IO in progress */ 1041 struct list_head read_ee; /* IO in progress (any read) */
1039 struct list_head net_ee; /* zero-copy network send in progress */ 1042 struct list_head net_ee; /* zero-copy network send in progress */
1040 struct hlist_head *ee_hash; /* is proteced by req_lock! */ 1043 struct hlist_head *ee_hash; /* is proteced by req_lock! */
1041 unsigned int ee_hash_s; 1044 unsigned int ee_hash_s;
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index 5f80b22e711d..0b03e3174f76 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -2097,7 +2097,7 @@ static int receive_DataRequest(struct drbd_conf *mdev, struct p_header *h)
2097 if (drbd_recv(mdev, di->digest, digest_size) != digest_size) 2097 if (drbd_recv(mdev, di->digest, digest_size) != digest_size)
2098 goto out_free_e; 2098 goto out_free_e;
2099 2099
2100 e->block_id = (u64)(unsigned long)di; 2100 e->digest = di;
2101 if (h->command == P_CSUM_RS_REQUEST) { 2101 if (h->command == P_CSUM_RS_REQUEST) {
2102 D_ASSERT(mdev->agreed_pro_version >= 89); 2102 D_ASSERT(mdev->agreed_pro_version >= 89);
2103 e->w.cb = w_e_end_csum_rs_req; 2103 e->w.cb = w_e_end_csum_rs_req;
@@ -3769,6 +3769,7 @@ static void drbd_disconnect(struct drbd_conf *mdev)
3769 drbd_thread_stop(&mdev->asender); 3769 drbd_thread_stop(&mdev->asender);
3770 drbd_free_sock(mdev); 3770 drbd_free_sock(mdev);
3771 3771
3772 /* wait for current activity to cease. */
3772 spin_lock_irq(&mdev->req_lock); 3773 spin_lock_irq(&mdev->req_lock);
3773 _drbd_wait_ee_list_empty(mdev, &mdev->active_ee); 3774 _drbd_wait_ee_list_empty(mdev, &mdev->active_ee);
3774 _drbd_wait_ee_list_empty(mdev, &mdev->sync_ee); 3775 _drbd_wait_ee_list_empty(mdev, &mdev->sync_ee);
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c
index 30b8e466a224..f979e22cc6fb 100644
--- a/drivers/block/drbd/drbd_worker.c
+++ b/drivers/block/drbd/drbd_worker.c
@@ -1018,7 +1018,7 @@ int w_e_end_csum_rs_req(struct drbd_conf *mdev, struct drbd_work *w, int cancel)
1018 1018
1019 drbd_rs_complete_io(mdev, e->sector); 1019 drbd_rs_complete_io(mdev, e->sector);
1020 1020
1021 di = (struct digest_info *)(unsigned long)e->block_id; 1021 di = e->digest;
1022 1022
1023 if (likely((e->flags & EE_WAS_ERROR) == 0)) { 1023 if (likely((e->flags & EE_WAS_ERROR) == 0)) {
1024 /* quick hack to try to avoid a race against reconfiguration. 1024 /* quick hack to try to avoid a race against reconfiguration.
@@ -1126,7 +1126,7 @@ int w_e_end_ov_reply(struct drbd_conf *mdev, struct drbd_work *w, int cancel)
1126 * the resync lru has been cleaned up already */ 1126 * the resync lru has been cleaned up already */
1127 drbd_rs_complete_io(mdev, e->sector); 1127 drbd_rs_complete_io(mdev, e->sector);
1128 1128
1129 di = (struct digest_info *)(unsigned long)e->block_id; 1129 di = e->digest;
1130 1130
1131 if (likely((e->flags & EE_WAS_ERROR) == 0)) { 1131 if (likely((e->flags & EE_WAS_ERROR) == 0)) {
1132 digest_size = crypto_hash_digestsize(mdev->verify_tfm); 1132 digest_size = crypto_hash_digestsize(mdev->verify_tfm);