--- Linux-NBD/NBD.xs 2017/05/30 01:07:29 1.8 +++ Linux-NBD/NBD.xs 2017/05/30 03:58:30 1.9 @@ -89,6 +89,7 @@ u64 from; u32 len; char *method; + int cmd; MAGIC *mg = mg_find (SvRV (obj), PERL_MAGIC_ext); if (!mg) @@ -125,8 +126,9 @@ from = ntohll (s->req.from); len = ntohl (s->req.len); + cmd = ntohl (s->req.type) & NBD_CMD_MASK_COMMAND; - switch (ntohl (s->req.type)) + switch (cmd) { case NBD_CMD_WRITE: if (!mg->mg_obj) @@ -176,10 +178,10 @@ else { PUSHs (sv_2mortal (newSVuv (len))); - method = s->req.type == NBD_CMD_READ ? "req_read" - : s->req.type == NBD_CMD_FLUSH ? "req_flush" - : s->req.type == NBD_CMD_TRIM ? "req_trim" - : s->req.type == NBD_CMD_WRITE_ZEROES ? "req_write_zeroes" + method = cmd == NBD_CMD_READ ? "req_read" + : cmd == NBD_CMD_FLUSH ? "req_flush" + : cmd == NBD_CMD_TRIM ? "req_trim" + : cmd == NBD_CMD_WRITE_ZEROES ? "req_write_zeroes" : (abort (), ""); }