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 X-Spam-Level: X-Spam-Status: No, score=-0.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6E49BC2BA19 for ; Sat, 11 Apr 2020 23:22:09 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 3223620769 for ; Sat, 11 Apr 2020 23:22:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="MwXAfGgw" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3223620769 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id D18F08E00BE; Sat, 11 Apr 2020 19:22:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CC9B28E0007; Sat, 11 Apr 2020 19:22:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C068F8E00BE; Sat, 11 Apr 2020 19:22:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0229.hostedemail.com [216.40.44.229]) by kanga.kvack.org (Postfix) with ESMTP id A96568E0007 for ; Sat, 11 Apr 2020 19:22:08 -0400 (EDT) Received: from smtpin28.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 6069F180AD801 for ; Sat, 11 Apr 2020 23:22:08 +0000 (UTC) X-FDA: 76697149536.28.seat26_2fbe551a76420 X-HE-Tag: seat26_2fbe551a76420 X-Filterd-Recvd-Size: 3693 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf15.hostedemail.com (Postfix) with ESMTP for ; Sat, 11 Apr 2020 23:22:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=kQkDW0nh6/SfP4OPM8VhrnzpbvEqadvFvedQUkcdAZw=; b=MwXAfGgw1DYwAIj42DDJRJxpi8 lOeqwfBQzpC1GCKO/kqjSXId1O3AJyZk7Y/nf88jms+vOJlN1O7nC6M/pdX+dxi+/7M8FLPVZMm7p qAQbgsYA7fpbytNPN2ux44QglDhxGrjUFCfZ5sUgsjDBR8oE8Hm9uF/FmBz6kyu5YgCnlpO89jcUL naLX3uHkXsfIU/XXqwcue1vzkxpqh2Ec3+SvIIrJpH2MWQLQk66ayvCm+0UPGzM1fXTrCP7yWJI6Q bGp04EULVg5zXezCjDZcPtDyzi8ROk8i3Xzum6JLZ6pme6aZMSi5yuMB1JwTsgdu+jq4K6WfejwOr C/lJQNdQ==; Received: from willy by bombadil.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNPRt-0005TR-7h; Sat, 11 Apr 2020 23:22:05 +0000 Date: Sat, 11 Apr 2020 16:22:05 -0700 From: Matthew Wilcox To: Linus Torvalds Cc: linux-fsdevel , Linux-MM , Linux Kernel Mailing List Subject: Re: [GIT PULL] Rename page_offset() to page_pos() Message-ID: <20200411232205.GJ21484@bombadil.infradead.org> References: <20200411203220.GG21484@bombadil.infradead.org> <20200411214818.GH21484@bombadil.infradead.org> <20200411220603.GI21484@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: 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 Sat, Apr 11, 2020 at 03:09:35PM -0700, Linus Torvalds wrote: > On Sat, Apr 11, 2020 at 3:06 PM Matthew Wilcox wrote: > > > > But we _have_ an offset_in_page() and it doesn't take a struct page > > argument. > > .. it doesn't take a struct page argument because a struct page always > has one compile-time fixed size. > > The only reason you seem to want to get the new interface is because > you want to change that fact. > > So yes, you'd have to change the _existing_ offset_in_page() to take > that extra "which page" argument. > > That's not confusing. Unfortunately there isn't always a struct page around. For example: int __do_munmap(struct mm_struct *mm, unsigned long start, size_t len, struct list_head *uf, bool downgrade) { unsigned long end; struct vm_area_struct *vma, *prev, *last; if ((offset_in_page(start)) || start > TASK_SIZE || len > TASK_SIZE-start) return -EINVAL; where we don't care _which_ page, we just want to know the offset relative to the architecturally defined page size. In this specific case, it should probably be changed to is_page_aligned(start). There are trickier ones like on powerpc: unsigned long vmalloc_to_phys(void *va) { unsigned long pfn = vmalloc_to_pfn(va); BUG_ON(!pfn); return __pa(pfn_to_kaddr(pfn)) + offset_in_page(va); } where there actually _is_ a struct page, but it will need to be found. Maybe we can pass in NULL to indicate to use the base page size. Or rename all current callers to offset_in_base_page() before adding a struct page pointer to offset_in_page(). Tedious, but doable.