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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CEC9CC433F5 for ; Sun, 9 Jan 2022 08:01:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0934F6B0072; Sun, 9 Jan 2022 03:01:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0427E6B0073; Sun, 9 Jan 2022 03:01:55 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DD77C6B0074; Sun, 9 Jan 2022 03:01:55 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0089.hostedemail.com [216.40.44.89]) by kanga.kvack.org (Postfix) with ESMTP id C79476B0072 for ; Sun, 9 Jan 2022 03:01:55 -0500 (EST) Received: from smtpin11.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 6837C181DFACC for ; Sun, 9 Jan 2022 08:01:55 +0000 (UTC) X-FDA: 79010004990.11.9B6FD03 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2060.outbound.protection.outlook.com [40.107.244.60]) by imf25.hostedemail.com (Postfix) with ESMTP id B2AA6A0009 for ; Sun, 9 Jan 2022 08:01:54 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZsFcEF7Tv/qqkf9uhrAh4ZxNcvWnn1MClNO90mnKL1I5NAm32GJTRdaD459S9a+YhDZpU6WyBpWRSvihfvJ4zWkZNGogv2+tW/+vnm2Xske6VdIjl7q/he7rcDD1oc58nS8V1xBgB6Vfbpy2kuItXS0OOyJKfRM/h95vVFyzB6/xlJ37UgtBYRChZ+GR8RW7LNwzno+e8NQU+CNbTZ3dw2ouRl95ZD7T74iVv2SWZYri2vtp7eTyzSObvljyqf+PXdZwJsd8Vezgk7rOQ+wMrQCMLFbSmM76Uk9ZplXaq19Ukx3ZCHFZ1x6XRZYCQ+CjrgzZoxtI6bqzyEXyXH7xoQ== 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=Z1xTbSCDapcTggWQ1iKq0N3xXj0aNqJ40vQNkFYCTM4=; b=IVNljabVu4HdYTRz6DiISjwS0lM0yNODpOQDqRkRRV7Av8CZxZ+DQveV97/5UIsgqQHbblEtFp36lefo3jZ75w8S4Zf/LN7w+QRc6m9TSujNnoHv3GQcWFKY45c9k5KiFPykNJ5dvFt+x0ZicQC+WFkqMu0jb1uhuOP94oDjrfgp7ko6/a+igtTpqho+h/ELBTUI+ikNMcV1zRhALsOhI3TJIqE6j+5pt5PWg6yndjzLv+NvioJ24LOCxkVhh5ctYPWDdcn4/v7zrrTBN73ws+/Yv07MbtbQGkPO2zJYZKWas3k3a5x7L2gTrHqMXqwinm/v1IrqRhifnoRDr/bRYA== 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=Z1xTbSCDapcTggWQ1iKq0N3xXj0aNqJ40vQNkFYCTM4=; b=CsnXKcuEHCsKtnPqUu34lhUZU7UeMZZaLOfwfHjCT9cCqTUAgfxouVe5u5V5nKfwqJI7/VoRA21lvsXilRYRJv1MpgkAeu7JT8FwsSRQ5yYSJ6IK/q5zF5JFpSbRRM+3SL914TUBoh1bpvOQRSC/9IWrxUZbIYHYmtLTFwnqO4dctNH7oJ2WiQ/NK+P/UoAG702UC9YGQhTlEvGka/QUz4h8U9pCV1S+oPBFi6qpvjEl1RE5jiCyBWI+/Ah1Wirskw7Ws06gXPbILzK6NevB2wHX2PcgPfyfQb7nH+SFU0LWORGU+9LcSkeb8hS9Vc8TAMW9/WkLIcT1+UPopOK+HA== Received: from BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) by BYAPR12MB3191.namprd12.prod.outlook.com (2603:10b6:a03:133::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.7; Sun, 9 Jan 2022 08:01:52 +0000 Received: from BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::8496:16fd:65c5:4af7]) by BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::8496:16fd:65c5:4af7%4]) with mapi id 15.20.4867.011; Sun, 9 Jan 2022 08:01:52 +0000 Message-ID: <20c2d9d3-bbbe-2f11-f6bf-a0e3578c6a71@nvidia.com> Date: Sun, 9 Jan 2022 00:01:49 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: Re: [PATCH 14/17] gup: Convert for_each_compound_head() to gup_for_each_folio() Content-Language: en-US To: Matthew Wilcox Cc: linux-mm@kvack.org, Andrew Morton , Christoph Hellwig , Jan Kara References: <20220102215729.2943705-1-willy@infradead.org> <20220102215729.2943705-15-willy@infradead.org> From: John Hubbard In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: BY5PR20CA0013.namprd20.prod.outlook.com (2603:10b6:a03:1f4::26) To BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 58d4e2f4-3bef-4f61-30c5-08d9d3464b92 X-MS-TrafficTypeDiagnostic: BYAPR12MB3191:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6ZV+Q6avXf+XJHYjg2onIyRF7BS1z1O/lRJ0j1boAzmK+jlA0d8jo669BDa6CePK2v7rdhYMPHrMCEKBO6axNj3t+mrKXO6/9WaSGnlcBMv6clnIjAR8QuHZ6t9QObbZiNw0aH4gImGVo2p90smNKiO3m4dkvdopLCFIcoQHxXYckZwNK10MTuv99EMtHO3bKbc+QYN6NGJgIBHQ8seLI2PEAy59XUpnAhU1vLTXPIDWT7bWD+c8faH835rAVrWjNyojxxdn1EAs3Q+rbhUWgV7urIqn6NiL9FwgzVyCpjQGd4qgksm1FJdF6hkGn/hzwdAGItyBsC5pPypOopCekBLe2AVFx/mtM+jM9Qqhnk2gFp1HAtm2ONBibyicaAvyRWk/89RyOvqzINhPjikSEzFwygetMD9pZ47W0O4loSlkU7Es/ZN5/iVNpn3E+w/jjXpd1Ydp/+yKaHigmzdZV5jiaUzVENaOoUNEsCQvXqf8Nm0FjE1yB/bRB/HrF0ocCcRl4RXw8xkyFBQ1qZ9Zq7Y0MMpQtLHTG6D+F2KaGimp79ctGZJDtFa9p/Wt3XTf6dae2fDr9yEIjqq8eZTcpp0dJPONYfGElY6iSaRmybOqy+oWqOGGshRoPqvYhYksiqR72p/5BIeekwehhzx6TxtElxe/LfF1TYPHxNBYi67/hm6hdUAYcUZ2igZjRTv8VC6cSL7uLUyG8Un1iQ1ZcHuULgnnoA9HGWNV5Kp+6ok= 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:(4636009)(366004)(66556008)(66946007)(38100700002)(31696002)(186003)(8936002)(316002)(2616005)(4326008)(6666004)(5660300002)(36756003)(6506007)(86362001)(53546011)(66476007)(6486002)(6512007)(508600001)(8676002)(83380400001)(54906003)(31686004)(6916009)(2906002)(26005)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VkoxT01EaVdMdXFoMlQzeFJ6eVhhRzcybGdSOUZTcGhHMWlIOEN6Vk9xaFBx?= =?utf-8?B?c3drOEl5bWJQbFYzNUE3VzRwbkpPL0lMazFBOUlpV2pqYi80eXk1RVNVTlB2?= =?utf-8?B?dFBkVzhaYllST3lLaUcxbnZJRWt1Qy9lKzM2MnJFNUs3ZFBvY0txcHBKYlcv?= =?utf-8?B?b2Z6NFJ0Tnh0K1BxT2h4U3VObVZJMStTeEZlS3RrZmNvd0xrSFJ2bkNqdjBJ?= =?utf-8?B?ZWxRRzBKVzFjcHY1bTQ0WTlMcTJ6aHdNeUxKMkQ5QnA3TE9SK0E1NW1DcDhC?= =?utf-8?B?aHl2RjQ4cmJYTnc2SWlRTitHbGtSbnI2M3ZFdS9UcVhvMW1pc1VicVpTZFVw?= =?utf-8?B?RUplUGVKM3V2bS80ZlBFcXhwVE94U3hYRlQxTmRpQmptSXFMRmZVamU4QkR0?= =?utf-8?B?Q3dYbWh1dFQ1ZkV6WnVSbDBIak1BTnJPR2kzTVMxUWhNVnVNaDU4Z3A5Qm9Q?= =?utf-8?B?NUtwUFZxL2d5L0IvZWFrSkkwdWNtS3VzUkN2RUprTnpXWmdZbjJMeU9iclRi?= =?utf-8?B?RkdHTERUT29UblFBMG1kZmFwSDg2MnVqcnhiaXVDQk92c0FnYk80eDZVM0g1?= =?utf-8?B?VjVEU2Y3QTZUUFlvN3diMjFRNHJzYnlGSmlCYjZHTHA2RlJKWmY2QThPYkFN?= =?utf-8?B?MWs2ajk3TjkreGc3eXdMd1N1NS91V29ETlpzNGp3a2NqYmtzQWJTVkhtS0ZU?= =?utf-8?B?YXk3YnlsWmozeEFOTUJaZzlEWUh2L3IxQ2czQUtDNmZseFA5STRKM09wa29Q?= =?utf-8?B?cFBqM2dTd210dElGSFp0S3lEVkNxSEZNcDlsSWxrZlF4NG92Qmsyck5hV1du?= =?utf-8?B?eXc2d2QrK29RRVdJN1pJbG5UZm1mNm0xQTdHWFFNdVlMNEUwZ0h5SFdLcnBh?= =?utf-8?B?ZUQzR3c3bkFESEd5Z0Ixa3piVzAwTGt0dW4rM2F5V2pHQVNoTkJrblhVOTZU?= =?utf-8?B?Z2pPalRwN0tVRFZzV05RM3pSZGdVM1ZVcDJadTRSNHpGcDJPQi9aM0VVV0xo?= =?utf-8?B?NFBaeEtFR1orbHhpMjNIeW4rNmJscHp4ZUxlS0NhOVMveUtvdDZkQjVuaVJn?= =?utf-8?B?NFliczliOTc0eElGaGZ0L0ptUlJYeDRKYXJxWm9hN3h2Q2pLV045WmRiMW00?= =?utf-8?B?eXV6WHZSR1hVcW90WkJxaTluK292Z0VYK21pSFlDZUJFanhzVFRWV0lHSXV4?= =?utf-8?B?cDBKTyt0dEJkTlNZTzA3S2VaWkVzaGc4WEpwalVYU0YwT2M0dGJMZlJDalAx?= =?utf-8?B?K0FabnFUUkhCWW1JSDNnWlJOeWRMMi83ZEVOMGpMWnQ2MWdrZUE2V1U1citw?= =?utf-8?B?RTFNM0cySW5RUGs5K3BjSzR5V3J3cEUweFNIR050MlVSMDA2a0ZVTXF4NjVh?= =?utf-8?B?MUtEd2NTSWZKMXY0Q0dFWWh5MVV0a3JRVlNjKzB3c0VTc1dLQVEyOHNZMTdu?= =?utf-8?B?czhGSzlkOWFJbVJxM1V5MUl2dEF1NTFNRzg4ZnVqN3I4ZmdDSURPUndiay9k?= =?utf-8?B?RkpQTy82MzdSVHp3Qy9zdS9rSFRyUnBpV2txOXlDQUtTc3FzOVBaQjNXOWdm?= =?utf-8?B?cStBT3hoZlM2T3oxMGxscHFBdk5tdXE1MUlmZTNZR1lsRWh3MUlMWUNvbmlM?= =?utf-8?B?SGNFMHBrVzYzSk10WjdHZ1IzNmgwL0x5MFNPOHB4d2l4eXltMGd0TTZRUm5F?= =?utf-8?B?d1lscTdyVXdrUTBRb293bkltMjBSV2ZGY2lpRnNodCtSSzR5L0FQQTZpZzBu?= =?utf-8?B?TTFFdER1cTJjYm0zYlZsNDF3NlZrcDNMMEV6RFlPRkx1cWZPTElZNmVDN3Rx?= =?utf-8?B?NGVhSUxheW1kakZ2V202UzNhRmVmVDQwcXFKMFlpVEtONzF3K0JQV0dvSkdB?= =?utf-8?B?cGh0MXJmSExZb1lSYnBQZ2ZvL2pHRitNQkI1QUpEVGJ4MlVBNlA3NzdLaGhL?= =?utf-8?B?Nmk0Y2VLNVA2ZDFKQk1VR2RjcitZVjh0SzJPSHNmdjhKSkRwSy9kZnYrOTVO?= =?utf-8?B?aWJwUzROcUQrOERvQjUvVGVEK3JBZnFoYUVDMDdlS002dmdqajRONnZ6VmJJ?= =?utf-8?B?MUc3M2xYSlMrcVhHR3FRNElzVzhnNzE2MmZLSW5ycHNEb1ZTY0YvcHpnallS?= =?utf-8?B?dFRuaEdDNnNOMjdaelc0bWx2ZS9zSkJzSE04QTNwTG4zTnowUytsY09RY1Yw?= =?utf-8?Q?H2WK9ghKZXQxd1xT4Y0LGzI=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58d4e2f4-3bef-4f61-30c5-08d9d3464b92 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4130.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2022 08:01:52.1491 (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: dC2Y936fcl87PGnaKGeK3eX9p6SH1vD1UvHiiVWkLdAS6oAtkGFXPGFPEoibHDT0MfieDArLDppermDruepuaQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB3191 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: B2AA6A0009 X-Stat-Signature: t4we1yqwjottnhosu13qbrfiwusq6ewg Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=CsnXKcuE; spf=none (imf25.hostedemail.com: domain of jhubbard@nvidia.com has no SPF policy when checking 40.107.244.60) smtp.mailfrom=jhubbard@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com X-HE-Tag: 1641715314-347357 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: On 1/8/22 20:39, Matthew Wilcox wrote: > On Wed, Jan 05, 2022 at 12:17:46AM -0800, John Hubbard wrote: >>> + if (!folio_test_dirty(folio)) { >>> + folio_lock(folio); >>> + folio_mark_dirty(folio); >>> + folio_unlock(folio); >> >> At some point, maybe even here, I suspect that creating the folio >> version of set_page_dirty_lock() would help. I'm sure you have >> a better feel for whether it helps, after doing all of this conversion >> work, but it just sort of jumped out at me as surprising to see it >> in this form. > > I really hate set_page_dirty_lock(). It smacks of "there is a locking > rule here which we're violating, so we'll just take the lock to fix it" > without understanding why there's a locking problem here. > > As far as I can tell, originally, the intent was that you would lock > the page before modifying any of the data in the page. ie you would > do: > > gup() > lock_page() > addr = kmap_page() > *addr = 1; > kunmap_page() > set_page_dirty() > unlock_page() > put_page() > > and that would prevent races between modifying the page and (starting) > writeback, not to mention truncate() and various other operations. > > Clearly we can't do that for DMA-pinned pages. There's only one lock > bit. But do we even need to take the lock if we have the page pinned? > What are we protecting against? This is a fun question, because you're asking it at a point when the overall problem remains unsolved. That is, the interaction between file-backed pages and gup/pup is still completely broken. And I don't have an answer for you: it does seem like lock_page() is completely pointless here. Looking back, there are some 25 callers of unpin_user_pages_dirty_lock(), and during all those patch reviews, no one noticed this point! Anyway...so maybe most or even all of the unpin_user_pages_dirty_lock() callers do not really need a _lock variant, after all. Or, maybe it really is required and we're overlooking some subtle filesystem-related point. It would be nice to get a second look from Christoph Hellwig and Jan Kara (+CC). > > If it's truncate(), I think we must already have protection against > that as we could easily have: > > pup() > truncate() > lock_page() > set_page_dirty() > unlock_page() > unpin > I think truncate vs. gup/pup() is no more and and no less broken in this regard than it's ever been. We need another LSF/MM conference with some more shouting, and/or file leases, for that. :) thanks, -- John Hubbard NVIDIA