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 25D6DC02199 for ; Sun, 9 Feb 2025 07:42:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 114526B007B; Sun, 9 Feb 2025 02:42:42 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0C4836B0083; Sun, 9 Feb 2025 02:42:42 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ECF276B0085; Sun, 9 Feb 2025 02:42:41 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id CE2D96B007B for ; Sun, 9 Feb 2025 02:42:41 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 23C2C1203EF for ; Sun, 9 Feb 2025 07:42:41 +0000 (UTC) X-FDA: 83099614122.28.BAFBB97 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by imf29.hostedemail.com (Postfix) with ESMTP id 404F7120008 for ; Sun, 9 Feb 2025 07:42:39 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=eJlrhVlR; spf=pass (imf29.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=1739086959; 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=aj6VsN59qgaOA6zQ8JD8ppUJ1DALJ9Qq6JDs67X+QqY=; b=B+9+3BEHL/OZnL3g4OSb7sI6scwZPCPl10qc6r3HiNRN5VQ/QMOq8Fd/LBL7jyQitgj28X hUwH45xGyHiFEdgM54M3DNh9z24+1huB3A0Wc4w7SN05Hi3hgTdM0JeTo6KCNNB8hKklK1 5v7nZbXR8m+YwWtiZREJvlBT5hHiSPM= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=eJlrhVlR; spf=pass (imf29.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-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739086959; a=rsa-sha256; cv=none; b=JHmnorstzOM5D+LyJ2yx9UsN4DXdE/Nb6yFnnOQhrVy8/8Gryh4OuWZbusmI/JSzStpe2A 6qCG7Hjlt6/omrV6NSnCv6NtTli+tuVZ0JgsZVsgFtMNWdRE2X335dhmYI7pHsrgx71c9F 7ipwS1qqlpLo1RGnzPP7XRbZ7Ah0+14= Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-219f8263ae0so61818935ad.0 for ; Sat, 08 Feb 2025 23:42:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1739086958; x=1739691758; 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=aj6VsN59qgaOA6zQ8JD8ppUJ1DALJ9Qq6JDs67X+QqY=; b=eJlrhVlRW2GdUTfy2z9mFt1WoAUAM3nGDoGZDmYlZyTvz5Knu95CpYmgM5aKSyOnGr FFQEPHrHjjgymdsOUfROQey0BIY0s/3x9rw3COIoPV7Y6R5bEdUDiV9YoHrjQpTIWPyo v0GBDyRLDUdKb/DKF9oumYNdxyL3zHBHxsPXE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739086958; x=1739691758; 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=aj6VsN59qgaOA6zQ8JD8ppUJ1DALJ9Qq6JDs67X+QqY=; b=A2y5g8OwGvoTdWK7sRzpJ2AQv8ekVXI58f6heIcTBGwhmAtXFfKY6yR80u1vFWcsHq I2JjFBgdLNUuZYQwL410v6ghotX9HfNdCYwJ2FeQ8/EQ3MInPpcCSUG6ZGUk/CY+0UWO Od/H2S57hguszrH1+drlHUuPmPu7e999A/OhMT59IVlL9E6pOCYafBYIRGOyKXLNHs6G E4WZdRWbSpFEKrwBVsBzGw/LQDKeV5tU8c8PQQD4ZLw77vsLveeGrkM1Y0KuQr1BrU1P FUbfIWpwyr90sTHhJR+3V/b7jFXDFRO8mamm64bg+Wvus6ZRt3bVYMJfGonhJrJENTZr FO0A== X-Forwarded-Encrypted: i=1; AJvYcCX0jdegCaLf6qxDlrXooeCBl5Y3NBCckbzWZinzgZAVkFXqGlxciXRnvrnsXs6GPp0+5SkWC/n2SQ==@kvack.org X-Gm-Message-State: AOJu0YzhfuOG32wOvmK3MJHVQVcNLsi1d3x8+FlD1+YnoqixGfXGVGlx lY+Dj2JvUtPuC4XD4GiL0riHksezApGMLPa/pzoVlwLePjgQkjda/7MNzYbA4Q== X-Gm-Gg: ASbGncuRKSvmgS3ijPcCE5XBQp6YWAY5/Qc3Qk3qFgtyIKWsEdD77TIztiD0gDGWgkr aC9Ff6XhqKIc121kLQbsn8RXOFn6kFHLM+jHpG+buRDpHcMwuxasHo58Pe9ciMeaFrBwjkrf8y/ r/vlkHwZQFG0ZaBIWHGSSZBCcczd2mjuxASRtjHkpK93i4R46lBcuV4VFYUX/sd699Ibh4Vpwnw C2WHbow+r5ERJZBXvCeU2LZor5SUS5pRAsm0mn2keJ6gPhQMRMP/37fftrxaa/lYX8FDc2t9l0u P8udRc2i8A57VDj8wJo= X-Google-Smtp-Source: AGHT+IGKafUy2lk/Tg+WrVy4kxlkIRrKteWAhCn5lUBihsfbFLKTBctMtYyDooag6ND3Sqbh1nHJkw== X-Received: by 2002:a05:6a20:8405:b0:1e3:e77d:1431 with SMTP id adf61e73a8af0-1ee03a8dbeamr15483369637.23.1739086958097; Sat, 08 Feb 2025 23:42:38 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:561c:e985:5563:fc48]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73048a9d4c0sm5476326b3a.22.2025.02.08.23.42.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2025 23:42:37 -0800 (PST) Date: Sun, 9 Feb 2025 16:42:32 +0900 From: Sergey Senozhatsky To: Sergey Senozhatsky Cc: Yosry Ahmed , Kairui Song , Andrew Morton , Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCHv4 02/17] zram: do not use per-CPU compression streams Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 404F7120008 X-Stat-Signature: 4zuqg811e83a1nkf4cqqc9458w6951sb X-Rspam-User: X-HE-Tag: 1739086959-585265 X-HE-Meta: U2FsdGVkX18tLHlya5yG63c5x+x37BsJvxX9nhFowzKBQwTUfeeaM3T0i+x2uOwjGS9JsTIihNc67Ri8XLGTna1UWqndpCXt6n7Pb84yKCRQpvueAgww23LAiV0mF0f8PRqhmZaq6EN1Etj6xtr5r0SAILKI9RyHZJT61XWdurKuu4uD3cuUJcpJ/rDmz4s1ig4Y2PL6LoUzL077YiS3uA/U/w0ZM0Rx+MRskgYAOJjEgwZ3fk0zR74/lFLKMpuU0xX6I6UweJTwtUmT2slgsQLUiH3EX+s6YD7pTmEc8Ipc6+bLYNUcFRFdcNpbdUdL3kkkOeSGyQD6zqb4l654XWbITKZUi/aq5DOI4yS5itbvEGVldH6rNzP2+UaZC/vLzIZyj/wR2ObqykewZpXZgzDQ38hENpcV4CF3QGoQVOZIctHtXkbvAcSwRpTAjX5sXnHRIYWUKe9gHh+tP438a+egSV9PjR4lC9rwCAuRYag3b91nUWgaIbomby7rEvwZ4P0TPadV4M5EjQ81ilNIf8PFPXnsOclyk8aBjUZGLzZoDv9kw+4S7IZVtr9229UHmVC9i1J810jDfzGCDe/0mSupy+Lgk5UlcAEbCXqXF9uppAFC393x55RFSf3TNLCYz5odO4FCYBFWmhYuDrWvPS3ndmfbhCoUTpS9hIgvbel36NSiHrZBnSkREgkfv29eZFIbHWfmydlNOpddZfAcy3fGQfpSYU1n3p3jz1lcHaKE98DPGzUrV9aHlYJHylKm9ihimFmFgTcdGY2lY5VATV7aH+B9t292OqmmEzPIRTUbXFFRHnoXwfbH+u7TwXBJIzUJFGbYs3ziwpsbM5Rgsv7XnM5z8/Uo9nYccmppnFfQaGA2oOXnVBAioXxIL7Iu51uZHfl0LE9MVujWKDaJRTwsTD4lYRno80WN/QUEacHMs29KiZhyGy+dugSmKUXjZK36JO8zuV+4P/7JmIX tkF9wfe8 3g1QCSkIITEaP7i8qUSjcIrswemjRGYuFMXmiui8GkXuzKH6iCxE2Z3R78o2fCbB5OSIlC4mI03R61A/zLlpBpaYdylOp5qSlWG/K2OP6f4J/Gggu4ygrG8M8iRiV3+hHZLlqlh4pY2E6CEU1gPZ51FxayOkLk4w01rI7BMkQ5FgIZ2XWnNFj+eUfHwOYt7/Gj/jmvjM4OpCFJnlsdF4wN339m/y8kEK//Y5tI8Kc2J861IxwxJCiSjtRfNQfedo/GCa+dYU0P9Xcp1E6xjEUpXhr4ZoRcnp2S4nyGwLTrtsGHUjB4CN937D8BAIfjP8nx6rfMa1xrG3wKcArNbyZUujm1b6OsHGVcnDGK1+WMtAFpiQ= 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/09 15:22), Sergey Senozhatsky wrote: > On (25/02/09 01:20), Sergey Senozhatsky wrote: > > So I moved lockdep class keys to per-zram device and per-zsmalloc pool > > to separate the lockdep chains. Looks like that did the trick. > > Also need to indicate "try lock": > > drivers/block/zram/zram_drv.c > @@ -86,7 +86,7 @@ static __must_check bool zram_slot_try_lock(struct zram *zram, u32 index) > > if (!test_and_set_bit_lock(ZRAM_ENTRY_LOCK, lock)) { > #ifdef CONFIG_DEBUG_LOCK_ALLOC > - mutex_acquire(&zram->table[index].lockdep_map, 0, 0, _RET_IP_); > + mutex_acquire(&zram->table[index].lockdep_map, 0, 1, _RET_IP_); > #endif > return true; > } > > and > > mm/zsmalloc.c > @@ -388,7 +388,7 @@ static __must_check bool zspage_try_write_lock(struct zspage *zspage) > preempt_disable(); > if (atomic_try_cmpxchg_acquire(lock, &old, ZS_PAGE_WRLOCKED)) { > #ifdef CONFIG_DEBUG_LOCK_ALLOC > - rwsem_acquire(&zspage->lockdep_map, 0, 0, _RET_IP_); > + rwsem_acquire(&zspage->lockdep_map, 0, 1, _RET_IP_); > #endif > return true; > } I guess this was the point lockdep was making. lockdep knows about strm->lock -> shrink_folio_list which goes to ptllock via folio_referenced and cluter_into lock via try_to_unmap. Then lockdep knows about zram entry->lock -> strm->lock and, most importantly, lockdep knows about cluter_into lock -> zram_slot_free_notify() -> zram-entry->lock. What lockdep doesn't know is that zram_slot_free_notify() is a try lock, we don't re-enter zram unconditionally.