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 AEC85C0218F for ; Fri, 31 Jan 2025 22:55:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 133266B0083; Fri, 31 Jan 2025 17:55:44 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0E3FC6B0085; Fri, 31 Jan 2025 17:55:44 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EECAC6B0088; Fri, 31 Jan 2025 17:55:43 -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 D0B656B0083 for ; Fri, 31 Jan 2025 17:55:43 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 403651A1320 for ; Fri, 31 Jan 2025 22:55:40 +0000 (UTC) X-FDA: 83069255640.28.7CDCFCB Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf27.hostedemail.com (Postfix) with ESMTP id 8D04D40011 for ; Fri, 31 Jan 2025 22:55:38 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=qwyrc54d; dmarc=none; spf=pass (imf27.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738364138; a=rsa-sha256; cv=none; b=VCvbq7+qIUK3GvER/LMrHkPQl2X93PiUeQu61sW36sk+fzFD8hsM3+KLD/PiW1E33nMf6h z0LcQ5Nad3Uyf4U0RYiVVYNTTHhlBuTkXTw66otWeJ6+t4eLB64L6klbATbOELbwp6tIw/ MteKZ4lXowTvkDjoo0pTvbr16jW6vEo= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=qwyrc54d; dmarc=none; spf=pass (imf27.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738364138; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=tcq0GX9IVAIZPg40mlhKd1qArqU92U8KBg95dDR57ug=; b=hFDXkbusTpZrqzQsN+wVQHbvegpBQaqUzkkq9gEooZo+8oUUFOHjvzmDx1RoWX1VTzRpjl xAUo5MIzLuIjZDNT7OE686VbWZnQd1LR+Qexu89WQHCEsKE3DI6JJFbXNZkdXt042+ShJx riJ7UZpQuv8027o4LD2Rf86CMXSXpCA= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 6C59D5C549E; Fri, 31 Jan 2025 22:54:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E97ABC4CED1; Fri, 31 Jan 2025 22:55:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1738364137; bh=ie8qQTfqIv9p98IaIizAPEh9eDCtQEW/CYXeINasM4E=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=qwyrc54dshDJgYqS+9b2LRCAvATgUSAfT6KUYch4Gze9MmWIw15nZnx/FKtG7hKpJ SIL/M/7tFvAGwf63lmyRy2+bVm+JcG4VXFYGkzTjHaInwsdDPj7CfhJXrYULMOsYmj oRF7MddNpBvlJEhd3ut79e8RdTpRvtfadB3AeKNk= Date: Fri, 31 Jan 2025 14:55:36 -0800 From: Andrew Morton To: Sergey Senozhatsky Cc: 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: <20250131145536.d7a0483331b0ebfde80a5754@linux-foundation.org> In-Reply-To: <20250131090658.3386285-2-senozhatsky@chromium.org> References: <20250131090658.3386285-1-senozhatsky@chromium.org> <20250131090658.3386285-2-senozhatsky@chromium.org> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Queue-Id: 8D04D40011 X-Rspamd-Server: rspam10 X-Stat-Signature: 3n9axmr3bcdfr4hhieof8e1pkujq7pj4 X-HE-Tag: 1738364138-337502 X-HE-Meta: U2FsdGVkX18/XDs6UTwzJpWFeRqwsLxrTydRSvu/gm/wQ63nV9igPQM+IFUaCRWnppAfn3++r9dcrkaDIi2hI69v3kajxGR6DNumNcyfr/+aMs9i1UPlsAiQd41K7twzJiOHG07R8BPOV/mhlYHO41mfFUNnqGpzMB16tSAWda1+ghXEGDDsBV8/bohtHHbgGq6GlQ1wZeqjYEqwAFHbRTHmMq05CZ7beZxSY1D7LGpGN0GWH+BTMuqe7VdPCHGAVaTW88r1HNw3FP2vYXT/n7SbaADxWFyqCGnvCL91TnlpKsGp8HpyYAJDgzUzyFQ0uZR9hJ5xkfr/D3xi/QQF6fCBSZ3NvEO3UMR1M/u2vqnM2dDyw2z2N/vrx5MCNpfDYPZv0ve3ymgaJa/XmrCL3t316yXefgcsCieN9SDq47whp/6y1oMSuH36dz7SCOoit9PeIpY0oaIbHSSJCGzBYTGsrJZYR0fTisWawtTYijz/g2SaGTFZ9IrE/wYxW91IttSqr/GqtePqylxJ02iVb95/cpC7Ja83LEAzzmd1G4sUKhb1v6nyExKz7KCVpmBQk2Cqf8pIf8NEGAxcGTQgfd/Fej2Jvcmj63+hpwJnGeLinEiEv+8EcfMzBm2+yK32Qq5dPfdY40H/dWJhjWr32F0P7m5tW+3DmvyVjA6qHpPggNmzvif+dYWupiubTV8dBL5ycH+PJP5vL7zrTJJ1wtx/M9lrOixCThWPCKntxAeGgkMrdms76O2OMXD48sVIvbXQJydtrFQ0rTHFcdk6uYorv8vFb0OgBttzo1Pz2lGCV1rzxgOcLBe3FQd738Wy1BRB6N4lSPSlxBgdO8Ds/1nXKSXlTd4WoS9kYMZysCTN3UphFGsboBB3K8z3eg81LU9d5M8cqZRphby1T2Y7PGvCoeQ202lI9hzP3sonEY/+Ci8DaMrfRzQYNR/l+uVa0eXDarCy9iARrntLkTn 4bPW16bT L7Pk0Fpvr8glcJ1IhWPspk7OtaN/aM+guRou4KfM8vvNXH9VZ8Y1gpBrbXj3GMSU54tmPzkMFhn45byYKWL74CHW3mnUeM8u25U/89yykyxfVrObPvXd9wY+zzFeBDBqJE0NxOsDsiVlgQs0V4CsXhn9sF7yEAa3nRw1IqOtqC5I2nRjvh7jIr+X63Va7S/bGCEci839uI4jwUz7Sdndr8NSBlpVaoS+BsUAM3BN295DkAkETovIl9HURkyRAOrOazVQiYpTS1iMjaeRJ3S4VUgstLg== 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 Fri, 31 Jan 2025 18:06:00 +0900 Sergey Senozhatsky 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. I do agree that for inventing new locking schemes, the bar is set really high.