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 6A569CF3963 for ; Thu, 19 Sep 2024 19:54:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E8F306B0083; Thu, 19 Sep 2024 15:54:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E18266B0085; Thu, 19 Sep 2024 15:54:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C91F46B0089; Thu, 19 Sep 2024 15:54:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id A89AE6B0083 for ; Thu, 19 Sep 2024 15:54:10 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 69D4214100E for ; Thu, 19 Sep 2024 19:54:10 +0000 (UTC) X-FDA: 82582539060.24.0241F54 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) by imf14.hostedemail.com (Postfix) with ESMTP id 83E51100008 for ; Thu, 19 Sep 2024 19:54:08 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=M88I2OLB; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf14.hostedemail.com: domain of mmpgouride@gmail.com designates 209.85.214.173 as permitted sender) smtp.mailfrom=mmpgouride@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1726775556; a=rsa-sha256; cv=none; b=tjO9m419MVmGHwBaR42c5BpZzlCdrtrT7YJENYdTKICOBLNK+3ld/Q4ECsJ+JCpwST4q+W RHZ1nCBXW/pSdUPSfHF7SHaVQX8thzfQ+T/cX7Cl/Tlr53Zxtaz92l1x50O8jSdL+197KB E2RJwkIIHJVW9VCUzr+YP98AV0jXNUA= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=M88I2OLB; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf14.hostedemail.com: domain of mmpgouride@gmail.com designates 209.85.214.173 as permitted sender) smtp.mailfrom=mmpgouride@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1726775556; 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=PjXf6goRQFZ6Ws5IfZ8O0DYwX0AY16FeqqeJVmOvTGU=; b=TD8PS2wkp7OjjVmh3e1CGH6Ani5n6r+6ZtHp+IHy35TDK43/ej5cVLxLiipDS+waVn/OFI DVgvfI4Mn4OBcq1un/mDzq7eF1XVmU6icGEVkPsM7Y0kxxU/NCMrJEtc9hTK7yf6mx5vgV mlGQgGGlkb1rOHT/+6rHU77t0LC8E60= Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2068acc8b98so12933205ad.3 for ; Thu, 19 Sep 2024 12:54:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1726775647; x=1727380447; darn=kvack.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=PjXf6goRQFZ6Ws5IfZ8O0DYwX0AY16FeqqeJVmOvTGU=; b=M88I2OLBhOu7KoTjSea4o132byAiHTljjwUpAAFkz/TT2fcAzeLpGNaddIp6AQ2N0/ Vp6DyaKgMrq1tlg26XrZm0lCbiVvjGBd4swLwcrJrzqYR4zvahwKgJshbT0QlnvHC0W2 EFaBYrhj8KyMobJFiUMz2g17GW3P4mcvFgDPPJ8us4H4fYakhcWyeh81JrQEQ+CuI5T+ NgGiriByc4zdTDM1EaCeTe+/1jJE7oFYqsX2j0dFjAJIDF4EbkU9WUIM8BQaUnLrV3rG H4e/OdU/Hq/JZJFAhGbzcf0Mzwcc4h8Qr3mWSi174SzglkeTAlkbL9H+LX/21sl8/4J/ jLSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726775647; x=1727380447; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PjXf6goRQFZ6Ws5IfZ8O0DYwX0AY16FeqqeJVmOvTGU=; b=bR+3KzQLqrARSJw2ZD66Sw7KvqcH9ji0SAE3PJXIARwSXP6pkLyctB34/kr5+OC5IT 3VEqwN86aOdUKpTdVOxRAV0wWsVOoFynPeaBMkR5xFLAmmr1qPndL+1Px52q5+cYFVYt a2CQ3yAD1UYlyx9NQkbPoAsjEPkk8Z4y+28V6DOYygkXn7Hi2lAR4OAxD8iyJPQYHtYa eZ5G6FqZVLIiPWg2iD4VkkXQCxbegVdfkAod+AVUl8aAr55a+suo1ZX4WFuf0f+CZVam Mtq9SrimHzKrObBg/7jmDvyheZdSIi3RYyVM8HukY6waC75wE4WoG1fDLZDLvXJKqcb9 cRFw== X-Forwarded-Encrypted: i=1; AJvYcCV+/yvMRRcpI7iCSRj4jfRMZyBL6xa774leQCn4gi2IYhDkFVGeSsDoUF8dd/4VVl2VSo4h/UNDyA==@kvack.org X-Gm-Message-State: AOJu0YwktPVZE6WSPIOvreiCfGDppm4RbucsFU5WzqXlE2rAGL41ib2x +OKnd6YZKopsFtnaAspnv1JaRY19nxUqKrKFOZpqxWMsjnqopUC0 X-Google-Smtp-Source: AGHT+IH5dS4oXN8alWlSTmhjhkU0PXFpBaA5QFKN5xumUpTYUgMD5V/GZ5nWIJx9cLBmoKfPt4ah3w== X-Received: by 2002:a17:902:ce85:b0:206:cfb3:92e0 with SMTP id d9443c01a7336-208d8397c0emr6902295ad.17.1726775646983; Thu, 19 Sep 2024 12:54:06 -0700 (PDT) Received: from smtpclient.apple ([2402:d0c0:11:86::1]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-207946d19aasm83542725ad.127.2024.09.19.12.53.59 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 Sep 2024 12:54:06 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3776.700.51\)) Subject: Re: [RFC PATCH 1/4] hazptr: Add initial implementation of hazard pointers From: Alan Huang In-Reply-To: Date: Fri, 20 Sep 2024 03:53:47 +0800 Cc: Lai Jiangshan , LKML , RCU , linux-mm@kvack.org, lkmm@lists.linux.dev, "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , "Uladzislau Rezki (Sony)" , Steven Rostedt , Mathieu Desnoyers , Zqiang , Peter Zijlstra , Ingo Molnar , Will Deacon , Waiman Long , Mark Rutland , Thomas Gleixner , Kent Overstreet , Linus Torvalds , Vlastimil Babka , maged.michael@gmail.com, Neeraj upadhyay Content-Transfer-Encoding: quoted-printable Message-Id: <09AD613C-97F2-4C60-8267-18E27909779F@gmail.com> References: <20240917143402.930114-1-boqun.feng@gmail.com> <20240917143402.930114-2-boqun.feng@gmail.com> To: Boqun Feng X-Mailer: Apple Mail (2.3776.700.51) X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 83E51100008 X-Stat-Signature: gubgos8e7k95iueyesfnmsuo4ei3nh6c X-Rspam-User: X-HE-Tag: 1726775648-371890 X-HE-Meta: U2FsdGVkX1/M1FMsgdCPh/PYTk80jx3IqycAqATYMnUuBMEY5ujgLqZqkeHSbVEEi0B0wWZd2hwkrqWlo1on0EbWe8XQx0GhW3HN4oBQ9erjf9QUap4ICFkH5r5jGRq3HE1F8rWtZKgCdAzP5LTNlnHafBvUEkvN0MB/VItfRrgjLsWkyQk/o77PAQACQkcL9uZym7gZq+Wii/JUxTZEakD8CTKOd0p0Zmc+P5lf4JnlWwqoNL5KwM97z0p+6WDNXhzivYKfh8143jsR8kCwerMi5V1H2ppKqhborAv4euM93uamUX4w/+3VD7xGbHOUayUbCWjQloBh7EaIRef7ktTDJ5JBnKh8rbMM/aKg62fQZx0pYeLxM7iS9aETkwHWYaZENU598R7l5Z0q+J9de7sSHxLwOidvmzKXt/lzTO3XUZTXjC8Kg28DJ8MXO6QUgoKJE+lHuv4Bjb7CmyLdVBNXVMF5Xc8gEr6/1vHOtIrb+fozdylfa+X3T95tYQTWEHIulpiKSmXbERsDKrQemPqtU8fvNwSSwaMt1hSUeH1v/VPCFH4I9gw9meaHUDXexJuB/1YB4EF4dasJZXfoj0C7Zbt0G8ha590QZa5jf2CaTMUobB7rlZeXCMNnyWfWqMgiKJl3OXw4Km7/soHrHrHIIGrz9uNK/n4UygFgVjc7aaKkpem9i4o362TM5GkvIpD0lKvE6rzbAkgAoRqCRPNmppxE3GJko1VuLoce9I1Unbe+84DMrX775ixjM2aIivj2aQGpstR462KAqHZTTN8TzLb5R35wuKaUYuqxVvn0I6gv5Tj5Ia3RQz+gjmV9j/9f0eX1PCev5lARtpOMFJdR02WC8R9sEZMYpPneET/g8a2E5Td+ea4diHuaPlhY5FXXa/fC+5yRXyc5Os5WOh531vGlqMexL1Jkg6QXS2mAXrNVZ5zDT1YA6oiatKfVEX2wHS65UZ2eBMgvM0w eOstY9Ig 7SEjJOYvZDfZAMcEsj62obN+UC9NmPedJPzNpUY0hKMUcSkiQeRkv6sru+s1ixUJ+Co3KQiTTN2AAJpSxDJhSt4j1u4VBk++JcNHySn6/afEQhq8sL3PjDVmU986UsKWWm5g0/8aukCSSY//3xM960VH5zfMp2Lpqw11wgkYW6IAmMYKU2JEvNScI+u4IHflQXUuLY00KHQis6r6WbyIw0bE2Fqi4oDzhfgcsyzJbX1RPQzk27wmydcfOqainba1qH+tsQ78orUZSEsVErwdiPg4TBaY9Br2R1wldUd95w3WpBkXu1jN/4WSXA93BW9ERNgx/YfNvA6+EpmfbqhISBrHypKT1biZ+2Kn+qAsMi76tJAokX41NwlI/pxk5HzzYcNvUZqH8eyIQpzzMY1NTUQwyWn2+Jd1sxGkklH9XnsK2zolUrSxFY2fpWcJcydDxPhmUz44fhWCsoI3KOdgBdnuAfgtWgn1D10cI/wt3dKo2+3gK54GQZyHowSNZoeTicKjylffK1yvppzFZAcarnLaXNA== 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: 2024=E5=B9=B49=E6=9C=8820=E6=97=A5 02:58=EF=BC=8CBoqun Feng = wrote=EF=BC=9A >=20 > On Thu, Sep 19, 2024 at 09:57:12PM +0800, Alan Huang wrote: > [...] >>>=20 >>> I think you're right. (Although the node will be eventually deleted = at >>> cleanup_hazptr_context(), however there could be a long-live >>> hazptr_context). It should be: >>>=20 >>> hazptr_t val =3D smp_load_acquire(&hzcp->slots[i]); >>> struct hazptr_slot_snap *snap =3D &hzcp->snaps[i]; >>>=20 >>> if (val !=3D snap->slot) { // val changed, need to update the tree = node. >>> // Already in the tree, need to remove first. >>> if (!is_null_or_unused(snap->slot)) { >>> reader_del(tree, snap); >>> } >>>=20 >>> // use the latest snapshot. >>> snap->slot =3D val; >>>=20 >>> // Add it into tree if there is a reader >>> if (!is_null_or_unused(val)) >>> reader_add(tree, snap); >>> } >>=20 >> It seems like that two different hazptr_context can=E2=80=99t be used = to protect the same pointer? >>=20 >> Otherwise the following can happen? >>=20 >> thread1 thread2 thread3(worker) thread4 >> hazptr_tryprotect(hzp1, ptr1) hazptr_tryprotect(hzp2, ptr1)=20 >> add ptr1 to tree >=20 > Note that we have snapshot rb_node for each hazard pointer slot, so = here > thread3 actually would add two rb_nodes with ->slot =3D=3D ptr1 here. Ok, good to know the rbtree can have multiple nodes with the same key. Thanks for the explanation! >=20 >> hazptr_clear(hzp1)=20 >> hazptr_tryprotect(hzp1, ptr2)=20 >> delete ptr1 from tree unpub ptr1 >=20 > Therefore, there is still one rb_node with ->slot =3D=3D ptr1 in the = tree > after the deletion, so updaters won't invoke ptr1's callback. >=20 > Regards, > Boqun >=20 >> call_hazptr(ptr1) >> oops: invoke ptr1's callback >> Or am I missing something? >>=20 >>>=20 >>> Regards, >>> Boqun >>>=20 >>>> I'm not so sure... >>>>=20 >>>> Thanks >>>> Lai