From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 227B3C021B2 for ; Tue, 25 Feb 2025 04:51:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 75BD66B007B; Mon, 24 Feb 2025 23:51:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 70C216B0082; Mon, 24 Feb 2025 23:51:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5D30C6B0085; Mon, 24 Feb 2025 23:51:41 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 404436B007B for ; Mon, 24 Feb 2025 23:51:41 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id D053AB18C1 for ; Tue, 25 Feb 2025 04:51:40 +0000 (UTC) X-FDA: 83157243960.04.C4ECA94 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by imf09.hostedemail.com (Postfix) with ESMTP id D9F01140002 for ; Tue, 25 Feb 2025 04:51:38 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=julSCy22; spf=pass (imf09.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.175 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740459099; a=rsa-sha256; cv=none; b=kf4ZkTiWQx0/MdE34zHsAjOkZuKlc5IkjWHxWW5WwP7tSSL0r6ua+jr2jsAkoB/sMCmUEE 4b4j0Vo/HNvBwZzReQgr800TERnDSBxnuSyT8g88WKKbMQnWeFTbb5WU7oNTnDXSgq/HIB whZjTKGaKn9fqjcQMtpYRM8ud6IwiMQ= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=julSCy22; spf=pass (imf09.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.175 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740459099; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=SAYgr05OUxvf18KV8Fyn2jho0e8ReFZ+XAVl6nv1oZ4=; b=tE14HlhTJdtiiMOmhirPNPpy08aUzw0AhVgPrnUaHTBavBD2T5M1uxEo1PiXvCq2pUQGUW dv4v4d6QrAUom0+/eHeGnYAJURyYlFxK+8d3Czw6gXZZG7vEu1vPjZGWvZ73eThweX2U8Y p2hEVWk4v4Y6ZoT8dsjV7UGzu57vqnM= Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-22100006bc8so90532425ad.0 for ; Mon, 24 Feb 2025 20:51:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740459097; x=1741063897; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=SAYgr05OUxvf18KV8Fyn2jho0e8ReFZ+XAVl6nv1oZ4=; b=julSCy22MXBYCvm71a02MhYvF2/O4zTuXTBmaujMw4xI+v74j7bL/g6TLJYs0Qkbgv 41SraDX7UuWticWCrPzOmu2WHs7kSl/GTNpKq55hcxVhbra5Kkzsl+wUITh+8ROXeLXt D8nYqD+1ZpW5BzTKA+xvtX3r0TGlZ6pcTj1e4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740459097; x=1741063897; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=SAYgr05OUxvf18KV8Fyn2jho0e8ReFZ+XAVl6nv1oZ4=; b=w++md7kzKeTrS+tTcnGaD1f//vRgKiE3VF8VnVkCwPBJSSR3GDOAt9LAzwOLDjGN0R KVC9d9Q1ZNvV7P3iOtQ9KwQKkbQ34SBY28CoI7ipxTtda1vqmuQmza+4gqbSz+XKWUNw bQ+czk9S1nY2t2D2Nj7PoM4yYqG++4JGcMJpY+XhGirl5dBNJWqb9/VSNEulWqBkJirA qoCGUootQ1M/P4F1/nXzHy8fmMZzoiz1ITsYGSOdxXcv7iMfJBoVYZocVDxv1ebzXJGt wZ3EUwutVu20Uf2uCTw6dTZ7oXurynW0tNxV6bclEkrOGJEMuLjQ3icMFrCIyaoKPoDK XQKg== X-Forwarded-Encrypted: i=1; AJvYcCWZmPFp7HtNVszpCNi4QwGe85RMRrmWMvQQqHjhI8lPhFzsKM+FiObDow9DAzkd7vBrX6fqhCH/rQ==@kvack.org X-Gm-Message-State: AOJu0YyipDdndaM+SY96TKYWmQm2yjxE5P731+Lul+vI7nZqg1v9FVG5 /enPOu0RoNQNOzZs5R6gmBnJneOI1BhMIDSI3b5mFM7EvvLqT0F/Wlb/73658g== X-Gm-Gg: ASbGncsoAq11roaxmiL6AB8KRFww1K3UIDfzS1cCG4aVzp8JP9H39CM++fAtnVvKGrC rwS7fk7dbPUpWuyVwIqG5RHQUFAEIC4GWxyDOZ3Ssrr94sQ7IIiruyoLsd8VcK4+nFh0riAwi9i YhEVqcyd1LRVauMSvslnJFHWZNtOKOL4K4aarFtrMO0jUWObm9QButGcSaLc54GU2z8I6532sZc UweWUX+Skob+HxG8xgWUxUpCxXpWE8aS9ljgxYjU5QDa149NR0XgaxSiX9j35n7bQWSG5f0RkbZ JenqLYMNzMINcJC7vv3GQsrVnDWPuA== X-Google-Smtp-Source: AGHT+IFR3kCAKs0UvfzCjf6uhp1Rg5CEyCodt3h9VPUhgbP4OciBthJOQNOrY+8kdjGGkoundX4IDA== X-Received: by 2002:a05:6a00:1828:b0:732:5b10:572b with SMTP id d2e1a72fcca58-734790cbaf5mr3041330b3a.10.1740459097527; Mon, 24 Feb 2025 20:51:37 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:e27d:842a:e0d1:29c4]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7347a6ada86sm525801b3a.30.2025.02.24.20.51.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Feb 2025 20:51:37 -0800 (PST) Date: Tue, 25 Feb 2025 13:51:31 +0900 From: Sergey Senozhatsky To: Sebastian Andrzej Siewior Cc: Sergey Senozhatsky , Andrew Morton , Yosry Ahmed , Hillf Danton , Kairui Song , Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v8 01/17] zram: sleepable entry locking Message-ID: References: <20250221222958.2225035-1-senozhatsky@chromium.org> <20250221222958.2225035-2-senozhatsky@chromium.org> <20250224081956.knanS8L_@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250224081956.knanS8L_@linutronix.de> X-Stat-Signature: igz16wi5bjqrd7e5gotpzcd4fz9bmk1g X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: D9F01140002 X-Rspam-User: X-HE-Tag: 1740459098-341866 X-HE-Meta: U2FsdGVkX1+A+ChgAHpU8HNBnZ+tNSeYEwXuMCDGuu6jYeksCs7484Th+qWckdoWjMrY7OhHi6wrsb8q6XDfc8/qtFoKiG3Dfun6EsAlwlQE80Fxfx3tkGPRTCfP5k4CKZkHZsE8VfwqwyJNmC/cqnnuX3alB9Fc9Id2DnodpoE6lniwlHwyXeKTo3FuCyL2XTt26U/+s8KSeZ1Z50EilrI72HmBwdCB7efOG6uSS8tHn8dpvEWbVhIvKmaGfZyU47+OnBDXsGR91en+tL02nzkveRY2mbogsRA6BCDw8KWis6Gi2Qhe6MvBXbqv+dQETTeQuYTywWcGjn5o9pE8IWksXG+a3wiZhhBRdsg5sNMpX9bPGgmLdfEuqtH5ojjwnwzuQfRo/x2FWrXz/yMrGO9O/xLrCjQm6DBrXs9FX7fRJtlU4h1Hp844juempaDUglSWPsM6cXTG/9ounjhM5AlY39U78AGms7nGdMgzaTKil7lhBayuwiw1zihhZMZDxekY+vN1mZYdA8TiwWFSpvNDVrOzq48lUWo9dpmkOOVyJuEHyB/vx6hyrmoF4bS7b9OQzrejsxRewwX5Xrc/bvjGxv4zrokEtLXUKMPahmnTw5t7AdfbgYN/APTGFdt5enwXWEA/J8NDTwSTI9ckwdOVRSDk+zTb8LhGqhtLzgVUqZ+nCre1CVRfcf/nTtM/JuNgY4AgMOgjEPCTsXeY9CqKPYlg2WJy5oP1WRJaixkZz955dts0snMjWH4cbSHo4oxDj83hT+kD0AoDW1QyCqYIpNi/FR6k4ZBTz9ET48TSxdKv8WJJUaVlsuLXMAIcM0u/IdVdF/qnLhqeT1ZbXJ01Rq4HaWVlvdJHuAdroohqcRLCyFeo+WqZrHs9/xf6Zg5UOdzbU4/ejOi0TFIu5Xdy0rJLa2sd/gmWOAg8pibHaeYVncj85E0Hfmq0J+DAF6fqX3UdzHjSZJTtklv 8c3i0qgp dG3BGcyw6aN9G/l1LPLHi/tuQWC2I62ddBE2R4uHAgbDTUoAVTEh9/Zjf/P1xZ5tu6weTJT2sbKnA+4BEQuvf++Vv0Eigwtij1ApG8dDp+1y5PqTOUskSdGCWMIiuShUZyjozglt/3MR6jaOIaCR/Mgc06bXr3W2HZ2+Z7hKNBFPsF0kJTtIi3GghQP0LGLdJzTL9WAf4xESO86DmTFnLPVI+H/7P9irUGLsTGomtq1kVryHW++8TayoR0r3jH7cTyekzPmf9c6Jus8YeqhSWyqr9o45CRq/FRYecczugRXxim3N96zH1ASgCpgrczOuItOj4FGQCKZyFNjXfrX0gzNIWqnzesxESNZ2x3t0Xi/u43Ps2Gxele4bE41NBbC2cvk1i X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On (25/02/24 09:19), Sebastian Andrzej Siewior wrote: > > diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c > > index 9f5020b077c5..37c5651305c2 100644 > > --- a/drivers/block/zram/zram_drv.c > > +++ b/drivers/block/zram/zram_drv.c > > @@ -58,19 +58,62 @@ static void zram_free_page(struct zram *zram, size_t index); > > static int zram_read_from_zspool(struct zram *zram, struct page *page, > > u32 index); > > > > -static int zram_slot_trylock(struct zram *zram, u32 index) > > +#ifdef CONFIG_DEBUG_LOCK_ALLOC > > +#define slot_dep_map(zram, index) (&(zram)->table[(index)].dep_map) > > +#define zram_lock_class(zram) (&(zram)->lock_class) > > +#else > > +#define slot_dep_map(zram, index) NULL > > +#define zram_lock_class(zram) NULL > > +#endif > > That CONFIG_DEBUG_LOCK_ALLOC here is not needed because dep_map as well > as lock_class goes away in !CONFIG_DEBUG_LOCK_ALLOC case. Let me give it a try. > > +static void zram_slot_lock_init(struct zram *zram, u32 index) > > { > > - return spin_trylock(&zram->table[index].lock); > > + lockdep_init_map(slot_dep_map(zram, index), > > + "zram->table[index].lock", > > + zram_lock_class(zram), 0); > > +} > Why do need zram_lock_class and slot_dep_map? As far as I can tell, you > init both in the same place and you acquire both in the same place. > Therefore it looks like you tell lockdep that you acquire two locks > while it would be enough to do it with one. Sorry, I'm not that familiar with lockdep, can you elaborate? I don't think we can pass NULL as lock-class to lockdep_init_map(), this should trigger `if (DEBUG_LOCKS_WARN_ON(!key))` as far as I can tell. I guess it's something else that you are suggesting? > > static void zram_slot_lock(struct zram *zram, u32 index) > > { > > - spin_lock(&zram->table[index].lock); > > + unsigned long *lock = &zram->table[index].flags; > > + > > + mutex_acquire(slot_dep_map(zram, index), 0, 0, _RET_IP_); > > + wait_on_bit_lock(lock, ZRAM_ENTRY_LOCK, TASK_UNINTERRUPTIBLE); > > + lock_acquired(slot_dep_map(zram, index), _RET_IP_); > > This looks odd. The first mutex_acquire() can be invoked twice by two > threads, right? The first thread gets both (mutex_acquire() and > lock_acquired()) while, the second gets mutex_acquire() and blocks on > wait_on_bit_lock()). Hmm why is this a problem? ... and I'm pretty sure it was you who suggested to put mutex_acquire() before wait_on_bit_lock() [1] ;) [1] https://lore.kernel.org/all/20250206073803.c2tiyIq6@linutronix.de/