aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_int.h
diff options
context:
space:
mode:
authorPhilipp Reisner <philipp.reisner@linbit.com>2010-10-27 08:33:00 -0400
committerPhilipp Reisner <philipp.reisner@linbit.com>2011-03-10 05:34:48 -0500
commit73a01a18b9c28a0fab1131ece5b0a9bc00a879b8 (patch)
tree36ed1ea31bd18def918717906a58355a77b39cba /drivers/block/drbd/drbd_int.h
parent67531718d8f1259f01ab84c2aa25f7b03c7afd46 (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.h14
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
555struct 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. */
555enum drbd_bitmap_code { 564enum 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);
1222extern int drbd_send_ack_ex(struct drbd_conf *mdev, enum drbd_packets cmd, 1232extern 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);
1234extern int drbd_send_oos(struct drbd_conf *mdev, struct drbd_request *req);
1224extern int drbd_send_block(struct drbd_conf *mdev, enum drbd_packets cmd, 1235extern int drbd_send_block(struct drbd_conf *mdev, enum drbd_packets cmd,
1225 struct drbd_epoch_entry *e); 1236 struct drbd_epoch_entry *e);
1226extern int drbd_send_dblock(struct drbd_conf *mdev, struct drbd_request *req); 1237extern 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);
1534extern int w_prev_work_done(struct drbd_conf *, struct drbd_work *, int); 1545extern int w_prev_work_done(struct drbd_conf *, struct drbd_work *, int);
1535extern int w_e_reissue(struct drbd_conf *, struct drbd_work *, int); 1546extern int w_e_reissue(struct drbd_conf *, struct drbd_work *, int);
1536extern int w_restart_disk_io(struct drbd_conf *, struct drbd_work *, int); 1547extern int w_restart_disk_io(struct drbd_conf *, struct drbd_work *, int);
1548extern int w_send_oos(struct drbd_conf *, struct drbd_work *, int);
1537 1549
1538extern void resync_timer_fn(unsigned long data); 1550extern 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__)
1629extern void __drbd_set_out_of_sync(struct drbd_conf *mdev, sector_t sector, 1641extern 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__)