[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH RFC PKS/PMEM 22/58] fs/f2fs: Utilize new kmap_thread()
 
- To: Matthew Wilcox <willy@xxxxxxxxxxxxx>
 
- From: Ira Weiny <ira.weiny@xxxxxxxxx>
 
- Date: Mon, 12 Oct 2020 12:53:54 -0700
 
- Cc: Dave Hansen <dave.hansen@xxxxxxxxx>, Eric Biggers <ebiggers@xxxxxxxxxx>,	Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,	Thomas Gleixner <tglx@xxxxxxxxxxxxx>,	Ingo Molnar <mingo@xxxxxxxxxx>, Borislav Petkov <bp@xxxxxxxxx>,	Andy Lutomirski <luto@xxxxxxxxxx>,	Peter Zijlstra <peterz@xxxxxxxxxxxxx>, linux-aio@xxxxxxxxx,	linux-efi@xxxxxxxxxxxxxxx, kvm@xxxxxxxxxxxxxxx,	linux-doc@xxxxxxxxxxxxxxx, linux-mmc@xxxxxxxxxxxxxxx,	Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>,	dri-devel@xxxxxxxxxxxxxxxxxxxxx, linux-mm@xxxxxxxxx,	target-devel@xxxxxxxxxxxxxxx, linux-mtd@xxxxxxxxxxxxxxxxxxx,	linux-kselftest@xxxxxxxxxxxxxxx, samba-technical@xxxxxxxxxxxxxxx,	ceph-devel@xxxxxxxxxxxxxxx, drbd-dev@xxxxxxxxxxxxxxxx,	devel@xxxxxxxxxxxxxxxxxxxx, linux-cifs@xxxxxxxxxxxxxxx,	linux-nilfs@xxxxxxxxxxxxxxx, linux-scsi@xxxxxxxxxxxxxxx,	linux-nvdimm@xxxxxxxxxxxx, linux-rdma@xxxxxxxxxxxxxxx,	x86@xxxxxxxxxx, amd-gfx@xxxxxxxxxxxxxxxxxxxxx,	linux-afs@xxxxxxxxxxxxxxxxxxx, cluster-devel@xxxxxxxxxx,	linux-cachefs@xxxxxxxxxx, intel-wired-lan@xxxxxxxxxxxxxxxx,	xen-devel@xxxxxxxxxxxxxxxxxxxx, linux-ext4@xxxxxxxxxxxxxxx,	Fenghua Yu <fenghua.yu@xxxxxxxxx>, ecryptfs@xxxxxxxxxxxxxxx,	linux-um@xxxxxxxxxxxxxxxxxxx, intel-gfx@xxxxxxxxxxxxxxxxxxxxx,	linux-erofs@xxxxxxxxxxxxxxxx, reiserfs-devel@xxxxxxxxxxxxxxx,	linux-block@xxxxxxxxxxxxxxx, linux-bcache@xxxxxxxxxxxxxxx,	Jaegeuk Kim <jaegeuk@xxxxxxxxxx>,	Dan Williams <dan.j.williams@xxxxxxxxx>, io-uring@xxxxxxxxxxxxxxx,	linux-nfs@xxxxxxxxxxxxxxx, linux-ntfs-dev@xxxxxxxxxxxxxxxxxxxxx,	netdev@xxxxxxxxxxxxxxx, kexec@xxxxxxxxxxxxxxxxxxx,	linux-kernel@xxxxxxxxxxxxxxx,	linux-f2fs-devel@xxxxxxxxxxxxxxxxxxxxx,	linux-fsdevel@xxxxxxxxxxxxxxx, bpf@xxxxxxxxxxxxxxx,	linuxppc-dev@xxxxxxxxxxxxxxxx, linux-btrfs@xxxxxxxxxxxxxxx
 
- Delivery-date: Mon, 12 Oct 2020 19:54:09 +0000
 
- Ironport-sdr: n76ml+Lh/mxdJ/ZqnzGph4iG6/stFlHRZRh+D6Fm5ILZbTNtYD9klDu1H+GIcodF01kPL1mPuR 58DhqwNLc/PQ==
 
- Ironport-sdr: fkO3cV1AstS50IlWJFeIR7IMIWTUvxOVu0RxBH9tBAb2aFjzmjvlioAsa4gAQcEu3X0zxNtHVX KqidbmrXoAPg==
 
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
 
 
 
On Mon, Oct 12, 2020 at 05:44:38PM +0100, Matthew Wilcox wrote:
> On Mon, Oct 12, 2020 at 09:28:29AM -0700, Dave Hansen wrote:
> > kmap_atomic() is always preferred over kmap()/kmap_thread().
> > kmap_atomic() is _much_ more lightweight since its TLB invalidation is
> > always CPU-local and never broadcast.
> > 
> > So, basically, unless you *must* sleep while the mapping is in place,
> > kmap_atomic() is preferred.
> 
> But kmap_atomic() disables preemption, so the _ideal_ interface would map
> it only locally, then on preemption make it global.  I don't even know
> if that _can_ be done.  But this email makes it seem like kmap_atomic()
> has no downsides.
And that is IIUC what Thomas was trying to solve.
Also, Linus brought up that kmap_atomic() has quirks in nesting.[1]
>From what I can see all of these discussions support the need to have something
between kmap() and kmap_atomic().
However, the reason behind converting call sites to kmap_thread() are different
between Thomas' patch set and mine.  Both require more kmap granularity.
However, they do so with different reasons and underlying implementations but
with the _same_ resulting semantics; a thread local mapping which is
preemptable.[2]  Therefore they each focus on changing different call sites.
While this patch set is huge I think it serves a valuable purpose to identify a
large number of call sites which are candidates for this new semantic.
Ira
[1] 
https://lore.kernel.org/lkml/CAHk-=wgbmwsTOKs23Z=71EBTrULoeaH2U3TNqT2atHEWvkBKdw@xxxxxxxxxxxxxx/
[2] It is important to note these implementations are not incompatible with
each other.  So I don't see yet another 'kmap_something()' being required.
 
 
    
     |