Axel, On Mon, May 03, 2021 at 11:07:33AM -0700, Axel Rasmussen wrote: > In a previous commit, we added the mfill_atomic_install_pte() helper. > This helper does the job of setting up PTEs for an existing page, to map > it into a given VMA. It deals with both the anon and shmem cases, as > well as the shared and private cases. > > In other words, shmem_mfill_atomic_pte() duplicates a case it already > handles. So, expose it, and let shmem_mfill_atomic_pte() use it > directly, to reduce code duplication. > > This requires that we refactor shmem_mfill_atomic_pte() a bit: > > Instead of doing accounting (shmem_recalc_inode() et al) part-way > through the PTE setup, do it afterward. This frees up > mfill_atomic_install_pte() from having to care about this accounting, > and means we don't need to e.g. shmem_uncharge() in the error path. > > A side effect is this switches shmem_mfill_atomic_pte() to use > lru_cache_add_inactive_or_unevictable() instead of just lru_cache_add(). > This wrapper does some extra accounting in an exceptional case, if > appropriate, so it's actually the more correct thing to use. > > Signed-off-by: Axel Rasmussen <axelrasmussen@xxxxxxxxxx> (The moving of "ret = -ENOMEM" seems unnecessary, but not a big deal I think) Reviewed-by: Peter Xu <peterx@xxxxxxxxxx> Thanks, -- Peter Xu