From nobody Sun Dec 14 21:54:19 2025 Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 02BA21662E9 for ; Wed, 18 Dec 2024 06:35:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734503745; cv=none; b=SgRLwB/VESIsnjiI5ip7THyaHQeFXtReFHqI31vNGIcsvXE3dBaGkRUQH0mZd7mtI9kbueDA72TbKjdyWuyDIaie4Ivne9Xf5vOkK4Qbxt+nkHaVK07pBvuIbwOLvhfgXTMJh9U5j2qqHM6N4gvpDbodUsoWdz1g/dc9NC7X7tg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734503745; c=relaxed/simple; bh=qppdETxx2GmdR+QBG/OxKqjh419vfOkRJEgYdBmlDjo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hnT3kREdZ3zUoLd/kPKw9BkNugrusMw+Qk4uKLnqNqFomiHzhmbIKDm7JHk/O1ffobffdn679ApTN6nFXEtcuhv2JqNfCy7g7w3cibsbGC+yvm/HrRPLSLy65NBIpJ234gloT3zG5mTNl6Am69YHDAIA27t8135flA5EqjYq+Do= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=CsGEeh4B; arc=none smtp.client-ip=209.85.210.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="CsGEeh4B" Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-725ed193c9eso5249474b3a.1 for ; Tue, 17 Dec 2024 22:35:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1734503743; x=1735108543; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Jx9bIgiEIqkEeB+/C7YzsZikx7IBwIxJmTKfYS6wvFk=; b=CsGEeh4BNxFPMU8YMakldux7ba0uhGa7criO89yFEW3QyU3SejN1dN8vHWwxJDyYg1 0pLYCOrPIJiaW3iidP7OVz64nrBW/G+QXlbFJjx6XxKxGMigMnLb5A+4S3DCKPLw3Ypj h0NQBfRHHFOtrMk1A+jkvuON+P71WBJES+1rc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734503743; x=1735108543; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Jx9bIgiEIqkEeB+/C7YzsZikx7IBwIxJmTKfYS6wvFk=; b=ecOklnxNuwLVN210Rg2R/wsk0BTxh6g31Rom9ALULBntpveF0vTxDFHyo4Ti8iiNoT ZNpoFvC1C86GPC4K/ySNY1UF42KvGtC4DBEToV/+L6iQNUm94WYff8U8fAOgjF+zIxZx vJQc/3wsrF9DneDXNCXio2o2F+gom8575/pvxYccj0RgHL+no/azSoQyKIPGQa82GKa/ nDT9ttt4kdDMDjhWvv7cZwAQdaFbA7hZc1D5a8yf5MqiTfR/4dp3hfM3SmLvSfhYV7i2 X1L3BKNTBH8gStX52ZT48Lkh0aohNpRr8acN0maEu/hG9qo/Mjg2YHtbsHkkA+asVtfx XcCw== X-Forwarded-Encrypted: i=1; AJvYcCUyUPENBLxLzpBJNcic+YCnUcJJp67iNQ53tpsFXjX4zt9rdfSpvVFOOlGKbgrOj68tUaKqci2khq2FKxo=@vger.kernel.org X-Gm-Message-State: AOJu0Yzsqhf1lud+q83IasCxbb+rHk8Mx7V5nnrGnTfmhmVM5Hde4xA4 9x1sK80k2DkKYmp29iTLj4SC6/PBlDILQGGnpN0c8ybHFewT8jUH5OE3UWxkTw== X-Gm-Gg: ASbGncvRwiessalY4ybUgu6mOc3F10p9RUjSh7SY8UubLmUQiI8rZ9P+2ivCQifV6bo TgpO/uAMBzjDUFFVW58Wc3LD+Pa3E0D/Zk0Z+E6YAyDwjzhv905nfas5gTQUTA3/qdXEk/uFrju vax4uUwec0Y1nUIpxHMFHUyMwdDIAtLS62pQMzE4luN15IROppLqYN5061lax1/w/n4Mz8UNoKV yqnUdZ5c5h8UBMPSVSo9hVZg/Tx+NFGVg5FRB+wZgOc4AyhTebCvkhJvdI= X-Google-Smtp-Source: AGHT+IFnXzThR3kYgLdl6KAfkV3e2DAw4nVMXA+afaVN1un8QDO+bjEptYoZDse8hnX1mt8BUslL8Q== X-Received: by 2002:aa7:888c:0:b0:725:f097:ed21 with SMTP id d2e1a72fcca58-72a8d23e809mr2464921b3a.15.1734503743201; Tue, 17 Dec 2024 22:35:43 -0800 (PST) Received: from localhost ([2401:fa00:8f:203:3bcc:36cc:b9fe:9379]) by smtp.gmail.com with UTF8SMTPSA id d2e1a72fcca58-7291bca1069sm7446008b3a.114.2024.12.17.22.35.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 17 Dec 2024 22:35:42 -0800 (PST) From: Sergey Senozhatsky To: Andrew Morton Cc: Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky Subject: [PATCHv2 6/7] zram: use zram_read_from_zspool() in writeback Date: Wed, 18 Dec 2024 15:34:23 +0900 Message-ID: <20241218063513.297475-7-senozhatsky@chromium.org> X-Mailer: git-send-email 2.47.1.613.gc27f4b7a9f-goog In-Reply-To: <20241218063513.297475-1-senozhatsky@chromium.org> References: <20241218063513.297475-1-senozhatsky@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" We only can read pages from zspool in writeback, zram_read_page() is not really right in that context not only because it's a more generic function that handles ZRAM_WB pages, but also because it requires us to unlock slot between slot flag check and actual page read. Use zram_read_from_zspool() instead and do slot flags check and page read under the same slot lock. Signed-off-by: Sergey Senozhatsky --- drivers/block/zram/zram_drv.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index 465297d31bdf..7dd72b58e921 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -55,8 +55,8 @@ static size_t huge_class_size; static const struct block_device_operations zram_devops; =20 static void zram_free_page(struct zram *zram, size_t index); -static int zram_read_page(struct zram *zram, struct page *page, u32 index, - struct bio *parent); +static int zram_read_from_zspool(struct zram *zram, struct page *page, + u32 index); =20 static int zram_slot_trylock(struct zram *zram, u32 index) { @@ -831,13 +831,10 @@ static ssize_t writeback_store(struct device *dev, */ if (!zram_test_flag(zram, index, ZRAM_PP_SLOT)) goto next; + if (zram_read_from_zspool(zram, page, index)) + goto next; zram_slot_unlock(zram, index); =20 - if (zram_read_page(zram, page, index, NULL)) { - release_pp_slot(zram, pps); - continue; - } - bio_init(&bio, zram->bdev, &bio_vec, 1, REQ_OP_WRITE | REQ_SYNC); bio.bi_iter.bi_sector =3D blk_idx * (PAGE_SIZE >> 9); --=20 2.47.1.613.gc27f4b7a9f-goog