From 530975aed7f72ea8ea007c430cc9af6467e27286 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Mon, 9 Nov 2020 00:07:07 +0300 Subject: [PATCH] Make it also build with GCC 8 and on Debian Buster --- README.md | 2 +- cluster_client.cpp | 6 +++--- debian/compat | 1 + debian/control | 2 +- messenger.cpp | 6 +++--- osd_flush.cpp | 6 +++--- osd_peering.cpp | 4 ++-- osd_primary_subops.cpp | 4 ++-- rm_inode.cpp | 4 ++-- 9 files changed, 18 insertions(+), 17 deletions(-) create mode 100644 debian/compat diff --git a/README.md b/README.md index 7096e4c1..54ce9c4e 100644 --- a/README.md +++ b/README.md @@ -291,7 +291,7 @@ Vitastor with single-thread NBD on the same hardware: move PGs out of "starting" state if you have at least around ~500 PGs or so. The custom build will be unnecessary when etcd merges the fix: https://github.com/etcd-io/etcd/pull/12402. - Install node.js 10 or newer. -- Install gcc and g++ 9.x or later. +- Install gcc and g++ 8.x or later. - Clone https://yourcmc.ru/git/vitalif/vitastor/ with submodules. - Install QEMU 2.0+, get its source, begin to build it, stop the build and copy headers: - `/include` → `/qemu/include` diff --git a/cluster_client.cpp b/cluster_client.cpp index bab875ac..cf662e9f 100644 --- a/cluster_client.cpp +++ b/cluster_client.cpp @@ -488,7 +488,7 @@ void cluster_client_t::slice_rw(cluster_op_t *op) uint64_t begin = (op->offset < stripe ? stripe : op->offset); uint64_t end = (op->offset + op->len) > (stripe + pg_block_size) ? (stripe + pg_block_size) : (op->offset + op->len); - op->parts[i] = { + op->parts[i] = (cluster_op_part_t){ .parent = op, .offset = begin, .len = (uint32_t)(end - begin), @@ -533,7 +533,7 @@ bool cluster_client_t::try_send(cluster_op_t *op, cluster_op_part_t *part) part->osd_num = primary_osd; part->sent = true; op->sent_count++; - part->op = { + part->op = (osd_op_t){ .op_type = OSD_OP_OUT, .peer_fd = peer_fd, .req = { .rw = { @@ -694,7 +694,7 @@ void cluster_client_t::send_sync(cluster_op_t *op, cluster_op_part_t *part) assert(peer_it != msgr.osd_peer_fds.end()); part->sent = true; op->sent_count++; - part->op = { + part->op = (osd_op_t){ .op_type = OSD_OP_OUT, .peer_fd = peer_it->second, .req = { diff --git a/debian/compat b/debian/compat new file mode 100644 index 00000000..b1bd38b6 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +13 diff --git a/debian/control b/debian/control index d7a20be6..31f3728f 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: vitastor Section: admin Priority: optional Maintainer: Vitaliy Filippov -Build-Depends: debhelper-compat (= 13), liburing-dev (>= 0.6), g++ (>= 9), libstdc++6 (>= 9), linux-libc-dev, libgoogle-perftools-dev +Build-Depends: debhelper, liburing-dev (>= 0.6), g++ (>= 8), libstdc++6 (>= 8), linux-libc-dev, libgoogle-perftools-dev Standards-Version: 4.5.0 Homepage: https://vitastor.io/ Rules-Requires-Root: no diff --git a/messenger.cpp b/messenger.cpp index d5512bee..7d24abe8 100644 --- a/messenger.cpp +++ b/messenger.cpp @@ -116,7 +116,7 @@ void osd_messenger_t::try_connect_peer_addr(osd_num_t peer_osd, const char *peer return; }); } - clients[peer_fd] = new osd_client_t({ + clients[peer_fd] = new osd_client_t((osd_client_t){ .peer_addr = addr, .peer_port = peer_port, .peer_fd = peer_fd, @@ -233,7 +233,7 @@ void osd_messenger_t::check_peer_config(osd_client_t *cl) osd_op_t *op = new osd_op_t(); op->op_type = OSD_OP_OUT; op->peer_fd = cl->peer_fd; - op->req = { + op->req = (osd_any_op_t){ .show_conf = { .header = { .magic = SECONDARY_OSD_OP_MAGIC, @@ -402,7 +402,7 @@ void osd_messenger_t::accept_connections(int listen_fd) fcntl(peer_fd, F_SETFL, fcntl(peer_fd, F_GETFL, 0) | O_NONBLOCK); int one = 1; setsockopt(peer_fd, SOL_TCP, TCP_NODELAY, &one, sizeof(one)); - clients[peer_fd] = new osd_client_t({ + clients[peer_fd] = new osd_client_t((osd_client_t){ .peer_addr = addr, .peer_port = ntohs(addr.sin_port), .peer_fd = peer_fd, diff --git a/osd_flush.cpp b/osd_flush.cpp index 99b76413..a103b8c6 100644 --- a/osd_flush.cpp +++ b/osd_flush.cpp @@ -166,7 +166,7 @@ void osd_t::submit_flush_op(pool_id_t pool_id, pg_num_t pg_num, pg_flush_batch_t { // local clock_gettime(CLOCK_REALTIME, &op->tv_begin); - op->bs_op = new blockstore_op_t({ + op->bs_op = new blockstore_op_t((blockstore_op_t){ .opcode = (uint64_t)(rollback ? BS_OP_ROLLBACK : BS_OP_STABLE), .callback = [this, op, pool_id, pg_num, fb](blockstore_op_t *bs_op) { @@ -188,7 +188,7 @@ void osd_t::submit_flush_op(pool_id_t pool_id, pg_num_t pg_num, pg_flush_batch_t op->op_type = OSD_OP_OUT; op->iov.push_back(op->buf, count * sizeof(obj_ver_id)); op->peer_fd = peer_fd; - op->req = { + op->req = (osd_any_op_t){ .sec_stab = { .header = { .magic = SECONDARY_OSD_OP_MAGIC, @@ -246,7 +246,7 @@ void osd_t::submit_recovery_op(osd_recovery_op_t *op) { op->osd_op = new osd_op_t(); op->osd_op->op_type = OSD_OP_OUT; - op->osd_op->req = { + op->osd_op->req = (osd_any_op_t){ .rw = { .header = { .magic = SECONDARY_OSD_OP_MAGIC, diff --git a/osd_peering.cpp b/osd_peering.cpp index cd1151f2..52424e58 100644 --- a/osd_peering.cpp +++ b/osd_peering.cpp @@ -307,7 +307,7 @@ void osd_t::submit_sync_and_list_subop(osd_num_t role_osd, pg_peering_state_t *p osd_op_t *op = new osd_op_t(); op->op_type = OSD_OP_OUT; op->peer_fd = cl->peer_fd; - op->req = { + op->req = (osd_any_op_t){ .sec_sync = { .header = { .magic = SECONDARY_OSD_OP_MAGIC, @@ -382,7 +382,7 @@ void osd_t::submit_list_subop(osd_num_t role_osd, pg_peering_state_t *ps) osd_op_t *op = new osd_op_t(); op->op_type = OSD_OP_OUT; op->peer_fd = c_cli.osd_peer_fds[role_osd]; - op->req = { + op->req = (osd_any_op_t){ .sec_list = { .header = { .magic = SECONDARY_OSD_OP_MAGIC, diff --git a/osd_primary_subops.cpp b/osd_primary_subops.cpp index 7b9a3b05..d3c4884f 100644 --- a/osd_primary_subops.cpp +++ b/osd_primary_subops.cpp @@ -11,7 +11,7 @@ void osd_t::autosync() { autosync_op = new osd_op_t(); autosync_op->op_type = OSD_OP_IN; - autosync_op->req = { + autosync_op->req = (osd_any_op_t){ .sync = { .header = { .magic = SECONDARY_OSD_OP_MAGIC, @@ -510,7 +510,7 @@ void osd_t::submit_primary_stab_subops(osd_op_t *cur_op) { clock_gettime(CLOCK_REALTIME, &subops[i].tv_begin); subops[i].op_type = (uint64_t)cur_op; - subops[i].bs_op = new blockstore_op_t({ + subops[i].bs_op = new blockstore_op_t((blockstore_op_t){ .opcode = BS_OP_STABLE, .callback = [subop = &subops[i], this](blockstore_op_t *bs_subop) { diff --git a/rm_inode.cpp b/rm_inode.cpp index 5ce65cfc..d872073c 100644 --- a/rm_inode.cpp +++ b/rm_inode.cpp @@ -170,7 +170,7 @@ public: osd_op_t *op = new osd_op_t(); op->op_type = OSD_OP_OUT; op->peer_fd = cli->msgr.osd_peer_fds[cur_list->osd_num]; - op->req = { + op->req = (osd_any_op_t){ .sec_list = { .header = { .magic = SECONDARY_OSD_OP_MAGIC, @@ -233,7 +233,7 @@ public: osd_op_t *op = new osd_op_t(); op->op_type = OSD_OP_OUT; op->peer_fd = cli->msgr.osd_peer_fds[cur_list->osd_num]; - op->req = { + op->req = (osd_any_op_t){ .rw = { .header = { .magic = SECONDARY_OSD_OP_MAGIC,