From: kbuild test robot <lkp@intel.com> To: adam.manzanares@wdc.com Cc: kbuild-all@01.org, viro@zeniv.linux.org.uk, bcrl@kvack.org, linux-fsdevel@vger.kernel.org, linux-aio@kvack.org, linux-api@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Adam Manzanares <adam.manzanares@wdc.com> Subject: Re: [PATCH v3 3/3] fs: Add aio iopriority support for block_dev Date: Wed, 9 May 2018 16:54:40 +0800 [thread overview] Message-ID: <201805091636.4nBtTJwM%fengguang.wu@intel.com> (raw) In-Reply-To: <20180508174202.2537-4-adam.manzanares@wdc.com> [-- Attachment #1: Type: text/plain, Size: 4828 bytes --] Hi Adam, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.17-rc4 next-20180508] [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/adam-manzanares-wdc-com/block-add-ioprio_check_cap-function/20180509-094058 config: x86_64-randconfig-s0-05091255 (attached as .config) compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): fs/aio.c: In function 'io_submit_one': >> fs/aio.c:1606:9: error: implicit declaration of function 'ioprio_check_cap' [-Werror=implicit-function-declaration] ret = ioprio_check_cap(iocb->aio_reqprio); ^~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +/ioprio_check_cap +1606 fs/aio.c 1545 1546 static int io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb, 1547 struct iocb *iocb, bool compat) 1548 { 1549 struct aio_kiocb *req; 1550 struct file *file; 1551 ssize_t ret; 1552 1553 /* enforce forwards compatibility on users */ 1554 if (unlikely(iocb->aio_reserved2)) { 1555 pr_debug("EINVAL: reserve field set\n"); 1556 return -EINVAL; 1557 } 1558 1559 /* prevent overflows */ 1560 if (unlikely( 1561 (iocb->aio_buf != (unsigned long)iocb->aio_buf) || 1562 (iocb->aio_nbytes != (size_t)iocb->aio_nbytes) || 1563 ((ssize_t)iocb->aio_nbytes < 0) 1564 )) { 1565 pr_debug("EINVAL: overflow check\n"); 1566 return -EINVAL; 1567 } 1568 1569 req = aio_get_req(ctx); 1570 if (unlikely(!req)) 1571 return -EAGAIN; 1572 1573 req->common.ki_filp = file = fget(iocb->aio_fildes); 1574 if (unlikely(!req->common.ki_filp)) { 1575 ret = -EBADF; 1576 goto out_put_req; 1577 } 1578 req->common.ki_pos = iocb->aio_offset; 1579 req->common.ki_complete = aio_complete; 1580 req->common.ki_flags = iocb_flags(req->common.ki_filp); 1581 req->common.ki_hint = file_write_hint(file); 1582 1583 if (iocb->aio_flags & IOCB_FLAG_RESFD) { 1584 /* 1585 * If the IOCB_FLAG_RESFD flag of aio_flags is set, get an 1586 * instance of the file* now. The file descriptor must be 1587 * an eventfd() fd, and will be signaled for each completed 1588 * event using the eventfd_signal() function. 1589 */ 1590 req->ki_eventfd = eventfd_ctx_fdget((int) iocb->aio_resfd); 1591 if (IS_ERR(req->ki_eventfd)) { 1592 ret = PTR_ERR(req->ki_eventfd); 1593 req->ki_eventfd = NULL; 1594 goto out_put_req; 1595 } 1596 1597 req->common.ki_flags |= IOCB_EVENTFD; 1598 } 1599 1600 if (iocb->aio_flags & IOCB_FLAG_IOPRIO) { 1601 /* 1602 * If the IOCB_FLAG_IOPRIO flag of aio_flags is set, then 1603 * aio_reqprio is interpreted as an I/O scheduling 1604 * class and priority. 1605 */ > 1606 ret = ioprio_check_cap(iocb->aio_reqprio); 1607 if (ret) { 1608 pr_debug("aio ioprio check cap error\n"); 1609 goto out_put_req; 1610 } 1611 1612 req->common.ki_ioprio = iocb->aio_reqprio; 1613 req->common.ki_flags |= IOCB_IOPRIO; 1614 } 1615 1616 ret = kiocb_set_rw_flags(&req->common, iocb->aio_rw_flags); 1617 if (unlikely(ret)) { 1618 pr_debug("EINVAL: aio_rw_flags\n"); 1619 goto out_put_req; 1620 } 1621 1622 ret = put_user(KIOCB_KEY, &user_iocb->aio_key); 1623 if (unlikely(ret)) { 1624 pr_debug("EFAULT: aio_key\n"); 1625 goto out_put_req; 1626 } 1627 1628 req->ki_user_iocb = user_iocb; 1629 req->ki_user_data = iocb->aio_data; 1630 1631 get_file(file); 1632 switch (iocb->aio_lio_opcode) { 1633 case IOCB_CMD_PREAD: 1634 ret = aio_read(&req->common, iocb, false, compat); 1635 break; 1636 case IOCB_CMD_PWRITE: 1637 ret = aio_write(&req->common, iocb, false, compat); 1638 break; 1639 case IOCB_CMD_PREADV: 1640 ret = aio_read(&req->common, iocb, true, compat); 1641 break; 1642 case IOCB_CMD_PWRITEV: 1643 ret = aio_write(&req->common, iocb, true, compat); 1644 break; 1645 default: 1646 pr_debug("invalid aio operation %d\n", iocb->aio_lio_opcode); 1647 ret = -EINVAL; 1648 break; 1649 } 1650 fput(file); 1651 1652 if (ret && ret != -EIOCBQUEUED) 1653 goto out_put_req; 1654 return 0; 1655 out_put_req: 1656 put_reqs_available(ctx, 1); 1657 percpu_ref_put(&ctx->reqs); 1658 kiocb_free(req); 1659 return ret; 1660 } 1661 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 30767 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com> Cc: kbuild-all@01.org, viro@zeniv.linux.org.uk, bcrl@kvack.org, linux-fsdevel@vger.kernel.org, linux-aio@kvack.org, linux-api@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Adam Manzanares <adam.manzanares@wdc.com> Subject: Re: [PATCH v3 3/3] fs: Add aio iopriority support for block_dev Date: Wed, 9 May 2018 16:54:40 +0800 [thread overview] Message-ID: <201805091636.4nBtTJwM%fengguang.wu@intel.com> (raw) In-Reply-To: <20180508174202.2537-4-adam.manzanares@wdc.com> [-- Attachment #1: Type: text/plain, Size: 4828 bytes --] Hi Adam, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.17-rc4 next-20180508] [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/adam-manzanares-wdc-com/block-add-ioprio_check_cap-function/20180509-094058 config: x86_64-randconfig-s0-05091255 (attached as .config) compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): fs/aio.c: In function 'io_submit_one': >> fs/aio.c:1606:9: error: implicit declaration of function 'ioprio_check_cap' [-Werror=implicit-function-declaration] ret = ioprio_check_cap(iocb->aio_reqprio); ^~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +/ioprio_check_cap +1606 fs/aio.c 1545 1546 static int io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb, 1547 struct iocb *iocb, bool compat) 1548 { 1549 struct aio_kiocb *req; 1550 struct file *file; 1551 ssize_t ret; 1552 1553 /* enforce forwards compatibility on users */ 1554 if (unlikely(iocb->aio_reserved2)) { 1555 pr_debug("EINVAL: reserve field set\n"); 1556 return -EINVAL; 1557 } 1558 1559 /* prevent overflows */ 1560 if (unlikely( 1561 (iocb->aio_buf != (unsigned long)iocb->aio_buf) || 1562 (iocb->aio_nbytes != (size_t)iocb->aio_nbytes) || 1563 ((ssize_t)iocb->aio_nbytes < 0) 1564 )) { 1565 pr_debug("EINVAL: overflow check\n"); 1566 return -EINVAL; 1567 } 1568 1569 req = aio_get_req(ctx); 1570 if (unlikely(!req)) 1571 return -EAGAIN; 1572 1573 req->common.ki_filp = file = fget(iocb->aio_fildes); 1574 if (unlikely(!req->common.ki_filp)) { 1575 ret = -EBADF; 1576 goto out_put_req; 1577 } 1578 req->common.ki_pos = iocb->aio_offset; 1579 req->common.ki_complete = aio_complete; 1580 req->common.ki_flags = iocb_flags(req->common.ki_filp); 1581 req->common.ki_hint = file_write_hint(file); 1582 1583 if (iocb->aio_flags & IOCB_FLAG_RESFD) { 1584 /* 1585 * If the IOCB_FLAG_RESFD flag of aio_flags is set, get an 1586 * instance of the file* now. The file descriptor must be 1587 * an eventfd() fd, and will be signaled for each completed 1588 * event using the eventfd_signal() function. 1589 */ 1590 req->ki_eventfd = eventfd_ctx_fdget((int) iocb->aio_resfd); 1591 if (IS_ERR(req->ki_eventfd)) { 1592 ret = PTR_ERR(req->ki_eventfd); 1593 req->ki_eventfd = NULL; 1594 goto out_put_req; 1595 } 1596 1597 req->common.ki_flags |= IOCB_EVENTFD; 1598 } 1599 1600 if (iocb->aio_flags & IOCB_FLAG_IOPRIO) { 1601 /* 1602 * If the IOCB_FLAG_IOPRIO flag of aio_flags is set, then 1603 * aio_reqprio is interpreted as an I/O scheduling 1604 * class and priority. 1605 */ > 1606 ret = ioprio_check_cap(iocb->aio_reqprio); 1607 if (ret) { 1608 pr_debug("aio ioprio check cap error\n"); 1609 goto out_put_req; 1610 } 1611 1612 req->common.ki_ioprio = iocb->aio_reqprio; 1613 req->common.ki_flags |= IOCB_IOPRIO; 1614 } 1615 1616 ret = kiocb_set_rw_flags(&req->common, iocb->aio_rw_flags); 1617 if (unlikely(ret)) { 1618 pr_debug("EINVAL: aio_rw_flags\n"); 1619 goto out_put_req; 1620 } 1621 1622 ret = put_user(KIOCB_KEY, &user_iocb->aio_key); 1623 if (unlikely(ret)) { 1624 pr_debug("EFAULT: aio_key\n"); 1625 goto out_put_req; 1626 } 1627 1628 req->ki_user_iocb = user_iocb; 1629 req->ki_user_data = iocb->aio_data; 1630 1631 get_file(file); 1632 switch (iocb->aio_lio_opcode) { 1633 case IOCB_CMD_PREAD: 1634 ret = aio_read(&req->common, iocb, false, compat); 1635 break; 1636 case IOCB_CMD_PWRITE: 1637 ret = aio_write(&req->common, iocb, false, compat); 1638 break; 1639 case IOCB_CMD_PREADV: 1640 ret = aio_read(&req->common, iocb, true, compat); 1641 break; 1642 case IOCB_CMD_PWRITEV: 1643 ret = aio_write(&req->common, iocb, true, compat); 1644 break; 1645 default: 1646 pr_debug("invalid aio operation %d\n", iocb->aio_lio_opcode); 1647 ret = -EINVAL; 1648 break; 1649 } 1650 fput(file); 1651 1652 if (ret && ret != -EIOCBQUEUED) 1653 goto out_put_req; 1654 return 0; 1655 out_put_req: 1656 put_reqs_available(ctx, 1); 1657 percpu_ref_put(&ctx->reqs); 1658 kiocb_free(req); 1659 return ret; 1660 } 1661 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 30767 bytes --]
next prev parent reply other threads:[~2018-05-09 8:54 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-08 17:41 [PATCH v3 0/3] AIO add per-command iopriority adam.manzanares 2018-05-08 17:41 ` adam.manzanares 2018-05-08 17:42 ` [PATCH v3 1/3] block: add ioprio_check_cap function adam.manzanares 2018-05-08 17:42 ` adam.manzanares 2018-05-08 17:42 ` [PATCH v3 2/3] fs: Convert kiocb rw_hint from enum to u16 adam.manzanares 2018-05-08 17:42 ` adam.manzanares 2018-05-09 13:34 ` Theodore Y. Ts'o 2018-05-09 13:34 ` Theodore Y. Ts'o 2018-05-09 14:23 ` Jens Axboe 2018-05-09 14:23 ` Jens Axboe 2018-05-09 15:21 ` Theodore Y. Ts'o 2018-05-09 15:21 ` Theodore Y. Ts'o 2018-05-09 15:29 ` Adam Manzanares 2018-05-09 15:29 ` Adam Manzanares 2018-05-08 17:42 ` [PATCH v3 3/3] fs: Add aio iopriority support for block_dev adam.manzanares 2018-05-08 17:42 ` adam.manzanares 2018-05-09 8:54 ` kbuild test robot [this message] 2018-05-09 8:54 ` kbuild test robot
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=201805091636.4nBtTJwM%fengguang.wu@intel.com \ --to=lkp@intel.com \ --cc=adam.manzanares@wdc.com \ --cc=bcrl@kvack.org \ --cc=kbuild-all@01.org \ --cc=linux-aio@kvack.org \ --cc=linux-api@vger.kernel.org \ --cc=linux-block@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=viro@zeniv.linux.org.uk \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.