Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/2220013/?format=api
{ "id": 2220013, "url": "http://patchwork.ozlabs.org/api/1.2/patches/2220013/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/patch/20260405195007.1306-7-DefendTheDisabled@gmail.com/", "project": { "id": 8, "url": "http://patchwork.ozlabs.org/api/1.2/projects/8/?format=api", "name": "Linux ext4 filesystem development", "link_name": "linux-ext4", "list_id": "linux-ext4.vger.kernel.org", "list_email": "linux-ext4@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260405195007.1306-7-DefendTheDisabled@gmail.com>", "list_archive_url": null, "date": "2026-04-05T19:50:02", "name": "[6/6] exfat: map ptime to exFAT creation time with rename-over", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "9e5dbb37b050b41b2c0f6028755e12e6c8d67932", "submitter": { "id": 93064, "url": "http://patchwork.ozlabs.org/api/1.2/people/93064/?format=api", "name": "Sean Smith", "email": "defendthedisabled@gmail.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-ext4/patch/20260405195007.1306-7-DefendTheDisabled@gmail.com/mbox/", "series": [ { "id": 498804, "url": "http://patchwork.ozlabs.org/api/1.2/series/498804/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/list/?series=498804", "date": "2026-04-05T19:49:56", "name": "provenance_time (ptime): a new settable timestamp for cross-filesystem provenance", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/498804/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2220013/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2220013/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <SRS0=9Z7Z=CE=vger.kernel.org=linux-ext4+bounces-15648-patchwork-incoming=ozlabs.org@ozlabs.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-ext4@vger.kernel.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "patchwork-incoming@ozlabs.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=rh6owsbo;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=150.107.74.76; helo=mail.ozlabs.org;\n envelope-from=srs0=9z7z=ce=vger.kernel.org=linux-ext4+bounces-15648-patchwork-incoming=ozlabs.org@ozlabs.org;\n receiver=patchwork.ozlabs.org)", "gandalf.ozlabs.org;\n arc=pass smtp.remote-ip=172.105.105.114 arc.chain=subspace.kernel.org", "gandalf.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com", "gandalf.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=rh6owsbo;\n\tdkim-atps=neutral", "gandalf.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-ext4+bounces-15648-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=\"rh6owsbo\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.167.175", "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=gmail.com" ], "Received": [ "from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fpjmQ1vTFz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 06 Apr 2026 05:52:38 +1000 (AEST)", "from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4fpjmQ1PJZz4wF0\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 06 Apr 2026 05:52:38 +1000 (AEST)", "by gandalf.ozlabs.org (Postfix)\n\tid 4fpjmQ1GCKz4wCm; Mon, 06 Apr 2026 05:52:38 +1000 (AEST)", "from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby gandalf.ozlabs.org (Postfix) with ESMTPS id 4fpjmL5Rlnz4wF0\n\tfor <patchwork-incoming@ozlabs.org>; Mon, 06 Apr 2026 05:52:34 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id B91A13021584\n\tfor <patchwork-incoming@ozlabs.org>; Sun, 5 Apr 2026 19:50:58 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 09B06381B15;\n\tSun, 5 Apr 2026 19:50:53 +0000 (UTC)", "from mail-oi1-f175.google.com (mail-oi1-f175.google.com\n [209.85.167.175])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 7F238372ED2\n\tfor <linux-ext4@vger.kernel.org>; Sun, 5 Apr 2026 19:50:51 +0000 (UTC)", "by mail-oi1-f175.google.com with SMTP id\n 5614622812f47-46fc5b8a068so503250b6e.3\n for <linux-ext4@vger.kernel.org>;\n Sun, 05 Apr 2026 12:50:51 -0700 (PDT)", "from localhost.localdomain (c-73-5-99-191.hsd1.la.comcast.net.\n [73.5.99.191])\n by smtp.gmail.com with ESMTPSA id\n 5614622812f47-46f46160155sm4547428b6e.17.2026.04.05.12.50.47\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Sun, 05 Apr 2026 12:50:48 -0700 (PDT)" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1775418758; cv=pass;\n\tb=meLGD4SF9S6A8Kgl8+pEw98dcUt4ufcaRAMNtkyroO9OlRrlcOqEq9XEcFluU03Z6A15O8pxxhmlg1FCnpMaB/Rfvr2R3mWrUV7nWUPx72rPPyzuWf9l6QdS98oKhxt68pniIPBtjc67iEnhFAwrhF37bu0fYqoibAAV2p4ZrQjIM4npUm0Gy61X/rYK6RHD9bBlRVH6DBx/Z2NNDuCqFBhy2un41GCqN2Zp2t7JpwxYa+Q4Qz1eg1TvLCbdPvaaJTDWJktiKW2xPIC9rLfhkWLALYd+P3f3l5xByVE4wNnvFrnamrvM/0t/nTdKn2v65/vhBuLLw7t8t+eGd/8eLA==", "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775418652; cv=none;\n b=bGGARA68ZfdEPA5j394eIgNTkBJ88WuoRjfMB+SZugPxa0EfYjR7EDLFDHkcc5SEBrS0qmXsjjcQLh1X4yKTOPIIyvvKA7U7izvczmoMMejjLF35esoCljgXEoUcwHZ2B+LL+Hb/y35kNPnhN7miHZb+Jb1Uu3EVjlQcGzDsRUc=" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1775418758; c=relaxed/relaxed;\n\tbh=KlPOfR3Gdqzse/ZH/+C3LmQPc6s/iyp+29XZTkd6JSs=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=u/REqa0hDxjAuGRtsv7ojU/MpDYctyrvsxlQ9rjyyORJ3otzE88NN0/IbpQfZpH8f3HtCCvKA/ciPKjnOqbEHJ3XcCi1Xq/fyHs1elYfYA6QOf/MZuM3g1LkMoMNdhGMU5fXfCirJZl2gr5O5MwlNdpHisgr5ZJ781hVZRpt/njinIPV4IQ5pq5fKCLPZHewa1uvPUiz/vX+fhL7bpS0bk28XwZttieF5TQ795ocCuowwjIq9zRQfonnsygGSzvaYUk7CYIHLUSwzq72HFWNkq7sn+QunCsXeVX3gNBczU9Ce5ryV43MD4ZwRP4f+1KEzIbQI2nWipgpZjfwssw2Ww==", "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775418652; c=relaxed/simple;\n\tbh=pj9izgkvaTpAgOnLoFsABfEkNw9zO15w9ucfnlZdKpk=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=lQ7qneJvwaonU+tW7Dda1tCZPvFGFDiaf4/HYWH5UxLbjFVETNmIijHc9HG9j2yCJbwHBuY6YbRUd27qH3WQByE/j8p7cED1yp96jS+gFeV8P/x/pzAScQSiBe27LnA7jVYI8/jzMsjIrWvCxYYoNKQqNUv5fRoo9+G0s8wWmfI=" ], "ARC-Authentication-Results": [ "i=2; gandalf.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com; dkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=rh6owsbo; dkim-atps=neutral;\n spf=pass (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-ext4+bounces-15648-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org) smtp.mailfrom=vger.kernel.org", "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com;\n spf=pass smtp.mailfrom=gmail.com;\n dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=rh6owsbo; arc=none smtp.client-ip=209.85.167.175" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775418650; x=1776023450;\n darn=vger.kernel.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=KlPOfR3Gdqzse/ZH/+C3LmQPc6s/iyp+29XZTkd6JSs=;\n b=rh6owsbo2uEvJW6wIx2n3RiJ3gNb2G/Z6Y++ui7W+U1rQ5w/GzAfkVBKxmsfLCVtyi\n BiaJnDUgPrACvNiq0elkWG6+gRQocmyUHDJvGVKGn62wWiBJN6mGTUltO9YQDmUX+sKY\n CjkupcbyftMtNVHL616kFreIp0aaLgUHN5VWYcNBk5lyaE8Ei0Vm2hYhU4t2QsGPBc3N\n mU7/Y1+2ziR7PeI/abF+w5COa1dDtFz7wR0vDy9sNsVy2xraRGSsC029uUpbaKrKksHi\n JfLosLNN0fOLCtQ5BxrGEuXPDIL1p6wp4Th5+F8lXbH2zrgdtAvPbm/g3OwRwkocMpER\n NG3w==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775418650; x=1776023450;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=KlPOfR3Gdqzse/ZH/+C3LmQPc6s/iyp+29XZTkd6JSs=;\n b=D3/QnqyssUNMtbmykCh0bNB+ExMK6AuChwN+3uWFmUWkE8o3ENmwVlatQDodMV/8aQ\n BkR6EopTnzzdj6x66Y0hdRiAbp4vckotyPc98Vfh5Ug8DxiX1mAjmRwJU9P8OWXtLZDK\n JMIiBNal6V22ve+DNHwI4T70EZ3udzMq8DAXDHwRFs+iZTdGPuMOy48z9H974vXfwEWt\n r8lavZcTFp3q2y3TwSOl2NqpWRgKnDbBCjYtIehRuDxewsfp9zB+++a7wcaFsOM4drYs\n 6PMEWp0Pw2sFAkKXG3d+1tResU9D6LjPaC9cIDdtsSmK4uV59H/V4AOk5vXLmu+yI/fW\n OdHw==", "X-Gm-Message-State": "AOJu0YyG5QGf9nhLTHEr8fNyB5WYcMnwDT4O4e3WW8P4GF+/bzeIF0x9\n\tOn9mzjC/SQCInwgXdEvTKTnRTmZsa8PFMLZ+LBZUuC+RBZPyVw2GRamt", "X-Gm-Gg": "AeBDieswDVen1njhl2pIkrBBfQHwgH2n4TPJze5kQQAipvfKLd4tFvPuyKSXaD8jqKV\n\th827r7eK9fd0/Kz4BGoY0cv7nCZ0IFTpivlHLd+6XPImA7fYSXyPcJAebOk0159U0Iu1TdryTlU\n\tLaVqSrLhdwf3ius+6uSd3x/n6PY7L9csAXXIa724cTqlBm9l/DUHxkjC45K65Rugc7YPi4c+gUO\n\tLhcuFC4xoIrvUMgPnwrJXlnx9pqhoizCIQNqbgApy7ZWuvy6TbZ1STpjjk1GjOMkKJHrqcah/oP\n\tWHrPOSOPvyJtkIct/y561qm8qotS7KNMhkMLIJNZN/tkLx/I9/E80JqhwiDotwf3cXm6fAJpX7u\n\t0v+vXRdwQF3DnxN2Ysm2pjOXAlRryj0ifvZhdMMwjYwdR/IdsK3vvelq6V6fnWUMxI64QfTDldC\n\tlrJOreHnKW5PFVKKBBLQ+E/lDKJmFM7Kh73pQfhOz3kB646qmz5oX/bkaUoGqPBM0ghjLoyJW1r\n\t5PWh8tsJrxDPEU=", "X-Received": "by 2002:a05:6808:67cc:b0:467:1ad3:80c with SMTP id\n 5614622812f47-46ef50025b2mr5012571b6e.1.1775418650293;\n Sun, 05 Apr 2026 12:50:50 -0700 (PDT)", "From": "Sean Smith <defendthedisabled@gmail.com>", "X-Google-Original-From": "Sean Smith <DefendTheDisabled@gmail.com>", "To": "linux-fsdevel@vger.kernel.org", "Cc": "linux-ext4@vger.kernel.org,\n\tlinux-btrfs@vger.kernel.org,\n\ttytso@mit.edu,\n\tdsterba@suse.com,\n\tdavid@fromorbit.com,\n\tbrauner@kernel.org,\n\tosandov@osandov.com,\n\talmaz@kernel.org,\n\thirofumi@mail.parknet.co.jp,\n\tlinkinjeon@kernel.org,\n\tSean Smith <DefendTheDisabled@gmail.com>", "Subject": "[PATCH 6/6] exfat: map ptime to exFAT creation time with rename-over", "Date": "Sun, 5 Apr 2026 14:50:02 -0500", "Message-ID": "<20260405195007.1306-7-DefendTheDisabled@gmail.com>", "X-Mailer": "git-send-email 2.51.0.windows.1", "In-Reply-To": "<20260405195007.1306-1-DefendTheDisabled@gmail.com>", "References": "<20260405195007.1306-1-DefendTheDisabled@gmail.com>", "Precedence": "bulk", "X-Mailing-List": "linux-ext4@vger.kernel.org", "List-Id": "<linux-ext4.vger.kernel.org>", "List-Subscribe": "<mailto:linux-ext4+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-ext4+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "X-Spam-Status": "No, score=-1.2 required=5.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DMARC_PASS,\n\tFREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,\n\tMAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=disabled\n\tversion=4.0.1", "X-Spam-Checker-Version": "SpamAssassin 4.0.1 (2024-03-25) on gandalf.ozlabs.org" }, "content": "Map ptime to the exFAT creation time field. exFAT creation time\nhas 10ms precision.\n\nGetattr: report creation time as ptime.\nSetattr: write ptime to i_crtime.\nRename-over: save target creation time before __exfat_rename, restore\n after. Preserves creation time across atomic saves.\n\nSigned-off-by: Sean Smith <DefendTheDisabled@gmail.com>\n---\n fs/btrfs/inode.c | 3 ++-\n fs/exfat/file.c | 9 +++++++++\n fs/exfat/namei.c | 21 ++++++++++++++++++---\n 3 files changed, 29 insertions(+), 4 deletions(-)", "diff": "diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c\nindex dce80561a..918dfd4c5 100644\n--- a/fs/btrfs/inode.c\n+++ b/fs/btrfs/inode.c\n@@ -8715,7 +8715,8 @@ static int btrfs_rename(struct mnt_idmap *idmap,\n \t\t/* Note: if rename fails below, ptime mutation is harmless —\n \t\t * the source file keeps its previous ptime=0 semantics since\n \t\t * the rename didn't complete. The in-memory value will be\n-\t\t * overwritten on next inode read from disk. */\n+\t\t * overwritten on next inode read from disk.\n+\t\t */\n \n \t\tret = btrfs_update_inode(trans, BTRFS_I(old_inode));\n \t\tif (unlikely(ret)) {\ndiff --git a/fs/exfat/file.c b/fs/exfat/file.c\nindex 536c8078f..b6438bd79 100644\n--- a/fs/exfat/file.c\n+++ b/fs/exfat/file.c\n@@ -277,6 +277,11 @@ int exfat_getattr(struct mnt_idmap *idmap, const struct path *path,\n \tstat->result_mask |= STATX_BTIME;\n \tstat->btime.tv_sec = ei->i_crtime.tv_sec;\n \tstat->btime.tv_nsec = ei->i_crtime.tv_nsec;\n+\tif (request_mask & STATX_PTIME) {\n+\t\tstat->result_mask |= STATX_PTIME;\n+\t\tstat->ptime.tv_sec = ei->i_crtime.tv_sec;\n+\t\tstat->ptime.tv_nsec = ei->i_crtime.tv_nsec;\n+\t}\n \tstat->blksize = EXFAT_SB(inode->i_sb)->cluster_size;\n \treturn 0;\n }\n@@ -337,6 +342,10 @@ int exfat_setattr(struct mnt_idmap *idmap, struct dentry *dentry,\n \tif (attr->ia_valid & ATTR_SIZE)\n \t\tinode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));\n \n+\tif (attr->ia_valid & ATTR_PTIME) {\n+\t\tstruct exfat_inode_info *exi = EXFAT_I(inode);\n+\t\texi->i_crtime = attr->ia_ptime;\n+\t}\n \tsetattr_copy(idmap, inode, attr);\n \texfat_truncate_inode_atime(inode);\n \ndiff --git a/fs/exfat/namei.c b/fs/exfat/namei.c\nindex dfe957493..9c0b59e00 100644\n--- a/fs/exfat/namei.c\n+++ b/fs/exfat/namei.c\n@@ -1262,9 +1262,24 @@ static int exfat_rename(struct mnt_idmap *idmap,\n \told_inode = old_dentry->d_inode;\n \tnew_inode = new_dentry->d_inode;\n \n-\terr = __exfat_rename(old_dir, EXFAT_I(old_inode), new_dir, new_dentry);\n-\tif (err)\n-\t\tgoto unlock;\n+\t/* ptime rename-over: save target creation time */\n+\t{\n+\t\tstruct timespec64 saved_crtime = {};\n+\t\tbool inherit_crtime = false;\n+\n+\t\tif (new_inode && S_ISREG(old_inode->i_mode) &&\n+\t\t S_ISREG(new_inode->i_mode) && old_inode->i_nlink == 1) {\n+\t\t\tsaved_crtime = EXFAT_I(new_inode)->i_crtime;\n+\t\t\tinherit_crtime = true;\n+\t\t}\n+\n+\t\terr = __exfat_rename(old_dir, EXFAT_I(old_inode), new_dir, new_dentry);\n+\t\tif (err)\n+\t\t\tgoto unlock;\n+\n+\t\tif (inherit_crtime)\n+\t\t\tEXFAT_I(old_inode)->i_crtime = saved_crtime;\n+\t}\n \n \tinode_inc_iversion(new_dir);\n \tsimple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry);\n", "prefixes": [ "6/6" ] }