From patchwork Wed May 23 01:18:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kent Overstreet X-Patchwork-Id: 10421017 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A17A860327 for ; Wed, 23 May 2018 12:06:19 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9026128DDC for ; Wed, 23 May 2018 12:06:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 84B2828F2C; Wed, 23 May 2018 12:06:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from uhil19pa10.eemsg.mail.mil (uhil19pa10.eemsg.mail.mil [214.24.21.83]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7884328DDC for ; Wed, 23 May 2018 12:06:18 +0000 (UTC) Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.2]) by uhil19pa10.eemsg.mail.mil with ESMTP/TLS/AES256-SHA; 23 May 2018 12:06:17 +0000 X-IronPort-AV: E=Sophos;i="5.49,432,1520899200"; d="scan'208";a="12082845" IronPort-PHdr: =?us-ascii?q?9a23=3AaZ1wtxcdYNB4RVoa22EsJytElGMj4u6mDksu8p?= =?us-ascii?q?Mizoh2WeGdxcmyZBeN2/xhgRfzUJnB7Loc0qyK6/umATRIyK3CmUhKSIZLWR?= =?us-ascii?q?4BhJdetC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBx?= =?us-ascii?q?rwKxd+KPjrFY7OlcS30P2594HObwlSizexfb1/IA+qoQnNq8IbnZZsJqEtxx?= =?us-ascii?q?XTv3BGYf5WxWRmJVKSmxbz+MK994N9/ipTpvws6ddOXb31cKokQ7NYCi8mM3?= =?us-ascii?q?0u683wqRbDVwqP6WACXWgQjxFFHhLK7BD+Xpf2ryv6qu9w0zSUMMHqUbw5Xy?= =?us-ascii?q?mp4KlxSB/slSwJKTg3/m/KgcB0la5XvQ6tqxl5zoXJYo+aKeB+c7vdc90ES2?= =?us-ascii?q?RPXcFfWC5PAo2hd4sCDfcNMOhXoIbhqFUBswC+CBKwBO7t0DJEmmX70bEk3+?= =?us-ascii?q?knDArI3BYgH9ULsHnMqdv6KqESUfyox6fR0zXMcelW2Szh6IjSbB8uv+2MVq?= =?us-ascii?q?93fMrS10YvER/Fgk+XqYz7ITyVzP8Ns3SB7+V+S+2vl3Uqqw50oje1x8csjp?= =?us-ascii?q?PFiZ4SylDB7Ch0xps+K96gSENjfNKpH5RduzuaOodrWM8uXW5ltDggxrEboZ?= =?us-ascii?q?K2fjUGxI45yxPRZPGLaZWE7xD9WOqLPzt0mX1odbSijBio60eg0PfzVsys3V?= =?us-ascii?q?ZPqSpKj8fDu2gW1xzW9siHUvx9/lq92TqX1wDc9OVEIUcsmKrHMZEh2L8wlo?= =?us-ascii?q?cIsUjZAi/3mFn5jK+Rdkk+/Oin9//nban8qp+ZNo90jhnyMqUomsOhHeQ1Kh?= =?us-ascii?q?UCUmeU9Oim1LDv4Ff1TKtFg/EoiKXVrYjWJcEBqa64Bw9V3Jwj6xG6Dzq+y9?= =?us-ascii?q?QXg30HLFNDeBKagInlIkrBIPflDfe5n1ujjixryuvaPrzhHprNLn/DnK3nfb?= =?us-ascii?q?Zm8UFQ0gUzzddB555MELEOPOrzWlPttNzfFhI5MQu0w+D9B9Vh1oMRQ2SPD7?= =?us-ascii?q?SbMKPVt1+I4/ggI/KQZIALojb9MOIp5/n0jX82gVUdZ7Wm3YMLaHCkGfRrO0?= =?us-ascii?q?eZYXj2jdgdEmcKpQ0+TOrriF2cSjNTaXKyX78z5z4gFYKmC5vDRp23jLyGxi?= =?us-ascii?q?e7EYVcZnpaBVCUDXfoa4KEVu8CaSKTJs9hlyILVaK6Ro8vyx6hqQj6y6B9Ie?= =?us-ascii?q?rM4C0YspDj28Zp6O3Pjx0y8iZ0D8uF2WGXU250hn8IRyMx3K1nvENy1lKD0a?= =?us-ascii?q?9+g/xECNBe/O1JXRkgNZ7dzu16DNbyVhjHftiXVFasWs+mDi0pTtIt398OZF?= =?us-ascii?q?5wFMi+jh/ZxSqnGKMal7uOBJMo6K3cxGTxK9x7y3nYyKkrl0MmTddXNW26mq?= =?us-ascii?q?5/8BDeB4DTk0qDkaalaaUc3DXW+WeG1WqOvVhUUBV+UKXeR3wfYVHWrdvh7E?= =?us-ascii?q?PYU7CuEagnMhdGycOaKatFcN7pjVJbRPr4O9TReWGxm2CtBRqSwbOMdoXqcX?= =?us-ascii?q?0H3CrBEEgEjxwT/XGeOAckGyihuWPeAyJ0FV/0eUzj7ex+pGm8Tk8uwAGAd1?= =?us-ascii?q?dh2Kat+h4JmfycTOse3qgZtyg8sDh0E1O93t3MB9qGuQVhYL1WYckh71dfyW?= =?us-ascii?q?LZqwt9M4S7L6BsnF4edB93v1/12hVsDIVAlsYrrHYwwwp0M66Y1k1Ody+A15?= =?us-ascii?q?DqJrLXMnXy/Ayoa6PO1FDRytKW+rsR5/QisFXupx+pGVQ483p8ztlV1mGQ5p?= =?us-ascii?q?LQDAodSZjxSFo49wBmp7HGZSkw/4XU1XxoMamwrDDCwMkkC/E7xRa6eNdTKq?= =?us-ascii?q?SEFBX9E8cCHcihNPQqm0S1bhIDJO1S6q80MN+6d/uBwq6nJvpvnDKhjWRB74?= =?us-ascii?q?BwyUaM9yt6SuHSxZYFxOuU3gydVzfzlF2hqNz4mZhYZTEOGWqy0SzkBI9KZq?= =?us-ascii?q?1uZIoLEnmhI8m2xtV4mp7sVGVV9EW7B1MH3s+peAadb0fn0Q1Wy0sXvWStmT?= =?us-ascii?q?GkwDxsjzEpsq2f0TTUw+TlcBoHPnBERHN+glfrL4m5lMsaXFW0YAgyjhel4l?= =?us-ascii?q?z6x6dDrqRlM2bTWVtIfzTxL2x6Uau/qLyCY9VU5ZMrrypXVv+8YVaERb7huR?= =?us-ascii?q?ca1DnjH2RGzjAhaz6qoon5nwB9iG+FNHZ8tmfZecVuyhfH/tPcQ+JR0SQcRC?= =?us-ascii?q?RjlDnXHUazP8Oy/dmOjJfDtf2+V3i9WZJNfynrypmAtCSl6mFwBx2wgeyzkM?= =?us-ascii?q?X9EQcmyS/7y8VqVSLQoRbiZInkyr+3MfxhfkZ1BF/w8cx6FZ9ikoEonpEfxW?= =?us-ascii?q?AahomJ/XoAiWrzKc9U2b/6bHcWWTELwsLV4Qj81E1tNH2JwZj1VnKHwstuf9?= =?us-ascii?q?O6eH8Z2joh78BWD6eZ9LJEkjFzolqkqgLRZONwnjkDxvQz734amfsGuBI3zi?= =?us-ascii?q?WaALAdA1VXPTD2mxSP9dC+o71dZHyzfrioyEp+gdehAamHog5GXHb5foktHT?= =?us-ascii?q?Ns7splKl3By3vz5Z/4eNnLcd0crAWUnAnag+hTNp0xiuIAhTB7NmLloX0l1+?= =?us-ascii?q?k7gARg3ZGgooeINn5t87i/Ah5EMT31fNge9SvxgqZbhMqW2JqvHpp5EDURQJ?= =?us-ascii?q?ToVe6oEC4Vtfn/MQaOCiczqm+DGbfEEw+f6V1mr2nTE5ClNnGXImMWzdN+Sx?= =?us-ascii?q?mcPkNfhBoYXDIgnp42Dgqq3tDucF9l5jAN4V71sgNMxfxzOBbhVGffpRuoaj?= =?us-ascii?q?AvRZieMhVZ8B9N613SMcyE4eJ5BztY8YG5rAyRNmybYBxFAnoSVUCDA1DjP6?= =?us-ascii?q?Ku5cXb8+SCHeqxMefBba+VqeNAU/eIxJSv0pZp/juXKsqOPmNiD+Ag2kZZU3?= =?us-ascii?q?F2AdjZmy4ISywRjS7NaNSbpBik8C1tss+/6OjrWB7o5YaXELRSMNpv+xewga?= =?us-ascii?q?qYKuGfmj12KTdC2ZMK33PIz6If3FEKgSF0azatCagAtTLKTK/IgKBXAAQUaz?= =?us-ascii?q?1tO8ZT6KI8xhdCOcjeitzv1754iuU6C1BKVFD7ncGpf8MKKXmnNFzbHEaLKK?= =?us-ascii?q?iGJTrTzsHrZqO8TKdcjP9TtxyxpzmbFVTsPi6Elzb3VBCiKv1DjCaePBNCoo?= =?us-ascii?q?69aQptBXLlTN34dh2xKMV3giEuwb0omnPKMnYRMTp8c0JNtr2Q6idYgvRjG2?= =?us-ascii?q?Nf9XdlKOiEmzqD7+bGMJoWtuFrAitsneJA/Hs606dV7D1DRPFtmyvTrtpurE?= =?us-ascii?q?+9n+mKzTpnXhROpShXhIKXvUViPqDZ+YdaVXbC4h0N8X2aCw4WqNt9Ft3vp6?= =?us-ascii?q?dQx8DRm6LrMjhC6dPU/dAHCsjMMs2HKnshMQHxGD7QFgQKUSCkOXvYh0xHn/?= =?us-ascii?q?GY7meVoYQiqpjwhJoOTadWVForGfwADkRoB98CIJBsXjM4i7GbitUI5Xm/rB?= =?us-ascii?q?XLQsVVoIzHXOqIAfrzMDaZkaVEZxwQzLPiM4sTLZP01FZ4alZmnITHAFHfXd?= =?us-ascii?q?FXoiJ8aQ80rl1N8GJgQWwzwU7lbB2i4GMLH/6ughE2khd+Yfgq9Dr0/lg3IV?= =?us-ascii?q?zKpC0tn0YvndXlgCucfyTvI6eqWoFaES30t1I+MpnjWQZ6cRWynVB4NDfDX7?= =?us-ascii?q?9ekqFvdX5qiADBoptCAuRTTbdeYB8Xy/CXfOsn3khBqiW9xE9H+evEBYFklA?= =?us-ascii?q?Q0bZ6mt2hA1B57bN4pOazQI7JEzlxXhqKUoCCo0OEwwAgFKkYC9mOSZTQEuE?= =?us-ascii?q?sSNrkpPyCo5PBj6RSemztff2gBT+Eqrexu9kM8PeSA0i3h3qVfJUC2MuyQM7?= =?us-ascii?q?mWu3PclcKSRFM/yF8InVFf/bdqyccjb1aUV0c3wbuNFhQJMM3CKR1Vb8tS73?= =?us-ascii?q?XcYCeOsOXXzp1uJYm9EP7nTfOWvqYOnk2kBBopH5gL7skZBJas1EDYItv5I7?= =?us-ascii?q?EdzBUs5ALrJFKDDPtTYx+EizYHrNu5zJNu04ldOysRAWNjPiWr/rzXvBMlgO?= =?us-ascii?q?KfXNcqZXcXRpALOWwwWMChgSFWompAAyet0uIC0geC9T/9qj7XDDnmYNppfO?= =?us-ascii?q?2Uag90CNGq5TU/9LC7iVHK8pXfI2H6McptutrU5OwHuZmIEPJUQqN7s0vGnI?= =?us-ascii?q?lYXXOqWXbVEdGpP5jwd5UsbdvsB3agVFy/ii46T8f2PNapNaiGmRjmS5tOvo?= =?us-ascii?q?SH2z4uLtOyFjYbGxhsve4D/758aRcFY5UlfR7irx4+OLCnIAeEztWuRH6gKS?= =?us-ascii?q?FMQPlFyuW1fKdazzY2buCg1nsvUJU6z+ix8U4CQJEKjx7exfa/Z4lQSyfzAH?= =?us-ascii?q?lddx/JpSUni2hrLvwyzfsnwBPUrVkcNCiGdeJzZGNYv9E8BFaSIXRsBWo7XF?= =?us-ascii?q?KcjJTM7RCy0LwI+CtdhdlU2/VfsHfipp/ffC6sWKuzpJXQqSUgd9smrLNtMY?= =?us-ascii?q?ziJMuGu4jTnzLFQ5nWrgKFVCm6F+dHldhLOi5YRudHmX09M8wcpYVB8VYxVt?= =?us-ascii?q?s5J7FXEqYsvK2qaTx+AS4R1iIZVoKA3D0eguinwbfakAmfcIg6OhwerJpCms?= =?us-ascii?q?cdUzJxYi4Gpa+jUZnWmHGASmcVJQcc8xhM5BgAl4JreeDl+JTHTJlJyzFMov?= =?us-ascii?q?J0VjDEFp5n9lfhTWGWm1f4Qu27k+O1xQJS0O7s0t4DVR5jDkhdwv1bllc0JL?= =?us-ascii?q?FyMKYcpIjKvSGUdUnipmLi1POmJEVNyc3Tb1D4DJDKtXDmXS0Y5HIZXpJAx2?= =?us-ascii?q?/HFZQKjQV5bLgkpE9WLIChYEb+6CQux551ELmgScCr21EloG4ERyetDdVMEP?= =?us-ascii?q?xpv0zMWDJ7eZCrtIvqNIhITm9W5pKdt09TkF9xPC6h1ZpcN8ZN7yYQXDdSvD?= =?us-ascii?q?qdvcG9SMlY1MBqCJ8MJ8twtG3mGKNYIpSRpWM5uqD3wH/D5z88qEu6xCm0G6?= =?us-ascii?q?KgVO1Z8XERFhkrKmiDpEQiFPcj8mDX8l/RqF905PtbCqKJjUpvvDZ3BopOCS?= =?us-ascii?q?pR1XC5M1RzS2FLs/9EJ6vIc8xTWeUyaASrOxw5C/4pwVKF8l1znXjkfSN+rA?= =?us-ascii?q?1a9D7BXwMsTykanq/tmSECqsGgITIaU4lIbSk7YCjYNwKWgjtXvBFCa0FwR5?= =?us-ascii?q?8WHNBF+60B3YRO+srOU0GsKTsKXBZ6LAI3zeJflVJfsEWfYS3dERCoeujRvR?= =?us-ascii?q?JqZsqRscqpLOjj/AhdlIPnsec496EdSH26gwGtRsrer4DkvN2QqkSObLv4M/?= =?us-ascii?q?G7YXLZTjjDlwqwhbA/D5nO5SfTLhFWK5xnyXogfZjhCHLEPRVcKKIdPEpXT6?= =?us-ascii?q?d6ac9JoupCfc9rZL4J+bNxBhKAXh7vGpagrP9ILlbJQjTRMjuO//ejoY3J67?= =?us-ascii?q?zdUu/gataKx3nZX6J9Jo165iXjG7f2zY9e/VL72vFp9k5hSFjGNSWBoM7gJg?= =?us-ascii?q?MN6smibFHtvoY1HTPMHZd/jGbtxlxad8UJWSGq944YyJxB4nbqVe14ylTzsP?= =?us-ascii?q?FV97R874k34qxmycCwJajIMvRWq05nAh+TBgVx7ZUgG21/Sm9eY+MLL/fRZ6?= =?us-ascii?q?sZh9j0q+/rD6wX9AGV++tBZNTbPU7BntewCiqASR1EmwcMsiUaIRed1/Gbna?= =?us-ascii?q?90VcelqvLj1kIr/Ve+MgYMzKpx6oec5qqIuOjXYgPVzbgfX6jnRtj+rroytE?= =?us-ascii?q?yP4v0kjqQBenRvYw2gEugSSNISxnv6waAt1yIsHNvJH6j89/5bS3I5gjXglo?= =?us-ascii?q?h/H1UXH/MZBr+L8ppen2gmgezZN9sWcq9YlmaJCxGkDqcIyWS35CuPPGllnh?= =?us-ascii?q?bO3gnxQWKy9lD5tzN3TDDXz9j9jkpaSKW4CV1VXyqzNk9yqCmPMxbwtNrrpa?= =?us-ascii?q?Q161k7PXfltNKWmmquIrFXH8zjJNyEOyY0uVYXgYYtSdyoxI8UB8CyIMoL8H?= =?us-ascii?q?F5dPvR8Xmnkyhbo6dIn4De+N2a+u3LHXm8iK2Xs62NyypEynckvVE+5NegNu?= =?us-ascii?q?vN59GTWPSnyWIRTyZ5uwvcUB+4saTboEoIOUOX0EfKlosKPsta3XUi1UHp+v?= =?us-ascii?q?IjQNQt+wVaDIrAYOkCpT/rMjvu3Vmfe843VjWZ0zZPEVL6C0N4F7Yg2GLwp8?= =?us-ascii?q?/JkXbQ+0E2SYlwbUPnmAd3A58+KU0z9Fgd2jADHhQVaRCHELGoAlzoLYQaWk?= =?us-ascii?q?gFdRSH27+6dqAs3UJtxrOv5enTbfFzBqcWMvZSkBSOnVhBFZ4Mt60RXq58cU?= =?us-ascii?q?dH9KHLvgjiF5TnX//+mHUsN/26WNxV/NsFuHsl5ga/Qxug5olZ77YHlp+Haq?= =?us-ascii?q?5EbYLLvMBm4Edt/SQPeTBVgBhjkxO5VvgRpOXk4tjdrJqo5fihWb0oR+UW7R?= =?us-ascii?q?c0AXpxj4f+gVAku9HX1PxcRpfTiYvh7ABHO2SKt5rC0xlgNeoOLJqmfLl8+H?= =?us-ascii?q?UcPCgSPm8AM9WQZfk95S9tLTrS6kdNAsMJf9wYOtTClRpTik3zV7FZ7tDbFU?= =?us-ascii?q?OAC4dva8Ao6HL6yDIy8Zs8VObs8iO5JZDb71FQIvxCjSRslNTZpOgWwPrfEz?= =?us-ascii?q?YX4XiHaxdvxiON1piNB+z2/eqS1NHeT0kGETIuU4dBODqC/hSqRuurlJrzVA?= =?us-ascii?q?OZ8cvzgI8je0KRQXyxh74JsqFWEe5Pki/7xCRRFpjph/KJtNqh8GlXuUNJEI?= =?us-ascii?q?Z96R3IA6teMY99ORvmismnXE58CTXjeMvMbBohpPKWxvsQ4+V5L0b+aosbIh?= =?us-ascii?q?UKyr3k7XpVShBjSKXxvlafXOIeeMFqSPXaoXBJ8YhgMbMAPECBpJz2qTdFsF?= =?us-ascii?q?U2AA4qaL8zqTxXbUvOkxdWW6bzvr4PlA0cXcR/uUBSBWK6IHg+6CbfVaRJkK?= =?us-ascii?q?mRD+QY/S6NQawIT0VlKTh+Qxey2JVyZ7upg+5IvX5ckiN6uvgq3CRsRAGgti?= =?us-ascii?q?30u6INxTUg9amgtDUGvXxKVP+ekinPCVVHwvQHlqIcC3Hl6VynfnYMcJHy4L?= =?us-ascii?q?58JcT79Ikh5Xs/bQ8kfy0cUuSqEzvwgL+QAoyTrNJcgwaAuMvQYr+3LCgSLq?= =?us-ascii?q?oyxAniRnh81wjemQhn8HEPQjq+9tMkI5+9Ock9zCqyBWfbbEoM4r9OsMbpu1?= =?us-ascii?q?8LVPE2aVJ9z2p9ycWHQywNRNDVG2krlAQkbn9EcJ1b4x8AC6YomiqIvrVB/g?= =?us-ascii?q?wMZzfUFpqq95LIncfMw3Y9VstqxmPKqa2ZnJMlzmNql8ly7iGQpHQYb/bYXN?= =?us-ascii?q?N0AnjvyodfzvTzZ/GssuABVYtnx62tUPsDMsm45Wu2w45nWk6/ybQYGFq1Ku?= =?us-ascii?q?gDxq3UUy29U22XRfyLc3SQnzY+KkPy4AOnIUE3aMdLqU89NfDPhoBdlw3nT7?= =?us-ascii?q?x0QiSQpVnGzG0sK+8acBg2uIi/cQwQUOERf/ScJfQpwPAmClsDdXzJHSxtBO?= =?us-ascii?q?KtrF6tmpR7O3Vn4UXnbuTt8hzmPMGUGhYaDY7QtoRx9uCiRmKdJX9gywV/PE?= =?us-ascii?q?tx9+fYDVQxrO5cc42KkNjWndt71PAKd/Z3PS06oN4TlZpp6ZOI38eSbRHR0p?= =?us-ascii?q?HyKMnOoviWBv3Q00Und2JBX7oHfwz1/YQ6P98+W73VB7dZuwoTBbRpCKAmYm?= =?us-ascii?q?Pw8rxkaQB+aAjcYJyqjcTw4OGGfJ1ZoznR9F10ZDndoRor2PGyTBI9a5Gsmm?= =?us-ascii?q?W0J4o/AC9C65VkCQNjNI9OHd4Q6gSgHpiYkb26jNn3/Fl1/6cVsK70G9jL0t?= =?us-ascii?q?qj1ol8VpQc4laEeH7eHqRkgURNiuW0n+fO1YT3Bcr+eNQCEu9hTSqNbr7AA5?= =?us-ascii?q?X6MT+FJ9j9Z18D9rmQzbZ0egueaTq/XKecsiCgcvJ+7gFz0YF8fezO3BQx/r?= =?us-ascii?q?rb3530fGgdqSC96TaFOYV360THA/LFQBNIQvrD93xqWeUMbY/13OQDK9ovxJ?= =?us-ascii?q?6b+QY3pDBD1taVZrKor0PkxE12b9TYIVHv1iJ/XpMFczqlNk55omLftjz6H3?= =?us-ascii?q?lGNdS+JMRxyIKWAxrxoU5vlHs2enRMF3bAStKYOGxd0MW7Ml7ZvDlXBsoOyr?= =?us-ascii?q?bkMXUzsbe/HKwxYs8fy+y3qLUKl8poICjTRc9cejvdN6JyIiEOUbfyn3YCO0?= =?us-ascii?q?88muFtHIwuad6CIVgOdkKBzXCXr0PO0kzxIsSlz73BYD0X/XNO06/f3HBSqh?= =?us-ascii?q?O4t/eUjoyrUL3QYJzsGv+HGCUgXzCeAz81FEs=3D?= X-IPAS-Result: =?us-ascii?q?A2BrCgDoWAVb/wHyM5BcHAEBAQQBAQoBAYNBA4EEWyiMW?= =?us-ascii?q?owEgwiTNxSBXRIYEwGEQIInITYWAQIBAQEBAQECAWscDEIQAYFiJIJQAwMBA?= =?us-ascii?q?iQTBgENDhILAQIBAgkBAQUQKwgIAwEdAg4DAQUBCxEHBwsFGASDAYFoAQMVA?= =?us-ascii?q?55nPIxuFgUBF4JwBX8EAYJIChkmDVVXgXQCBhKHKHyBVD+BD4VcgXEBEgE0h?= =?us-ascii?q?T8Ch0OQaywHAoFniXOCdAuHVoUrii+GKQIEAgQFAgUPIYEEIw4jYXFwUDGCE?= =?us-ascii?q?oIUDBeDRYocUlN5AQEBKIRRhS6CNwEB?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 23 May 2018 12:06:16 +0000 Received: from prometheus.infosec.tycho.ncsc.mil (prometheus [192.168.25.40]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id w4NC6FPU020964; Wed, 23 May 2018 08:06:15 -0400 Received: from tarius.tycho.ncsc.mil (tarius.infosec.tycho.ncsc.mil [144.51.242.1]) by prometheus.infosec.tycho.ncsc.mil (8.15.2/8.15.2) with ESMTP id w4N1Ims4036660 for ; Tue, 22 May 2018 21:18:48 -0400 Received: from goalie.tycho.ncsc.mil (goalie [144.51.242.250]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id w4N1IlM1026098 for ; Tue, 22 May 2018 21:18:52 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1BYAgABwQRblykaGNZcHgEGDINAgWIoj?= =?us-ascii?q?FmMFoMIkzaBeAsshEACgiEhNhYBAgEBAQEBAQIUAQEBAQEGGAZLhTUDAycZARs?= =?us-ascii?q?dAQMMBhA7IQIRAQUBHAcSgyKBaAEDFQOeYDyMbhYFAReCcAV/BAGCSAoZJg1UV?= =?us-ascii?q?4F0AgYShyd8gVQ/gQ+FXId4Aoc9kGYsBwKBZ4lxgnQLh1OFK4oqhikCBAIEBQI?= =?us-ascii?q?FDyGBBCMFgX5wgQGCEoIUDA4Jg0WKHFJTeSuNGgEB?= X-IPAS-Result: =?us-ascii?q?A1BYAgABwQRblykaGNZcHgEGDINAgWIojFmMFoMIkzaBeAs?= =?us-ascii?q?shEACgiEhNhYBAgEBAQEBAQIUAQEBAQEGGAZLhTUDAycZARsdAQMMBhA7IQIRA?= =?us-ascii?q?QUBHAcSgyKBaAEDFQOeYDyMbhYFAReCcAV/BAGCSAoZJg1UV4F0AgYShyd8gVQ?= =?us-ascii?q?/gQ+FXId4Aoc9kGYsBwKBZ4lxgnQLh1OFK4oqhikCBAIEBQIFDyGBBCMFgX5wg?= =?us-ascii?q?QGCEoIUDA4Jg0WKHFJTeSuNGgEB?= X-IronPort-AV: E=Sophos;i="5.49,431,1520913600"; d="scan'208";a="283114" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.35]) by goalie.tycho.ncsc.mil with ESMTP; 22 May 2018 21:18:50 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3AVFvXTRGk93wCF8XR3aDxQ51GYnF86YWxBRYc79?= =?us-ascii?q?8ds5kLTJ7yrs2wAkXT6L1XgUPTWs2DsrQY07GQ6/iocFdDyK7JiGoFfp1IWk?= =?us-ascii?q?1NouQttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBA?= =?us-ascii?q?j0OxZrKeTpAI7SiNm82/yv95HJbAhEmDSwbaluIBmqsA7cqtQYjYx+J6gr1x?= =?us-ascii?q?DHuGFIe+NYxWNpIVKcgRPx7dqu8ZBg7ipdpesv+9ZPXqvmcas4S6dYDCk9PG?= =?us-ascii?q?Au+MLrrxjDQhCR6XYaT24bjwBHAwnB7BH9Q5fxri73vfdz1SWGIcH7S60/VD?= =?us-ascii?q?K/5KlpVRDokj8KOSM5/m/JhMJ+j6VVrxCvpxFk34LYfJuYOOZkc6/BYd8XQ3?= =?us-ascii?q?dKUMZLVyxGB4Oxd44BAPQHPeZEsoLzvkUOogWkBQm3GOPv0CFHiWHq3aYn1O?= =?us-ascii?q?khEh/J3Ao8H94Ut3TUssv6NL0JUeCp1qnH0yvMb+9N1Dfy7YjHaBEhofWWUb?= =?us-ascii?q?1sdsrRzFAiGgXYhVuTsYzoJy2Z2vkCvmSB8eZtWvijh3Ampg1rrTWj298gh4?= =?us-ascii?q?vUio4P1FzJ+yp0zJwoKdC6VkJ3e8CoHIZfuiycKoB4WNktQ3tytyY/0rAGuY?= =?us-ascii?q?C0fCwNyJk/yRHRdvyJfpWV7h/nTuicPSt0iGx/dL2hmRmy9FOgyuLmWsmxyl?= =?us-ascii?q?lKry5FnsPJtnAM0xzf8smHSv1j8Ue9wTuDyR3f5+5eLUwqmqfXMYAtz78qmp?= =?us-ascii?q?ccrEjPBir2l1/3jK+SeEUk4O+o6+H/b7XluJCcMZN0hhv5MqQwhMO/G/84Mh?= =?us-ascii?q?QUX2eF5+u8yKbu/UL8QLpQj/02lrPVv4zdJcQevqK5GRNa0p4/6xajCDeryM?= =?us-ascii?q?8YkmcDLFJEfhKHkofoNkrSIPH4Efi/g1OsnC1tx/DdJLLtGJrNLn/dkOSpQb?= =?us-ascii?q?Eo709a1Rp2zt1F4Z9QIq8OLei1WULrstHcSBgjPEj83ef9D/1v24UfRySLA6?= =?us-ascii?q?mEIOXVq1DO++Fra+CPfIo9vDf7Nuhg6fnzi3MwhV4ae++ux5RTIG+5GvB3C0?= =?us-ascii?q?Sfb2DljtoIHSENpAV6BOPwhVKBURZXZnCvT6w7+zc3AZ6nCoGFQZqixPSF3S?= =?us-ascii?q?GmDthNa2tbEFGQADLtcImZX/okdi2fOIlinyYCWLznTJUukVm1uQv7zad3Bv?= =?us-ascii?q?bF8S0f85T43Z564POX3R0/6xRzF8mbzXqSTn1/niUPXTBylLt/pU1VyVqZ16?= =?us-ascii?q?V8xftCGpgb4/JPTxd/L5fdw8RkBN3oHAHMZNGETBChWNr1Lys2S4cSztkSK2?= =?us-ascii?q?FjFs+5kgrO0jbiV7wYkaDNA4I56LnAxXX8O+5yzn/H0O8qiFxwEZgHDnGvmq?= =?us-ascii?q?Mqr1ubPIXOiUjMz/zwJ60BwC7A8nuCxmOSvUZeFRR9SrjBQWtAOxnrlvrTvx?= =?us-ascii?q?L6Zub2T788Pk1NyNWLbK5Lbo6hgVZHQaL7Mc/FKyKqmmi2DAqV3L7Ecofwem?= =?us-ascii?q?sc0SmcQEgJmgwe5zCHYCAxAy6gpyTVCzlj?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0A1AQABwQRblykaGNZcHgEGDINAgWI?= =?us-ascii?q?ojFmPHpM2gXgLLIRAAoJCNhYBAgEBAQEBAQIBEwEBAQEBBhgGSwyCNSKCUgM?= =?us-ascii?q?DJxkBGx0BAwwGEDshAhEBBQEcBxKDIoFoAQMVA55gPIxuFgUBF4JwBX8EAYJ?= =?us-ascii?q?IChkmDVRXgXQCBhKHJ4JQP4EPhVyHeAKHPZBmLAcCgWeJcYJ0C4dThSuKKoY?= =?us-ascii?q?pAgQCBAUCBQ8hgQQjBYF+cIEBghKCFAwOCYNFihxSU3krjRoBAQ?= X-IPAS-Result: =?us-ascii?q?A0A1AQABwQRblykaGNZcHgEGDINAgWIojFmPHpM2gXgLL?= =?us-ascii?q?IRAAoJCNhYBAgEBAQEBAQIBEwEBAQEBBhgGSwyCNSKCUgMDJxkBGx0BAwwGE?= =?us-ascii?q?DshAhEBBQEcBxKDIoFoAQMVA55gPIxuFgUBF4JwBX8EAYJIChkmDVRXgXQCB?= =?us-ascii?q?hKHJ4JQP4EPhVyHeAKHPZBmLAcCgWeJcYJ0C4dThSuKKoYpAgQCBAUCBQ8hg?= =?us-ascii?q?QQjBYF+cIEBghKCFAwOCYNFihxSU3krjRoBAQ?= X-IronPort-AV: E=Sophos;i="5.49,431,1520899200"; d="scan'208";a="13646271" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from uphb3cpa02.eemsg.mail.mil (HELO USFB19PA02.eemsg.mail.mil) ([214.24.26.41]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 23 May 2018 01:18:49 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;4b4e850e-ac6b-4967-9938-1bffcfc50fda Received: from localhost.localdomain (localhost [127.0.0.1]) by USFBF3ID13.oob.disa.mil (Postfix) with SMTP id 40rF5h3Pwcz3S6qB for ; Wed, 23 May 2018 01:18:48 +0000 (UTC) Received: from USFB19PA10.eemsg.mil (unknown [192.168.16.7]) by USFBF3ID13.oob.disa.mil (Postfix) with ESMTP id 40rF5g30H7z3S6p8 for ; Wed, 23 May 2018 01:18:47 +0000 (UTC) Authentication-Results: USFB19PA10.csd.disa.mil; dkim=pass (signature verified) header.i=@gmail.com X-EEMSG-check-008: 187866722|USFB19PA10_EEMSG_MP6.csd.disa.mil X-EEMSG-SBRS: 2.7 X-EEMSG-ORIG-IP: 209.85.216.196 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DTAACCvwRbf8TYVdFcHQEBBQELAYVKi3pfjBaDCJM2gXgLLIRAAoIhITQYAQIBAQEBAQECFAEBCQsLCCYlDIUpAwMnGQEbHQEDDAYQOyECEQEFARwHEoMigWgBAxWeZjyMbhYFAReCcAV/BAGCSAoZJg1UV4F0AgYJAQiHJ3yBVD+BD4Vch3gChz2QZiwHAoFniXGCdAuHU4UriiqGKQIEAgQFAgUPIYEEHIIKcIEBghKCFAwXg0WKHFJTeSuNGgEB X-IPAS-Result: A0DTAACCvwRbf8TYVdFcHQEBBQELAYVKi3pfjBaDCJM2gXgLLIRAAoIhITQYAQIBAQEBAQECFAEBCQsLCCYlDIUpAwMnGQEbHQEDDAYQOyECEQEFARwHEoMigWgBAxWeZjyMbhYFAReCcAV/BAGCSAoZJg1UV4F0AgYJAQiHJ3yBVD+BD4Vch3gChz2QZiwHAoFniXGCdAuHU4UriiqGKQIEAgQFAgUPIYEEHIIKcIEBghKCFAwXg0WKHFJTeSuNGgEB Received: from mail-qt0-f196.google.com ([209.85.216.196]) by USFB19PA10.csd.disa.mil with ESMTP; 23 May 2018 01:18:46 +0000 Received: by mail-qt0-f196.google.com with SMTP id 32-v6so2035117qtr.13 for ; Tue, 22 May 2018 18:18:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=aAylj390SzpurFM70TLaaWr6yaijN8/amlAfF5yOrvQ=; b=FiWvqlctm9YOqhV6PADLlMRu8p/VFaKIBu3bE3AIQDHd0ob/6ve+cZdnN3UdDFU3ZY zwOcH14wMyeNBRo5vhIFmWj6Km1/bEU1y+8/nEZpH0dra7+DLFvEiGcJHcuczP1YRQhl 9ZWKa3yG5g9EDa6ExRyx/WsxYCIPOu+Rxzels3Ma3lU98+giW7XXq1bHMSWMDg50yy0k H7WcgBP1u7lSmgLKRnN56Z+ugtYiuoW5pA9lu6BfA6L7PAbXEPppoHilqlFr24IggPzR 0hv9aoXvT1eBT9jvTbaKPw6NCop8UestQ1XitnTkAtSAa6t1prFK7lL7YD1ZXaxUFCaM x9og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=aAylj390SzpurFM70TLaaWr6yaijN8/amlAfF5yOrvQ=; b=Y3WlbfvdsQBhkqnhmDL8bVc6uKnjyy+b5uC1zVecIzXSyTXfe7vZjMeBK0NzLX9Imi KTdpWDsXguLBbeZmTLGm3kEnyxBMFJJneGPpAsMcrb7FI/JrFaECJ00x+Stkgy2b2Y7t uSUMrmAe46Bf9yv9XPYdPvnxxgm1qLv1DoVi/ireyf3GAddcNkLY3U172zzQA5wcmt9o SIcmrLVlznrTAdNi3hA6Oj2q3cOmqv2oHB7p/NbkshBsTRvBeBlsLjEz8QYV20fYvXq3 kR2iFB67JjoteX3DMimrUFOFyUD8aI+O5eg8Dul+kGdGDmz3cSQ8Kux8VsPPhoDM9qC1 bnCQ== X-Gm-Message-State: ALKqPweb12aExhRP4yMMpfdVwKtH9HiStdNMV1OOJkFbY558FKInnufQ X7eO2zNT0zSSZ0dj30n5gg== X-Google-Smtp-Source: AB8JxZpT+riuVqsulHp1BPRApa7t1nRlJ9zVG0TEf0M0RjONNVL9K+rCfS2mqBo9fs3bpfHRDXe11Q== X-Received: by 2002:ac8:235c:: with SMTP id b28-v6mr764551qtb.212.1527038325681; Tue, 22 May 2018 18:18:45 -0700 (PDT) Received: from localhost.localdomain (c-71-234-172-214.hsd1.vt.comcast.net. [71.234.172.214]) by smtp.gmail.com with ESMTPSA id s127-v6sm12604251qkf.21.2018.05.22.18.18.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 May 2018 18:18:44 -0700 (PDT) X-EEMSG-check-009: 444-444 From: Kent Overstreet To: linux-kernel@vger.kernel.org, viro@zeniv.linux.org.uk, akpm@linux-foundation.org, willy@infradead.org, gregkh@linuxfoundation.org, linux-security-module@vger.kernel.org, selinux@tycho.nsa.gov, dev@openvswitch.org, shli@kernel.org, linux-raid@vger.kernel.org Date: Tue, 22 May 2018 21:18:18 -0400 Message-Id: <20180523011821.12165-3-kent.overstreet@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180523011821.12165-1-kent.overstreet@gmail.com> References: <20180523011821.12165-1-kent.overstreet@gmail.com> X-Mailman-Approved-At: Wed, 23 May 2018 08:03:44 -0400 Subject: [PATCH 3/6] md: convert to genradix X-BeenThere: selinux@tycho.nsa.gov X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Security-Enhanced Linux \(SELinux\) mailing list" List-Post: List-Help: Cc: Kent Overstreet MIME-Version: 1.0 Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP the new generic radix trees have a simpler API and implementation, and no limitations on number of elements, so all flex_array users are being converted Signed-off-by: Kent Overstreet --- drivers/md/raid5-ppl.c | 5 ++- drivers/md/raid5.c | 77 ++++++++++++++++++++---------------------- drivers/md/raid5.h | 4 ++- 3 files changed, 42 insertions(+), 44 deletions(-) diff --git a/drivers/md/raid5-ppl.c b/drivers/md/raid5-ppl.c index 42890a0837..ffb4ae0679 100644 --- a/drivers/md/raid5-ppl.c +++ b/drivers/md/raid5-ppl.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include "md.h" @@ -165,7 +164,7 @@ ops_run_partial_parity(struct stripe_head *sh, struct raid5_percpu *percpu, struct dma_async_tx_descriptor *tx) { int disks = sh->disks; - struct page **srcs = flex_array_get(percpu->scribble, 0); + struct page **srcs = __genradix_ptr(&percpu->scribble, 0); int count = 0, pd_idx = sh->pd_idx, i; struct async_submit_ctl submit; @@ -196,7 +195,7 @@ ops_run_partial_parity(struct stripe_head *sh, struct raid5_percpu *percpu, } init_async_submit(&submit, ASYNC_TX_FENCE|ASYNC_TX_XOR_ZERO_DST, tx, - NULL, sh, flex_array_get(percpu->scribble, 0) + NULL, sh, __genradix_ptr(&percpu->scribble, 0) + sizeof(struct page *) * (sh->disks + 2)); if (count == 1) diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index b5d2601483..31f88db83c 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -54,7 +54,6 @@ #include #include #include -#include #include #include @@ -1396,7 +1395,9 @@ static addr_conv_t *to_addr_conv(struct stripe_head *sh, { void *addr; - addr = flex_array_get(percpu->scribble, i); + addr = __genradix_ptr(&percpu->scribble, + __idx_to_offset(i, percpu->scribble_obj_size)); + return addr + sizeof(struct page *) * (sh->disks + 2); } @@ -1405,7 +1406,8 @@ static struct page **to_addr_page(struct raid5_percpu *percpu, int i) { void *addr; - addr = flex_array_get(percpu->scribble, i); + addr = __genradix_ptr(&percpu->scribble, + __idx_to_offset(i, percpu->scribble_obj_size)); return addr; } @@ -2235,21 +2237,21 @@ static int grow_stripes(struct r5conf *conf, int num) * calculate over all devices (not just the data blocks), using zeros in place * of the P and Q blocks. */ -static struct flex_array *scribble_alloc(int num, int cnt, gfp_t flags) +static int scribble_alloc(struct raid5_percpu *percpu, + int num, int cnt, gfp_t flags) { - struct flex_array *ret; - size_t len; + size_t obj_size = + sizeof(struct page *) * (num+2) + + sizeof(addr_conv_t) * (num+2); + int ret; - len = sizeof(struct page *) * (num+2) + sizeof(addr_conv_t) * (num+2); - ret = flex_array_alloc(len, cnt, flags); - if (!ret) - return NULL; - /* always prealloc all elements, so no locking is required */ - if (flex_array_prealloc(ret, 0, cnt, flags)) { - flex_array_free(ret); - return NULL; - } - return ret; + ret = __genradix_prealloc(&percpu->scribble, + __idx_to_offset(cnt + 1, obj_size), flags); + if (ret) + return ret; + + percpu->scribble_obj_size = obj_size; + return 0; } static int resize_chunks(struct r5conf *conf, int new_disks, int new_sectors) @@ -2267,23 +2269,18 @@ static int resize_chunks(struct r5conf *conf, int new_disks, int new_sectors) return 0; mddev_suspend(conf->mddev); get_online_cpus(); + for_each_present_cpu(cpu) { struct raid5_percpu *percpu; - struct flex_array *scribble; percpu = per_cpu_ptr(conf->percpu, cpu); - scribble = scribble_alloc(new_disks, - new_sectors / STRIPE_SECTORS, - GFP_NOIO); - - if (scribble) { - flex_array_free(percpu->scribble); - percpu->scribble = scribble; - } else { - err = -ENOMEM; + err = scribble_alloc(percpu, new_disks, + new_sectors / STRIPE_SECTORS, + GFP_NOIO); + if (err) break; - } } + put_online_cpus(); mddev_resume(conf->mddev); if (!err) { @@ -6716,25 +6713,25 @@ raid5_size(struct mddev *mddev, sector_t sectors, int raid_disks) static void free_scratch_buffer(struct r5conf *conf, struct raid5_percpu *percpu) { safe_put_page(percpu->spare_page); - if (percpu->scribble) - flex_array_free(percpu->scribble); percpu->spare_page = NULL; - percpu->scribble = NULL; + __genradix_free(&percpu->scribble); } static int alloc_scratch_buffer(struct r5conf *conf, struct raid5_percpu *percpu) { - if (conf->level == 6 && !percpu->spare_page) + if (conf->level == 6 && !percpu->spare_page) { percpu->spare_page = alloc_page(GFP_KERNEL); - if (!percpu->scribble) - percpu->scribble = scribble_alloc(max(conf->raid_disks, - conf->previous_raid_disks), - max(conf->chunk_sectors, - conf->prev_chunk_sectors) - / STRIPE_SECTORS, - GFP_KERNEL); - - if (!percpu->scribble || (conf->level == 6 && !percpu->spare_page)) { + if (!percpu->spare_page) + return -ENOMEM; + } + + if (scribble_alloc(percpu, + max(conf->raid_disks, + conf->previous_raid_disks), + max(conf->chunk_sectors, + conf->prev_chunk_sectors) + / STRIPE_SECTORS, + GFP_KERNEL)) { free_scratch_buffer(conf, percpu); return -ENOMEM; } diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h index 3f8da26032..2c39bfce32 100644 --- a/drivers/md/raid5.h +++ b/drivers/md/raid5.h @@ -4,6 +4,7 @@ #include #include +#include /* * @@ -637,10 +638,11 @@ struct r5conf { /* per cpu variables */ struct raid5_percpu { struct page *spare_page; /* Used when checking P/Q in raid6 */ - struct flex_array *scribble; /* space for constructing buffer + struct __genradix scribble; /* space for constructing buffer * lists and performing address * conversions */ + int scribble_obj_size; } __percpu *percpu; int scribble_disks; int scribble_sectors;