Thread (51 messages) 51 messages, 7 authors, 2017-03-28

Re: [PATCH 01/28] ibtrs: add header shared between ibtrs_client and ibtrs_server

From: Jinpu Wang <hidden>
Date: 2017-03-24 12:54:04
Also in: linux-rdma

quoted
+
+#define XX(a) case (a): return #a
please no macros with retun in them and XX isn't quite too descriptive as
well.

[...]
quoted
+static inline const char *ib_wc_opcode_str(enum ib_wc_opcode opcode)
+{
+     switch (opcode) {
+     XX(IB_WC_SEND);
+     XX(IB_WC_RDMA_WRITE);
+     XX(IB_WC_RDMA_READ);
+     XX(IB_WC_COMP_SWAP);
+     XX(IB_WC_FETCH_ADD);
+     /* recv-side); inbound completion */
+     XX(IB_WC_RECV);
+     XX(IB_WC_RECV_RDMA_WITH_IMM);
+     default: return "IB_WC_OPCODE_UNKNOWN";
+     }
+}
How about:

struct {
        char *name;
        enum ib_wc_opcode opcode;
} ib_wc_opcode_table[] =3D {
        { stringyfy(IB_WC_SEND), IB_WC_SEND },
        { stringyfy(IB_WC_RDMA_WRITE), IB_WC_RDMA_WRITE },
        { stringyfy(IB_WC_RDMA_READ ), IB_WC_RDMA_READ }
        { stringyfy(IB_WC_COMP_SWAP), IB_WC_COMP_SWAP },
        { stringyfy(IB_WC_FETCH_ADD), IB_WC_FETCH_ADD },
        { stringyfy(IB_WC_RECV), IB_WC_RECV },
        { stringyfy(IB_WC_RECV_RDMA_WITH_IMM), IB_WC_RECV_RDMA_WITH_IMM }=
,
        { NULL, 0 },
};

static inline const char *ib_wc_opcode_str(enum ib_wc_opcode opcode)
{
        int i;

        for (i =3D 0; i < ARRAY_SIZE(ib_wc_opcode_table); i++)
                if (ib_wc_opcode_table[i].opcode =3D=3D opcode)
                        return ib_wc_opcode_table[i].name;

        return "IB_WC_OPCODE_UNKNOWN";
}
Looks nice, might be better to put it into ib_verbs.h?
[...]
quoted
+/**
+ * struct ibtrs_msg_hdr - Common header of all IBTRS messages
+ * @type:    Message type, valid values see: enum ibtrs_msg_types
+ * @tsize:   Total size of transferred data
+ *
+ * Don't move the first 8 padding bytes! It's a workaround for a kernel=
 bug.
quoted
+ * See IBNBD-610 for details
What about resolving the kernel bug instead of making workarounds?
I tried to send a patch upsteam, but was rejected by Sean.
http://www.spinics.net/lists/linux-rdma/msg22381.html
quoted
+ *
+ * DO NOT CHANGE!
+ */
+struct ibtrs_msg_hdr {
+     u8                      __padding1;
+     u8                      type;
+     u16                     __padding2;
+     u32                     tsize;
+};
[...]

--
Johannes Thumshirn                                          Storage
jthumshirn@suse.de                                +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 N=C3=BCrnberg
GF: Felix Imend=C3=B6rffer, Jane Smithard, Graham Norton
HRB 21284 (AG N=C3=BCrnberg)
Key fingerprint =3D EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
Thanks Johannes for review.


--=20
Jack Wang
Linux Kernel Developer

ProfitBricks GmbH
Greifswalder Str. 207
D - 10405 Berlin

Tel:       +49 30 577 008  042
Fax:      +49 30 577 008 299
Email:    jinpu.wang@profitbricks.com
URL:      https://www.profitbricks.de

Sitz der Gesellschaft: Berlin
Registergericht: Amtsgericht Charlottenburg, HRB 125506 B
Gesch=C3=A4ftsf=C3=BChrer: Achim Weiss
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help