diff options
author | Philipp Reisner <philipp.reisner@linbit.com> | 2010-07-21 04:20:17 -0400 |
---|---|---|
committer | Philipp Reisner <philipp.reisner@linbit.com> | 2010-10-14 12:38:15 -0400 |
commit | 85719573dd716bc2ac3e098b44adfed884250bab (patch) | |
tree | 494e7797c923c7c584dc3c16d4d6ab2fcd6996a0 | |
parent | d207450cf2731c6a2afa8c78fb31c7206cd35eba (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.h | 13 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_receiver.c | 3 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_worker.c | 4 |
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 { | |||
759 | struct drbd_epoch_entry { | 759 | struct 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); |