[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.
|