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 454E7E95A8E for ; Mon, 9 Oct 2023 09:45:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D32908D003B; Mon, 9 Oct 2023 05:45:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CE2428D0031; Mon, 9 Oct 2023 05:45:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BD14A8D003B; Mon, 9 Oct 2023 05:45:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id AD1B08D0031 for ; Mon, 9 Oct 2023 05:45:58 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 7B8198019C for ; Mon, 9 Oct 2023 09:45:58 +0000 (UTC) X-FDA: 81325441596.11.F8EB6B0 Received: from mail-qv1-f51.google.com (mail-qv1-f51.google.com [209.85.219.51]) by imf08.hostedemail.com (Postfix) with ESMTP id B186A16000C for ; Mon, 9 Oct 2023 09:45:56 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="tDrR/6uO"; spf=pass (imf08.hostedemail.com: domain of glider@google.com designates 209.85.219.51 as permitted sender) smtp.mailfrom=glider@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696844756; 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=Y350VwO6015lGO7ERBdBbOV3S2AzDXdRMs/XXWO/P3w=; b=TkAf1m/e56212iX3gEcTFWmUY9E1LMNvwzFTs+BHRRSfwe1mm09AmQtDwaGPPGZKa+70E8 YW3WsSIO+ilxIJHAVCF9+ETNVauNJbO0nFUUrO5JkhJvtyAdZG7eFGDlj28f0sC1AbY0ji +Ip3MFpGZfe8ve5WsUTD6rBl+H3t23I= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="tDrR/6uO"; spf=pass (imf08.hostedemail.com: domain of glider@google.com designates 209.85.219.51 as permitted sender) smtp.mailfrom=glider@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696844756; a=rsa-sha256; cv=none; b=bPqieHbR+/iJ9mfyYyKSDeGI36HQ9RpydD3MWg+/oXbYD+y9FTgZS1Yu289IMOBjh9IYqJ a20Tt9IlalXp8w3D8nQ0JfWYrkNLDNzPlCpUBuDDkF2MOVNyYtbAzLeGXRaI0xC9UOTk8I oQdpjkznzWCiUqcfYnGSWVHsoW2tVSk= Received: by mail-qv1-f51.google.com with SMTP id 6a1803df08f44-65b08bbd8b1so29032216d6.2 for ; Mon, 09 Oct 2023 02:45:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1696844756; x=1697449556; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Y350VwO6015lGO7ERBdBbOV3S2AzDXdRMs/XXWO/P3w=; b=tDrR/6uOJcW8/Bp9fStVxDPjeahsK5y2iMLzQKs2biP+e8O73Fs6lRUnyAvGw2zI1Y F7Hhzq5RDnPrFK/jGZPL0glK1wOf5INvEi3aIa7jZFVoFhCtZgY2cF0zumhxTSMv6G68 MSzP1i8+D0L/cF65I9DBaXgE61+s0nq3Rn1FKzOcxN+8TmKQS/1z930jHaDjzypurMuj Nrb2V/Ccu6HnvFK+bY92YemxM/JsHA7FjGM8UY/5JR7LlraEcgiZ89cVBCyLrAHfnsXd MS1fiQy1Ex7lX/ifRrMZXywOTfJS6uc+qqBlU2ao8Z5DG2zGpkbOF55PU3QiQrSe1UUQ tp5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696844756; x=1697449556; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Y350VwO6015lGO7ERBdBbOV3S2AzDXdRMs/XXWO/P3w=; b=KRJFYHuS7GkA0UM/UVCeaePeNGv6C1/7Qtw/VQhhigyTRp2DH679T6KM/9jdEK8L78 3lmRnWrqE2CicENGlfmmEvRVPu7ov/94YAH8MmbVpQo8UX+1835Sv5NeNpCMUmSEF5ZC LSBilKUo13OI8ZMaRHZVpoeCBPWkysnkHAnOpuUrxEsCEKbjQo+0CEnCFxSEGj4cNyQH +JYt8p/53zvkViQsOff89kQXHisN335MPzZupWG2c4AkwjKCKwtRCtLT2dB9UrgYbIZW Trmcyj5miUfJse6W4KpA7RqL766mp/aGy+uJgBISt5v+hviIkOFfEWTPhU/J3nJHsvwW C38w== X-Gm-Message-State: AOJu0YxXz6nBeJsm4Lec6TbwExL/CRkXPc7+d1/SViils8pIuZS4/1jS eRlnlzpTg0N7fW6NEZnwFGpTHevQYEFSk9Yoq5ZGpA== X-Google-Smtp-Source: AGHT+IG4QwTOaXmfQuuDncJC4R3XFNA73CgEYP7+INF5jvwiHov6qqKlmNdOP31YsGcbP1khrk2f7OBVjVJhB5+zGjI= X-Received: by 2002:a05:6214:3d0d:b0:651:69d7:3d6a with SMTP id ol13-20020a0562143d0d00b0065169d73d6amr16569724qvb.15.1696844755772; Mon, 09 Oct 2023 02:45:55 -0700 (PDT) MIME-Version: 1.0 References: <5c5eca8a53ea53352794de57c87440ec509c9bbc.1694625260.git.andreyknvl@google.com> In-Reply-To: <5c5eca8a53ea53352794de57c87440ec509c9bbc.1694625260.git.andreyknvl@google.com> From: Alexander Potapenko Date: Mon, 9 Oct 2023 11:45:19 +0200 Message-ID: Subject: Re: [PATCH v2 11/19] lib/stackdepot: use read/write lock To: andrey.konovalov@linux.dev Cc: Marco Elver , Andrey Konovalov , Dmitry Vyukov , Vlastimil Babka , kasan-dev@googlegroups.com, Evgenii Stepanov , Oscar Salvador , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrey Konovalov Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: B186A16000C X-Rspam-User: X-Stat-Signature: 66dzdhtf3n5dxhtc11pqf31oihtrdp8a X-Rspamd-Server: rspam01 X-HE-Tag: 1696844756-251438 X-HE-Meta: U2FsdGVkX187cMaeNqRkaY80jo6CrhWCsGWDA+Op6iFD1vkY6qb+8XISFSMIsPszbCSwj2sEjQNABr1jnqQhuMmCpB6sCavynow8Rv6rxrYAOHAeX/xqPYDhKjWj/XkCoyU3QYh7lKet0r9baVAIl7YVdQLDm++E5uwtIhHYc0dQYnX2ztz1PlT7mgbnLopi2eFU5zBCggKWR8iV0HQTIZoD2KhkIk6jBQFiP31QQXxRKhpXjFxS1c7Mx9DuCLc4WNIOB4aYpq9fPqlY8JbTnSriGHZurM6reABDFhlGXuZPFRdoz6YqRGHEIYkswumgZfz3S4+ZSuMAouch55cLMtGdIzTbxU/Ek5JfYao4E+UkV4OAGA82Gw+zmUMyqsPTyELbFdBoYw7jpI3OZUvvzbJEc1dxcuCbr/M8Y9GURevgr4sEk8h0ej0ZzDQurJISUiScQ33RYbDE0J6GZC/rRra/ifQTLP+hG+GbqoUeLwNjAPMBOj9dB0xHUQ6rgQb9jFi0bP4qp7kYn/ml89CDc76Lv5cw8EjimjhCw5oRopOLul84s3QFFwq6/qIgq67ttKTxuEOlDUyfZYO65L29qAR96V9nrRe4zWEm6RHbnwZ3lVvgE4CmC6/FjbGXIvRm9s19lXN5+0k8C16/rJHU8bWQS84BAcvPAiRz9jCiuG/IWuWcc48Cl8an4z+KLN/qsH6msFDSRcij4WxDdS5Py5yEz2KjL1Uwyebkvpk8vtNYq/DLs+rLoplNEjwZiqsvq0Wj+fNDr+A4kZ4wSZH5IGggphKoPRSjsrMC/wdE4leBeXLlCDuuTG02g/4FHRyj/f6A2zEb6KlWD79IooXOP9FDWFxn5N5zhL26KajUAqP8xLSb286QheWM1whJXoeLSmpbY2tXANwTbOujcIl1Mv5aH/nkHebzk1x7fJ6CmLKxsT2aGke9tW19PbrHdrf+zpCVV01nRK/fp/AXRbF pjxusSqu /Esr9BYf7iE2BWXcVssIwEM7NHRI18u61WAQyB97Sfaq+VU70ays4FCBtCb5pBgRk661LzrtWZHOK0zl3YAYPvkrp0eUQG1sQbIbkHyG7tAGcFuirEQgv589iqDovCj+PK2RL1Hfoy8fwsxzZ3Ed9prQ+yfbFURITWRdMN0KnOZMu7LUW0iy6zqkoVQcbGR1iY9LmORRFdVVCcbgaKnZT3/78Cvnybqn8YI7pLTCggrlMLVBctT6+rclQzA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.006155, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Sep 13, 2023 at 7:16=E2=80=AFPM wrote: > > From: Andrey Konovalov > > Currently, stack depot uses the following locking scheme: > > 1. Lock-free accesses when looking up a stack record, which allows to > have multiple users to look up records in parallel; > 2. Spinlock for protecting the stack depot pools and the hash table > when adding a new record. > > For implementing the eviction of stack traces from stack depot, the > lock-free approach is not going to work anymore, as we will need to be > able to also remove records from the hash table. > > Convert the spinlock into a read/write lock, and drop the atomic accesses= , > as they are no longer required. > > Looking up stack traces is now protected by the read lock and adding new > records - by the write lock. One of the following patches will add a new > function for evicting stack records, which will be protected by the write > lock as well. > > With this change, multiple users can still look up records in parallel. > > This is preparatory patch for implementing the eviction of stack records > from the stack depot. > > Signed-off-by: Andrey Konovalov Reviewed-by: Alexander Potapenko (but see the comment below) > static struct stack_record *depot_fetch_stack(depot_stack_handle_t handl= e) > { > union handle_parts parts =3D { .handle =3D handle }; > - /* > - * READ_ONCE pairs with potential concurrent write in > - * depot_init_pool. > - */ > - int pools_num_cached =3D READ_ONCE(pools_num); > void *pool; > size_t offset =3D parts.offset << DEPOT_STACK_ALIGN; > struct stack_record *stack; > > - if (parts.pool_index > pools_num_cached) { > + lockdep_assert_held(&pool_rwlock); Shouldn't it be lockdep_assert_held_read()?