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