Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752316AbdF1TAR (ORCPT ); Wed, 28 Jun 2017 15:00:17 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:32929 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752452AbdF1S6b (ORCPT ); Wed, 28 Jun 2017 14:58:31 -0400 Authentication-Results: linux.vnet.ibm.com; dkim=none (message not signed) header.d=none;linux.vnet.ibm.com; dmarc=none action=none header.from=fb.com; Subject: Re: [PATCH] fs: System memory leak when running HTX with T10 DIF enabled To: Christoph Hellwig CC: Keith Busch , , , References: <1498667571-14275-1-git-send-email-wenxiong@linux.vnet.ibm.com> <20170628171031.GC2650@localhost.localdomain> <20170628183141.GA12722@lst.de> <0fa90019-5b07-7afb-8915-17c54a22709b@fb.com> <20170628183818.GA12860@lst.de> <20170628185235.GA13126@lst.de> From: Jens Axboe Message-ID: <9308965a-f9c2-54b3-ae0c-65dcdd7514fb@fb.com> Date: Wed, 28 Jun 2017 12:57:50 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <20170628185235.GA13126@lst.de> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [2620:10d:c090:180::1:dc49] X-ClientProxiedBy: HE1PR0802CA0015.eurprd08.prod.outlook.com (10.172.123.153) To MWHPR15MB1199.namprd15.prod.outlook.com (10.175.2.141) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 70cd5bfe-c274-44ae-834f-08d4be579d68 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:MWHPR15MB1199; X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1199;3:QMa2fVaEAch6YrPK0c7KOh6wt4mywbVT9SzMLlV1zj4d5pNT0c4MO2wxKs7JZwvQNro45qrA+MqVtBq7elYYn5uoz+cQkizyQv0E1WDM6ZaKvCvSGRQ/6jNIUavCAahzVq2AQczRSqBySzMIryCb3XvWucighFvLyB5AOSaEdoGsqVBGky8Uuep3F/97kVOVs3PZzaVufS/frWSFGjraw6fFIvV+nh9O3/XhOfMMGPFdFn18fHj6SjKITfs5mlieb5sJCcjbbLPVUroUkmeyVA9kHIUeRlVXONEQsvM7+CnEHJfu8kEOyXTdw/rfiera1qoOpBedRnCfdXZG53O/zl0z+Po4zTTUsFYIZb5muBX175FOZhLo/LMGxXRA5byIh9mT+iqnLSH0jsWX+RNVzU/FK1k6gY4szo/XNQHm6y62IkM88ZCvgWsIk60UzGnsV0jvmCTyj36bhTomPcTOKBtkXQ3EVguvyhn1Q7yM2lN3fME294xPfAEhiEz9eUQ6kEgxp7r50O0XXQFwqGuOCnIedWX65ts8P5EdCGpz0oqSSVAPYPZveaNM+rDlyvPcPJKwLn0EGytt3BBoUUC+o2Ai//MItG5snpvWtIDNj0DEyl7zBOO8YzQ/vzCw3odX9q5UHG8CmbBplWpq6ZU8eDUyUdsSWOvXZr6S9PWSLBVkBOs/hZJ62974nKtWbwpj1OXKkExRfzsKl5N69etMCPU0pSwEwBjMpTGB717ZmxA= X-MS-TrafficTypeDiagnostic: MWHPR15MB1199: X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1199;25:z/rPgjRw65lyB5lMsPDtiSdkFpTdlAaryUYz4DLVh2GndNSnAqoos4Hnj/YrIuyV4NmXSJOlV3SEedNejtkQofWTMvvK2rdBXdsUecPPtRcpRel78QgTqw8IIPo2R0s7xfZFtOnfq7SbBcmUsUHa+1KJHJYJ1Wj6ly3vwI41J3yZAKJ3BhLCXWbYoVkNsfPlCFKZ/EN8+dhp8+WWpwKgOn7+FBsRdnz3wGBJSMU1/PTDeGSiN+yTNBUvtZUGZVqNULyNQFHSDfIYeOo+9si8QJGTF+eS80pef72xtcFzA48nKj20iMyphEKahz7VZCyKsAMIbOyNSiLJU8g1Ergqj+y67gAj1MkpV2Cvpj+GvvuJoQFXX8GXABTPkcbduex3k2HuupCPONdGgywiO8wlKFuGXXF+F31xg3BsqqmixMAbyXGe/Iae5swneTbb0FOB4ta5sf0lRa1Wwn3ZfydnmM8N25Cvo8eQj7dDr+EhH/JBKNcN2mohaiL635Q7kaDYsf8NBQZkxOInlSKtRdXl2ygx1SyYcIIhFF5EZTXCdK3vaFnQqBgY1E4FPDTqVw6TnKX6GzfEgFLHudCiMG883mR17X9ewFR/Huveyxw7NC5xrAll0x0HVugtB3UM7IMtpQHS4U2NomgUDnn01JEi6/eW4iR9BCYHsHC0oC2XlWtQwU3nant/1OqRzMb1qCQsjpuEkn8jNqwbVAlIGbSWUuA/H9MftwPiK8+d88SubAYDSwcjwOS7yA6mBvPhLqDElvFf27X+/3/5Q1MDDmX4fY4wbt2xySLHr1hJQNUjGatLcNDOV7DiDcAoTQAT74S2N5lII/D2Ldstj9yfPwtuUQZWQx1s4hsBM+Qp/WmHgbTiTnMSgYp9eEGRuaHWZb3+i6XEb0oU8GJKubAoHLXxmjPaizAOC3wlJ9NuHJ4p4Jk= X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1199;31:/+2DukawGHn/n6H0aSY2jcW7B8d6m/IASIPYFHWh4JPsQ41oZ9fMcN1OOtfGs0+LaJgJ6A9jdfZK4N+ieVkwjZ9YCV5GPkddgwpfAjXwQvecMb92hDwtytVlmm1HmhXTMLQkGG9Z/o0hmHKyx/aqO+v4kEn4seLuRyn9EnGoFYAFJRUMF/Bnm0Tcka9PuctW3nScMLYjwJ+EUaBk3/Gf9/3Skw8D/VbHLJV15UBeloTPS3dtmpgLO53JmUTCbquUt0gt+UYwRhdtgKdY3brp8Y5jBvu8EzVJTxxqIsxmcz0stvk+bCAMIItDhN6DyTj0ZhdOrPqYZIPYNsKYEenFHcj7LkAmapmuC5pRjFJRZQ2BNl2CDGb7iqWYZvITQ89HibnlvxQSmNzkn08/IwEbgKkk/3hmTyr3brbEx7ULvdHg0HY39r6+0qQkyO8nb1XGAodgHi0gb9CeFrsKAfP9rC49vjTxwGgJQRXmQfk5lGF0zAT7uFn1Q7i69jjm9SmbLGBpw6RWQ5oskcYbrw4J8CEbJYl22y2vvO6EWs4W5ihoUMx049RyFFntoIiKSBBJSOUcsbFcECNidIwEQXp+g0VpcDdUAKoa+cBNnTn4tlp9Yb8R+np+ioeOC+panvuKDsZsbS0+yiCcuio5wkGNwzsqKHT2MRdBtez0klDZfoe77t6KObSZzvPKbzvjBU/3M/m6f0FvZyc/MjQQYrhm8iFondex916LIn0IeZrp2TA= X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1199;20:Qww8JXD7RU5xXgz2NUZ5P4QEN3CcbcP/SP80OFgmaRHhRXfsA/Ib0v0IqQoBlr/uU1Wqk4YePbhITtx8ycYCnd9M3Cu35VQ6szVivnLXik4ImMZd27Lv3P9mOSSyohkN7iqrIZznKmfjZ0TdEuCNKA0CGgxcjsHh7ktRZygDUwiJNCRnWZoeSuaPdyaLgdmGntYNLyf8t8teKCmJmV45qP1Gm1QqyI5fHKyE2cDnIJ9KOl+OXr01x6hbOos3+RkBzVWhHZbxP7Fc8dFSsR+ZFw+T6B9xjgQATwinxZX4YX3yhASLuLh9QdFQcVnrNQMlTmIlCwy/LhdFLCv5pj8RQBtnSzlQPod5s1MiKhAT3VS96RppSyHIbEdjGJ76L86BvveDJLci0+tqm4CNxw/b0ma4Jjunp6K1+evW4jMUVwl/02mHyCZ96xAZZuJbljCgNztkqoAJ/mbiAmUldEW+3z1/vKPXJ4JCm1nq9lf8yFDQCrwSUKhVySd6M5tbkrpH X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(236129657087228)(247924648384137); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(100000703101)(100105400095)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(20161123564025)(20161123562025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:MWHPR15MB1199;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:MWHPR15MB1199; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjE1TUIxMTk5OzQ6eisxU0tScktnWjdpZFkyV3htOU9mejZKRkpx?= =?utf-8?B?bllMajBHcWJmRXJ5cjdodTIxWi9peFlZK0VFQXhNV0JTdVhqUHBLRkJrRmdw?= =?utf-8?B?WCtHK2lFYWJPbVZuQjZzK1RGM1J2MEdsZlFCNUQ2Uy96YWszR0JXTzNMMmxp?= =?utf-8?B?dTQ1VEhDQ3E0NFQ5eThZdW4vQ0M4eHlockljeGVzNCttd3JrZDVtSUlVUFJR?= =?utf-8?B?VWxrb1puY3IzQzN5cmhnWjlleGI2MFYwc0txVDN1YjROdncrcHl0S3lEZ28x?= =?utf-8?B?NFprc3dIQmp1aW9OandJc0ZETVFGK2VQTTEwRWRKQ3lOd0gxMHVTNE5GVm40?= =?utf-8?B?cTgvL1RpNHpTMXRldGQxNmVnZGZDYTdGTGtHU0d5ay93eTlVbVdpWkhlUi9k?= =?utf-8?B?R1FBUmhYcm5QU3M1UGdidGpGWUFKbG5QZUEyajdWQm1vR2FabVBVSUwwZE1Y?= =?utf-8?B?ZExkb2xUNUlTVXpla1NiTnlzaTJ3ZDEvTnRxbm9qenQwRnZPRDdKc3ZNU01k?= =?utf-8?B?SDNKcjRhSW9VZ3BjckNxbGNnRmdMeDVzMlN3dE5MM3pRV3k0NUt5Q1JEamg1?= =?utf-8?B?OThlQi9hVGJzYzUyR1Z6MnVLRjVDSFZVbGJuQ0poMU1EenZXZ3dtNUMwdUM2?= =?utf-8?B?Rm9EcWhwY2ZWNC9uODhkaDRYWXFPYVJrdlA0OGl3RW9raUV1MTNtUHRUa21u?= =?utf-8?B?SkZ0VzhhbjJ3ZGU0aCthTGYzS3cxcGZndkw5MllLMS9McVBkblBTN1lqZUN2?= =?utf-8?B?YTZhRHkxejV2Nk5iMjJxbzdxZjVtVHh1V2dvejVqQ2VoSHkrUW00VksrcG5Z?= =?utf-8?B?OVgyVzgvS3pHL0tENUdPeXBiTUhnMGFINnZXZEwwMTRhUGIrUEVud3dyTkxq?= =?utf-8?B?c0JaSDdRdFFxQW40NTJrcUJFWTIxNCtoTTZCQnU0SXV1SDNOVUxoS2tJNVNE?= =?utf-8?B?ck1DN3IxUGpZVnE3R3JYdVUxc2RibEtEWnA5blAzREsweWI3T1BvWVdFRU1o?= =?utf-8?B?SlNiMy9BV2RZMFBnTFVsdUJHckZuMmVqbnRLazNOMjZHZ1AvQkh3V3RHMGlN?= =?utf-8?B?bUVYZnVnSWg0VTByblhGZWZPL2VZelhqdlRKYnY3ZGlnT050SVJ2Wi90d0xJ?= =?utf-8?B?N1FBajBTNzBKNFlkN2VoN2cxdnArRG9WMUtlZXowV3lYdCtDMU5iYlJOSDFB?= =?utf-8?B?Z09WMUora2RCUnBxbkpRSHliZjlyVFV5dHE2YnVSVFZFSHVUTm04ZXNqc2Rp?= =?utf-8?B?M0EzeStRNnFRdGNxZVdOd20wdHAwWFZmdlM5dGY3OGJqM3Jyd1lWc1BvOUcr?= =?utf-8?B?NktuMzNPNWc5OTZiR3hzYzVlcHdHNXczUlNpYUMyQ3ppbHVFZzA3aWJydTlO?= =?utf-8?B?emxqemVBcFo3VlM4OVlwbld2L080ZVlMbU84ZXpnZGpMQ2cvdW9CZWg3aVZ4?= =?utf-8?B?T0ltU05Ob0pGeVo0dUJ5SjBCUmQ1dzYyNjc3bUVqZUNPMFhCL1FrNTVmR3Ix?= =?utf-8?B?ZUxCNGN3dzFibEc5aG8yU3ZyQ1QvejN6TXZNSVdnWWtjZHc4K0xyK0dnTGZU?= =?utf-8?B?QXJPeHdWRWtQNG1MaStoc08zWDFrTnJuc1RDNEE5d1QzQzJDVDUxVVFPMjU0?= =?utf-8?B?VS9CSFZxR2pXZWtJUml5QmZFenhBVmVsMU1BNVl1ZzVQWGpYaWNHN1krU0Ni?= =?utf-8?Q?9iR37JXkvlLjRYdQduFrrlC7MdXN78CB+pdGco?= X-Forefront-PRVS: 03524FBD26 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(39400400002)(39410400002)(39840400002)(39850400002)(39450400003)(24454002)(377454003)(2906002)(81166006)(93886004)(33646002)(53546010)(8676002)(7736002)(83506001)(50466002)(478600001)(38730400002)(53936002)(6246003)(64126003)(23676002)(4326008)(110136004)(50986999)(31696002)(230700001)(575784001)(6116002)(305945005)(42186005)(86362001)(6916009)(2950100002)(6666003)(229853002)(31686004)(5660300001)(54356999)(65806001)(36756003)(65826007)(47776003)(4001350100001)(189998001)(6486002)(76176999)(25786009)(65956001);DIR:OUT;SFP:1102;SCL:1;SRVR:MWHPR15MB1199;H:[IPv6:2620:10d:c081:1110::119a];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjE1TUIxMTk5OzIzOmhBdFJNdkVTY2QrWHE1YkdHU0dEN3k3cTly?= =?utf-8?B?SUJKT1FxZ0RBOHJObktDeStoeDhQbWlpWnZhTXR2Z3owdzBBdFpOOVU3NXFt?= =?utf-8?B?Y0U1Z2syS0lWdkVlWEZ4YUtxMjNGazRmOXJ4b1UwNTZVKzdYREc3R1RnaU96?= =?utf-8?B?RHloVEIzdUR4bjJJUStzN1JNMUUxN1ZZQzlkV3d0dnZBUXpXOHprV0dQbGVZ?= =?utf-8?B?T3pVd1Vudjlhb0NqVnJGazFSclg5dTdySHJhNGthQ1YzUFdlaEFCWXBLSFpj?= =?utf-8?B?M1YxbFkrb0hGNGV5MkE3WFd5TnBtOHJua3BBNlFaWWtTUlI4azRQc1NlZEJn?= =?utf-8?B?a25ZVkdjVGVjczZZK2NYc1d2bmsyL0tCanBVVldGdUhWdFFhRFdzb2xCQ1Fp?= =?utf-8?B?N0ZYWVZvdlNMOFRhYlE1WGhOaURRdGN0ZmpJeVl1djlGVXpockdxUlR0T3Ja?= =?utf-8?B?RTVlOENFcmF3ZVMwSWJEMWpSeERpbXBzQTM2eXpNNzBCREJxdnVzYkNrTk04?= =?utf-8?B?NkVHSGNFWjBPa3N3UGZVSVZ3VFNEbGxRODVCWEU0SjhiTEhVWUJtaWxMckhm?= =?utf-8?B?UHp6TDlvMG5OYmdsQzJBUlJGaTFiMlJQeXNMUjMvN3UycXErdnF6bDN4VWZV?= =?utf-8?B?SWRGc1BNc0g0dWVVUEtpYlIzbGZ1a3BsU2NTWjZTdDVsYmE2cm9EYXIrVmhB?= =?utf-8?B?eFRrL0ozOTBPTmVhR1prUGhrNGdVUGRpUDR6ZEhCUHk0QnJBa1pBYTNuc3Iv?= =?utf-8?B?dW1LRmpoK0d5K25sRWtPOGRkQUdtRTFISDlYVHloOHFFWmUyRUxPb093YXZa?= =?utf-8?B?U2Y5emxvM2RWdThaVHIveHJlbUx4TWFKcDZZU1VQd2xPQ3Q3ZXRoZjdob1pn?= =?utf-8?B?UG1IUUVmRmRtVExuc0dlT0xwWWhaVW5RTFpOeGlHTjBld2FzVFVydHQwL281?= =?utf-8?B?ck8xM3pML3FxYitvWDdYL21LOGpwVkxreGFmZzJOalFCSDYxbzlsV2NJQ0Uv?= =?utf-8?B?c3UzVDlRc1IrK1pTWG5jZjZWUWtzMjVWOUNyNWxIS3E3ZHRJK3VEL2VFM3Fj?= =?utf-8?B?YW5TdHpVZHVCbk11VUJETk55U0R3Z0ErQWRtYWNEMGVBcTVrUWNUa0lLNUdt?= =?utf-8?B?K2F2S1N1bzE5RFM4WWEzVStVQmtyaE9Td3pLQTFHYnBES1ZYby9SL1kxS2Vs?= =?utf-8?B?Sk9pV3FuMGpFZ1FrVFRRREJPcndybXIyc0RyR3ZRME9sWkxyRDFLYklzVUJJ?= =?utf-8?B?bWJhQXlNWXc2bGhzNTgzd1lBUVUrUzdvcXVNVndRYVY3Z281dlpUWEN2ZlFh?= =?utf-8?B?b1VwKzh4Vm14TlVmbk56azVzeW1kQ1lOajh2TWE5UjY2Q3FsNDZxdURkQyti?= =?utf-8?B?b0ZWNzdhd3Yvc0s3K2MyUDVmY3FPNC95VTU0aEIwa0ZJRjh1SmpaVTVjTmJr?= =?utf-8?B?bk0wYytwSXJBRklOYTdiU2UxQTlHTlFvODErdkprd0JML1hzaWhpaEZWN1Rq?= =?utf-8?B?TkxRN0lzaFR3SUx3dGJpL1B6RXdpbkhhNEVTbExvdHIySS80cFR4NUsxNFZv?= =?utf-8?B?azlSUm5rcDhrU0ZsN0FvOCtmUFVzNHhPUDNyQ1ZRL0ZtUWRzR2RRN2dUcEFr?= =?utf-8?B?RUwrenBKMXBiazhUNkc4SnBEeWRwSUNqNTV5RmhtVEFhOWNUeTNNUE9UM0Yz?= =?utf-8?Q?XAvfJBoIhVNBi1ytvuyCidnR/kEwqjOkLZ++KNE?= X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjE1TUIxMTk5OzY6WTB6Ry9vUFVBQU9tRjl3cUZZYXFtOXZnSFRt?= =?utf-8?B?eVgrZ2tBL2E3bDVzejNWZWZhVXN2dUR2cDlWUGhHdGdHWXRzOUxrRmpMVnhI?= =?utf-8?B?NjI2Y0ZvZ2ZJam5jR3V0ZTBEcnFlcFBEM1BZSzdWZ2RIeWVUTGdESEJWbFYy?= =?utf-8?B?cnBlUHJzZHFZaWJCMkx1aE5VSXZqNmkyZGJDanJnYkFEVXoyZlJhNDBndWli?= =?utf-8?B?aHdrVkJXYk02azZ3NzljVEVxa253bThYRnpUSXZUMFNjbmtQd1E4NVByWnpI?= =?utf-8?B?R0FzeCsyTzVtbVlwTEdIc2xrVWtQYWovWis0aEQzb3VyOXkrMzRNL3M4amdK?= =?utf-8?B?TDM0aUs0YmZXazFhbFlYOHFWQ2Z3V2tURXg0eFFDR3kvbEY0SWc3TUNhRzA3?= =?utf-8?B?alM3TFdjY1h2cm1taytJMVhVdFJQUEo0S3JyVitkZ2dsWDBheW9nelpHcDQ2?= =?utf-8?B?RjFkLzdCZGx1VlZ2bkJ0YnI0czc0Mk1wd0VwejRMQWJ6cXB3UGdTUzVKcm1H?= =?utf-8?B?aXNEbTZ0cVJBNmdLZVV1L05nVmZ4MDFpSE8vV0MwYm83S1Fmb3U2Q2U4azZt?= =?utf-8?B?STF4ano1VmpQcHhqQmpEakVvN3ZiaHhmUEFsTStDWXhjd3c3K2xjbUtNU3po?= =?utf-8?B?Z3hKSkRYSm9nRmQyeVUrMzhITWlwN2UramlBRmhvTkx0ZWtoQko0ZkhxNGJ3?= =?utf-8?B?OG12SjI0VFJlK1BUVktWMk5tbG9wRm8wTmh5NEpxUFBucW9KUmZoNkc5eUpo?= =?utf-8?B?dEplNEczaTJ2TkR2bXFSTmhwL0RKclFRaXp4d0w1aUtrS0hiTXlzTnFlU21R?= =?utf-8?B?MThKTmJuc1ZsR2tuNkJRMjBYZlJyczRnKzJkdTh5eWlpNnlYVDFjSy84QUhh?= =?utf-8?B?aStuZ25taFhRZkl4VFNpdWhCWVdZUWNKdWZseEpseFRMaEt1bDZoWit4K0ZM?= =?utf-8?B?K3JXVUtxd0l0SVN4dlNicXEzem1NdG9NdTJyWGhwNTNTUGJRUXo3TWxUR2FZ?= =?utf-8?B?VGZOZFB3ZmdJdkRaOHpORzlZUjVQcG1aQStpanlUQmVocmZkdlhRbVl0aERT?= =?utf-8?B?eE5hdUlyaDZoTjlycmZCUzFnaitTREV0WU1CMFllRmxYbHB5LzZ2REhDSHVq?= =?utf-8?B?T2RpMWdXVUpVdFpMNXFrVXNrMVB0Smlndy9JdXJMenBRSkpPL3pTRFZrR3BG?= =?utf-8?B?V29XTThmU1NNalE1VDNWODd1QnJ4ZWFQdHc2Q0h2UFJIeUNOYXM4OERFd3Z1?= =?utf-8?B?eTNOYml6cSt0YjRuWkdZTDgrOHRXaUFpY00xc0M3THU5TzErOVhsWGlwdHZR?= =?utf-8?Q?Mri6XLashWgThHjk4qgEWD/nu6V3Z7I=3D?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1199;5:7XAfRHJfYQnBIL6M1lHtImp0ggxKpRw6GQr8IQo+taCjJpmhstfcO04J35M7ezPkvSW2OxB1htqIgEhxwXaY5ynM5p3Hrj9166K2fTNhwetKpAO7fxRvA5ApfiD3fqbFOpGfLcNj/z3LFarZ+n1WWvyUcXDyxlHhzo7wBhS6NBrEUk8iDfAOkq3p+XsiA1iZD5zkZbk2/2EqjkqO2Mhdp0RdnyOKW11vF4K9nFV/1HyIGuiG+D+pmVZm3TGjyP6b8M7qJN8UIW4IwDLo0tlDzJHJNtbE4D5/2Mq9ueydMVTHob+3JLdi+YsRuzNQF7MTDyqusz2JIz4uY+hxkiCNaVKuwH4nYEn3MbpyktlCbvKFq11q9qeah4cdeyBxwapqtuP1bmDfpdVNtYUuxm1JDPwOxKnWt3fbLD9d7svHzXHKTfbeBRLSI2o5uu675NKWa2UnTbWkMQO6jN4dHPcYcukyapt8ej42khXtQ9S+0KbQDPo/IUC+rQzqN6L5KQIt;24:QYPXtxGd8JCVvhLEyFad0MQZLIIj6oAIyyOiDORUsyh+A+7A2AL7T8B0nKFVZYOeD6DxQ805rmBEXsyDnAJnIEm9xZFT/uJwUDY49wfcsLg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1199;7:WZojdB/CLzv5kbx/1mW70AxaSRC3GFeEHouqFmQYNM2GWtN+jl8fHHvqSXPm/eQ6lwldxLft4u/OffnSspuqsNRqpTTtNZE/H53MQulnI4HePfsXYbXJ18ZOqZb5Fmg/+mp1XbmNkTZun8FgY+Ef82R1OyU1bjO3z22125iX5iCax+CM2GXk7m3RkhZc0Zs7x0BlQ9sDwfsQDI/oiOS3RNIWQlJB0IxGW7aIQ2Joybmcd+3PawUbF7siZUcPHXar9GEnyK0u5F8KCO4ZoDZoOUM4hXwx7RdvKHhi1XAfN5YHM978PWtpFQWy0V3XqCmB7ER5vEA63pKDeSrHszX3/2FPLEGFHFTJNDXC0CJmtukzPU88y04wrtfW9KpxCFFcUC8UuZluP9AliYQessh0piMIqbdATomO6xjdRmAwhDMtHAdHZGaOFrzTitLVyyD/R7fA65+r8Xv3g8A7mL7syI9HNS5U0asd0W4Ea9S46iAuNPzZ91GuU5bLGzvSi7Y08TmOVX1vUuXdX66y/vzPMikmT/r5+C5BQ+SNQn/iwzoClzoy9FrVjThVHqGKk0vOuUi/y9XKhNXndI1XgVwMV7fQLplY6vgF+iuKxUo0FiEW4rtMalAKAMqoPPYIYMN/KPUf60puiKxCaFLE52bU4Y2lMwdR2dDlCW0UecRA5gtvfVs5p/XixFVQHpf9A6huZdAQhYS/ldwWu2S02gMqSPaSdUrj55QdjX/KzCsjMy9dLPycMqSxJkqQNTDVGFUyapgHmylAGsdFwyS7PXIow/ptS5GzlQBsC8gqCFdcEIE= X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1199;20:HBes4kG4I1kUAENkWpf9JO01S3mYPyo43iQbaSNm9c3xU6ZBmFvMGgwUnKu9KQdxx30s55nuz3hgW3zpJxcS1AzIkOV1IsYLfnK4zs5VGRZBafdwAVEp6HhMWisZ0ulVPS85bSo0uEHU+5r8OGhT2m4thiSnxc+0S2pNMGcfCQE= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2017 18:58:04.8699 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR15MB1199 X-OriginatorOrg: fb.com X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-06-28_12:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3745 Lines: 122 On 06/28/2017 12:52 PM, Christoph Hellwig wrote: > On Wed, Jun 28, 2017 at 12:44:00PM -0600, Jens Axboe wrote: >> On 06/28/2017 12:38 PM, Christoph Hellwig wrote: >>> On Wed, Jun 28, 2017 at 12:34:15PM -0600, Jens Axboe wrote: >>>> That's what I sent out. >>> >>> Where? Didn't see that anywhere.. >> >> Looks like you weren't CC'ed on the original thread. About an hour ago. >> >>>> Here it is again. We should get this into 4.12, >>>> so would be great with a review or two. >>> >>> Can we rename __bio_free to bio_uninit and add a comment to bio_init >>> that it must be paried with bio_uninit? >> >> Let's keep it small for 4.12. We can do a cleanup on top of this for >> 4.13. > > The rename is two additional lines for the patch, it's not going to > make a difference.. Sure, why not... >>> Except for that this looks fine, although there are a lot more callers >>> that should get this treatment.. >> >> Should only be an issue for on-stack bio's, since we don't go through >> the put/free path. Did a quick grep, looks like this is one of 3. One >> is floppy, which probably neither has DIF or uses blk-throttle. Then >> there's one in dm-bufio, didn't look too closely at that. Last one is >> this one. > > Well, it's really all callers but bio_alloc_bioset itself that > will need this handling, as only bios that come from bio_alloc_bioset > will be freed through bio_free. Most of them probably don't > support DIF, but they'll also miss the bio_disassociate_task call > this way, and will leak I/O context and css references if block > cgroup support is enabled. I guess local allocs too will be affected. I'm baffled we've had this issue for so long, and nobody's seen it. I knew DIF was never used (basically), but blk-throttle must have some users at least. diff --git a/block/bio.c b/block/bio.c index 888e7801c638..f877d5e6d17f 100644 --- a/block/bio.c +++ b/block/bio.c @@ -240,7 +240,7 @@ struct bio_vec *bvec_alloc(gfp_t gfp_mask, int nr, unsigned long *idx, return bvl; } -static void __bio_free(struct bio *bio) +void bio_uninit(struct bio *bio) { bio_disassociate_task(bio); @@ -253,7 +253,7 @@ static void bio_free(struct bio *bio) struct bio_set *bs = bio->bi_pool; void *p; - __bio_free(bio); + bio_uninit(bio); if (bs) { bvec_free(bs->bvec_pool, bio->bi_io_vec, BVEC_POOL_IDX(bio)); @@ -271,6 +271,11 @@ static void bio_free(struct bio *bio) } } +/* + * Users of this function have their own bio allocation. Subsequently, + * they must remember to pair any call to bio_init() with bio_uninit() + * when IO has completed, or when the bio is released. + */ void bio_init(struct bio *bio, struct bio_vec *table, unsigned short max_vecs) { @@ -297,7 +302,7 @@ void bio_reset(struct bio *bio) { unsigned long flags = bio->bi_flags & (~0UL << BIO_RESET_BITS); - __bio_free(bio); + bio_uninit(bio); memset(bio, 0, BIO_RESET_BYTES); bio->bi_flags = flags; diff --git a/fs/block_dev.c b/fs/block_dev.c index 519599dddd36..0a7404ef9335 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -263,7 +263,10 @@ __blkdev_direct_IO_simple(struct kiocb *iocb, struct iov_iter *iter, kfree(vecs); if (unlikely(bio.bi_error)) - return bio.bi_error; + ret = bio.bi_error; + + bio_uninit(&bio); + return ret; } diff --git a/include/linux/bio.h b/include/linux/bio.h index d1b04b0e99cf..a7e29fa0981f 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h @@ -426,6 +426,7 @@ extern void bio_advance(struct bio *, unsigned); extern void bio_init(struct bio *bio, struct bio_vec *table, unsigned short max_vecs); +extern void bio_uninit(struct bio *); extern void bio_reset(struct bio *); void bio_chain(struct bio *, struct bio *); -- Jens Axboe