Re: linux-next: manual merge of the block tree with the vfs tree
From: Stephen Rothwell
Date: Tue Feb 21 2017 - 17:14:30 EST
Hi all,
On Thu, 2 Feb 2017 13:44:07 +1100 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
>
> Today's linux-next merge of the block tree got a conflict in:
>
> drivers/block/nbd.c
>
> between commit:
>
> c9f2b6aeb922 ("[nbd] pass iov_iter to nbd_xmit()")
>
> from the vfs tree and commit:
>
> 09fc54ccc427 ("nbd: move request validity checking into nbd_send_cmd")
> aebf526b53ae ("block: fold cmd_type into the REQ_OP_ space")
>
> from the block tree.
>
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging. You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
>
> --
> Cheers,
> Stephen Rothwell
>
> diff --cc drivers/block/nbd.c
> index 48132b0530fe,0be84a3cb6d7..000000000000
> --- a/drivers/block/nbd.c
> +++ b/drivers/block/nbd.c
> @@@ -265,17 -275,32 +262,32 @@@ static int nbd_send_cmd(struct nbd_devi
> u32 type;
> u32 tag = blk_mq_unique_tag(req);
>
> + iov_iter_kvec(&from, WRITE | ITER_KVEC, &iov, 1, sizeof(request));
> +
> - if (req_op(req) == REQ_OP_DISCARD)
> + switch (req_op(req)) {
> + case REQ_OP_DISCARD:
> type = NBD_CMD_TRIM;
> - else if (req_op(req) == REQ_OP_FLUSH)
> + break;
> + case REQ_OP_FLUSH:
> type = NBD_CMD_FLUSH;
> - else if (rq_data_dir(req) == WRITE)
> + break;
> + case REQ_OP_WRITE:
> type = NBD_CMD_WRITE;
> - else
> + break;
> + case REQ_OP_READ:
> type = NBD_CMD_READ;
> + break;
> + default:
> + return -EIO;
> + }
> +
> + if (rq_data_dir(req) == WRITE &&
> + (nbd->flags & NBD_FLAG_READ_ONLY)) {
> + dev_err_ratelimited(disk_to_dev(nbd->disk),
> + "Write on read-only\n");
> + return -EIO;
> + }
>
> - memset(&request, 0, sizeof(request));
> - request.magic = htonl(NBD_REQUEST_MAGIC);
> request.type = htonl(type);
> if (type != NBD_CMD_FLUSH) {
> request.from = cpu_to_be64((u64)blk_rq_pos(req) << 9);
This is now a conflict between the vfs tree and Linus' tree.
--
Cheers,
Stephen Rothwell