From patchwork Sat Jun 8 02:10:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Hubbard X-Patchwork-Id: 13690819 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06E9BC27C5F for ; Sat, 8 Jun 2024 02:10:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 83FBD6B0096; Fri, 7 Jun 2024 22:10:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7F1346B0098; Fri, 7 Jun 2024 22:10:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5F4486B009A; Fri, 7 Jun 2024 22:10:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 3B6196B0096 for ; Fri, 7 Jun 2024 22:10:52 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id F203F16042B for ; Sat, 8 Jun 2024 02:10:51 +0000 (UTC) X-FDA: 82206093102.29.E69CB77 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2080.outbound.protection.outlook.com [40.107.212.80]) by imf29.hostedemail.com (Postfix) with ESMTP id 2B150120007 for ; Sat, 8 Jun 2024 02:10:47 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=eKwGslnf; spf=pass (imf29.hostedemail.com: domain of jhubbard@nvidia.com designates 40.107.212.80 as permitted sender) smtp.mailfrom=jhubbard@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1717812648; a=rsa-sha256; cv=pass; b=HpO4uKPqhQDnlUnQzT5Nu2VATPF5tunl4EEZpN/53P0Yg6za1tN1ePsIANvYjPnx+iz9na 7EmAdPhOfBHrFWlfGfrZfadnq4BX4NIAoy39ytc0YjIl2TCy1G+X1txAN8BrDUpKtDdtSW 3GQvgUNCRLc/hYY0Ri/r2MaLCaI2CU4= ARC-Authentication-Results: i=2; imf29.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=eKwGslnf; spf=pass (imf29.hostedemail.com: domain of jhubbard@nvidia.com designates 40.107.212.80 as permitted sender) smtp.mailfrom=jhubbard@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717812648; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=O+/RmZSS/R2hOjv+bgtoV6Q8VTZwTejdmpBy5zRCcQc=; b=k/hjq8N0NMuyDf0NG8v9xmsWRDkd93wJva/1fMYPtuh3ifxzOu9xIiydHqGBNFapgoZ7Ff 0Dor6XyJXkD9bSPXFR1stdsw8+YpTDnLDNdANtGBS9H8sPM8NgdY3UYc7eWB6eMojOYl3/ 55Z0jsdxFPQy1SDk9jcFyjcEt1R+apc= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eJhIuFNHbGCOqPudKgGrCkwBrMZeeKd+GtCzBF95ssHy3VRGQqgvKd8qig2UBCqtoIRhemgY633j5GTs7jkrn315bqm4x9jez6RSAiUcN8D5sD8bN5MMjv2dsjS/3IfUQbv+O9aQX10s6BstF28fyyui+ooR6WCERjHJI2yZMU4lx8GJI8oaoQ7+VdxnTvZnfH+EMeKdkDhNYURjXtuZDmOPXvG0EDqyM5wofA9qLSgL0XpZoss5XsWUs4DgJMfX0KjNbg0Jj0xbHngQqv6cPjPz6mlTQPWYP/iDAe/1hKihSs4Vq4rTYngupEzZ1eEvG+3LLDmHaE1+ErQi4/cxiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=O+/RmZSS/R2hOjv+bgtoV6Q8VTZwTejdmpBy5zRCcQc=; b=Eap0OewWm+Am4w/hEDjwUPQoskuzAtLdJIJ4GckAKL3gOSnnyCo5VARCPCc6uZ0S9jYMDN3p2efDd541XXbUzdBqsLar0vgG2MElnNZbG3px9wx9Hf5/Q8YUNLbB28VJDDZUNGbLXwED++snBYplDaGkeEMEG7zfSeWOg9dPSARPwAThs/+cauj3JbpVlWuWnAbRooqzmO+01hK22nE2XtK5YhOJSLS275dRiiLcVPMnkxUvdL3YFdLHyYciL404+r4QwLa6egY4j7O1vP5bRlT7D/A3HtpDth0+OTDiT0wxgRMOZmnJ11EBiS/5Bx5EcJHGMbyqx5W+B6qgsoj43A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O+/RmZSS/R2hOjv+bgtoV6Q8VTZwTejdmpBy5zRCcQc=; b=eKwGslnfuv4KjT2ptRzqaKo30eWLRUhpaSJxYaZJZqF1fbd7qR0ZUmOvLyOC2IGiU+3DvQkD6+QKp0TRcLmS3WviCk5sxg9n5EgoPSm0I+Y8ibxxj53QXVazC0gUvmfXDA/5AF+lHE/4okB8Hax/dI3yxODaebxK3AIRCVRG7QGh8SzjpvxUd8zM+TQXxplUCpcZx/+ETvgu+U66LQ41zHhArbKD0m1jifyuN6V8MxTZF8vJggT6t+1M3C4EJ4J9tR2osctQTPdAgQvsaWphqBSDrvNOwRe5uagaUYS6Z+O7aj0AViuKAwTn0yh96B2xl5AVY9Fgg6J84mCLveq+NA== Received: from BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) by BY5PR12MB4196.namprd12.prod.outlook.com (2603:10b6:a03:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.36; Sat, 8 Jun 2024 02:10:26 +0000 Received: from BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::2cf4:5198:354a:cd07]) by BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::2cf4:5198:354a:cd07%4]) with mapi id 15.20.7633.036; Sat, 8 Jun 2024 02:10:26 +0000 From: John Hubbard To: Andrew Morton , Jeff Xu , Shuah Khan Cc: Andrei Vagin , Axel Rasmussen , Christian Brauner , David Hildenbrand , Kees Cook , Kent Overstreet , "Liam R . Howlett" , Muhammad Usama Anjum , Peter Xu , Rich Felker , linux-mm@kvack.org, linux-kselftest@vger.kernel.org, LKML , John Hubbard Subject: [PATCH 2/5] selftests/mm: fix vm_util.c build failures: add snapshot of fs.h Date: Fri, 7 Jun 2024 19:10:20 -0700 Message-ID: <20240608021023.176027-3-jhubbard@nvidia.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240608021023.176027-1-jhubbard@nvidia.com> References: <20240608021023.176027-1-jhubbard@nvidia.com> X-NVConfidentiality: public X-ClientProxiedBy: SJ0PR05CA0003.namprd05.prod.outlook.com (2603:10b6:a03:33b::8) To BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR12MB4130:EE_|BY5PR12MB4196:EE_ X-MS-Office365-Filtering-Correlation-Id: 73311ef6-9ef7-4c6b-2b0c-08dc876029a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|1800799015|7416005|376005|366007; X-Microsoft-Antispam-Message-Info: Y/aBuxXRv6UFhbsmkbeWlgqktY4+2wV21DcILzuKu4u3t7UoNrGMjYLfxQTVtSwNYVzTw5ECHUyyDGAQyUKePiPwDlQFLtvDWFJ1c/eYPQekmWPhz9cgEjJgUaOKfg3B+HgRH7Sy6r1DxR7EeTJfUF2Uf9cZ1Xqd1qGkd+W4ZFSAtJD8W8ZwyhDdh02cefUwiscm4YPd4lVU2GuVjF7xP1xI5G9G7Nc5lgx+w05CBb+6Yq641dmUWySqU1Ksmac+0cQydCwHEdtv9Tqcoxm1k4wvwTtVElE4Ep7dDE5j5enzzm3tfGTD3fFc7PGePKdnFPXtBUjxr3jHGFDUaK2SOwPYRfleEyw0650vrC2RlghSJNzISQc43m2OqU3T40FDs1GhZTCFUwWF/G4wCQ0KSt0SKKLDtey/+i99+icImfh5sWuE+uZhp1xvPfiUXhWP2m2McLKXB/uJm5ueLZeJ/owuTWjaPpGO1ccIvAj/dsIyOeqHCkSMmHvCwhO7Fhm6JZI0qL63YU27qABlEgyTPGtQYmIyDvonnQvnGPFmgrBnxDmg2nfEV1d37v0k01toIxvbIs1zcsR8oqgQNCbs77Uqah97RXGLDovvjMi3gOM1PuvxekeZLAUba3o2z35G8NvJZJiMMd3i9nnJ46u03lZ1hf+BUP1tt84+6IBKuUAteDgCRz6UUb4vPAjC2tSLbs5UtZmQEcsqqNLV2ySoxvT/SWIwJPXgdvbEqzpxEDagsjvIWHgfvg0HwOhnAfOGC4e0/zceIoPb+Ex6cTWVvF7OHhwMu8gkOLJV/eDVyH7673f6Yh4OfQrDh7eCioag8D2xpycUhz5+At+1Tn8OynB+S1whQfz5eAkz3qNvpXC4TnCWFEavuhOhLGbesTJoIymgHbdyFVIlShGI1pgQgpQic/pm1SgnMohMtrnlLR8SE9SgNZYPBVtpRbYcCq3qjX1GsJ/BfNro7BCLNqZPMBVJHISg6TqWPQEmojtrD7geiZIBw0yOp/2QWDEW8QZB6QBome965VKGTjr94E+qWkmtXhEhh8PzUpnswCq1gofo8cS6JbLNIgze0siA5+hBCwgmYGTtr96ReuDgPEFMyz0+fsvzomIEwJpe+b7H0phZbzrjNfuJ0zLGoYECjWzR1psutc/gK0fN5SUMnTy7NaFd9cTokOW3RhSrDK3QEwrClectDOsT6ABqhLleBp7mwNtg5HEcO9JLvxqRlUEfUgN5xN1THmZ8bfGCiy7JRV3AfFcK5P/iXgWIYjMvB2sSp9+BEyn+2HQBfY6lhXmhjLvDyfHsL+s+9ZitwtVkmS+wKWgd2aZ/YlPLppSpbulx X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB4130.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(7416005)(376005)(366007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XH5m2F4v59fh0mTpYd0zBGL9l27uf8WMuK8LnswfIvRbhM2ITBobpwMsKHUjRixgShJpwAApNkcCysgLayvZs9nzSSgjoHLJWwALalKf8sEbnmzQ6cCAJdHJ4FAYny2RbqsKO9nKSFxr2/SR7ZDrzQw+mbUhxAZmKR+10nlSTrbUAdmDmR2C7XOg7hJJzYz/aN7YRMxq21/AbOYrIklXSjGM6mhh6yb0p5+6Tf2J/mmETxPA3M/B8gz5nH2eWIRcH+PGYOHKkrfwNJU5L6gvPkVNYSrrrEgXCsrH4hW/AtngDKLgaUFYt37obpn1EL4tfKagieMsT7adfk/PPAj7TObWTZUoKa514it55AdhhIpfk4+bonEu5VwLngyq0vHuc1Lv2EUft9kwIOkKUzXDZqN7gPDNmXRdRj5S1qqLdXHeWfapfr6K+pg4mhBeqXW8xAI1ubCoC3RNeNYia5ANk4lUxzQNj5QUHwgZOq9bjXtRVOmpmi+ioPt8X2c76/ieNGeQycX3XgF7WbPHPFckUNZhZIyCLEMjolWzplREQOPTl86sxzPH1mvfjI8yj5VEOBbmehm5e0grZ+a0hem6sKSMrJENWLgMCS8Y5oNHWYDVqHl+S9iAOCdpKSGoRWAq1u7IMLxIfmGQrCB5qNA1xjZ+zcYJUojNiPQsyWwc32DQZXdBMyrkVkBz8Unkz0RMUU/kgP2YMFHkT2Z16XgpZR08/3eNbxgbyXbbEIZNFagyQVVqKbYsxQWmei9KRA1Gcluhg/42nuiQWqDcAq4lF/AcXv9MorzE//DHFwk5WzDz04WJscd+77vPZhZz/guvEyhwP0qZMGhf06WX7KWRjIvi6h07gakX5bgI93c7N9DysdTB6puRYjZBlaP/xl4vJGiW+6kkxjDVzVuzoYgJJrNazLvlU4KWEwrLmUvso+JVF2irK0RVv0H9jasG+97wRJI79cL0zqWAjKjcoOn1MIxXP1j4WJCIkFzTFaRmHhS1wdqB25tLGJwjZl2Yitdr2cjz/W7PjujS2Bn7ghYveiod6GNgI/wrHo0cccazM22V6v/bJUzJk5FrkMBXXQEf81TXIkZ3bMsYUtKhGglIEa78gbQNOlkv9RX6HeULK+zmEJ1aij1JKINPXctK/DxeO+B1dPG9PmBKznNqNmOAR7zCmYP4GT7GRT70oyM+KEbL0/fH4+zD9UxXRwES5BvRCxufALXB7ci2FhUzZEiBFa67h/7Id+Gw9XpcDuNgq5Gu4/DW/owOrT/vyubxicX5hSrs3iVPN/TtbZz2lZH4AHtCEPsdaQwp+vro1Ar/MJOYSFhrvznQLsV7znD1uYXowv3oNh2j9dy7IvOtvi79FO+KRPnLYILPTc4HWeTuvNI6SQLb4uK+l3LJXJvYQfxSJry1wVkYoh9/nc8g8QxErvCBMEFlHfqz8LT7NtmQorT+0b5EhTTTY9WweqlIjJqnogHa487V7dIx+M7RDu9dfG7RBP3S5oOwITf7kDMhgxURy/NOhR8BItmepXM7oHUup/FvKNWJ+FehrX1gg54JkdwCPxdnbpC0W1R6h79sqUahmkX2ADvei5UFQDXtGWZW X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 73311ef6-9ef7-4c6b-2b0c-08dc876029a0 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4130.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jun 2024 02:10:26.5487 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: sRF33lmBp2uWrvxaOXOHTIX02O1BsVinw84o2knOfWYwmmxVp5c/xwcOIe6ilErkQD/0yslST9l9FBlwL6IoeA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4196 X-Rspamd-Queue-Id: 2B150120007 X-Rspam-User: X-Rspamd-Server: rspam12 X-Stat-Signature: yttx4iohzu88x7ooxy69tmmswripa8qh X-HE-Tag: 1717812647-585217 X-HE-Meta: U2FsdGVkX18Nrqsd5STkINVwJIZpxD+ziWU30xNHUMlE5L2Sd4FwmOlK6NOICfDCorHaVsp0WxLxNKTFIhHqnOVGZfACFCjz4lwUoNdV6bscUs3nX8JDfNr0w5TQOQxiznG6gud50flUhce8PMNei//lc6GNmQ+ZeObMGp2UYipnF/bOIr8h6ln+BzHnOSS+PzWTgtNMnBecXF7eb3R1OLvD8m0fVWPpJp0JE6eGjMtleqCw6LXhyKLESTlem40Slknp+Z0Z8sDklOBmSE2i9HX8xML/QBzyU0TAMr1h/ekMBaJkOH84FwmPjbsy9t6FlLYAnic1cR8WqfO2yh678UbrJZUBlCGL+WH01tkhUtg0aYUwTCj9f2N7Ybs+1nMrfA75wu7N5TN8HmYd0uyWHCHK14/JuGxv3zMS6O/sGJKJK0jHfQNKcZBDCmdFTKJLlcI2bEAoy7QZzH0iBTIq6E7naILJm/odQfU1uWGNn3iIUJzajUH/1WUpwJpfo+qfqkBvhHU5FpH3DDMIpskbOmROYP/xUxKhwZX3XzAglfuwpr9j8zugukNkcM8T7FjrsKq/QrasE438A5xg3/xg0UEN5MkQ02AjAUOHaIEWvnZSMA04sug0q/JRB60xVJAYg067njUnw6aOjMtOwM6eeWSV0fucBxWNfCTeg4yJeJMVoe83FVwyOGN5/er+uyN/p8h/ndlDOIL6eXcPJUxksLvnSJAK6F98bujw1vBLkFVFKBHRY0t3TPAh0V4XEzB4xNOvxODcSe/s6DsiMh+5tM08cP5y4cyrzwdvV7aL3iPPlGm6xJy1Cgk7dkzv4WN7B79eevhnhYhDWdCveXTXI9xeXgtW7freRpBTmBzKCI8vEWuSR/jA/9UMFKOrewl71I0YQ33Lt2dMgKVChDb2xRc84sUTJHWHgql3dbzcc4pVCVtt09+9hePzUNzcgC5hAtgn7TV4bxR2qIQj7iX GG/88Ob8 qpI4gFVaQUef4/52XAicNLDWZjUwJCAecI3hl2YJd5EPjwFo5Plo8xAvhSeT6HHp80nf7TnEQkz0hm2yamK/krwlOKKQW4psHbWWnvxqpbuWvyMp4PQ2rLpRNtrBrkTZiRzROnh/t0AAt6ZjlCGgFNzVs7Ce7kuvH6GODkVT3qc9meF7Y312TKD/wTpQFRg5M2YTkXm+XCDWTvBP6nm9hG6pq6jhKRbs5osNE5RgZneD5f8TLE5x1Uwq9y6pQPVZmIB+KUcratjeJESf18V6pIGeA/+X87qhW7yvvOl0xmqVLjwQIeScZck0i6ZzJK93+d2SB2hgbZeLIfEQ= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Ubuntu 23.04, on a clean git tree, the selftests/mm build fails due 10 or 20 missing items, all of which are found in fs.h, which is created via "make headers". However, as per [1], the idea is to stop requiring "make headers", and instead, take a snapshot of the files and check them in. Here are a few of the build errors: vm_util.c:34:21: error: variable has incomplete type 'struct pm_scan_arg' struct pm_scan_arg arg; ... vm_util.c:45:28: error: use of undeclared identifier 'PAGE_IS_WPALLOWED' ... vm_util.c:55:21: error: variable has incomplete type 'struct page_region' ... vm_util.c:105:20: error: use of undeclared identifier 'PAGE_IS_SOFT_DIRTY' To fix this, add fs.h, taken from a snapshot of ./usr/include/linux/fs.h after running "make headers". [1] commit e076eaca5906 ("selftests: break the dependency upon local header files") Signed-off-by: John Hubbard --- tools/include/uapi/linux/fs.h | 392 ++++++++++++++++++++++++++++++++++ 1 file changed, 392 insertions(+) create mode 100644 tools/include/uapi/linux/fs.h diff --git a/tools/include/uapi/linux/fs.h b/tools/include/uapi/linux/fs.h new file mode 100644 index 000000000000..ca9d754bae04 --- /dev/null +++ b/tools/include/uapi/linux/fs.h @@ -0,0 +1,392 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +#ifndef _LINUX_FS_H +#define _LINUX_FS_H + +/* + * This file has definitions for some important file table structures + * and constants and structures used by various generic file system + * ioctl's. Please do not make any changes in this file before + * sending patches for review to linux-fsdevel@vger.kernel.org and + * linux-api@vger.kernel.org. + */ + +#include +#include +#include +#include + +/* Use of MS_* flags within the kernel is restricted to core mount(2) code. */ +#include + +/* + * It's silly to have NR_OPEN bigger than NR_FILE, but you can change + * the file limit at runtime and only root can increase the per-process + * nr_file rlimit, so it's safe to set up a ridiculously high absolute + * upper limit on files-per-process. + * + * Some programs (notably those using select()) may have to be + * recompiled to take full advantage of the new limits.. + */ + +/* Fixed constants first: */ +#undef NR_OPEN +#define INR_OPEN_CUR 1024 /* Initial setting for nfile rlimits */ +#define INR_OPEN_MAX 4096 /* Hard limit for nfile rlimits */ + +#define BLOCK_SIZE_BITS 10 +#define BLOCK_SIZE (1<