Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 213129
b: refs/heads/master
c: 0b70a13
h: refs/heads/master
i:
  213127: b0387ff
v: v3
  • Loading branch information
Philipp Reisner committed Oct 14, 2010
1 parent 91aacc9 commit d52c8c7
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 113 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 204bba9965c4cc175bf5bc65ddd19889e9085c72
refs/heads/master: 0b70a13dac014ec9274640b9e945bde493ba365e
74 changes: 43 additions & 31 deletions trunk/drivers/block/drbd/drbd_int.h
Original file line number Diff line number Diff line change
Expand Up @@ -337,13 +337,25 @@ static inline void bm_xfer_ctx_bit_to_word_offset(struct bm_xfer_ctx *c)
* NOTE that the payload starts at a long aligned offset,
* regardless of 32 or 64 bit arch!
*/
struct p_header {
struct p_header80 {
u32 magic;
u16 command;
u16 length; /* bytes of data after this header */
u8 payload[0];
} __packed;
/* 8 bytes. packet FIXED for the next century! */

/* Header for big packets, Used for data packets exceeding 64kB */
struct p_header95 {
u16 magic; /* use DRBD_MAGIC_BIG here */
u16 command;
u32 length;
u8 payload[0];
} __packed;

union p_header {
struct p_header80 h80;
struct p_header95 h95;
};

/*
* short commands, packets without payload, plain p_header:
Expand All @@ -367,7 +379,7 @@ struct p_header {
#define DP_MAY_SET_IN_SYNC 4

struct p_data {
struct p_header head;
union p_header head;
u64 sector; /* 64 bits sector number */
u64 block_id; /* to identify the request in protocol B&C */
u32 seq_num;
Expand All @@ -383,7 +395,7 @@ struct p_data {
* P_DATA_REQUEST, P_RS_DATA_REQUEST
*/
struct p_block_ack {
struct p_header head;
struct p_header80 head;
u64 sector;
u64 block_id;
u32 blksize;
Expand All @@ -392,7 +404,7 @@ struct p_block_ack {


struct p_block_req {
struct p_header head;
struct p_header80 head;
u64 sector;
u64 block_id;
u32 blksize;
Expand All @@ -409,7 +421,7 @@ struct p_block_req {
*/

struct p_handshake {
struct p_header head; /* 8 bytes */
struct p_header80 head; /* 8 bytes */
u32 protocol_min;
u32 feature_flags;
u32 protocol_max;
Expand All @@ -424,35 +436,35 @@ struct p_handshake {
/* 80 bytes, FIXED for the next century */

struct p_barrier {
struct p_header head;
struct p_header80 head;
u32 barrier; /* barrier number _handle_ only */
u32 pad; /* to multiple of 8 Byte */
} __packed;

struct p_barrier_ack {
struct p_header head;
struct p_header80 head;
u32 barrier;
u32 set_size;
} __packed;

struct p_rs_param {
struct p_header head;
struct p_header80 head;
u32 rate;

/* Since protocol version 88 and higher. */
char verify_alg[0];
} __packed;

struct p_rs_param_89 {
struct p_header head;
struct p_header80 head;
u32 rate;
/* protocol version 89: */
char verify_alg[SHARED_SECRET_MAX];
char csums_alg[SHARED_SECRET_MAX];
} __packed;

struct p_rs_param_95 {
struct p_header head;
struct p_header80 head;
u32 rate;
char verify_alg[SHARED_SECRET_MAX];
char csums_alg[SHARED_SECRET_MAX];
Expand All @@ -468,7 +480,7 @@ enum drbd_conn_flags {
};

struct p_protocol {
struct p_header head;
struct p_header80 head;
u32 protocol;
u32 after_sb_0p;
u32 after_sb_1p;
Expand All @@ -482,17 +494,17 @@ struct p_protocol {
} __packed;

struct p_uuids {
struct p_header head;
struct p_header80 head;
u64 uuid[UI_EXTENDED_SIZE];
} __packed;

struct p_rs_uuid {
struct p_header head;
struct p_header80 head;
u64 uuid;
} __packed;

struct p_sizes {
struct p_header head;
struct p_header80 head;
u64 d_size; /* size of disk */
u64 u_size; /* user requested size */
u64 c_size; /* current exported size */
Expand All @@ -502,18 +514,18 @@ struct p_sizes {
} __packed;

struct p_state {
struct p_header head;
struct p_header80 head;
u32 state;
} __packed;

struct p_req_state {
struct p_header head;
struct p_header80 head;
u32 mask;
u32 val;
} __packed;

struct p_req_state_reply {
struct p_header head;
struct p_header80 head;
u32 retcode;
} __packed;

Expand All @@ -528,7 +540,7 @@ struct p_drbd06_param {
} __packed;

struct p_discard {
struct p_header head;
struct p_header80 head;
u64 block_id;
u32 seq_num;
u32 pad;
Expand All @@ -544,7 +556,7 @@ enum drbd_bitmap_code {
};

struct p_compressed_bm {
struct p_header head;
struct p_header80 head;
/* (encoding & 0x0f): actual encoding, see enum drbd_bitmap_code
* (encoding & 0x80): polarity (set/unset) of first runlength
* ((encoding >> 4) & 0x07): pad_bits, number of trailing zero bits
Expand All @@ -555,10 +567,10 @@ struct p_compressed_bm {
u8 code[0];
} __packed;

struct p_delay_probe {
struct p_header head;
u32 seq_num; /* sequence number to match the two probe packets */
u32 offset; /* usecs the probe got sent after the reference time point */
struct p_delay_probe93 {
struct p_header80 head;
u32 seq_num; /* sequence number to match the two probe packets */
u32 offset; /* usecs the probe got sent after the reference time point */
} __packed;

/* DCBP: Drbd Compressed Bitmap Packet ... */
Expand Down Expand Up @@ -605,7 +617,7 @@ DCBP_set_pad_bits(struct p_compressed_bm *p, int n)
* so we need to use the fixed size 4KiB page size
* most architechtures have used for a long time.
*/
#define BM_PACKET_PAYLOAD_BYTES (4096 - sizeof(struct p_header))
#define BM_PACKET_PAYLOAD_BYTES (4096 - sizeof(struct p_header80))
#define BM_PACKET_WORDS (BM_PACKET_PAYLOAD_BYTES/sizeof(long))
#define BM_PACKET_VLI_BYTES_MAX (4096 - sizeof(struct p_compressed_bm))
#if (PAGE_SIZE < 4096)
Expand All @@ -614,7 +626,7 @@ DCBP_set_pad_bits(struct p_compressed_bm *p, int n)
#endif

union p_polymorph {
struct p_header header;
struct p_header80 header;
struct p_handshake handshake;
struct p_data data;
struct p_block_ack block_ack;
Expand Down Expand Up @@ -1188,12 +1200,12 @@ extern int drbd_send_sizes(struct drbd_conf *mdev, int trigger_reply, enum dds_f
extern int _drbd_send_state(struct drbd_conf *mdev);
extern int drbd_send_state(struct drbd_conf *mdev);
extern int _drbd_send_cmd(struct drbd_conf *mdev, struct socket *sock,
enum drbd_packets cmd, struct p_header *h,
enum drbd_packets cmd, struct p_header80 *h,
size_t size, unsigned msg_flags);
#define USE_DATA_SOCKET 1
#define USE_META_SOCKET 0
extern int drbd_send_cmd(struct drbd_conf *mdev, int use_data_socket,
enum drbd_packets cmd, struct p_header *h,
enum drbd_packets cmd, struct p_header80 *h,
size_t size);
extern int drbd_send_cmd2(struct drbd_conf *mdev, enum drbd_packets cmd,
char *data, size_t size);
Expand Down Expand Up @@ -1936,19 +1948,19 @@ static inline void request_ping(struct drbd_conf *mdev)
static inline int drbd_send_short_cmd(struct drbd_conf *mdev,
enum drbd_packets cmd)
{
struct p_header h;
struct p_header80 h;
return drbd_send_cmd(mdev, USE_DATA_SOCKET, cmd, &h, sizeof(h));
}

static inline int drbd_send_ping(struct drbd_conf *mdev)
{
struct p_header h;
struct p_header80 h;
return drbd_send_cmd(mdev, USE_META_SOCKET, P_PING, &h, sizeof(h));
}

static inline int drbd_send_ping_ack(struct drbd_conf *mdev)
{
struct p_header h;
struct p_header80 h;
return drbd_send_cmd(mdev, USE_META_SOCKET, P_PING_ACK, &h, sizeof(h));
}

Expand Down
Loading

0 comments on commit d52c8c7

Please sign in to comment.