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 81862CEACE5 for ; Tue, 1 Oct 2024 16:17:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 20076680025; Tue, 1 Oct 2024 12:17:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1B042680023; Tue, 1 Oct 2024 12:17:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 07808680025; Tue, 1 Oct 2024 12:17:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id DEE38680023 for ; Tue, 1 Oct 2024 12:17:47 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 9A5A4C085C for ; Tue, 1 Oct 2024 16:17:47 +0000 (UTC) X-FDA: 82625539374.03.418A97E Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by imf05.hostedemail.com (Postfix) with ESMTP id BC843100012 for ; Tue, 1 Oct 2024 16:17:45 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=TqftnYw6; spf=pass (imf05.hostedemail.com: domain of jstultz@google.com designates 209.85.218.41 as permitted sender) smtp.mailfrom=jstultz@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1727799400; a=rsa-sha256; cv=none; b=OGs9aNG7G+4GBj5ZXMrF9Gux81ElPiEUJovS0W595XnTtnEHk4TZJuXiyPG6ZzaPsGlBdc eUV8gXhVmoCLJJ9zFvk5QZEaVDlrhgQuwTzLZLDS0NNCkVt4PdtOEubm+w5cuSWkbiWIKd C5+Iga3G8UD2TJdTM8Vrv0O0QOmJ9UA= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=TqftnYw6; spf=pass (imf05.hostedemail.com: domain of jstultz@google.com designates 209.85.218.41 as permitted sender) smtp.mailfrom=jstultz@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=1727799400; 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=g1gtQcrWNpd5RcxSJdvlyP5hnxs6NY26BZrJEREQ6SI=; b=nPAB+a1ZE8lyigIlgTI+EPBvIGlo6LM7UfQqKo/cfbysjkKgdBtdJuoFbtZOZGr9aYKGy5 47b/CHflxlOFaG6NVgyKzLSgaO3XFNbVR+FldJfXAWc7udcRBzOCFzc2BfzHCsOMLlc35l AC0fMZC6ZzZ8BesF1VWSnjQ1SR0w/fI= Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-a90188ae58eso730050266b.1 for ; Tue, 01 Oct 2024 09:17:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1727799464; x=1728404264; 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=g1gtQcrWNpd5RcxSJdvlyP5hnxs6NY26BZrJEREQ6SI=; b=TqftnYw6Z7B2XHKzwBTPW7V9IGACmhiR2lSmnQNEPWXNot/P8P87onyp1oXrFpSis7 iIxjL5yvki3X9+ML0gxNEVtWtdPwDk8cIzm485MyCd6OrfOEPmSvXRi0Bcu6cI/9BzR2 xTXrC9O8UNz7Xo2GYzAoBEhFvYL4+eHq6nrZLl7VlGkwVJUfl2D/TGPVh1j4Ebe3aNKe O3srU+OcO+6Xi7PAO11ZVTUPh9jgCf6QCXEqwsBy1R5b1Mf9gRIZAMHjNTX5kaMne131 x3/gJbm3YlFjYbKJ1YJ7hyPQFUjP1Q2Cl0vCzyJUHozMaqmPWTKrfn4rnR69lyJ5COU5 wrsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727799464; x=1728404264; 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=g1gtQcrWNpd5RcxSJdvlyP5hnxs6NY26BZrJEREQ6SI=; b=pghugwFbqK4U35x57W8QfLbTri43SuXNLt8HuKVP4Xt+NRl1jb0GDF/B44uJA+mqmh d25Rv1gmo9lOfUDihpQYVmDdPeZCdfRT5nmRzAXIh2fXhkih14KpGSzcSi6//U6rNxnE nJxnZ83+8hDesYpL3zQPFcd4V4sjIS6TN6GdUYcGMyCTomvlJ3yf6wrfJJeLptFy+fz1 OcWE3FcPjkK6eYDAp3nhO3W2KhR356R9H+0HdMPVEkL1wDUoJolYxWEfwL/3+4bZKy5j 3IHj6PkVww/Z7BdhmYr2aU4rnFq5NLEV36MUWZm2/yUBEACw155x7xCNILd+8d3mHUMh pCag== X-Forwarded-Encrypted: i=1; AJvYcCVQLsh6S00BvR6fxEyUhL6ZYHRC5dWARQj+diHicwVV1Xok4TRDpxH+zqhuSIJK4URKm83fbWcJYw==@kvack.org X-Gm-Message-State: AOJu0YxOlg9WEme5y4boJ7SLM3zvlANGAPawCYKnOHisrPwJ13rFqTOg lTmM/n1CUK3TTMRvNDhg2T6DEyhDkGfitVDjOZX7iJSHnH2jGFvuryKrEW4LpXY8QXKWeiCcGfv DY1v5BLigoHHayIueJ1397+gciJA193+LYP4= X-Google-Smtp-Source: AGHT+IEb55N3RbLLnNditOaIXzMGvdtfhXP4P7OFauiPnc3PqRDlMwtWq4LEIawZw0mkwT8uv4u9xKZ9+AFgQWhXcHQ= X-Received: by 2002:a17:907:3f97:b0:a86:b923:4a04 with SMTP id a640c23a62f3a-a98f834d078mr13740866b.50.1727799463691; Tue, 01 Oct 2024 09:17:43 -0700 (PDT) MIME-Version: 1.0 References: <20241001-mgtime-v8-0-903343d91bc3@kernel.org> <20241001-mgtime-v8-1-903343d91bc3@kernel.org> In-Reply-To: <20241001-mgtime-v8-1-903343d91bc3@kernel.org> From: John Stultz Date: Tue, 1 Oct 2024 09:17:31 -0700 Message-ID: Subject: Re: [PATCH v8 01/12] timekeeping: add interfaces for handling timestamps with a floor value To: Jeff Layton Cc: Thomas Gleixner , Stephen Boyd , Alexander Viro , Christian Brauner , Jan Kara , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Jonathan Corbet , Randy Dunlap , Chandan Babu R , "Darrick J. Wong" , "Theodore Ts'o" , Andreas Dilger , Chris Mason , Josef Bacik , David Sterba , Hugh Dickins , Andrew Morton , Chuck Lever , Vadim Fedorenko , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-xfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-nfs@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: g3e8ju73uar5ne6a9afyzgzp8sbcynxh X-Rspamd-Queue-Id: BC843100012 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1727799465-546958 X-HE-Meta: U2FsdGVkX1+xLoSdbA/FWFERhQXzYanzuwejhiQcjYAtGnf2K8vaEvtWtksYhCeXIs5OwuMHBwUKiktPtIBQWM4eKJcL17pJ73zQStOVS516u132fJIeBLZpPmixK8O7JaIDj72fl45qwhSbEXIEDi4bccQccUJ2RURYjizB4VJlfnTsW+MMJxWgjcMmA1PouGEewetDAHT8cELkx06FriovpkI1P6m9Af+LjdDtUntEwYuA5Wgy8lsCyNrMoGGWwgNM9iYNQMoPcWYtZ5JNaz/o1Rs6RSiVxK9WH9SMFoaxVxk12lT8VGL/csbSzE7WlqXvuG2CwR/zcoWR4gZw9EMLW9CRA8HyW8zzTRsXDANQibVWlVdu7Wc0KM4FJxWOxpRLDKVEDcWNXnAr6YObO1WlsCI36jKDST0tWa6EfgoM2e0l8jyWI1+M98h4SBwbKsuGEwppMO0dCgjdgWcMYsY8D1fQxxVdJe+nfHY5QSRE30VrLJXyorpDz747h3pxmk+8ID4eQkyLGHkI5qhpp+9NJpUaG0c1VQm8IXpcfvNbiPhReag7aNa6Ffyydz88ixGfYtIYc6K96if0uMPJRusmPNQI8XI6vzy7Se45kxOhZCS6ZTRM0QbPIiYWxOaK8mcl06sKDrU1i0kIL+sejW4nz+ZoBRKZAf6qnFuRk2u/xD9LFDVoIAJBUiZscaqdYzXKwCMA4At875arBo9HcvrxuLXfOi/WAXK40KfsYzjJOadKjj9f2AlYwLI5cKFSTmn6RvX6OS/3gVAmXYmztVflXYir49deIUKqc93cWo6rwjpztW29K2SGpPcdsohJIZTHuM/IViw5iScwkZp4zQsl7Z832Vvd8Iv52wnFdAd5B+ZlW6FWDYMnSP6uy0SZD3QoqxhPY0wMLPWY6szkWc1Nmwxtk9yEgnORhlqcAkR0hYRRJHmhmq/PiRj/ni6MnvzYgONCUySLbELtYav vW5LxAUx mjzZnXYZA9BTh6JFYSkUpElsivAMmVrdUCvNmZEmcHRBeio4I9GCLG3sCBvsI5yPZYf+wDTdsgfyNWEkpFPSnI3o4lGu3TmU8r1P4j6VVvLwL6Nh1qDjB31XjCdUHQ/c7dz4uVPZ0TACEHLGbg8FpjnCoeqLPDTutVgs7Cm5EkLeNIA5Is0xbMMQcKkF6dFPJugYGtxSCtffkbgQPTov7kGQDnFTQpJCs5FjulRHHeS4rtWnRtOuaKDt9m3lvQSZ9+8X7wz6VVBUY/tWKgO23Us8+zgtpBZKXqao+bbCsDcaqPDs= 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 Tue, Oct 1, 2024 at 3:59=E2=80=AFAM Jeff Layton wro= te: > > Multigrain timestamps allow the kernel to use fine-grained timestamps > when an inode's attributes is being actively observed via ->getattr(). > With this support, it's possible for a file to get a fine-grained > timestamp, and another modified after it to get a coarse-grained stamp > that is earlier than the fine-grained time. If this happens then the > files can appear to have been modified in reverse order, which breaks > VFS ordering guarantees. > > To prevent this, maintain a floor value for multigrain timestamps. > Whenever a fine-grained timestamp is handed out, record it, and when > coarse-grained stamps are handed out, ensure they are not earlier than > that value. If the coarse-grained timestamp is earlier than the > fine-grained floor, return the floor value instead. > > Add a static singleton atomic64_t into timekeeper.c that we can use to > keep track of the latest fine-grained time ever handed out. This is > tracked as a monotonic ktime_t value to ensure that it isn't affected by > clock jumps. Because it is updated at different times than the rest of > the timekeeper object, the floor value is managed independently of the > timekeeper via a cmpxchg() operation, and sits on its own cacheline. > > This patch also adds two new public interfaces: > > - ktime_get_coarse_real_ts64_mg() fills a timespec64 with the later of th= e > coarse-grained clock and the floor time > > - ktime_get_real_ts64_mg() gets the fine-grained clock value, and tries > to swap it into the floor. A timespec64 is filled with the result. > > Since the floor is global, take care to avoid updating it unless it's > absolutely necessary. If we do the cmpxchg and find that the value has > been updated since we fetched it, then we discard the fine-grained time > that was fetched in favor of the recent update. > > Note that the VFS ordering guarantees assume that the realtime clock > does not experience a backward jump. POSIX requires that we stamp files > using realtime clock values, so if a backward clock jump occurs, then > files can appear to have been modified in reverse order. > > Tested-by: Randy Dunlap # documentation bits > Signed-off-by: Jeff Layton Acked-by: John Stultz