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 5B80FC0218A for ; Mon, 3 Feb 2025 03:26:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8AC316B0085; Sun, 2 Feb 2025 22:26:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 85C666B0088; Sun, 2 Feb 2025 22:26:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 723FF6B0089; Sun, 2 Feb 2025 22:26:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 4DB0D6B0085 for ; Sun, 2 Feb 2025 22:26:21 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 089721A229E for ; Mon, 3 Feb 2025 03:26:21 +0000 (UTC) X-FDA: 83077195362.07.B456E71 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by imf30.hostedemail.com (Postfix) with ESMTP id 2CB7780005 for ; Mon, 3 Feb 2025 03:26:18 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=Lv4Q53Mj; spf=pass (imf30.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.182 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=1738553179; 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=VE6EjuD91puXURhII7Ap0rMhTN6ytgbnHUVOy8xn/mk=; b=VA2lxsPOP43h4kkojg2D4mq8UA05E8s21zQtRiPOEIrtVOJQOHq0XZGGBDniGGVUKlqZlj Q6Xtc85+ADq0inDeDg3mnyuYjsXV43+ErzpwNs1a13UldcKgaYtRAP6sGCQ+xdDJqiRBZy D0iRd8NA4opfDDa0mTD/Mn3A5rubFk8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738553179; a=rsa-sha256; cv=none; b=j1tpK3RiNZvCUcB4dLkabn16cRopCO9aeGaG/yc7+39kpJKLmj4zAeTaJO/H2v6ITWCKMp q3XMs9LuuBpD0uhqN5BVqcUa0Ts/AOKHnG179JoRLspZhvUBHNJnizGYfurJB9u6D2XaU+ JwaK7871KO2KeeI5Ix8nu3WIlI6ReMU= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=Lv4Q53Mj; spf=pass (imf30.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.182 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-216634dd574so43961705ad.2 for ; Sun, 02 Feb 2025 19:26:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1738553178; x=1739157978; 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=VE6EjuD91puXURhII7Ap0rMhTN6ytgbnHUVOy8xn/mk=; b=Lv4Q53Mju4Amv5fTMpTFOkwTHs34tqITW693L08jkX2nETQk+H9+gHKvsmwh6Se3DI v7OI7cGz/jLy+NrsnV0dZ2iNO3Gzoqjt+bX17ufcavTBKBVASD1WWpLWvXSVR3rdq0qu OmOe5AHLzMvTw+7UWJk2lrynX90h7AmcFRZ4Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738553178; x=1739157978; 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=VE6EjuD91puXURhII7Ap0rMhTN6ytgbnHUVOy8xn/mk=; b=Jw0g/2PF+t8ZSt+t0lbyjCu8MD4bEYO1U0x31alj3/95xOXSMo4CrAgBWT1WERHUY8 XwExPB95ZTtE/KUvn6hwbyPaLaQuazcIOnIwbHkmINLkJgPVqEJjLVDsqZaxQLtK0Oob jS0M8Zju4a0zfUYZU4ew+xSmhfVzKGD6ltI3toihPZPzSqkh0BbBdYiNBque+SxjOMbP Bzr/THySU8j8hpACFvB/3qR+2fCt/7e+BTSzTaHgNjbmARbE+vk5R4Bp4YdfG1S6fxhz /d+F5nhd2COJsOa9lukRbcTfpuQ3qWdX+w2r2Z4qp7UPcX2uqKxBF/xKGvviJrgkrmaW LBiw== X-Forwarded-Encrypted: i=1; AJvYcCXbdz6Nw837pifIQebZMdiZE5e8rtYjbjvmFoL9dj/3mtd9hqbgroKZfjyw9GWRlY6llmEpQnCi9A==@kvack.org X-Gm-Message-State: AOJu0YznrGGOzn80S4p1Uu4LAm092o8Yu+H4j1hlzHltRAErr29wNVzz iC4c/IYqy3nUeYobzo5bNuwxsNNN686kLbFY4atCeseXkq0rNKknMpsGpw3oHQ== X-Gm-Gg: ASbGncuE5vbMhkR7gyWkWHT1Iixl1uxr2MnAgYjePZgfyoe+wEX0IqfuJSsjmHq1eAY HjE+V7sWRs3Wqt6cZ4Kmobrm3bCr+REsMgXf8hgJEB/zDFHxkHT0bDvWV2la9jM5IrqbRp+b6/A 1SVP9b/hnbjO8Q9icVnPUZwsI6uewVXkDKm5yP3s1pq2QJEK0DeP/GVCcwQHNwcgn6iFJg3pFvf UUDV+B1UlCp5CMbOwKcr8H51Dd8LmNgwCSU8w52i+NVD0PtMe9K7Q/CiCj4zMsU5mjIGl4lTgMU x3Xb8MHE0dH7gSdz X-Google-Smtp-Source: AGHT+IE9nJtjc1YLNzeaiAKHHzczdPXp+pldjMGjYS4lTNCHnzSQS3thqbwfWXGSN8CjhN2TnoxyqA== X-Received: by 2002:a17:903:1205:b0:215:a60d:bcc9 with SMTP id d9443c01a7336-21dd7c55e51mr342130215ad.2.1738553177871; Sun, 02 Feb 2025 19:26:17 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:f3c0:b0:250f:9437]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2f848ace140sm7799046a91.42.2025.02.02.19.26.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Feb 2025 19:26:17 -0800 (PST) Date: Mon, 3 Feb 2025 12:26:12 +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> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250131145536.d7a0483331b0ebfde80a5754@linux-foundation.org> X-Rspamd-Queue-Id: 2CB7780005 X-Stat-Signature: 6kc7fx9whd346x5a1n3uj6r5tiuc7o3h X-Rspam-User: X-Rspamd-Server: rspam12 X-HE-Tag: 1738553178-122597 X-HE-Meta: U2FsdGVkX1/adVOoAmTyjywCkDP2SFGNcczBz8IHClJXXLt2awTitdme++PO0gaP7dJfp0vGp7eL7jeFk7YrMf3UMAlcVwIbtmpoY1gIBl6TE+WWsefWNdSoLH5yVKMRKWZuR1rlAi35tGY3PDeuFyeTBtPKEPijK0miQeyxmlYe0xNaNB40hUbcmaMSU111Gu+G/Y3SkH+mKdcHZuZ4Lh7UfuA78gjO/yhRLQuFuIVR/BZ1tDTY7kOMLiXlA4H5mlehrq5VKehkbaZ5JlteqmY18YpfvM8Hkg9yjHg99BEctEBGUhdOZ4uVtb6WN0vo3oaySqxr+kh4ns2VuNQhuLyxxDcVw4PG/3e0V/hKjg03uuzNPdWEFY5a26OOFbvODbdYv9Y0ev2FRn0YZRlwq7SFiXbFvImyr1cjxqFQEFnUECQjo0GLLnZHE44GfLFdCOhoDbo6OmrY7mIY1SF1Wjestz74bH+tijZkHQ7n602BEIaQepA67honHhlG9aOBmAnoM2wGI+jKfF8yZ+GWC2yXyTKOfkiwYhCmuGYwL6tGOoaX39CSeMAg+jJpz+iSAN29ZNHRhniq7eCPhrI+h87pWn8c8QWTOgSaMyFtL8wVe0BhzPYsmoIsNUE9yVdd+AUJOnT7Qo+fnNc+3pZxTKNeIYvkzt/DVXCrdNmHgPWmonngBpfRCujxLNenp4T/uX+emJZdHZSt/ik96nHifEjqaVcMVBwYzhB8W3YGusnDfgCJYDtONLHqM5gwMC9Yz7j+D/RSc59clrxxZg8qkcDUDsjL/j1q7qteyJQOB2HbDe0vASbDNVkii+JQSjxvtFy3WIITCiyjAup1fm7ntCva7KOTCf/5ybXeBhNtJ3RGsx1YZjzMdIGd1Cn7SHGytLxy2yCZbROTVaO78Op+/Yo1nnmfpFF4rluDaAcAYbw3eVoDWWaIWVSp8mKLQphpKDHX6kawZEgGxGSnQ+0 393WsDUg l3hSjL2lqLv6tiaBZrlJvCrEn8RMiWJ34BywXL5OeBimO+rMHqhh4GgYylksrCqXDLmPXPHPFJhkJ+BkrzCjHsfuuCYa3qYQyak1t2+6kDOTVmFk5VXe1GLeweQNwHWI2+LTv/YO5dk9Omw59e5tArAzBA9cE6mI5DHtoFR1l0PG5yeJYYhXuBpXHbG1BjHhifmzgasUNX6p+MpehRwhfCkJ7U1OATd+RiUEojk5Wu5udXpYPXlX/cgiZG6JPmYK/xUfJqNIzJfBytiH5EHhmaYDf/urMQzFqhHxNMpT7OmW36lfMsbaOowNFOJYi152W5syiNvkDeDZhg+ePRz1zQ5AnhrQwvsk3mQluG11tJtYI6FY= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000009, 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/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?