Re: [PATCH 1/1] Add vhost_blk driver

From: kbuild test robot
Date: Fri Nov 02 2018 - 23:01:48 EST


Hi Vitaly,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on vhost/linux-next]
[also build test ERROR on v4.19 next-20181102]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Vitaly-Mayatskikh/vhost-add-vhost_blk-driver/20181103-084141
base: https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git linux-next
config: mips-allyesconfig (attached as .config)
compiler: mips-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.2.0 make.cross ARCH=mips

All error/warnings (new ones prefixed by >>):

drivers/vhost/blk.c: In function 'vhost_blk_iocb_complete':
>> drivers/vhost/blk.c:129:2: error: implicit declaration of function 'vhost_vq_work_queue'; did you mean 'vhost_work_queue'? [-Werror=implicit-function-declaration]
vhost_vq_work_queue(&req->q->vq, &req->q->w);
^~~~~~~~~~~~~~~~~~~
vhost_work_queue
In file included from include/linux/kernel.h:14:0,
from include/linux/list.h:9,
from include/linux/module.h:9,
from drivers/vhost/blk.c:11:
drivers/vhost/blk.c: In function 'vhost_blk_req_handle':
>> drivers/vhost/blk.c:153:12: warning: format '%ld' expects argument of type 'long int', but argument 8 has type 'ssize_t {aka int}' [-Wformat=]
pr_debug("%s: [pid:%d %s] %s sector %lld, len %ld\n",
^
include/linux/printk.h:292:21: note: in definition of macro 'pr_fmt'
#define pr_fmt(fmt) fmt
^~~
include/linux/printk.h:340:2: note: in expansion of macro 'dynamic_pr_debug'
dynamic_pr_debug(fmt, ##__VA_ARGS__)
^~~~~~~~~~~~~~~~
>> drivers/vhost/blk.c:153:3: note: in expansion of macro 'pr_debug'
pr_debug("%s: [pid:%d %s] %s sector %lld, len %ld\n",
^~~~~~~~
cc1: some warnings being treated as errors

vim +129 drivers/vhost/blk.c

118
119 static void vhost_blk_iocb_complete(struct kiocb *iocb, long ret, long ret2)
120 {
121 struct vhost_blk_req *req = container_of(iocb, struct vhost_blk_req,
122 iocb);
123
124 pr_debug("%s vq[%d] req->index %d ret %ld ret2 %ld\n", __func__,
125 req->q->index, req->index, ret, ret2);
126
127 req->res = (ret == req->len) ? VIRTIO_BLK_S_OK : VIRTIO_BLK_S_IOERR;
128 llist_add(&req->list, &req->q->wl);
> 129 vhost_vq_work_queue(&req->q->vq, &req->q->w);
130 }
131
132 static int vhost_blk_req_handle(struct vhost_blk_req *req)
133 {
134 struct vhost_blk *blk = req->q->blk;
135 struct vhost_virtqueue *vq = &req->q->vq;
136 int type = le32_to_cpu(req->hdr.type);
137 int ret;
138 u8 status;
139
140 if ((type == VIRTIO_BLK_T_IN) || (type == VIRTIO_BLK_T_OUT)) {
141 bool write = (type == VIRTIO_BLK_T_OUT);
142 int nr_seg = (write ? req->out_num : req->in_num) - 1;
143 unsigned long sector = le64_to_cpu(req->hdr.sector);
144 ssize_t len, rem_len;
145
146 if (!req->q->blk->backend) {
147 vq_err(vq, "blk %p no backend!\n", req->q->blk);
148 ret = -EINVAL;
149 goto out_err;
150 }
151
152 len = iov_length(&vq->iov[1], nr_seg);
> 153 pr_debug("%s: [pid:%d %s] %s sector %lld, len %ld\n",
154 __func__, current->pid, current->comm,
155 write ? "WRITE" : "READ", req->hdr.sector, len);
156
157 req->len = len;
158 rem_len = len;
159 iov_iter_init(&req->i, (write ? WRITE : READ),
160 write ? &req->out_iov[0] : &req->in_iov[0],
161 nr_seg, len);
162
163 req->iocb.ki_pos = sector << 9;
164 req->iocb.ki_filp = blk->backend;
165 req->iocb.ki_complete = vhost_blk_iocb_complete;
166 req->iocb.ki_flags = IOCB_DIRECT;
167
168 if (write)
169 ret = call_write_iter(blk->backend, &req->iocb,
170 &req->i);
171 else
172 ret = call_read_iter(blk->backend, &req->iocb,
173 &req->i);
174
175 if (ret != -EIOCBQUEUED)
176 vhost_blk_iocb_complete(&req->iocb, ret, 0);
177
178 ret = 0;
179 goto out;
180 }
181
182 if (type == VIRTIO_BLK_T_GET_ID) {
183 char s[] = "vhost_blk";
184 size_t len = min_t(size_t, req->in_iov[0].iov_len,
185 strlen(s));
186
187 ret = copy_to_user(req->in_iov[0].iov_base, s, len);
188 status = ret ? VIRTIO_BLK_S_IOERR : VIRTIO_BLK_S_OK;
189 if (put_user(status, (unsigned char __user *)req->status)) {
190 ret = -EFAULT;
191 goto out_err;
192 }
193 vhost_add_used_and_signal(&blk->dev, vq, req->index, 1);
194 ret = 0;
195 goto out;
196 } else {
197 pr_warn("Unsupported request type %d\n", type);
198 vhost_discard_vq_desc(vq, 1);
199 ret = -EINVAL;
200 return ret;
201 }
202 out_err:
203 vhost_discard_vq_desc(vq, 1);
204 out:
205 return ret;
206 }
207

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip