Messages in this thread | ![/](/images/icornerl.gif) | | From | Yosry Ahmed <> | Date | Thu, 9 Mar 2023 15:09:01 -0800 | Subject | Re: [PATCH v2 4/6] shmem: skip page split if we're not reclaiming |
| |
On Thu, Mar 9, 2023 at 3:05 PM Luis Chamberlain <mcgrof@kernel.org> wrote: > > In theory when info->flags & VM_LOCKED we should not be getting > shem_writepage() called so we should be verifying this with a > WARN_ON_ONCE(). Since we should not be swapping then best to ensure > we also don't do the folio split earlier too. So just move the check > early to avoid folio splits in case its a dubious call. > > We also have a similar early bail when !total_swap_pages so just move > that earlier to avoid the possible folio split in the same situation. > > Acked-by: David Hildenbrand <david@redhat.com> > Reviewed-by: Christian Brauner <brauner@kernel.org> Reviewed-by: Yosry Ahmed <yosryahmed@google.com>
> Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> > --- > mm/shmem.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/mm/shmem.c b/mm/shmem.c > index 68e9970baf1e..dfd995da77b4 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -1350,6 +1350,12 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) > if (WARN_ON_ONCE(!wbc->for_reclaim)) > goto redirty; > > + if (WARN_ON_ONCE(info->flags & VM_LOCKED)) > + goto redirty; > + > + if (!total_swap_pages) > + goto redirty; > + > /* > * If /sys/kernel/mm/transparent_hugepage/shmem_enabled is "always" or > * "force", drivers/gpu/drm/i915/gem/i915_gem_shmem.c gets huge pages, > @@ -1365,10 +1371,6 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) > } > > index = folio->index; > - if (info->flags & VM_LOCKED) > - goto redirty; > - if (!total_swap_pages) > - goto redirty; > > /* > * This is somewhat ridiculous, but without plumbing a SWAP_MAP_FALLOC > -- > 2.39.1 >
| ![\](/images/icornerr.gif) |