From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0506DC4743D for ; Fri, 4 Jun 2021 22:52:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CA07E613AC for ; Fri, 4 Jun 2021 22:52:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230041AbhFDWyV (ORCPT ); Fri, 4 Jun 2021 18:54:21 -0400 Received: from mga03.intel.com ([134.134.136.65]:51692 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229774AbhFDWyV (ORCPT ); Fri, 4 Jun 2021 18:54:21 -0400 IronPort-SDR: g5ZdvvP1x5r0Kw+O29X1VlspnH2e1LyBc/MmzWRgDSGGld513siwTJenpCSdErm5CGiB+D2Bbp bhajyfzOldAg== X-IronPort-AV: E=McAfee;i="6200,9189,10005"; a="204412702" X-IronPort-AV: E=Sophos;i="5.83,249,1616482800"; d="gz'50?scan'50,208,50";a="204412702" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jun 2021 15:52:32 -0700 IronPort-SDR: a2jKl4QDCX03KjcTPAkAgA9JxTis33e7QIwOrzFP3ORPzFhYDHP6NBBjAGFo5g1VmoqPpkKojd 8XN96ZyAMd2A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,249,1616482800"; d="gz'50?scan'50,208,50";a="412513627" Received: from lkp-server02.sh.intel.com (HELO 1ec8406c5392) ([10.239.97.151]) by fmsmga007.fm.intel.com with ESMTP; 04 Jun 2021 15:52:28 -0700 Received: from kbuild by 1ec8406c5392 with local (Exim 4.92) (envelope-from ) id 1lpIg0-00079f-5r; Fri, 04 Jun 2021 22:52:28 +0000 Date: Sat, 5 Jun 2021 06:51:44 +0800 From: kernel test robot To: Satya Tangirala , "Theodore Y . Ts'o" , Jaegeuk Kim , Eric Biggers , Chao Yu , Chao Yu , Jens Axboe , "Darrick J . Wong" Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org, linux-fscrypt@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-xfs@vger.kernel.org Subject: Re: [PATCH v9 5/9] block: Make bio_iov_iter_get_pages() respect bio_required_sector_alignment() Message-ID: <202106050654.2dIHanZf-lkp@intel.com> References: <20210604210908.2105870-6-satyat@google.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="uAKRQypu60I7Lcqm" Content-Disposition: inline In-Reply-To: <20210604210908.2105870-6-satyat@google.com> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-fscrypt@vger.kernel.org --uAKRQypu60I7Lcqm Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Satya, Thank you for the patch! Yet something to improve: [auto build test ERROR on block/for-next] [also build test ERROR on ext4/dev f2fs/dev-test linus/master v5.13-rc4 next-20210604] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Satya-Tangirala/add-support-for-direct-I-O-with-fscrypt-using-blk-crypto/20210605-051023 base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next config: um-x86_64_defconfig (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/eea1225f680da16dce01bfb2914b9e8b78de298d git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Satya-Tangirala/add-support-for-direct-I-O-with-fscrypt-using-blk-crypto/20210605-051023 git checkout eea1225f680da16dce01bfb2914b9e8b78de298d # save the attached .config to linux build tree make W=1 ARCH=um SUBARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): In file included from include/linux/kernel.h:14, from include/asm-generic/bug.h:20, from ./arch/um/include/generated/asm/bug.h:1, from include/linux/bug.h:5, from include/linux/mmdebug.h:5, from include/linux/mm.h:9, from block/bio.c:5: block/bio.c: In function 'bio_iov_iter_get_pages': >> block/bio.c:1131:10: error: implicit declaration of function 'bio_required_sector_alignment' [-Werror=implicit-function-declaration] 1131 | bio_required_sector_alignment(bio)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/math.h:14:46: note: in definition of macro '__round_mask' 14 | #define __round_mask(x, y) ((__typeof__(x))((y)-1)) | ^ block/bio.c:1130:20: note: in expansion of macro 'round_down' 1130 | aligned_sectors = round_down(bio_sectors(bio), | ^~~~~~~~~~ cc1: some warnings being treated as errors vim +/bio_required_sector_alignment +1131 block/bio.c 1083 1084 /** 1085 * bio_iov_iter_get_pages - add user or kernel pages to a bio 1086 * @bio: bio to add pages to 1087 * @iter: iov iterator describing the region to be added 1088 * 1089 * This takes either an iterator pointing to user memory, or one pointing to 1090 * kernel pages (BVEC iterator). If we're adding user pages, we pin them and 1091 * map them into the kernel. On IO completion, the caller should put those 1092 * pages. For bvec based iterators bio_iov_iter_get_pages() uses the provided 1093 * bvecs rather than copying them. Hence anyone issuing kiocb based IO needs 1094 * to ensure the bvecs and pages stay referenced until the submitted I/O is 1095 * completed by a call to ->ki_complete() or returns with an error other than 1096 * -EIOCBQUEUED. The caller needs to check if the bio is flagged BIO_NO_PAGE_REF 1097 * on IO completion. If it isn't, then pages should be released. 1098 * 1099 * The function tries, but does not guarantee, to pin as many pages as 1100 * fit into the bio, or are requested in @iter, whatever is smaller. If 1101 * MM encounters an error pinning the requested pages, it stops. Error 1102 * is returned only if 0 pages could be pinned. It also ensures that the number 1103 * of sectors added to the bio is aligned to bio_required_sector_alignment(). 1104 * 1105 * It's intended for direct IO, so doesn't do PSI tracking, the caller is 1106 * responsible for setting BIO_WORKINGSET if necessary. 1107 */ 1108 int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter) 1109 { 1110 int ret = 0; 1111 unsigned int aligned_sectors; 1112 1113 if (iov_iter_is_bvec(iter)) { 1114 if (bio_op(bio) == REQ_OP_ZONE_APPEND) 1115 return bio_iov_bvec_set_append(bio, iter); 1116 return bio_iov_bvec_set(bio, iter); 1117 } 1118 1119 do { 1120 if (bio_op(bio) == REQ_OP_ZONE_APPEND) 1121 ret = __bio_iov_append_get_pages(bio, iter); 1122 else 1123 ret = __bio_iov_iter_get_pages(bio, iter); 1124 } while (!ret && iov_iter_count(iter) && !bio_full(bio, 0)); 1125 1126 /* 1127 * Ensure that number of sectors in bio is aligned to 1128 * bio_required_sector_align() 1129 */ 1130 aligned_sectors = round_down(bio_sectors(bio), > 1131 bio_required_sector_alignment(bio)); 1132 iov_iter_revert(iter, (bio_sectors(bio) - aligned_sectors) << SECTOR_SHIFT); 1133 bio_truncate(bio, aligned_sectors << SECTOR_SHIFT); 1134 1135 /* don't account direct I/O as memory stall */ 1136 bio_clear_flag(bio, BIO_WORKINGSET); 1137 return bio->bi_vcnt ? 0 : ret; 1138 } 1139 EXPORT_SYMBOL_GPL(bio_iov_iter_get_pages); 1140 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org --uAKRQypu60I7Lcqm Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 H4sICDSoumAAAy5jb25maWcAnFxNc9s4k76/v4KVucxUbRLHTlLJbvkAgaCEEb9MgJLsC0uR mEQ1tuWV5JnJv99uUCQBsuGk9pJY6MZ3o/vpRoO//ee3gD2f9g/r026zvr//EXyrH+vD+lRv g6+7+/p/gjAL0kwHIpT6DTDHu8fnf98+PwQf3ry7enPx+rC5Cub14bG+D/j+8evu2zNU3u0f //Pbf3iWRnJacV4tRKFkllZarPT1q2+bzevPwe9h/WW3fgw+v8FmLi//aP56ZVWTqppyfv2j LZr2TV1/vri6uOh4Y5ZOO1JXzJRpIi37JqCoZbu8+nBx2ZbHIbJOorBnhSKa1SJcWKPlLK1i mc77FqzCSmmmJXdoMxgMU0k1zXRGEmQKVUVPksVNtcwK7AGW97dgarbqPjjWp+enfsEnRTYX aQXrrZLcqp1KXYl0UbECJiETqa/fXX7qZpVxFrfTevWKKq5YaQ90UkpYCcVibfGHImJlrE1n RPEsUzplibh+9fvj/rH+o2NQS2YNVd2qhcz5qAD/5zruy/NMyVWV3JSiFHRpX+W34ExeMs1n laEGu2PwuD/hCnbrX2RKVYlIsuK2YlozPrMrl0rEcmLX60ishDNCtDhjCwGLDn0aDhwQi+N2 E2FTg+Pzl+OP46l+6DdxKlJRSG72XM2ypRlD/bgN9l8HVYY1OOzZXCxEqlXbh9491Icj1Q3I 5BwkRUAXul/ANKtmdxXPkgSEwZo8FObQRxZKTsyzqSXDWAxa6n/O5HRWFUJBvwkIlT2p0Ri7 3SyESHINTZmzYCbE8/KtXh//Ck5QK1hDC8fT+nQM1pvN/vnxtHv8NpgiVKgY51mZaplOLSFW IXSQcQF7DnRtz3ZIqxZX5L5rpuZ4vBVJzZV0y8/z/YUpmKkWvAwUtXHpbQU0e8DwsxIr2CFK ClXDbFdXbf3zkNyuOr0xb/6wNMm825qM2wOQ85lgIWws0X+cocqIQJhlBJrnfb+9MtWgH1kk hjxXzQqozfd6+3xfH4Kv9fr0fKiPpvg8aII6UKXQPig6S8NOi6zMlT1wOO58Sgx6Es/P7MPq leIzYVmLiMmicild6zwC08LScClDPSOFpNB2XZLl3G0uQ1rOzvQiTBil1RpqBGfpThSjyYRi IbkYFYOMDg/FmZJIxV8aRigmJbWgqPxVzuBM9Z2VWlWp9RsVfaoGSreAIvp8yXBAarsSetAM rC2f5xnIA+ognRWCbNHsgTF2Zi7UWbpVsKWhANXEmXY3e0irFpf0louY3ZIUFDrYEGNDC1oY Jlmmq+Zvehd4leWgY+WdqKKsQK0N/yUs5aTJG3Ar+MOxvY7NNeaslOG7j5YazSN7DbxKaFAt AUwgcXOd3mD5ehvZHq8ZnJ94ZOM7M+IoExujWGpLxBGsWWE1MmEKZlw6HZUAUgc/QcYG02+K eZKv+MzuIc/stpScpiy2MaUZr11g7LRdoGagiyy8Ki3EJbOqLBzzxcKFVKJdLmshoJEJKwpp L+0cWW4T50i0ZRX8T+xXRzYrhSKr5UI4RjKP2u5JScTdNdgvoiUZxinC0NV5Rr2fnYq8Pnzd Hx7Wj5s6EH/Xj2AhGSh+jjYS8IJtCX6xRju3RdKsfmVQgSNGgHxypgFIW6KkYjZxznlcTijV AGyw+sVUtKDXrQRUVMKxVKCEQKazhNZBDuOMFSGgO3oF1ayMolhUOYM+YRsAsYNqo3VlkUUS fIopiUhcd8KsbJnEr49P9Wb3dbcJ9k/o2B17DAJUS+ISC14A7JOZI8i6AKWPaDaK2RQOeJnn WWFBTgStoDTHBEBWfN7UHtE6yMsAkxegbWHNQatah/Xu+l3vJqYFWjR1/a6Z3Gx/PAVPh/2m Ph73h+D046nBYQ7KaGc3/0SuaJJ77GCCmobW/AnsT0KITjeb3FrJ1aePCGBEkWahgImCbTrD o482S/zOT9OKu+2d9dbH98PibOGWJGCCkjIx6DliiYxvrz92wE2yq8sqEnBOHPOAvLBRZtBE MUvCceHsdmocjUExh9PJymJMuJuxbCVTG7v+dDMtocW59Y1+fD+R2p23vTJXVQxqIq7yqWaT 2MYt7X7NlgLcGvecG2/feP4UFAa3mRcSfJrw1po2OseRrcPhf5XZRi9hU2mc4OLGUusgGzA+ c06qDBRFcX1pCVvCcjDGxCjOE2qmp66vLJ0NS4SWCg8tTv187kilQWqIVncE/Pv6sN6A2g3C +u/dpraUh9Iw0qIazVEpS2pSsM0A25i1SjiSYZG+HZToUckKjlAyKIP/KkDDWVP86uv2vy/+ C/5598pmaGhPp+Mra4REKS6aAksSXj90jMTPCqMLLgrBfcfIQAas9roSq9ctbFqf/tkf/hov Kw4DkK+FrpuCSugZYDI7ytJSNJg/qlzFkigNmRhEBVrKQnCf4elYQgp/ttSEM6WplnPOKBhu DbTIbWVArVDf6kIWGqFUQiEeE6dRpcoF7BWATCUnjnQ2lFHB2LPKExiXELk9HyhDt8KU0wY6 qZZsLtAYUi5NngxaG7lZfZDrBka/BLdJRJHkEnHOGY+MkFZr99eHzffdqd6gvny9rZ9gMQE9 jc0+L5iaDWRYwTbYusugZKNZAZIADEaHimMkZcCCYc4kC88RxhHVbIbgiMdeIFUAarTjRAyr jBh7TX2mNNbT57bGOmvjT/YgUJIGoSW0CpbCzsISbAaiYON+IIJ2PNIGaF5d4kKhyvVJJACq cxzMAv9IEPlMANxkMRhcQAhdyG/Ks8XrL+tjvQ3+anAxGMevu/smNNZjvhfYnKli7D2Py6lM najdL8pO2xQsV4Kuk21GjWuhEnT3Lgbr5oRoTBH6pxwDRSwklurMU6ZI91ZuyDQ060XRR8d2 VMG7mLjH72k5JSVOZyLufoHRxbNoDSt39OmdpPXFkHF190tsd2B8X2JEL2KJMR6FEt3FbCqZ oPWlNBNUBOdigl6Inl2/env8snt8+7DfgjR9qTsbOUHF5niP51DHRNFazKL7ou59tESLaSH1 yzGVu8znRrUcelZkWo+dJIuNJyFezMBcCyVog4dsy4n2N9GEyWQGHrVIuX/QHSMHlODlUqBf s5zRoogMzVVSBV0VtzlYv3RkBfL14bTD0xpowM6O8wPz1FIbaQ8XGEMiz54KM9WzWiGOSDrF ne4Y9mgHXY2la+5Hsj7Eaxmh5AbWpInUhYKF7kWZRZzfTmzL0BZPohuDttouo5uqXWgiBNve uzhD6ZpsllblMjWqBVC4tPH5mV7AKM/0l2hk3SXItfBVtolu7R6TmJUU/9ab59P6y31trnYD EyU5WWs6kWmUaDRUTtDMtfT4qwrLJO8u9dCwneP+llZv2mr8nFExho97YIxNYou2cPgGa2aS 1A/7w48gWT+uv9UPJEiJ4GA5AQgsqIwTDcXgSdnoII/B/ObarKCJELwfmGg+PDLW2Zji/qFe HKiMlmF2q+DchEWlO1ezD78pKhDQLiz6buiDm+rX7y8+d259KkCGwa0z4GPuoEIeCziiiGbI 8UZFlmq8baXjxu7lQVd+l2cZrVzuJiWtT++MSc/o6AheEjZLh5GduU/ZwgyNyz+8XGsQDpxW LUApPtb19hic9sH39d91YCAcYFEQJJSerY12/HLTL6xuj8vZgQAkNJYukIi5cHayKalCySgh KFNpBZXxF5wMZ9tM2bB2f8UY03hkFYFTW/qMEPpGc3FLjEem7uhl3sTi0QGjNyzvdH8FelJ7 egS2PKVFCwcjcw+OaYhT1CwiKVd0nPMWnPEsm0tBr0XTxkJLLzXKSnrUSGT0zZyhAfzxE2WO KsKzyGZLbZWN/jbP22K3pTLM/SJgOAq2/AkHUmERlS4yGlRg7/Dn9CVb3vHwcmInrbSKqaVf v9o8f9ltXrmtJ+EH5bmXgv356ImjQk3fxmHOCzpqCSvmL/KArjVeFCiMJPcpFWBu3EAaLOUv EEG8Q+4Zp8TLW03TCs+drQbZoVNJNH0tEF96epgUMpzSGt9IhaL1+iJmafXp4vLdDUkOBYfa 9EhiTke3mWYxvUuryw90UyynoX0+y3zdSyEEjvvDe++c/VfpIfe4ErDszIBckpzlIl2opdSc VhULhYk3njQQGJHJA/Oe3iT36PjmHpvucqb8mr8ZKbg0Xo74CnCQAmGvfFw3hfZ3kPJhakuL IhoobSJ3BYDmn/DwmIGjSekho/JW1aRUt5V7tTq5iQd2OjjVx1Mb3bDq53M9FQPsdoYDo5oD gm36rTVnScFC37QYDRM9riCLYH6FTwlE1ZxT+HApCxE3sbS+42iK5+HdCCZ1hA4mfalbbISo OkgYNwyWb3UuQeCFGTQzKFk1WQEXllKL5tIT/MB1/+xBmExGNEHks8rn5KcRvUS5AkUf+/We jGhavNRlmgp69BGTcbYg70yEnmlAwu1pbkWwiTEH4WH3d+Ok9nHV3eZcHGQdiOxBX3MBPRMx fUUDx1InuR1XbUuqBOONzi1pGrLYCVHmRdN8JItkyQBbmYzNdszR7vDwz/pQB/f79bY+WJ7T 0oTXbK9ZrACmd+1gXme/WC13k6QzngrB2cahiBkDk/FdbFdwONIu/mmiVBizcRzIbqXQDwgL ufCM58wgFoUHUDYM6GKcmwE/LwHBoE05sjHAqLxlNvGwl695z3lX44jqWGrMnk2ej8G2u/Hp TcdMoo4kdZxdxXZqQfq9tzXTVHnCn56wYRYR8zwH1Khwn7nWm8TU3WjLUk5CqiYUoyNApZ+2 LByEoktdHdDiLMv7uINdavxsE8S//jTu1kTNMuR7MXYYFhPKjHXTnoRO0OlcXDAa7AGSqlAP odZ5sdtBr41VXCQiUM9PT/vDyXaBnfImmLI7biipggOV3GJAiexbpDzOVAlaBY69EWJaq18O b46bUJSA05EER2t8bbuGUn2+4quPpEAPqjb5zfW/62MgH4+nw/ODyfg5fgeFsQ1Oh/XjEfmC +91jHWxhqrsn/NNekv9HbVOd3Z/qwzqI8ikLvrY6arv/5xH1VPCwxzhh8Puh/t/n3aGGDi75 H85M+YzGEPkiZ6nk5OydzWqyYxGFNSXWerZmAYgYm7ePUsFkiIntBb1jaoTq2kRboiNLNdCa QbNiihBvkGvZm+heA1pm+xxx7AU9S0M6umaE1D5UiI2mJfPkTYqbksWAY/ygVgvPaQRQhN6S z631kRYrHwXtgMeYTMDKliGta6YeDxDGBy6yb168SbOgfP0ytdcPflYLswfmHYQHWy18KimN EzdQ2gMnTFPR7j4DPAmzAgw54xjENi8tCHLC7mxlbpNgP1MtGU0sOFnO2UKWCU0yYVy6OXHH Z3ZChEWaZtnUefXQk2YlWwpJkuSnyw+rFU1yk6csSiJxY7KIXsmEFQsRv1DTO4WmXZHQQ02Z 9tOELrI0S+j5p3SlT1efL0gC+NgK0yJJIp5eNO2OOksGMYJxtQJOmmKKbLJAn70gSeBbqNLO trVpWcyKKGYFPWuVcQlYfEXvEgCYLFe39IAWHmleYeLmygk5z259/lIC/ukZXI5sb85Vq8a3 ncPSX8qNqZ0/kee2poCf+ERmGPx06KHAaxdahyD9hVgbkpM899c1Aethhp3NkfnrsiGGdKgG xWtNBc5NTlSf0RXPuL0kSO28G1+6LvIoOKh0RMCQE7ymwr8+jnYP8xxfH3fbOijVpLXDhgvc +7NHj5Q2tsG26yfMIBtBg2Vsp8Lhr05vhokWcw9NO6/h4Kc3Z8atltj6zCZNCnAKYc1oKpeK ZzRpoCOHpEJJ59WfybKjwvR2xZH+dIgilMy7MoR6tckFc9+GOjTBYm+7MA+aoDRdrj38d7eh rQNtkrGiIk2d3KSlB7csfQRzxULETnqGRTKS5z7HcTtMZYQT6N6Zff6EqZ7WHGIxZfzWW3j2 566sV74gTiYFb5gglFZTReM+46tqT1oJ+D6SxU2KytABb6FSk23oB2Cz5fkhgJtrOSyDPpr7 bAvIL8n4RvvAcLSydlVsvNJFqbR5TNREZka7Az4L5aRhMdWlzW5xX9GqVuUJHT+eeeLKeT6+ Bc4BDm/u95u/qHECsXr34dOn5k3s2As1UdDgbEcxW9x7kXTaQ7U6OH2vg/V2a7JW1vdNx8c3 jv0cjccajky5Luig4zSXmc+aN4mcYFM8lyENHbO0Y8+dH4DvxJMdZF5Dhxl9KYG+VOx9TmIU YsUFpzLEmxDoYf30fbc5OpvTBrqGtM6qOnnSGMbkMZP28VCTKptxWcVS6xizmmAcTkoynBSF 7349emoJSsJzJddkqcoJIAvPmS80b64sRrMNEzYpIytboBd1RBQAdmhE0tSrMLZYpZmWEd3x mc2f83tmmAmW08HAwQCtWZcrUI2570Vi6bntWEQ+AibGNrqJivKedWIiUuf98iLMqberCzTd Y2ZT6rsfbKiND9uIx9kujDYt2W0O++P+6ymY/XiqD68Xwbfn+niiJPZnrNZpLsStzyAA1oFz Q2tEzaa+a+smpAmSRwv1bIkJaKSa40Ydqf3zgYb8JN0OLMh4kq2IjZEwpNJ6leXcehhikK+/ 1U0WFxGL/Blr8/69ftifanzZQ42doDa1nh6O38gKDqGJoGU8+F2ZR+9B9gh2c/f0R9C9aRlc 6rCH+/03KFZ7TjVPkZvQ/WG/3m72D76KJL2J5K7yt9Ghro+bNazNzf4gb3yN/IzV8O7eJCtf AyOabSfj3aluqJPn3f0WnYp2kYimfr2SqXXzvL6H6XvXh6RbJycDj02ORH+Fmez/+tqkqF20 85eEwrLB+BhjERXCEy5fYQjOY0XxUyN0XNGjXvPlGEhjoH4Do6QU14hmW3hlAq6pLrI4JiAg QCHn+xNO/BLvsZCBMjZuxQFa4Z4ExIKNzSp73B72u63dN8DXIpN0lm7LbtlFRmeU4V3IeCFn Swz8b/Dyn4CUapiZ074/HNfqK5krAvrW0PMJApl5kuBimfgMi/F6eXOz5zEh5qEzDQ3cK+zz FTEc4Gb/HDSzAF82xNe2kSJy4Ns5K7QPzLmThVNwiamZnhNyNaD1lPfO4yJTgE9q8GMF2Oag j/dmYOYDAYzTqLflUoKX3kcDhskX3vhzEjr94m8vM17YT9qL7e7kSXwbr5qpWQfyXGy+VuFB 5WcW/P4KbHtEawmrg2qFFz4k15+GgSSt/KRppLw7OdGFv2Iq4xeqRpf+mvhVDUbBELFC/OGu YlvWPDmpspxMNpD4/DUz+cfW4wHMpND49acB3R4J/ZDC5gDoK8kQYqQajG+59sMC2RRU509j 9M2ysXtwJt2UmXbCN6agSzszuiFi5Oc/zEczzvxLVqSD2TYEv9dxgwn9i3cv0C5943UejmNY JlLmpD+4ZU1Rvwrm6NNCgrEn8GIG5EZ5rTff3RtuzARV9Ovmbq+ITPoWNjftNQ2Gr4sseRsu QqM0e53ZbqjKPn/8eOHM7U/w990s7Dtg88yrDKPRlNtx0H03Hmmm3kZMvxUr/DfVg9H1GMQ8 3vH0vYC6fq39AjHVxGlu7c1LI2uAx7F+3u7N64/RehrFFzkffoGCuftSxZSNvhiHheblAXhT Eo65c6OCRD6TcVgI6hYTn9rbvZqP1fQ/21yt3rybVK2XLdH/VXZtzYnrSPivUPO0W5WZCrnn YR5sI4IHY4NshzAvFCE+iWsSoICcPdlfv+qWfJGtltmqPZtz6M+y7mq1u7+WGHp/lnIM7ry5 MtRJqDDDgbjpMnEgaw6B+IceAEP3lkWClRQ2P9G+hOmEMRF3wgdG79LOwCIb0rKRVTQNUlLs Wmrj0iLLUx53JoQonqVOPKIWiuXABCqNJ3LXmlhaP6Vls/Dpyiq9oaXc9tKphR1rET9Sj6WW 7uZRS1htw2h0JWZcaFEmhjFBlgbOpNTo+pQgGjj01KUqX2ddEv9Rsv58yw/bu7vr++/9mrck AMRrGG5AV5e35lbVQbcngW7NnvUa6O76/BSQ2au/ATrpdSdU/O7mlDrdmJWLBuiUit+YGRwb ICKmQAed0gU35mCXBui+G3R/eUJJ96cM8P3lCf10f3VCne5u6X4SigzM/aWZNEkrpn9xSrUF ip4ETuz5RNRXrS708wWC7pkCQU+fAtHdJ/TEKRD0WBcIemkVCHoAy/7obky/uzV9ujnjyL9b El+CC7E5IA/EE8eDM4r61qwQHoOoxQ6IuPuk3HxHLkE8chK/62UL7gdBx+seHNYJ4YwRn6YU whftEtdQOyZMffOtReu+rkYlKR/7RHgRYNJkaF7FaejD8jSciX60nM90D/6aIUna3LP15z4/ fpk+lo3ZglC+lLFmOZiwGE2XCfcJW5fVsFMIjSc60p0UjHt4Bfei6aJi1tOcSpow8+skGxhg wLPHEu4hwyurdjo1D8Ygnvz89r7avMDnmjP4P/A1PvtafazOwON4l2/ODqu/MlFg/nKWb47Z K/Tw2fPur28apeLbav+SbfS45npYfb7Jj/nqPf9vg8gdCcQlzViTsARFkg1F3KCKdhDGkQIM 9AQkVo/YblapQfloaFFpx29OtKI10qW/+Grl7b92x21vvd1nve2+95a97+oxMRIsmvfg1LlA tZ8vWr9D6JTxR81wqH4XS1UcdObtUkGagd7GApYDP0ZeN4hIiQ0vAocW21vwD6FWq/amyYgR /nMKgoH5TQvM9PP5PV9//5N99dbY36/gAvBVX/vqcU7EqyrxwLxdKSnzOuX24pnHOxDxxKwr FF2Y8kd2cX3dv2/1gfN5fMs2kGwBUiywDXYEcKD8Jz++9ZzDYbvOUTRYHVeGnvE8s5uSEj/Y xd7IEf+7OJ9GwaJ/eW4+u4tRZg9+3L8wb/5FP7CZb44cLbty5Ij1/tjqBxc/On9sX3STXFFP 1zq7vKHZUaYQE6aUUkxd+1WVrYUHfG4TR/aqTTta9mSvmzga55zi7lDDBs4OSWqdBuDh0h6S 0erwRo+I0BVsRY465E8dDX9sPC/Nl/lrdji2tmGPe5cXnmFrQ4G1Fk+w/doQbuCM2YV1DCXE Ok6iIkn/fECFuqq12lWXU1bpZGDW0Uux/WlfrE8WwF8bjE8GfeKmXmwEI8d8v6rkF9fme02F uO5bB08gzFeWclO2ixOhb7iEo5vCzKeNOsiVkO/eCteB5h5pnQYOZrqwz6VoPqTU72IyORMm rh3WAwmIW6wjDQBr/w/sTRni31POFvt5wafiOmYfReuETuZRV38piGLybY/m9mO3zw4Hqdu2 u4GOWChOgN9E7L8U311ZZ3Hw29o+IR5Z12KTu0+6O4lrwfajF35+PGd7Rcp4NDfQCWN/6U05 5WamuoG7D+hyZwP98pOEcQauI8TNp6a4LoWKvOza8UpgPPb86ahbHUZwR1tKnMOcdtcpzf89 f96vxE1jv/085hvjERj47il7P8DkWuhEGdXENq44ByAW4Df7CVQNhtJOOS2qupl1wMaZPi+v R9n+CI5PQjM9YIjJIX/dILF2b/2Wrf80WEVPgSM+sPT6tE0MpiSunwC1AY9rH/sKbyTkUUr8 wMDTPfSBp9fn4PKu07B5EW+kNKpqwYEIO0wnLiMCZsVZL7RysRSMHelhvgsNbNUMvKWfpEui rMvGxVH8ILbUYNi8bemAwPeYu7gzPCol1H6EEIfP6e0QEC5hhBJSwpAuJKTAbNgU01bqfNRj 5kuKjHIg+qhEPf0GniND94UReFTXHBSAb1f8QrL5oUzsM5QX0GBWj8wM4JOvZkThM2S5MTwZ izc1fKnA9hU+EE1T67C1vHQzULFu8dfdPt8c/2AUxMtHdng1WeZUrqYmUXFTDslAzJYKGQQD eZ4kqX7xseyWRMxScJK4qr52xzF8D2iVcFXVApPjqKoMyCw7g0XoCLXX5k5fR1Ah7PFi4kZi HS0Z55jZrhawA4+Jf8RO5UaxRmlCdnapoeTv2XfMDIYb5gGha/n73jQ08m1NXzAlHHJRM/Tt +dk/v7jSJ9EUSbghy4t5EYlDE+1JDsFVCe+NGTJkgufABOJJai4SDQnWYhmFQc3dSVYPEzPp /k6KyxFZm+fMGReUl8bJfnKvaW7qajEMsufP11ewINZ4IOqMSGXihYr2NIRu+Xn+T9+EkpFh da+ypgyMJykLPZ1Pp6SvNJrc3bhpzW+40lubo4+ZzBvRnK/IzPql2YPLwvTTWaxC9pSwMKac 4GSBAKSJQLGYaB5SQcAgFhMjjkIqLkK+JXJ/Mcquo6Zo4Jjy9aC1X3XIhE0CMcvaM7CQ2IpH u3gKm5P5GwDSDksU5AugvTtleY/0YlO5KTHFZmVdlrnuxo6YIYXG05KCmwUyekcC5SeQ7wvO soJKTLe5V8PeauuowQqjSLAEvhdtd4ezXrBd//ncyfU3Wm1eG4pdKJaC2BMis1umJgdn45RV zPBSCCdQlCZ1OjLgRABfTUw+l9DkRlK4HKWhzNxoBM1n9rg4ZHuSbzMuR3tfyC9gZd7C+vrS Zgv2tnbmw8+GVJOtVIj02EHPjRlrsmNKbRxMstXW8a/DLt9ghONZ7+PzmP2TiX/JjusfP378 u6oq+tdi2Q+oj5TRQDWtAALblB+tWb+DMqBdlgVRpQ6wrUJDDFQD0l3IfC5BYsuI5sBnb6vV PGbEwSkB2DR6/6tA0Hl481UKnblQLE5M7QSYl0iVtmqBTfGNvWF3UV48kC+dO35iUpYKVfP/ mDstrUVlBTOpV2X2Lz00neO3xmUaxowNgJOYTqWmtnB5QthPAE1Zq21qKjXGy+q46sFxum7l B1Pj6BO9qI7CDjmRBEEK0fPbpy6heAaGywFwhglNlacG33RtbyKa1Hyrx0X3AsOOTk4qjU5e atYNIA8tZAS0TCuAdM49AHE2PKks3vBt16RsFlumrt6O1m4wUwooN6ieuqqP60ToRMjSaF6+ MttDEpmIKKAN+hZa6MetBSBWjDjvhrLZ5nNOHiEWwGgOjPgWgFRwK9JnRBJExihbxqEzhUzS JpuNWKFC+5cZCFnLgaD43QnFPMe0qfIBYqMu4cAjaAOW2UEiyxSJF2EykskgLc2TiWNdMX4j koha5ejx8ZoAcQj05ovEpe1F9flh0geYw4NFld20nLoaun65TySlLSod3vbvbL96zTQfmzSk nIfUPgMXWqRS+cXo7AdFsncDpm40Qc3Uq2cXVAqpUEPFzyo55FT7pAd4Q3kc0ixN5G4Ai6UZ Fi41M0iaGVNBHQgBukcIlKcR9ucH/iNh3nKrfJWQGYPetlz4IGWRQ46HOAoiCPsmUXhnFjry 0l6YyqRAyiElpe/dXNk1Bmz5iD0B16ql46RlSro5EQtK4WKP+HCAgLFAJEQgJAJwQZgtqSiX VjNanqbNGNK69MnhnDAeoRxijYZCRaQRHL53YJZFS3dSn0RQ6g+owFGY5mOzxlO0PWrSQNTl j5b0HLJzYqTqtQ2QO7V1fiAWwijCE8TsI4IGech8Zt9UsbSCfNgynTDSx9Ie2haopiN66ZHe h3JKTiLLjIE08uJMta4N/KpB7L1FIXYA+s2BZcR8C7SeAC3HOWkD/h+VKqjSB4YAAA== --uAKRQypu60I7Lcqm-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============1979472399221326527==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: Re: [PATCH v9 5/9] block: Make bio_iov_iter_get_pages() respect bio_required_sector_alignment() Date: Sat, 05 Jun 2021 06:51:44 +0800 Message-ID: <202106050654.2dIHanZf-lkp@intel.com> In-Reply-To: <20210604210908.2105870-6-satyat@google.com> List-Id: --===============1979472399221326527== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Satya, Thank you for the patch! Yet something to improve: [auto build test ERROR on block/for-next] [also build test ERROR on ext4/dev f2fs/dev-test linus/master v5.13-rc4 nex= t-20210604] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Satya-Tangirala/add-suppor= t-for-direct-I-O-with-fscrypt-using-blk-crypto/20210605-051023 base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.g= it for-next config: um-x86_64_defconfig (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=3D1 build): # https://github.com/0day-ci/linux/commit/eea1225f680da16dce01bfb29= 14b9e8b78de298d git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Satya-Tangirala/add-support-for-di= rect-I-O-with-fscrypt-using-blk-crypto/20210605-051023 git checkout eea1225f680da16dce01bfb2914b9e8b78de298d # save the attached .config to linux build tree make W=3D1 ARCH=3Dum SUBARCH=3Dx86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): In file included from include/linux/kernel.h:14, from include/asm-generic/bug.h:20, from ./arch/um/include/generated/asm/bug.h:1, from include/linux/bug.h:5, from include/linux/mmdebug.h:5, from include/linux/mm.h:9, from block/bio.c:5: block/bio.c: In function 'bio_iov_iter_get_pages': >> block/bio.c:1131:10: error: implicit declaration of function 'bio_requir= ed_sector_alignment' [-Werror=3Dimplicit-function-declaration] 1131 | bio_required_sector_alignment(bio)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/math.h:14:46: note: in definition of macro '__round_mask' 14 | #define __round_mask(x, y) ((__typeof__(x))((y)-1)) | ^ block/bio.c:1130:20: note: in expansion of macro 'round_down' 1130 | aligned_sectors =3D round_down(bio_sectors(bio), | ^~~~~~~~~~ cc1: some warnings being treated as errors vim +/bio_required_sector_alignment +1131 block/bio.c 1083 = 1084 /** 1085 * bio_iov_iter_get_pages - add user or kernel pages to a bio 1086 * @bio: bio to add pages to 1087 * @iter: iov iterator describing the region to be added 1088 * 1089 * This takes either an iterator pointing to user memory, or one poi= nting to 1090 * kernel pages (BVEC iterator). If we're adding user pages, we pin = them and 1091 * map them into the kernel. On IO completion, the caller should put= those 1092 * pages. For bvec based iterators bio_iov_iter_get_pages() uses the= provided 1093 * bvecs rather than copying them. Hence anyone issuing kiocb based = IO needs 1094 * to ensure the bvecs and pages stay referenced until the submitted= I/O is 1095 * completed by a call to ->ki_complete() or returns with an error o= ther than 1096 * -EIOCBQUEUED. The caller needs to check if the bio is flagged BIO= _NO_PAGE_REF 1097 * on IO completion. If it isn't, then pages should be released. 1098 * 1099 * The function tries, but does not guarantee, to pin as many pages = as 1100 * fit into the bio, or are requested in @iter, whatever is smaller.= If 1101 * MM encounters an error pinning the requested pages, it stops. Err= or 1102 * is returned only if 0 pages could be pinned. It also ensures that= the number 1103 * of sectors added to the bio is aligned to bio_required_sector_ali= gnment(). 1104 * 1105 * It's intended for direct IO, so doesn't do PSI tracking, the call= er is 1106 * responsible for setting BIO_WORKINGSET if necessary. 1107 */ 1108 int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter) 1109 { 1110 int ret =3D 0; 1111 unsigned int aligned_sectors; 1112 = 1113 if (iov_iter_is_bvec(iter)) { 1114 if (bio_op(bio) =3D=3D REQ_OP_ZONE_APPEND) 1115 return bio_iov_bvec_set_append(bio, iter); 1116 return bio_iov_bvec_set(bio, iter); 1117 } 1118 = 1119 do { 1120 if (bio_op(bio) =3D=3D REQ_OP_ZONE_APPEND) 1121 ret =3D __bio_iov_append_get_pages(bio, iter); 1122 else 1123 ret =3D __bio_iov_iter_get_pages(bio, iter); 1124 } while (!ret && iov_iter_count(iter) && !bio_full(bio, 0)); 1125 = 1126 /* 1127 * Ensure that number of sectors in bio is aligned to 1128 * bio_required_sector_align() 1129 */ 1130 aligned_sectors =3D round_down(bio_sectors(bio), > 1131 bio_required_sector_alignment(bio)); 1132 iov_iter_revert(iter, (bio_sectors(bio) - aligned_sectors) << SECTO= R_SHIFT); 1133 bio_truncate(bio, aligned_sectors << SECTOR_SHIFT); 1134 = 1135 /* don't account direct I/O as memory stall */ 1136 bio_clear_flag(bio, BIO_WORKINGSET); 1137 return bio->bi_vcnt ? 0 : ret; 1138 } 1139 EXPORT_SYMBOL_GPL(bio_iov_iter_get_pages); 1140 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============1979472399221326527== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 IXYA+s2BZcR8C7SeAC3HOWkD/h+VKqjSB4YAAA== --===============1979472399221326527==--