diff options
author | Philipp Reisner <philipp.reisner@linbit.com> | 2010-10-27 08:33:00 -0400 |
---|---|---|
committer | Philipp Reisner <philipp.reisner@linbit.com> | 2011-03-10 05:34:48 -0500 |
commit | 73a01a18b9c28a0fab1131ece5b0a9bc00a879b8 (patch) | |
tree | 36ed1ea31bd18def918717906a58355a77b39cba /drivers/block/drbd/drbd_int.h | |
parent | 67531718d8f1259f01ab84c2aa25f7b03c7afd46 (diff) |
drbd: New packet for Ahead/Behind mode: P_OUT_OF_SYNC
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_int.h')
-rw-r--r-- | drivers/block/drbd/drbd_int.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h index 21b7439438cd..471331236826 100644 --- a/drivers/block/drbd/drbd_int.h +++ b/drivers/block/drbd/drbd_int.h | |||
@@ -212,6 +212,7 @@ enum drbd_packets { | |||
212 | /* P_CKPT_FENCE_REQ = 0x25, * currently reserved for protocol D */ | 212 | /* P_CKPT_FENCE_REQ = 0x25, * currently reserved for protocol D */ |
213 | /* P_CKPT_DISABLE_REQ = 0x26, * currently reserved for protocol D */ | 213 | /* P_CKPT_DISABLE_REQ = 0x26, * currently reserved for protocol D */ |
214 | P_DELAY_PROBE = 0x27, /* is used on BOTH sockets */ | 214 | P_DELAY_PROBE = 0x27, /* is used on BOTH sockets */ |
215 | P_OUT_OF_SYNC = 0x28, /* Mark as out of sync (Outrunning), data socket */ | ||
215 | 216 | ||
216 | P_MAX_CMD = 0x28, | 217 | P_MAX_CMD = 0x28, |
217 | P_MAY_IGNORE = 0x100, /* Flag to test if (cmd > P_MAY_IGNORE) ... */ | 218 | P_MAY_IGNORE = 0x100, /* Flag to test if (cmd > P_MAY_IGNORE) ... */ |
@@ -269,6 +270,7 @@ static inline const char *cmdname(enum drbd_packets cmd) | |||
269 | [P_RS_IS_IN_SYNC] = "CsumRSIsInSync", | 270 | [P_RS_IS_IN_SYNC] = "CsumRSIsInSync", |
270 | [P_COMPRESSED_BITMAP] = "CBitmap", | 271 | [P_COMPRESSED_BITMAP] = "CBitmap", |
271 | [P_DELAY_PROBE] = "DelayProbe", | 272 | [P_DELAY_PROBE] = "DelayProbe", |
273 | [P_OUT_OF_SYNC] = "OutOfSync", | ||
272 | [P_MAX_CMD] = NULL, | 274 | [P_MAX_CMD] = NULL, |
273 | }; | 275 | }; |
274 | 276 | ||
@@ -550,6 +552,13 @@ struct p_discard { | |||
550 | u32 pad; | 552 | u32 pad; |
551 | } __packed; | 553 | } __packed; |
552 | 554 | ||
555 | struct p_block_desc { | ||
556 | struct p_header80 head; | ||
557 | u64 sector; | ||
558 | u32 blksize; | ||
559 | u32 pad; /* to multiple of 8 Byte */ | ||
560 | } __packed; | ||
561 | |||
553 | /* Valid values for the encoding field. | 562 | /* Valid values for the encoding field. |
554 | * Bump proto version when changing this. */ | 563 | * Bump proto version when changing this. */ |
555 | enum drbd_bitmap_code { | 564 | enum drbd_bitmap_code { |
@@ -647,6 +656,7 @@ union p_polymorph { | |||
647 | struct p_block_req block_req; | 656 | struct p_block_req block_req; |
648 | struct p_delay_probe93 delay_probe93; | 657 | struct p_delay_probe93 delay_probe93; |
649 | struct p_rs_uuid rs_uuid; | 658 | struct p_rs_uuid rs_uuid; |
659 | struct p_block_desc block_desc; | ||
650 | } __packed; | 660 | } __packed; |
651 | 661 | ||
652 | /**********************************************************************/ | 662 | /**********************************************************************/ |
@@ -1221,6 +1231,7 @@ extern int drbd_send_ack_dp(struct drbd_conf *mdev, enum drbd_packets cmd, | |||
1221 | struct p_data *dp, int data_size); | 1231 | struct p_data *dp, int data_size); |
1222 | extern int drbd_send_ack_ex(struct drbd_conf *mdev, enum drbd_packets cmd, | 1232 | extern int drbd_send_ack_ex(struct drbd_conf *mdev, enum drbd_packets cmd, |
1223 | sector_t sector, int blksize, u64 block_id); | 1233 | sector_t sector, int blksize, u64 block_id); |
1234 | extern int drbd_send_oos(struct drbd_conf *mdev, struct drbd_request *req); | ||
1224 | extern int drbd_send_block(struct drbd_conf *mdev, enum drbd_packets cmd, | 1235 | extern int drbd_send_block(struct drbd_conf *mdev, enum drbd_packets cmd, |
1225 | struct drbd_epoch_entry *e); | 1236 | struct drbd_epoch_entry *e); |
1226 | extern int drbd_send_dblock(struct drbd_conf *mdev, struct drbd_request *req); | 1237 | extern int drbd_send_dblock(struct drbd_conf *mdev, struct drbd_request *req); |
@@ -1534,6 +1545,7 @@ extern int w_send_read_req(struct drbd_conf *, struct drbd_work *, int); | |||
1534 | extern int w_prev_work_done(struct drbd_conf *, struct drbd_work *, int); | 1545 | extern int w_prev_work_done(struct drbd_conf *, struct drbd_work *, int); |
1535 | extern int w_e_reissue(struct drbd_conf *, struct drbd_work *, int); | 1546 | extern int w_e_reissue(struct drbd_conf *, struct drbd_work *, int); |
1536 | extern int w_restart_disk_io(struct drbd_conf *, struct drbd_work *, int); | 1547 | extern int w_restart_disk_io(struct drbd_conf *, struct drbd_work *, int); |
1548 | extern int w_send_oos(struct drbd_conf *, struct drbd_work *, int); | ||
1537 | 1549 | ||
1538 | extern void resync_timer_fn(unsigned long data); | 1550 | extern void resync_timer_fn(unsigned long data); |
1539 | 1551 | ||
@@ -1626,7 +1638,7 @@ extern void __drbd_set_in_sync(struct drbd_conf *mdev, sector_t sector, | |||
1626 | int size, const char *file, const unsigned int line); | 1638 | int size, const char *file, const unsigned int line); |
1627 | #define drbd_set_in_sync(mdev, sector, size) \ | 1639 | #define drbd_set_in_sync(mdev, sector, size) \ |
1628 | __drbd_set_in_sync(mdev, sector, size, __FILE__, __LINE__) | 1640 | __drbd_set_in_sync(mdev, sector, size, __FILE__, __LINE__) |
1629 | extern void __drbd_set_out_of_sync(struct drbd_conf *mdev, sector_t sector, | 1641 | extern int __drbd_set_out_of_sync(struct drbd_conf *mdev, sector_t sector, |
1630 | int size, const char *file, const unsigned int line); | 1642 | int size, const char *file, const unsigned int line); |
1631 | #define drbd_set_out_of_sync(mdev, sector, size) \ | 1643 | #define drbd_set_out_of_sync(mdev, sector, size) \ |
1632 | __drbd_set_out_of_sync(mdev, sector, size, __FILE__, __LINE__) | 1644 | __drbd_set_out_of_sync(mdev, sector, size, __FILE__, __LINE__) |