Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp679050pxv; Thu, 15 Jul 2021 13:16:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxou2N7Zzi5vApnLhT0dR+1ecE+hDXTAaXQnspWcwIaFnCx4UNVhjMw/20+q8MWBkFsSSu1 X-Received: by 2002:a5d:8154:: with SMTP id f20mr4559886ioo.89.1626380201181; Thu, 15 Jul 2021 13:16:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626380201; cv=none; d=google.com; s=arc-20160816; b=R4QSi3nGc6CsaQhPxv/vy2DNUOXFF/l1oDC37/Ocf8yz51W38pEiel8SclsL/BgN1T jMYn8CR6Lc4QqlEav1pW4lwYqDCkNypbdcdGwoPnFLkSaOegatOilgvg+adM5pi2Cwif ZyJDhQcVmU45qNJiMuEi+PKmDmvLHUOR5DGuhrBM5DlTu/fTqmq4cdtXPveTpysp0Rqt lEzI9GZO3AajJvxGKc0dbNd9y41RkoI5zV79VHBPQ0AHwC4FX3+CBdEMNKqRLz9hqPMT I/3s7RtkovHXJD1FP+guxR9wj8O6n/sWSbQ1FQkDU6bt9qtMTWoORrE0tvKjleimFogl +6WQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=2wghNqx4JftAFaj2ufqftGGQbCHL8Jx+CkAGBQbGsx4=; b=uuvWv3kM0ReFHc12GD8k5rOaaEMAKYi3QpBMlV0qmDZrceaPRSnpzGag1YwuWruCAn gIVVjPG0tPCKCCwMUgltuBd1EvRS4jt0TyaEXREfe7roHgo+ZiMhRT3JJdrJkKpVng2k WP2LmmNQzggkij14WaXmX177yHLRxnhcrBdkyyLrVefY1lLBRvCJtdoN9kUVu0AXMFM6 Ka1NlXySWB113RZjdKhteWfSkhfkQicQzXXta9ugfFoH6a7TOFLz+kp7SAbR1WsFIL3U BzUqo85NN4X2Y4P/+qN76vmcWrE8dp1Wilf5fE+qApzolOGaahgDQy/1JCVcxwB3N5di voNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=MV33nR12; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i1si7589106ils.142.2021.07.15.13.16.29; Thu, 15 Jul 2021 13:16:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=MV33nR12; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240514AbhGOUSg (ORCPT + 99 others); Thu, 15 Jul 2021 16:18:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:48027 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242612AbhGOUR6 (ORCPT ); Thu, 15 Jul 2021 16:17:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1626380104; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2wghNqx4JftAFaj2ufqftGGQbCHL8Jx+CkAGBQbGsx4=; b=MV33nR12rNV/tssz5p9RcnE5UErRbIqf5khPI0kYBanL+kitJjCdPxETwsSv3NnWUpRI3Z IFIyQntluNBH+kd38YXymCpa/t7kQUQgO3ScRjMa6N1IJ2HSvsjazxuL5N43YFB4qY+1Qq irgkpHSAtw8pLA+kUWhvk3inmY3ZHcQ= Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-410-T6coLU7bN7KUvuFpogxSPw-1; Thu, 15 Jul 2021 16:14:41 -0400 X-MC-Unique: T6coLU7bN7KUvuFpogxSPw-1 Received: by mail-qt1-f198.google.com with SMTP id j16-20020ac855100000b029025bf786be09so4899842qtq.20 for ; Thu, 15 Jul 2021 13:14:30 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=2wghNqx4JftAFaj2ufqftGGQbCHL8Jx+CkAGBQbGsx4=; b=LV2f0LWThL/28E5qL96VY+OboK7XHPv+wav5xkP8gVK3M/toTBPiCI6fs6TBzqQtgK NkXXG/XK4q0mqP3ajCVMPkb+JJEECazo4gonfSrXqutp6c9wgbzo0nZVl6YnYLBVlQaF vy3ppqclq+Bcw63W1s2QxaZzqyshCnU+3qbNlFCXLmEMXGvuThPimdz/MrgfqCPASykO +a6dHMQyRRGRollRQK+lEBvn2Wm0lKpNGTyTiw2cUVrpa/Ov3SpGc2WBHypDLX1G6t/9 SwnfMioTvHE2pXCgaxFf30ldmvE6k2XQAjxUqnmxE57u4tD+qRPcPlQzuFHuTd5H6uyE fYnA== X-Gm-Message-State: AOAM531DEUIzTvoKJG9n9axfEFgZi39LadPaq42JPUqUyxrMa8siCXB6 e1BkRE9DWIY8F2ozDwl/DujcylMNJW/gUmeZ9PDWVnsMO9hGWPUYeeaHdFNklGwXUS6RbHD/A/4 NqwGJZYTKs7KDwoBeAiKciXGm X-Received: by 2002:ac8:7f87:: with SMTP id z7mr5609319qtj.238.1626380068405; Thu, 15 Jul 2021 13:14:28 -0700 (PDT) X-Received: by 2002:ac8:7f87:: with SMTP id z7mr5609296qtj.238.1626380068187; Thu, 15 Jul 2021 13:14:28 -0700 (PDT) Received: from localhost.localdomain (bras-base-toroon474qw-grc-65-184-144-111-238.dsl.bell.ca. [184.144.111.238]) by smtp.gmail.com with ESMTPSA id p64sm2915206qka.114.2021.07.15.13.14.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jul 2021 13:14:27 -0700 (PDT) From: Peter Xu To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Jason Gunthorpe , Mike Kravetz , David Hildenbrand , Alistair Popple , Matthew Wilcox , "Kirill A . Shutemov" , Hugh Dickins , Tiberiu Georgescu , Andrea Arcangeli , Axel Rasmussen , Nadav Amit , Mike Rapoport , Jerome Glisse , Andrew Morton , Miaohe Lin , peterx@redhat.com Subject: [PATCH v5 01/26] mm/shmem: Unconditionally set pte dirty in mfill_atomic_install_pte Date: Thu, 15 Jul 2021 16:13:57 -0400 Message-Id: <20210715201422.211004-2-peterx@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210715201422.211004-1-peterx@redhat.com> References: <20210715201422.211004-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It was conditionally done previously, as there's one shmem special case that we use SetPageDirty() instead. However that's not necessary and it should be easier and cleaner to do it unconditionally in mfill_atomic_install_pte(). The most recent discussion about this is here, where Hugh explained the history of SetPageDirty() and why it's possible that it's not required at all: https://lore.kernel.org/lkml/alpine.LSU.2.11.2104121657050.1097@eggly.anvils/ Currently mfill_atomic_install_pte() has three callers: 1. shmem_mfill_atomic_pte 2. mcopy_atomic_pte 3. mcontinue_atomic_pte After the change: case (1) should have its SetPageDirty replaced by the dirty bit on pte (so we unify them together, finally), case (2) should have no functional change at all as it has page_in_cache==false, case (3) may add a dirty bit to the pte. However since case (3) is UFFDIO_CONTINUE for shmem, it's merely 100% sure the page is dirty after all, so should not make a real difference either. This should make it much easier to follow on which case will set dirty for uffd, as we'll simply set it all now for all uffd related ioctls. Meanwhile, no special handling of SetPageDirty() if there's no need. Cc: Hugh Dickins Cc: Axel Rasmussen Cc: Andrea Arcangeli Signed-off-by: Peter Xu --- mm/shmem.c | 1 - mm/userfaultfd.c | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index 70d9ce294bb4..dc9f95b5fb34 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2449,7 +2449,6 @@ int shmem_mfill_atomic_pte(struct mm_struct *dst_mm, shmem_recalc_inode(inode); spin_unlock_irq(&info->lock); - SetPageDirty(page); unlock_page(page); return 0; out_delete_from_cache: diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c index 0e2132834bc7..b30a3724c701 100644 --- a/mm/userfaultfd.c +++ b/mm/userfaultfd.c @@ -69,10 +69,9 @@ int mfill_atomic_install_pte(struct mm_struct *dst_mm, pmd_t *dst_pmd, pgoff_t offset, max_off; _dst_pte = mk_pte(page, dst_vma->vm_page_prot); + _dst_pte = pte_mkdirty(_dst_pte); if (page_in_cache && !vm_shared) writable = false; - if (writable || !page_in_cache) - _dst_pte = pte_mkdirty(_dst_pte); if (writable) { if (wp_copy) _dst_pte = pte_mkuffd_wp(_dst_pte); -- 2.31.1