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 CCD80C02197 for ; Tue, 4 Feb 2025 04:22:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 44B996B0085; Mon, 3 Feb 2025 23:22:38 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3FB516B0088; Mon, 3 Feb 2025 23:22:38 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 29BBB6B0089; Mon, 3 Feb 2025 23:22:38 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 0BE2C6B0085 for ; Mon, 3 Feb 2025 23:22:38 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 67B4F120701 for ; Tue, 4 Feb 2025 04:22:37 +0000 (UTC) X-FDA: 83080965954.27.BAAB8A2 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by imf23.hostedemail.com (Postfix) with ESMTP id 8C00C140002 for ; Tue, 4 Feb 2025 04:22:35 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=kFbeQA2P; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf23.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.172 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738642955; a=rsa-sha256; cv=none; b=2vxIdXFOyNtPqvB/kliGBt/aXv2JLxm+QdZ/SiaSxUakkFBMmyQbqAdgLcSFV8OiMBM0dX +HzAQupZVUGS5mnitTcP3kV05Y1FrP0cSkkTSAhu0gU4AV11gWbQIPf4sHP4IgkgIeB/ra c4gHiIdFte2x0JK9JiDqhDnFYQecsrk= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=kFbeQA2P; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf23.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.172 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738642955; 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=rc4bDG3SGydOD+ZuvmEf+a/gqsZFMtyGrtKHk7cNWO8=; b=coC2wo08gF+V0qES9nFSAOzw+PASaYwwtafBiXYK3cZ4on7463Tuy49/uWkyk/JBoUSoeh rJd3PHgtoPIhYvlALlaDVoHIo0daYhSxhZlcfv5lE3fMM1cN+BSDB3zbS2Ory5UuiWqGDR HjMrQsUwKfGxWph2mVW0GV5KPKTvdN4= Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-21ddb406f32so1749505ad.2 for ; Mon, 03 Feb 2025 20:22:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1738642954; x=1739247754; 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=rc4bDG3SGydOD+ZuvmEf+a/gqsZFMtyGrtKHk7cNWO8=; b=kFbeQA2Pmudt+ehSZPVw+GtLWOnVrTE2WP6HjP52nJK90yg/GG3TyQ9TlKkVNLwIHh k7oR9GQnmST6hfKN7bjubzWvVTzmE8pgn7RgjCDpOfSRGgoe020lQ8mWBfO/EKrkypoP zLjvnEYyA75n3dlc37U8V5gmsS/UiRZj7qLwM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738642954; x=1739247754; 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=rc4bDG3SGydOD+ZuvmEf+a/gqsZFMtyGrtKHk7cNWO8=; b=whP0NmfqCIgg7Ok2lp3et+l7jIVrsZzaUY3B3hCykmftrX/v+fIfI0DUkpl06MCJAY 3dOAqwnwyjhgyAV3XSW5zZPo1F8EX4joq4Mc7FtWzGzLM85/nflrtARYrTNyi/ICmYkF 8l+E5QIRtP33rdKcZZsWcF4TBSs2TWMeY7hX6rNFf3LX+SAK/sYhDYtUjVicGIaZu4Lt XK/EsC2i1UBwy94I3mTSz1dXKRACQXQAVSWeamY+1kUIviDZf/tZYhd0J9ctyQ25JCkp nr6uLgUp9mYHY1HwMoqeihzEFHVLDpEG8R8WZ3CG1Os3JDxrMnyMf39UZNE2UMvvMWFZ rtfw== X-Forwarded-Encrypted: i=1; AJvYcCXFsUIHsj+bATb8JoVttYoe002bnk67d6AjAv8z6yiHDFWKEuJieWYtE5FAWF3VO8yCeZ+G8342hg==@kvack.org X-Gm-Message-State: AOJu0YyLhkQACm9pGY6BlfVg/XGex4EoJdxewjlf8IStWdX/0mxUPN5Y UvbJJkjQLeFVWHROQHHF04Zqejg2lj3fbIi48+mV0JruNUAOpp4ObonzyvuF5akut71VD3jjWBg = X-Gm-Gg: ASbGncvTzVkYS8cUed1FRmZiFonTUeD/0NMK8KdQjwmNp3AtIzvinWomV6Dsi5uidEq Tl1XxbwpfaDS9dvPtQrzS2s2OgrALWI9RI7AUXtBUDs/MZXr9EbhxrPa+6Z+5NbqOaPga2HL69S Ny6ALbgxwzN4u965pdji3CfqLrHt9+XKrUhZj6cJbd3EWL9ecWBVD4niFlbILYCQcBGUFIY2+RS b/LIcz6Ft/fyhjkpfIcv1StJ5ROxOL4kvlEZH2R8D3VsbjPTse4tjQeXFfBWgFUy8NM1zfJjRDN EbZ6ZRE2HqtqpbbVdSQ= X-Google-Smtp-Source: AGHT+IGeUuqlU4nW5QSaICnqjG0mh9pK18HDDmBT+ouXrQsSDd5A04dfnIFBd/Ax32OlGt9k1ZHy6Q== X-Received: by 2002:a17:903:40c7:b0:215:e98c:c5bc with SMTP id d9443c01a7336-21dd7e38be7mr412325445ad.48.1738642954481; Mon, 03 Feb 2025 20:22:34 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:b77f:f2de:f99c:2d0e]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21de31ee01bsm84512885ad.47.2025.02.03.20.22.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 20:22:33 -0800 (PST) Date: Tue, 4 Feb 2025 13:22:29 +0900 From: Sergey Senozhatsky To: Andrew Morton Cc: Sergey Senozhatsky , Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCHv4 01/17] zram: switch to non-atomic entry locking Message-ID: References: <20250131090658.3386285-1-senozhatsky@chromium.org> <20250131090658.3386285-2-senozhatsky@chromium.org> <20250131145536.d7a0483331b0ebfde80a5754@linux-foundation.org> <20250203161958.b529e20fb7aa07645ed029eb@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250203161958.b529e20fb7aa07645ed029eb@linux-foundation.org> X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 8C00C140002 X-Stat-Signature: ixymb3mayei4713n9rtpupppdy1kekq5 X-Rspam-User: X-HE-Tag: 1738642955-532391 X-HE-Meta: U2FsdGVkX18NkZaxm3T11XgUhhms8puFCFASWlH2te3p1/ZKJln15p6XUWuttlttn509h61+tH7xhiPPme+P9wkTaL3YsG8Zv6yb9YeEv17XrWLMCGHn438fjk8A68I2bKQReqGVbLrUg8ZSk2VuuLGV+R+aLvMeHtYcHnuyDimULXTsfkKD1RpfyAb4XnT33WmmS3FoFB7c5VF3YBFX3Up0ZeNQ3MM4EI6D3TKjHKRw7pzQi0dMbYHpQBg6myQf0QluvKPcNZqnf6Rm3ieRFX+6Sg4xr7b1USBMMh9ZSHs4JwzsI+giPHk98pbS8mFnoPp1XTGHElRe/JoRjODr/DtDzXg++aAuiYWOVIjthGD1qgb1+MT9yIdbB7CNcT6bHXSJ283PzkwbKMWpjWgk2WnJNgINpomZVW/0vE0HQiaArh4JBEaEiPByPH3jK3U3rDULvj5sLRgBd8adXr8pBGw9gpwvciOAb0KRvhSLcwbjccxRsvxgMdGm/BD7tEjXIPCsbcC4EnSxlzxEgR/rBrIgV97aLmZ5O1s1CzdvDW63DjDSefLOe9fMcvBEmhsC2P4YXSJ4u4u3i3EEEijvX8g2AiAWMQsFxPj5S68JldwonD5vJVi2icJX7sg3nt3UcbX/oNDUrlcnpvJ7+l6zsx5rLAf5EyH2/Govsqi0Eu9SrvRDTNjBl9muDuse2eDjtkbdoFUOba06QixFucq1QaZYQrXiMcWlMBpOGjxCsujON+ZWP0dwYGs+9n5I1uChY16ndABWW9YBIADiqBnPhYF0bsB/jELZt3xc7hSuMPb+WI147+//6tHsaN3oPlUhUneNTX+8rQgj3czKlN5ZfxoS5Lxz7tftiS1pv+l6SDVTd7VOgTQKLm7Z0un66e2hLZziz3DrdPQYomYqjMXTZXM4XJWBZb6gmWOU9PMEIwmJ+nKGLWh2JxOl4Er43RgusPiBWfVXc8PFz5B2oBM RVqHPt1P E9/2lu6XwaoQKzaF8s7iMNOgX3CesqFsIOQVE5BiotezyF5rp83w9TWNMKYhEbsCQd0nY/j2X1h28iG6jkca/H9eGCYb1zcXx+di3Grdpgkgz8COiOMb7efcZI8yAkOEbJ/2JcpzAT1nSMO3iWR93jsj+d+kWCGq/RAcLFb17rloWzdk0WXjz6Al6CDK3kdrBBCRU9Lwaz75GBmg7HbyiFv/qhGT9ZMl9ePBVzQsVw+ozGqfKFa9RUAqq3bKPYa93LOPv+NOIrPQjbg3fnunRGDCmtMQmAzWZzmhe3Zs30n4AeS085qbjeh7A87biQtHry75O6ECduzSyCrYR59705ou9AF3YM8LC6ltUa9imdCboIigcUwq3cXRoda4HD6+KI9n3XAWIXwnJbHe+g0ZuSU/fmB60uno+d9q8sWL/BH+wZvxnedS62k+NPw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000300, 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/03 16:19), Andrew Morton wrote: > > On (25/01/31 14:55), Andrew Morton wrote: > > > > +static void zram_slot_write_lock(struct zram *zram, u32 index) > > > > +{ > > > > + atomic_t *lock = &zram->table[index].lock; > > > > + int old = atomic_read(lock); > > > > + > > > > + do { > > > > + if (old != ZRAM_ENTRY_UNLOCKED) { > > > > + cond_resched(); > > > > + old = atomic_read(lock); > > > > + continue; > > > > + } > > > > + } while (!atomic_try_cmpxchg(lock, &old, ZRAM_ENTRY_WRLOCKED)); > > > > +} > > > > > > I expect that if the calling userspace process has realtime policy (eg > > > SCHED_FIFO) then the cond_resched() won't schedule SCHED_NORMAL tasks > > > and this becomes a busy loop. And if the machine is single-CPU, the > > > loop is infinite. > > > > So for that scenario to happen zram needs to see two writes() to the same > > index (page) simultaneously? Or read() and write() on the same index (page) > > concurrently? > > Well, my point is that in the contended case, this "lock" operation can > get stuck forever. If there are no contended cases, we don't need a > lock! Let me see if I can come up with something, I don't have an awfully a lot of ideas right now. > And I don't see how disabling the feature if PREEMPT=y will avoid this Oh, that was a silly joke: the series that enables preemption in zram and zsmalloc ends up disabling PREEMPT.