From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750945AbdAOHSI (ORCPT ); Sun, 15 Jan 2017 02:18:08 -0500 Received: from mail-bl2nam02on0064.outbound.protection.outlook.com ([104.47.38.64]:48688 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750757AbdAOHSG (ORCPT ); Sun, 15 Jan 2017 02:18:06 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; Date: Sun, 15 Jan 2017 12:47:26 +0530 From: Yury Norov To: Jaewon Kim CC: , , , , , , , , , , Subject: Re: [PATCH] lib: bitmap: introduce bitmap_find_next_zero_area_and_size Message-ID: <20170115071726.GB6474@yury-N73SV> References: <1482725891-10866-1-git-send-email-jaewon31.kim@samsung.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <1482725891-10866-1-git-send-email-jaewon31.kim@samsung.com> User-Agent: Mutt/1.5.24 (2015-08-30) X-Originating-IP: [106.66.255.154] X-ClientProxiedBy: AM4PR02CA0009.eurprd02.prod.outlook.com (10.165.239.147) To BN4PR07MB2242.namprd07.prod.outlook.com (10.164.63.148) X-MS-Office365-Filtering-Correlation-Id: 05f65b62-a2e4-41a0-b48a-08d43d16a4e6 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BN4PR07MB2242; X-Microsoft-Exchange-Diagnostics: 1;BN4PR07MB2242;3:pFX9V8RnckhWRsDXDnM0RI4PTe5qVdX8qQsdK3zkWNZuZ1M9g17/+7RNOAWQqDO+sPRoOXltvE7ye01XJf6yPvlHzBH0gxvhLTVD10LkdGQF43OMHV9ax1WzXnLATVtsFmoU94SmXf5jUIy4aCG6FuHS9peVSGBWOVqXR7n2N5ipuCFjCfYjZU1EKbLelElphLn0OeM5Bccvvjx0aFM2oHAVTbEbq47XRNTFznfpqkcqL56nIvRsMOP3VzPOUgNlNG10YlE1jvTSHoYTm6poIQ== X-Microsoft-Exchange-Diagnostics: 1;BN4PR07MB2242;25:EU4JsLbOdOOOOqmz2vkmqMB5f0nqdDPRGT9zHWSN7VDtJA6IEuFqwQ8F80U7oJrbBDtkxAN5NUnIH+fZpN+NShfAAj7gc/oPyRHebvcgQeo829oP3O8y3uDCDIGFdSYFwQBlQFXt+S5dDeH2YUjFhTfi0vYhf5hSmVWRqD2UgLRDl87liutoOi1JBMfwzQA8bGhtnUeLQLwvkAIu2Un83l1XjOuUBC6bngJmvjTUpJXeDc5tRM6OEejxSDR9b6WphkJL7Pf/GuJqsYq9+x99Lx8BWbVS3wCuQGQgQrlQktlRM1KedosYoa/l0ctF786kq5lply9WFxeAAEfiRqXIHDGjmhoSOXVX0IbRL4/yTUhdzGb2E0ltP/dL47iAsPOaTKyqsWwlKrA5SCamJLWxYr8tfGFPvZt8haq4+pCMOyxke2RjSEmseOU+TsL4dHwHiXV62Z3LV1ayin0es8IzDv3URuNGYVv/s818EIm0ZvcnrAe2Tzhor6jEEEPIfmKKzTqdmTLlaH4jA2cEzTsFZEfmilHKDgqmJ3JbHUEiViY1KqHxUtnVA/zaRHo+w+gNJLtbpDPFmDNkHopceDmcqqlFgwKHOsqWqn1ftNAQ8KS47h1OsHBtEkGBJE90v+sijKMlTtakGI7J8pa2edXrgGiIcTVT3LLqY6TGHnF6DfxWn0uIruasS29jssCIc2JR+Yg4ihUw15pwr4YcF5q+DIDFIUZOpxM2wRSMUU6wWteKvJvklOWdmvP/iSkzarWDDVLDMeogDJ0buWO+ywVK4OdQbbdiXNWwcPWgTlPEEiK4PIvidQKp0ccS16RlDYQ0 X-Microsoft-Exchange-Diagnostics: 1;BN4PR07MB2242;31:eijTAIYbf/xdy3hEg5TRZv882MWa6WjtSJHdUqdCxcC3Q/c6c67En2RBflOMUQfC+Vt6kX0WubaaD8ubhbo+0MwZmn2SLkAESPYFIYN8G3B9sZ+ucvIhTzabM6DlbY9fOt8E5Dr32Z7n4jitv8Ljd0crFsPD+U6PEPK6vhGNyyPx2E4ArP+zunfaD/cPcEdqLeB2f5rwz0TR0gud9+aLjOlOOqQ8zOEDhug2neWU1wDvAfrx7P655mSGnDt4OWfUjfeBm4JpQ6EqWlB9x5Zyqg==;20:P28ks+ZcKgCFVddLufpmripyzj9sq/ZJlNnB1d3UHm8dXuSVjDTJjoADP75a1F2uCVgsKMj7s9cIVbxYZygPvR8P+x+Iaici/vLP98NWzwnUcS3xBobyzVEUCuVfaSO6OS5Z/mea1KVZP41cHEuTYPVWtGGnijhNSteV+RnkAsCkkNhd2x83HBtuYMn8DKInwGJs9WDCijIfTiEn8K26v7SUT6Pbm/yxsnmSLxPbXY+vagruXryPZt68/+ByN+1O6JWoosKhI3r7yFUST7MFczr1n8Y510VpePFbmX15vT2GN9twRV3lCkUzCfu3OiBlfCDSQZvX1YGvDhCs+S1lY5K9dVFCHnKkdYeOpw62IFz5DJdfN7VbCuCKunvYn40Z42kDDglvh0gGmp1n3SVK/LTRdEqhh00BetHi7KPHuU/wQiBlaKtXHAxaPhENJRiCKMsKsemFQtK95Z8wXX0vBOkJTCaudbG0SscDC1Bedf7aQzCZiQY0ibq+IrkD+hwkDLfJVsFNmYUy8RUK4tYfVj26zzWNApsMxAr0KnhRMRSfSFaSsCZM+BCEyGYXAeF6ZTNrJE/7VhEx556B0O4xHqwI6HCKSQt0uVgpgl3u1zE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(7411616537696); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041248)(20161123555025)(20161123560025)(20161123564025)(20161123562025)(6072148);SRVR:BN4PR07MB2242;BCL:0;PCL:0;RULEID:;SRVR:BN4PR07MB2242; X-Microsoft-Exchange-Diagnostics: 1;BN4PR07MB2242;4:Qv4PEo1fdSUuruENQ40eJnBBIJhDgNmT9S4p7SvRBuEfNrXMjEItz6B4/8Tcrz+HITCBtmA6XdYEGBIb6Rf+iW+CcN9dLmca0Gns1hZOBwsCC4/pmRguD0LLq9Qq/An+2ie/2V5gURYhLh1Damd8AZbuUgjbKJv60TwHjtfJdEP5Fl0HdZu3gGjZd6CCRKTqj1mnUNJa1/RgneeWu77AD5V96Z2fVLKTI/AmDDSH7hrhmUzMKz9PWo9uiufYFk1drhu4baBSwuGYJBHrN+9rUpYz3R9B6dM60U8XxRIuz5w2z/y0ezOeMIaQBgBp7d22u6rxsbCzH0li1SA260GJj8DhEYm78uQhqdXC29xkai1s5crk6/PodiBBdLUQq0vYjKrqAcZijh+nHOmQOHfLU0Gwi17Q04Bm3xCcZue7okRrxZ2I6okH2P3PljBlWTvJjxhAEZbE5/71vf5GRTviRsTNvvdYY9cme9h1OHlUBsKDJyRZLwjRyl1J1uLgRiBTy9/Aaa2hUFBKTbrt3VaDhEukTFnZeuOf90mv4MUT8yDwCKzPnAYKbUJBnTAXRKXodkQQcVRUXXXDmF/TAm1oUUQAcHxa5Qi33v+6CEjWcJls0D9yTl8QSQp4DxdV2XMS X-Forefront-PRVS: 0188D66E61 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(39450400003)(189002)(24454002)(199003)(2906002)(8676002)(46406003)(4326007)(81166006)(81156014)(66066001)(92566002)(6116002)(3846002)(101416001)(54356999)(6486002)(76176999)(50986999)(23726003)(97756001)(47776003)(5009440100003)(7736002)(1076002)(6496003)(83506001)(54906002)(50466002)(25786008)(189998001)(106356001)(42186005)(105586002)(9686003)(39060400001)(38730400001)(305945005)(229853002)(76506005)(5660300001)(97736004)(33716001)(6666003)(33656002)(6916009)(4001350100001)(7416002)(27001)(2950100002)(68736007)(110136003)(18370500001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN4PR07MB2242;H:localhost;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN4PR07MB2242;23:g7LepkueO07U1vUcjBh4afq8ZPMcnSlDtgkhkxzCV?= =?us-ascii?Q?5QX1mTF92b3RgCHfPpGNtb3yhPT/MTH0lQep7+kqj2AFHX3gpdkhGO1ES+e8?= =?us-ascii?Q?PdZf96RhwWbUrEyQctniIX/2HzxSUzzfTHSXparmR4swYmrIkda1hX9dRVBH?= =?us-ascii?Q?0Uju9kRGQw3l/kNYrNT1hKH36Heh9Bj+DzLuG5xEeJ/oiaHEwjQz7v09Sg/L?= =?us-ascii?Q?P8PV9Xuc++rb/QyZ1aFSeep1xOYjQpSDKDx4TGNCq6GUU5y78VSgI2/ckt0b?= =?us-ascii?Q?rGSHbIkWNKWBkbp1un4maE9fUWD91PG6w4qtnEdOPCjMYevIMhyfCPue3WZn?= =?us-ascii?Q?/BfP9WqrEf+1BAyBZCNDbJPnj7OyrHe8FikikfDXUF3fK9mk7yd7uIr6cTpQ?= =?us-ascii?Q?6w63YLedLV/q50DxLwxrrgdREMDXijBXObyQRGgqOox24L7+cC4ZFw7LkOet?= =?us-ascii?Q?bch/XKvhOyzPrlTFZdf9CDFLC963JMyo4csdnQVVaORxU8vtHxbyjU2+JNol?= =?us-ascii?Q?h8kBj2L/OhKTcy6rEF+3fFnHDpb6EuZd2cy9aMMZRaPmzhkEfv4zcBjQKCJt?= =?us-ascii?Q?mu2vL54QVkUi4Qi/TOS9szI89fqlvuEn33DWlAAcvmpJ3lt09emCrZbC3KCj?= =?us-ascii?Q?zSfXyKgMdZk9Vgs8mBcDOlpFeD+3+VSjpXs7qH4HUscxRgWyi8z3Ux3RC70S?= =?us-ascii?Q?q2my/nEOXkhJTA2p+xH4nyyQDJpabLgen52m8tC5tcJqnCybC3MBd8FXHb8f?= =?us-ascii?Q?ZwffSssZ6F4Foh7JYruKU1L+eF9Ef/jkOuJoNIL69XAE0N+j9apaxkOVkxOc?= =?us-ascii?Q?ufXRn68GTFG+0pz/hDUKZgy78ktUeZet55w7KYn0P87MXLkzCA3WxGm825un?= =?us-ascii?Q?t2/hcC+0DaH2J/MqDfBqsFl3Gpt+AjNKX3P/HabHuUoLEgfduODZLOtcxnx2?= =?us-ascii?Q?X03zX6oiQRWu/BrZCF71/Khr1++cR8uwn1g3GDWVuZIf0A8ceo6pIb2TQhkQ?= =?us-ascii?Q?3l92HG6hoZzxYXyYIloDkiNlJvux8uxBVelrfjDfkpbMioIx8H5Jd5XPU9zV?= =?us-ascii?Q?qy1zWFhewQcN/tGF1VpO4sATbtbq1YeXJbrtZqA2wJcfyG+kvephN0gJQZi6?= =?us-ascii?Q?wylyxj+q8tVKc7/LPSXjNk0yedVPDvUlGzkvRRR7Qv4AFR6+VOjJ3+WAvHED?= =?us-ascii?Q?n3OXdSHvu5PZOhCPRkQeZc+wH0Ufky5q3Q7xkqY1THd9zAr57VpjPl4a+XDH?= =?us-ascii?Q?R81NbhQBhgLwh5/EepflObVabDK5BER/CSOOxl4+4jkvxHrP8Zm0LsviUaCp?= =?us-ascii?Q?xnUpzd96CgaEPRQb9Mg20kYjcXXo0WeBOnERLSgeFuQzeu0JAVaNmQtziVfa?= =?us-ascii?Q?bQdZg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN4PR07MB2242;6:xZZPFzrDzzrLX3hTotOw44PZ58ZBQ4114eemgETFgmFHgqDzZGM+bNyAXtTrZnxF1j0jseHVN4WhQiFZFbfXFG2uQxIEY7wBc4vE5mLG777FEA3h6oQSY3o9Yo0i/1Zhrz9hjCBirajvQDS9WsJF75RZZ8hUavhWa9pwxMOy9I5lf2HiYwL8ksSlXDrpTU/VUBX6t1tSaYdrGleJW6TWDlWz4ISTImo8B+4ZR4l3FxlxDwXz0eRURc2fWTKjGWqvge3DnyeEGxvtBeRr/dFml6bNbyX8Qt1toAJRIUBjHnC94Wflz/vxG6Mhu3Gz9lEZcMyGC9pONCU6P/cG/MnZn6+dqusW2MjP+pOgqvxp7f61B7FqNKRzr39xrUrwZ2o5h3tG0inXFsGivr9sHbuEC3vtht5Q2Wot/n3bplOLpKs=;5:bDMNX1OAs6INsT7+b/VDJv4SSiddLJyj8DOBTkSaqrMxbgrhWCHiCna1xW5iDjinRGL2L+eH6MDxPiKwnTHaFwtURwXucW+82AvscjSbGFT7Xw7+7oEDo8oscEva+IK4OL9JM8BOmUifvIThu4kASg==;24:PjitC/ggXF+Is9zCXRS9GsZnB3KowY7Zl1Zd+/sDjVHJMkEEk1WJ4hkG3HzvjwQlw/SDwoEPOUoGKFLAC77cem95dzCw7hsUVatFKSZcjZo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN4PR07MB2242;7:5xK2GOvXbyK0zYDfD1aGQidLuYCnztXs/iyr7VQmRusuldfjOrDuB6tB57chiALbnA7Yw6bu02JppACHLQ84l7lmhYs6aAs1AtdFsj5KlcRudU9HSxQWf8EsmVxBfDk68n6xpHPNszylXr9D9P+lbb8FSVkIWJRLmXuVJejESBR8JhMJEhCH8sBr6lP41vMZTVVtRwxHe1cbgd3qt8BP4ivpaw48XYy+k/f/v8u5ldTT/rhxnyUA4qX9a2KWO3xuMFBHP3dtOkkfaxE/9ZcTE6bALw2LQCs+KPkzL4Mo0RPHOxUkUNs5zuwFENU03m0yLlKbHP0PVannYp16v/luIYi4bqjeuQqobpLTvkxTFsuMdjt7t7eW02jNhU30jxPx0SA9dK5ZRLWTdz1DgaL+ALYg2mVllseN0jbTMNUsO0nqUMIBXEJckaj6K1UhrrdUHcddDHyZQi3jWcWW3UweUw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2017 07:18:02.1182 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN4PR07MB2242 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jaewon, with all comments above, some of my concerns. On Mon, Dec 26, 2016 at 01:18:11PM +0900, Jaewon Kim wrote: > There was no bitmap API which returns both next zero index and size of zeros > from that index. Yes, there is. Most probably because this function is not needed. Typical usecase is looking for the area of N free bits, were caller knows N, and doesn't care of free areas smaller than N. There is bitmap_find_next_zero_area() for exactly that. > This is helpful to look fragmentation. This is an test code to look size of zeros. > Test result is '10+9+994=>1013 found of total: 1024' > > unsigned long search_idx, found_idx, nr_found_tot; > unsigned long bitmap_max; > unsigned int nr_found; > unsigned long *bitmap; > > search_idx = nr_found_tot = 0; > bitmap_max = 1024; > bitmap = kzalloc(BITS_TO_LONGS(bitmap_max) * sizeof(long), > GFP_KERNEL); > > /* test bitmap_set offset, count */ > bitmap_set(bitmap, 10, 1); > bitmap_set(bitmap, 20, 10); > > for (;;) { > found_idx = bitmap_find_next_zero_area_and_size(bitmap, > bitmap_max, search_idx, &nr_found); > if (found_idx >= bitmap_max) > break; > if (nr_found_tot == 0) > printk("%u", nr_found); > else > printk("+%u", nr_found); > nr_found_tot += nr_found; > search_idx = found_idx + nr_found; > } > printk("=>%lu found of total: %lu\n", nr_found_tot, bitmap_max); > > Signed-off-by: Jaewon Kim This usecase is problematic in real world. Consider 1-byte bitmap '01010101'. To store fragmentation information for further analysis, you have to allocate 4 pairs of address and size. On 64-bit machine it's 64 bytes of additional memory. Brief grepping of kernel sources shows that no one does it. Correct me if I missed something. If you still think this API is useful, you'd walk over kernel and find bins of code that will become better with your function, and send the patch that adds the use of your function there. Probable candidates for search are bitmap_find_next_zero_area() and find_next_bit() functions. If the only suitable place for new function is your example below, I think it's better not to introduce new API and reconsider your implementation instead. Yury.