Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp6831403ybe; Wed, 18 Sep 2019 09:44:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqyxfmCo4hvtp4uXYw8n6n53K3uFDf//CALEo1gavf/0CUhdNO1wihfISV29R/wi4D88sd7r X-Received: by 2002:aa7:d904:: with SMTP id a4mr11320576edr.41.1568825045908; Wed, 18 Sep 2019 09:44:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568825045; cv=none; d=google.com; s=arc-20160816; b=FYPh2KgQs0kPG6YoH0DSXsYIFXS4RtE4165dA6uHn8k6IVLhws61mhclYP0sH4MAEb 6tk9iH9hc9ojDjLGkpaTV2SYYvc9PVEIuMCAjmX1nL9WSdZzR2HU1gdA9yS6wInXTk47 uKmN8Fqbi8rNsQSh+pTiQoK/GShRyjcO9M4wnzyazc15S5JR/hiqOtRzT57p21LjuW54 fB8LG1nzrm1GQrY6eKLE0wWzVWoLqzNCpOIygSOVNs/lzk92soL2Gvi0JUY0izV11gXN iCLRYTbb0/WxqCoLlnkVAsVMDnxemE0a34io6x3mp7dHF/Wg7fs11M/QCLFDsS3NDHCm sKzg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=ofTkjvEUSpXrIs73m3lky1N1Didfq1+b+91cMsW/1Rg=; b=Y62aky/rDy7akyFwC5kLU3tTyHEGosu9R+n0CVdDLn82RxnxX8btCEY8zAchcLZTA5 Rn5+UABGUjkmb7qrZdGw1ImUwxerDxMHyqXzmpMGS5tjqXFlIjyhgDm1QUdtgj3455pN jBtwc/9uuSeBCjT0UM5vqg4fNGVhhFXoExmtZku7k+45ZnxPLBZhmPO4AdFfBjYb2Y1U LpQn6ZEUSr/Nui9+n/pZnMXY5zKd46DzyVQL2j+JifKAX1iE5sfz9Wq7gSZjFfXEqETv pwSuZPkDhRUZX7aDjQWO9Q3ZLzH5IYY4lLMwKUs0vsnEvxCIyXmAbxZzQHXHHQ/ACZve L58A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ieee.org header.s=google header.b=W6+8ReYi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ieee.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y71si3763049ede.135.2019.09.18.09.43.39; Wed, 18 Sep 2019 09:44:05 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ieee.org header.s=google header.b=W6+8ReYi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ieee.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730429AbfIRLsN (ORCPT + 99 others); Wed, 18 Sep 2019 07:48:13 -0400 Received: from mail-io1-f65.google.com ([209.85.166.65]:46931 "EHLO mail-io1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729071AbfIRLsN (ORCPT ); Wed, 18 Sep 2019 07:48:13 -0400 Received: by mail-io1-f65.google.com with SMTP id d17so15285194ios.13 for ; Wed, 18 Sep 2019 04:48:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ieee.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ofTkjvEUSpXrIs73m3lky1N1Didfq1+b+91cMsW/1Rg=; b=W6+8ReYiHHVeVlnbV+ueh6udXHFSCEib8D8eNPDlyCH6VFXoehOcoJRBKqKNvR4FEM 9g8Yy6hdIuR0aAWNZlOKYx7kixD+24v0SCc4385+eO76oCXYWiCs2JC13YTOVoFPb+2U gWfU78r/G4aJO0p15MkApXrNA4dRMyazMU6Hs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ofTkjvEUSpXrIs73m3lky1N1Didfq1+b+91cMsW/1Rg=; b=VZlobGEzmGtNwjWqZKlOMx9orz6FxGE8zwQksrYZKDJGKSz0k7T/LLZMxq/0UNqltm yNuB/hjlaFBXTJeWkC7iiJXqtvsVc2WuLRD8nTcoT7dB/HW4PKfM1yxQnHz0XuwSmZ3L P9PAfV+lPt/bpAdJgPG9ehvmZbsoFBwdLYlsoSB7eOaJAGy/c2QnHtjF3q1E23ciMnze 3PR1g5DJikjGLt1uUvCg3l76CP0seyoCq81Q/+tDACLN5L4kzw+6SUiNixYc1xI0VW1P BEvjj0w6X1mi/SSoNJxZOQYF+ezhtdOwUYuYzCeOvUVylm+8soon7gJK+Xxu19oxhGyx MQ7w== X-Gm-Message-State: APjAAAU3mrlFBkJFPuGLv7RVatjAKteBJwMw981EAeOh/KV2v21MafRd rn+bR2ix/MtTff+3m0dbtAE/d1GiE1UQw7trik7hDQ== X-Received: by 2002:a5d:91c8:: with SMTP id k8mr1484342ior.232.1568807292316; Wed, 18 Sep 2019 04:48:12 -0700 (PDT) MIME-Version: 1.0 References: <20190916004640.b453167d3556c4093af4cf7d@gmail.com> In-Reply-To: <20190916004640.b453167d3556c4093af4cf7d@gmail.com> From: Dan Streetman Date: Wed, 18 Sep 2019 07:47:36 -0400 Message-ID: Subject: Re: [PATCH/RFC] zswap: do not map same object twice To: Vitaly Wool Cc: Linux-MM , Andrew Morton , linux-kernel , Seth Jennings Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Sep 15, 2019 at 5:46 PM Vitaly Wool wrote: > > zswap_writeback_entry() maps a handle to read swpentry first, and > then in the most common case it would map the same handle again. > This is ok when zbud is the backend since its mapping callback is > plain and simple, but it slows things down for z3fold. > > Since there's hardly a point in unmapping a handle _that_ fast as > zswap_writeback_entry() does when it reads swpentry, the > suggestion is to keep the handle mapped till the end. LGTM > > Signed-off-by: Vitaly Wool Reviewed-by: Dan Streetman > --- > mm/zswap.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/mm/zswap.c b/mm/zswap.c > index 0e22744a76cb..b35464bc7315 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -856,7 +856,6 @@ static int zswap_writeback_entry(struct zpool *pool, unsigned long handle) > /* extract swpentry from data */ > zhdr = zpool_map_handle(pool, handle, ZPOOL_MM_RO); > swpentry = zhdr->swpentry; /* here */ > - zpool_unmap_handle(pool, handle); > tree = zswap_trees[swp_type(swpentry)]; > offset = swp_offset(swpentry); > > @@ -866,6 +865,7 @@ static int zswap_writeback_entry(struct zpool *pool, unsigned long handle) > if (!entry) { > /* entry was invalidated */ > spin_unlock(&tree->lock); > + zpool_unmap_handle(pool, handle); > return 0; > } > spin_unlock(&tree->lock); > @@ -886,15 +886,13 @@ static int zswap_writeback_entry(struct zpool *pool, unsigned long handle) > case ZSWAP_SWAPCACHE_NEW: /* page is locked */ > /* decompress */ > dlen = PAGE_SIZE; > - src = (u8 *)zpool_map_handle(entry->pool->zpool, entry->handle, > - ZPOOL_MM_RO) + sizeof(struct zswap_header); > + src = (u8 *)zhdr + sizeof(struct zswap_header); > dst = kmap_atomic(page); > tfm = *get_cpu_ptr(entry->pool->tfm); > ret = crypto_comp_decompress(tfm, src, entry->length, > dst, &dlen); > put_cpu_ptr(entry->pool->tfm); > kunmap_atomic(dst); > - zpool_unmap_handle(entry->pool->zpool, entry->handle); > BUG_ON(ret); > BUG_ON(dlen != PAGE_SIZE); > > @@ -940,6 +938,7 @@ static int zswap_writeback_entry(struct zpool *pool, unsigned long handle) > spin_unlock(&tree->lock); > > end: > + zpool_unmap_handle(pool, handle); > return ret; > } > > -- > 2.17.1