Add rollback op to the OSD code
parent
2b09710d6f
commit
079f129390
|
@ -25,9 +25,10 @@ void osd_t::exec_secondary(osd_op_t *cur_op)
|
||||||
: (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_WRITE ? BS_OP_WRITE
|
: (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_WRITE ? BS_OP_WRITE
|
||||||
: (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_SYNC ? BS_OP_SYNC
|
: (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_SYNC ? BS_OP_SYNC
|
||||||
: (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_STABILIZE ? BS_OP_STABLE
|
: (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_STABILIZE ? BS_OP_STABLE
|
||||||
|
: (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_ROLLBACK ? BS_OP_ROLLBACK
|
||||||
: (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_DELETE ? BS_OP_DELETE
|
: (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_DELETE ? BS_OP_DELETE
|
||||||
: (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_LIST ? BS_OP_LIST
|
: (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_LIST ? BS_OP_LIST
|
||||||
: -1))))));
|
: -1)))))));
|
||||||
if (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_READ ||
|
if (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_READ ||
|
||||||
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_WRITE)
|
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_WRITE)
|
||||||
{
|
{
|
||||||
|
@ -42,7 +43,8 @@ void osd_t::exec_secondary(osd_op_t *cur_op)
|
||||||
cur_op->bs_op.oid = cur_op->op.sec_del.oid;
|
cur_op->bs_op.oid = cur_op->op.sec_del.oid;
|
||||||
cur_op->bs_op.version = cur_op->op.sec_del.version;
|
cur_op->bs_op.version = cur_op->op.sec_del.version;
|
||||||
}
|
}
|
||||||
else if (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_STABILIZE)
|
else if (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_STABILIZE ||
|
||||||
|
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_ROLLBACK)
|
||||||
{
|
{
|
||||||
cur_op->bs_op.len = cur_op->op.sec_stab.len/sizeof(obj_ver_id);
|
cur_op->bs_op.len = cur_op->op.sec_stab.len/sizeof(obj_ver_id);
|
||||||
cur_op->bs_op.buf = cur_op->buf;
|
cur_op->bs_op.buf = cur_op->buf;
|
||||||
|
|
19
osd_ops.h
19
osd_ops.h
|
@ -13,13 +13,14 @@
|
||||||
#define OSD_OP_SECONDARY_WRITE 2
|
#define OSD_OP_SECONDARY_WRITE 2
|
||||||
#define OSD_OP_SECONDARY_SYNC 3
|
#define OSD_OP_SECONDARY_SYNC 3
|
||||||
#define OSD_OP_SECONDARY_STABILIZE 4
|
#define OSD_OP_SECONDARY_STABILIZE 4
|
||||||
#define OSD_OP_SECONDARY_DELETE 5
|
#define OSD_OP_SECONDARY_ROLLBACK 5
|
||||||
#define OSD_OP_TEST_SYNC_STAB_ALL 6
|
#define OSD_OP_SECONDARY_DELETE 6
|
||||||
#define OSD_OP_SECONDARY_LIST 7
|
#define OSD_OP_TEST_SYNC_STAB_ALL 7
|
||||||
#define OSD_OP_SHOW_CONFIG 8
|
#define OSD_OP_SECONDARY_LIST 8
|
||||||
#define OSD_OP_READ 9
|
#define OSD_OP_SHOW_CONFIG 9
|
||||||
#define OSD_OP_WRITE 10
|
#define OSD_OP_READ 10
|
||||||
#define OSD_OP_MAX 10
|
#define OSD_OP_WRITE 11
|
||||||
|
#define OSD_OP_MAX 11
|
||||||
// Alignment & limit for read/write operations
|
// Alignment & limit for read/write operations
|
||||||
#define OSD_RW_ALIGN 512
|
#define OSD_RW_ALIGN 512
|
||||||
#define OSD_RW_MAX 64*1024*1024
|
#define OSD_RW_MAX 64*1024*1024
|
||||||
|
@ -95,18 +96,20 @@ struct __attribute__((__packed__)) osd_reply_secondary_sync_t
|
||||||
osd_reply_header_t header;
|
osd_reply_header_t header;
|
||||||
};
|
};
|
||||||
|
|
||||||
// stabilize objects on the secondary OSD
|
// stabilize or rollback objects on the secondary OSD
|
||||||
struct __attribute__((__packed__)) osd_op_secondary_stabilize_t
|
struct __attribute__((__packed__)) osd_op_secondary_stabilize_t
|
||||||
{
|
{
|
||||||
osd_op_header_t header;
|
osd_op_header_t header;
|
||||||
// obj_ver_id array length in bytes
|
// obj_ver_id array length in bytes
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
};
|
};
|
||||||
|
typedef osd_op_secondary_stabilize_t osd_op_secondary_rollback_t;
|
||||||
|
|
||||||
struct __attribute__((__packed__)) osd_reply_secondary_stabilize_t
|
struct __attribute__((__packed__)) osd_reply_secondary_stabilize_t
|
||||||
{
|
{
|
||||||
osd_reply_header_t header;
|
osd_reply_header_t header;
|
||||||
};
|
};
|
||||||
|
typedef osd_reply_secondary_stabilize_t osd_reply_secondary_rollback_t;
|
||||||
|
|
||||||
// show configuration
|
// show configuration
|
||||||
struct __attribute__((__packed__)) osd_op_show_config_t
|
struct __attribute__((__packed__)) osd_op_show_config_t
|
||||||
|
|
|
@ -102,7 +102,8 @@ void osd_t::handle_read_op(osd_client_t *cl)
|
||||||
osd_op_t *cur_op = cl->read_op;
|
osd_op_t *cur_op = cl->read_op;
|
||||||
if (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_READ ||
|
if (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_READ ||
|
||||||
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_WRITE ||
|
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_WRITE ||
|
||||||
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_STABILIZE)
|
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_STABILIZE ||
|
||||||
|
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_ROLLBACK)
|
||||||
{
|
{
|
||||||
// Allocate a buffer
|
// Allocate a buffer
|
||||||
cur_op->buf = memalign(512, cur_op->op.sec_rw.len);
|
cur_op->buf = memalign(512, cur_op->op.sec_rw.len);
|
||||||
|
@ -114,6 +115,7 @@ void osd_t::handle_read_op(osd_client_t *cl)
|
||||||
}
|
}
|
||||||
if (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_WRITE ||
|
if (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_WRITE ||
|
||||||
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_STABILIZE ||
|
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_STABILIZE ||
|
||||||
|
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_ROLLBACK ||
|
||||||
cur_op->op.hdr.opcode == OSD_OP_WRITE)
|
cur_op->op.hdr.opcode == OSD_OP_WRITE)
|
||||||
{
|
{
|
||||||
// Read data
|
// Read data
|
||||||
|
|
|
@ -115,7 +115,8 @@ void osd_t::handle_send(ring_data_t *data, int peer_fd)
|
||||||
cl.write_remaining = cur_op->op.sec_rw.len;
|
cl.write_remaining = cur_op->op.sec_rw.len;
|
||||||
cl.write_state = CL_WRITE_DATA;
|
cl.write_state = CL_WRITE_DATA;
|
||||||
}
|
}
|
||||||
else if (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_STABILIZE)
|
else if (cur_op->op.hdr.opcode == OSD_OP_SECONDARY_STABILIZE ||
|
||||||
|
cur_op->op.hdr.opcode == OSD_OP_SECONDARY_ROLLBACK)
|
||||||
{
|
{
|
||||||
cl.write_buf = cur_op->buf;
|
cl.write_buf = cur_op->buf;
|
||||||
cl.write_remaining = cur_op->op.sec_stab.len;
|
cl.write_remaining = cur_op->op.sec_stab.len;
|
||||||
|
|
Loading…
Reference in New Issue