)]}'
{
  "log": [
    {
      "commit": "5652dc4fbb6c9e7a4911ddcc4c3e373a4d014a6f",
      "tree": "1675797821a3960f09a1e6fa1073102181424137",
      "parents": [
        "5f46902a344d15ec01be5a659593282b30b2da33"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Fri Aug 12 13:45:01 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Fri Aug 12 13:45:01 2022 -0500"
      },
      "message": "xfsprogs: Release v5.19.0\n    \nUpdate all the necessary files for a 5.19.0 release.\n    \nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n"
    },
    {
      "commit": "5f46902a344d15ec01be5a659593282b30b2da33",
      "tree": "83b2849ed55d7a70631c6cfafe63b848ad8646d3",
      "parents": [
        "cf06f3af64e250c64fbc63965f6dde5cfb5550a1"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Fri Aug 12 13:39:25 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Fri Aug 12 13:39:25 2022 -0500"
      },
      "message": "xfs_repair: fix printf format specifiers on 32-bit platforms\n\narmv7l builds spit out the following warnings:\n\nIn file included from ../include/platform_defs.h:44,\n                 from ../include/libxfs.h:13,\n                 from bmap.c:7:\nbmap.c: In function ‘blkmap_alloc’:\nbmap.c:41:11: error: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘xfs_extnum_t’ {aka ‘long long unsigned int’} [-Werror\u003dformat\u003d]\n   41 |         _(\"Number of extents requested in blkmap_alloc (%d) overflows 32 bits.\\n\"\n      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nbmap.c:41:9: note: in expansion of macro ‘_’\n   41 |         _(\"Number of extents requested in blkmap_alloc (%d) overflows 32 bits.\\n\"\n      |         ^\nbmap.c:41:58: note: format string is defined here\n   41 |         _(\"Number of extents requested in blkmap_alloc (%d) overflows 32 bits.\\n\"\n      |                                                         ~^\n      |                                                          |\n      |                                                          int\n      |                                                         %lld\nIn file included from ../include/platform_defs.h:44,\n                 from ../include/libxfs.h:13,\n                 from bmap.c:7:\nbmap.c:54:35: error: format ‘%zu’ expects argument of type ‘size_t’, but argument 2 has type ‘xfs_extnum_t’ {aka ‘long long unsigned int’} [-Werror\u003dformat\u003d]\n   54 |                         do_warn(_(\"malloc failed in blkmap_alloc (%zu bytes)\\n\"),\n      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nbmap.c:54:33: note: in expansion of macro ‘_’\n   54 |                         do_warn(_(\"malloc failed in blkmap_alloc (%zu bytes)\\n\"),\n      |                                 ^\nbmap.c:54:69: note: format string is defined here\n   54 |                         do_warn(_(\"malloc failed in blkmap_alloc (%zu bytes)\\n\"),\n      |                                                                   ~~^\n      |                                                                     |\n      |                                                                     unsigned int\n      |                                                                   %llu\n\nFix these.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "cf06f3af64e250c64fbc63965f6dde5cfb5550a1",
      "tree": "92db1c63f4c35611d738a658d879c9e2a407553b",
      "parents": [
        "1b3daa7d9b6dfc73b20775742edce1fdc759e0f3"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Fri Aug 05 17:13:21 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Fri Aug 05 17:13:21 2022 -0500"
      },
      "message": "xfsprogs: Release v5.19.0-rc1\n    \nUpdate all the necessary files for a 5.19.0-rc1 release.\n    \nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n"
    },
    {
      "commit": "1b3daa7d9b6dfc73b20775742edce1fdc759e0f3",
      "tree": "2703c1c3a4d1d2cceb0b7fbc6640bf72efb2e459",
      "parents": [
        "7aeffc8708063dc48b3a6b7b596e3a14b775c769"
      ],
      "author": {
        "name": "Chandan Babu R",
        "email": "chandan.babu@oracle.com",
        "time": "Thu Aug 04 21:54:27 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Thu Aug 04 21:54:27 2022 -0500"
      },
      "message": "xfs_repair: Add support for upgrading to large extent counters\n\nThis commit adds support to xfs_repair to allow upgrading an existing\nfilesystem to support per-inode large extent counters.\n\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "7aeffc8708063dc48b3a6b7b596e3a14b775c769",
      "tree": "a91812f95dbd5e3a53bf6be08e1a9e24bf9b18ee",
      "parents": [
        "db5b866537e78669f7b84590345b0c37f841f701"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Thu Aug 04 21:54:25 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Thu Aug 04 21:54:25 2022 -0500"
      },
      "message": "xfs_repair: check filesystem geometry before allowing upgrades\n\nCurrently, the two V5 feature upgrades permitted by xfs_repair do not\naffect filesystem space usage, so we haven\u0027t needed to verify the\ngeometry.\n\nHowever, this will change once we start to allow the sysadmin to add the\nlarge extent count feature to existing filesystems.  Add all the\ninfrastructure we need to ensure that the log will still be large\nenough, and the root inode will still be where we expect it to be after\nthe upgrade.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\n[david: Recompute transaction reservation values; Exit with error if upgrade fails]\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "db5b866537e78669f7b84590345b0c37f841f701",
      "tree": "925045fe3c1429ea9cf441d61a82f1802409230a",
      "parents": [
        "6e0ed3d19c54603f0f7d628ea04b550151d8a262"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Thu Aug 04 21:28:23 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Thu Aug 04 21:28:23 2022 -0500"
      },
      "message": "mkfs: complain about impossible log size constraints\n\nxfs/042 trips over an impossible fs geometry when nrext64 is enabled.\nThe minimum log size calculation comes out to 4287 blocks, but the mkfs\nparameters specify an AG size of 4096 blocks.  This eventually causes\nmkfs to complain that the autoselected log size doesn\u0027t meet the minimum\nsize, but we could be a little more explicit in pointing out that the\ntwo size constraints make for an impossible geometry.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "6e0ed3d19c54603f0f7d628ea04b550151d8a262",
      "tree": "1d8a3fc45a46acc24f11b3b45018c491ecb16112",
      "parents": [
        "42371fb36a565fb9870133c441dd6994b5e59665"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Thu Aug 04 21:27:01 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Thu Aug 04 21:27:01 2022 -0500"
      },
      "message": "mkfs: stop allowing tiny filesystems\n\nRefuse to format a filesystem that are \"too small\", because these\nconfigurations are known to have performance and redundancy problems\nthat are not present on the volume sizes that XFS is best at handling.\n\nSpecifically, this means that we won\u0027t allow logs smaller than 64MB, we\nwon\u0027t allow single-AG filesystems, and we won\u0027t allow volumes smaller\nthan 300MB.  There are two exceptions: the first is an undocumented CLI\noption that can be used for crafting debug filesystems.\n\nThe second exception is that if fstests is detected, because there are a\nlot of fstests that use tiny filesystems to perform targeted regression\nand functional testing in a controlled environment.  Fixing the ~40 or\nso tests to run more slowly with larger filesystems isn\u0027t worth the risk\nof breaking the tests.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "42371fb36a565fb9870133c441dd6994b5e59665",
      "tree": "92bc7f2637f9edc7bff4b68584e8388a66b18c3a",
      "parents": [
        "28965957f4ea5c79fc0b91b997168c656a4426c5"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Thu Aug 04 21:27:00 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Thu Aug 04 21:27:00 2022 -0500"
      },
      "message": "mkfs: ignore data blockdev stripe geometry for small filesystems\n\nAs part of the process of removing support for tiny filesystems (defined\nin the next patch to be anything under 300MB or 64M log size), we are\ntrying to eliminate all the edge case regressions for small filesystems\nthat the maintainer can find.\n\nEric pointed out that the use case of formatting a 510M on a RAID device\nregresses once we start enforcing the 64M log size limit:\n\n# modprobe scsi_debug opt_blks\u003d256 opt_xferlen_exp\u003d6 dev_size_mb\u003d510\n# mkfs.xfs /dev/sdg\nLog size must be at least 64MB.\n\n\u003chapless user reads manpage, adjusts log size\u003e\n\n# mkfs.xfs -l size\u003d64m /dev/sdg\ninternal log size 16384 too large, must be less than 16301\n\nBecause the device reports a stripe geometry, mkfs tries to create 8 AGs\n(instead of the usual 4) which are then very nearly 64M in size.  The\nlog itself cannot consume the entire AG, so its size is decreased, so\nits size is rounded down to allow the creation of AG headers and btrees,\nand then the log size is rounded down again to match the stripe unit.\nThis results in a log that is less than 64MB in size, causing the format\nto fail.\n\nThere\u0027s not much point in formatting tiny AGs on a small filesystem,\neven if it is on a RAID.  Doubling the AG count from 4 to 8 doubles the\nmetadata overhead, conflicts with our attempts to boost the log size,\nand on 2022-era storage hardware gains us very little extra performance\nsince we\u0027re not limited by storage access times.\n\nTherefore, disable automatic detection of stripe unit and width if the\ndata device is less than 1GB.  We would like to format with 128M AGs to\navoid constraining the size of the internal log, and since RAIDs smaller\nthan 8GB are formatted with 8 AGs by default, 128*8\u003d1G was chosen as the\ncutoff.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "28965957f4ea5c79fc0b91b997168c656a4426c5",
      "tree": "2d65b48bb174c1884d6694cd15981247236f135b",
      "parents": [
        "50dba8189b1f628073eb61d824ae8a8a1b43cefb"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Thu Aug 04 21:26:43 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Thu Aug 04 21:26:43 2022 -0500"
      },
      "message": "libxfs: stop overriding MAP_SYNC in publicly exported header files\n\nFlorian Fainelli most recently reported that xfsprogs doesn\u0027t build with\nmusl on mips:\n\n\"MIPS platforms building with recent kernel headers and the musl-libc\ntoolchain will expose the following build failure:\n\nmmap.c: In function \u0027mmap_f\u0027:\nmmap.c:196:12: error: \u0027MAP_SYNC\u0027 undeclared (first use in this function); did you mean \u0027MS_SYNC\u0027?\n  196 |    flags \u003d MAP_SYNC | MAP_SHARED_VALIDATE;\n      |            ^~~~~~~~\n      |            MS_SYNC\nmmap.c:196:12: note: each undeclared identifier is reported only once for each function it appears in\nmake[4]: *** [../include/buildrules:81: mmap.o] Error 1\"\n\nAt first glance, the build failure here is caused by the fact that:\n\n1. The configure script doesn\u0027t detect MAP_SYNC support\n2. The build system doesn\u0027t set HAVE_MAP_SYNC\n2. io/mmap.c includes input.h -\u003e projects.h -\u003e xfs.h and later sys/mman.h\n3. include/linux.h #define\u0027s MAP_SYNC to 0 if HAVE_MAP_SYNC is not set\n4. musl\u0027s sys/mman.h #undef MAP_SYNC on platforms that don\u0027t support it\n5. io/mmap.c tries to use MAP_SYNC, not realizing that libc undefined it\n\nNormally, xfs_io only exports functionality that is defined by the libc\nand/or kernel headers on the build system.  We often make exceptions for\nnew functionality so that we have a way to test them before the header\nfile packages catch up, hence this \u0027#ifndef HAVE_FOO #define FOO\u0027\nparadigm.\n\nMAP_SYNC is a gross and horribly broken example of this.  These support\ncrutches are supposed to be *private* to xfsprogs for benefit of early\ntesting, but they were instead added to include/linux.h, which we\nprovide to user programs in the xfslibs-dev package.  IOWs, we\u0027ve been\n#defining MAP_SYNC to zero for unsuspecting programs.\n\nWorst yet, gcc 11.3 doesn\u0027t even warn about overriding a #define to 0:\n\n#include \u003cstdio.h\u003e\n#include \u003csys/mman.h\u003e\n#ifdef STUPID\n# include \u003cxfs/xfs.h\u003e\n#endif\n\nint main(int argc, char *argv[]) {\n\tprintf(\"MAP_SYNC 0x%x\\n\", MAP_SYNC);\n}\n\n$ gcc -o a a.c -Wall\n$ ./a\nMAP_SYNC 0x80000\n$ gcc -DSTUPID -o a a.c -Wall\n$ ./a\nMAP_SYNC 0x0\n\nFour years have gone by since the introduction of MAP_SYNC, so let\u0027s get\nrid of the override code entirely -- any platform that supports MAP_SYNC\nhas had plenty of chances to ensure their header files have the right\nbits.  While we\u0027re at it, fix AC_HAVE_MAP_SYNC to look for MAP_SYNC in\nthe same header file that the one user (io/mmap.c) uses -- sys/mman.h.\n\nAnnoyingly, I had to test this by hand because the sole fstest that\nexercises MAP_SYNC (generic/470) requires dm-logwrites and dm-thinp,\nneither of which support fsdax on current kernels.\n\nReported-by: info@mobile-stream.com\nReported-by: Fabrice Fontaine \u003cfontaine.fabrice@gmail.com\u003e\nReported-by: Florian Fainelli \u003cf.fainelli@gmail.com\u003e\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nTested-by: Florian Fainelli \u003cf.fainelli@gmail.com\u003e\nReviewed-by: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "50dba8189b1f628073eb61d824ae8a8a1b43cefb",
      "tree": "8591b11cee592bb302fb36b6d6a217fbb83ab344",
      "parents": [
        "91c1d0836aa4a228e76c0b8c5d83903f1f6bfdbb"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jul 13 20:58:28 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jul 13 20:58:28 2022 -0500"
      },
      "message": "mkfs: terminate getsubopt arrays properly\n\nHaving not drank any (or maybe too much) coffee this morning, I typed:\n\n$ mkfs.xfs -d agcount\u003d3 -d nrext64\u003d0\nSegmentation fault\n\nI traced this down to getsubopt walking off the end of the dopts.subopts\narray.  The manpage says you\u0027re supposed to terminate the suboptions\nstring array with a NULL entry, but the structure definition uses\nMAX_SUBOPTS/D_MAX_OPTS directly, which means there is no terminator.\n\nExplicitly terminate each suboption array with a NULL entry after\nmaking room for it.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\n[sandeen: explicitly add NULL terminators \u0026 clarify comment]\nReviewed-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "91c1d0836aa4a228e76c0b8c5d83903f1f6bfdbb",
      "tree": "9ec4bea76896c423cb2bbf3ae5b33cad4d2d48ca",
      "parents": [
        "f50d3462c654acc484ab3ea68e75e8252b77e262"
      ],
      "author": {
        "name": "Chandan Babu R",
        "email": "chandan.babu@oracle.com",
        "time": "Wed Jul 13 20:58:27 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jul 13 20:58:27 2022 -0500"
      },
      "message": "xfs_repair: Search for conflicts in inode_tree_ptrs[] when processing uncertain inodes\n\nWhen processing an uncertain inode chunk record, if we lose 2 blocks worth of\ninodes or 25% of the chunk, xfs_repair decides to ignore the chunk. Otherwise,\nxfs_repair adds a new chunk record to inode_tree_ptrs[agno], marking each\ninode as either free or used. However, before adding the new chunk record,\nxfs_repair has to check for the existance of a conflicting record.\n\nThe existing code incorrectly checks for the conflicting record in\ninode_uncertain_tree_ptrs[agno]. This check will succeed since the inode chunk\nrecord being processed was originally obtained from\ninode_uncertain_tree_ptrs[agno].\n\nThis commit fixes the bug by changing xfs_repair to search\ninode_tree_ptrs[agno] for conflicts.\n\nSigned-off-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "f50d3462c654acc484ab3ea68e75e8252b77e262",
      "tree": "6b149afadc833e7131a12e52b1ed12cd8d244579",
      "parents": [
        "03bc653907cc4e89cbb45524063439800a722d9b"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jul 13 20:58:25 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jul 13 20:58:25 2022 -0500"
      },
      "message": "xfs_repair: ignore empty xattr leaf blocks\n\nAs detailed in the commit:\n\n5e572d1a xfs: empty xattr leaf header blocks are not corruption\n\nempty xattr leaf blocks can be the benign byproduct of the system\ngoing down during the multi-step process of adding a large xattr\nto a file that has no xattrs.  If we find one at attr fork offset 0,\nwe should clear it, but this isn\u0027t a corruption.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "03bc653907cc4e89cbb45524063439800a722d9b",
      "tree": "162f7ccf170bbed33b8b07b80ebbdc2b13af2dbd",
      "parents": [
        "daebb4ce880209dd28c5cf409ce40cca72836736"
      ],
      "author": {
        "name": "hexiaole",
        "email": "hexiaole@kylinos.cn",
        "time": "Wed Jul 13 20:58:24 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jul 13 20:58:24 2022 -0500"
      },
      "message": "xfs: correct nlink printf specifier from hd to PRIu32\n\n1. Description\nlibxfs/xfs_log_format.h declare \u0027di_nlink\u0027 as unsigned 32-bit integer:\n\ntypedef struct xfs_icdinode {\n        ...\n        __uint32_t      di_nlink;       /* number of links to file */\n        ...\n} xfs_icdinode_t;\n\nBut logprint/log_misc.c use \u0027%hd\u0027 to print \u0027di_nlink\u0027:\n\nvoid\nxlog_print_trans_inode_core(xfs_icdinode_t *ip)\n{\n    ...\n    printf(_(\"nlink %hd uid %d gid %d\\n\"),\n           ip-\u003edi_nlink, ip-\u003edi_uid, ip-\u003edi_gid);\n    ...\n}\n\n\u0027%hd\u0027 can be 16-bit on many architectures, on these architectures, the \u0027printf\u0027 only print the low 16-bit of \u0027di_nlink\u0027.\n\n2. Reproducer\n2.1. Commands\n[root@localhost ~]# cd\n[root@localhost ~]# xfs_mkfile 128m 128m.xfs\n[root@localhost ~]# mkfs.xfs 128m.xfs\n[root@localhost ~]# mount 128m.xfs /mnt/\n[root@localhost ~]# cd /mnt/\n[root@localhost mnt]# seq 1 65534|xargs mkdir -p\n[root@localhost mnt]# cd\n[root@localhost ~]# umount /mnt/\n[root@localhost ~]# xfs_logprint 128m.xfs|grep nlink|tail -1\n\n2.2. Expect result\nnlink 65536\n\n2.3. Actual result\nnlink 0\n\nSigned-off-by: hexiaole \u003chexiaole@kylinos.cn\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "daebb4ce880209dd28c5cf409ce40cca72836736",
      "tree": "b1600ad043769fd294f80e6202bab4e8d52015d1",
      "parents": [
        "9d454cca0503d39eebc7944c0c22758bf2c1e741"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jul 13 17:20:56 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jul 13 17:20:56 2022 -0500"
      },
      "message": "xfs_repair: check the rt summary against observations\n\nTeach xfs_repair to check the ondisk realtime summary file against its\nown observations.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "9d454cca0503d39eebc7944c0c22758bf2c1e741",
      "tree": "8d728ff7733004ba2df6fbe51663a7cb007719a4",
      "parents": [
        "f2e388616d7491254e410571d7e54e5e94bf07f0"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jul 13 17:20:56 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jul 13 17:20:56 2022 -0500"
      },
      "message": "xfs_repair: check the rt bitmap against observations\n\nTeach xfs_repair to check the ondisk realtime bitmap against its own\nobservations.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "f2e388616d7491254e410571d7e54e5e94bf07f0",
      "tree": "13726fce89e8355689e4932ef2c6dd495480cfd2",
      "parents": [
        "c1c7178137bfc7453f128168c62a9082dc29ea83"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jul 13 17:20:56 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jul 13 17:20:56 2022 -0500"
      },
      "message": "xfs_repair: check free rt extent count\n\nCheck the superblock\u0027s free rt extent count against what we observed.\nThis increases the runtime and memory usage, but we can now report\nundercounting frextents as a result of a logging bug in the kernel.\nNote that repair has always fixed the undercount, but it no longer does\nthat silently.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "c1c7178137bfc7453f128168c62a9082dc29ea83",
      "tree": "e7fd7bc685c135a46f8b1afc8ee3a6998d22ef0e",
      "parents": [
        "ad8a3d7cc897059872e9e9f92ac57cd55d9ba89d"
      ],
      "author": {
        "name": "Zhang Boyang",
        "email": "zhangboyang.id@gmail.com",
        "time": "Tue Jul 12 13:30:42 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:30:42 2022 -0500"
      },
      "message": "mkfs: update manpage of bigtime and inobtcount\n\nThe bigtime and inobtcount feature is enabled by default by\n1c08f0ae28b34d97b0a89c8483ef3c743914e85e (mkfs: enable inobtcount and\nbigtime by default). This patch updates the manpage of mkfs to mention\nthis change.\n\nSigned-off-by: Zhang Boyang \u003czhangboyang.id@gmail.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "ad8a3d7cc897059872e9e9f92ac57cd55d9ba89d",
      "tree": "edd4540a9213bd0bafde8b31e8687d67e9c417c0",
      "parents": [
        "42efbb99fb68f0359b492c13792e035c3e056e86"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:30:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:30:33 2022 -0500"
      },
      "message": "mkfs: always use new_diflags2 to initialize new inodes\n\nThe new_diflags2 field that\u0027s set in the inode geometry represent\nfeatures that we want enabled for /all/ newly created inodes.\nUnfortunately, mkfs doesn\u0027t do that because xfs_flags2diflags2 doesn\u0027t\nread new_diflags2.  Change the new_diflags2 logic to match the kernel.\n\nWithout this fix, the root directory gets created without the\nDIFLAG2_NREXT64 iflag set, but files created by a protofile /do/ have it\nturned on.\n\nThis wasn\u0027t an issue with DIFLAG2_BIGTIME because xfs_trans_log_inode\nquietly turns that on whenever possible.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "42efbb99fb68f0359b492c13792e035c3e056e86",
      "tree": "74e808f6c8460710dd1d5acec498ba10c2c81091",
      "parents": [
        "b6fd10341170378b571d2de0e73c870f8b8697c0"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:29:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:29:33 2022 -0500"
      },
      "message": "mkfs: document the large extent count switch in the --help screen\n\nWe should document this feature in the --help screen for mkfs.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "b6fd10341170378b571d2de0e73c870f8b8697c0",
      "tree": "08a16ee0e665565632f2073da853562477c68da0",
      "parents": [
        "0ec4cd6459893cf8866c872085c61414e41235bb"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:28:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:28:33 2022 -0500"
      },
      "message": "mkfs: preserve DIFLAG2_NREXT64 when setting other inode attributes\n\nPreserve the state of the NREXT64 inode flag when we\u0027re changing the\nother flags2 fields.  This is only vital for the kernel version of this\nfunction, but we should keep these in sync.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "0ec4cd6459893cf8866c872085c61414e41235bb",
      "tree": "6b4ec2b3685eab19aa8bed8820c96cb85c5a0983",
      "parents": [
        "b83b2ec0128ac7a11b50a9ee594d19105c06c579"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:27:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:27:33 2022 -0500"
      },
      "message": "xfs_repair: detect and fix padding fields that changed with nrext64\n\nDetect incorrectly set padding fields when large extent counts are\nenabled or disabled on v3 inodes.\n\nFound by fuzzing v3.flags2 \u003d zeroes with xfs/374 and an nrext64\u003d1\nfilesystem.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "b83b2ec0128ac7a11b50a9ee594d19105c06c579",
      "tree": "63041adcf394eb9fd48d3323e080f7e6a6501483",
      "parents": [
        "baf8a5df8a0c6539818a3f78a68d22648c022e50"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:26:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:26:33 2022 -0500"
      },
      "message": "xfs_repair: clear DIFLAG2_NREXT64 when filesystem doesn\u0027t support nrext64\n\nClear the nrext64 inode flag if the filesystem doesn\u0027t have the nrext64\nfeature enabled in the superblock.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "baf8a5df8a0c6539818a3f78a68d22648c022e50",
      "tree": "cdb429b5b892f591909eb96b45fbdfed648330b2",
      "parents": [
        "766bfbd71f5cf596b5aec66772eb8326fdb3dd63"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:25:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:25:33 2022 -0500"
      },
      "message": "xfs_copy: don\u0027t use cached buffer reads until after libxfs_mount\n\nI accidentally tried to xfs_copy an ext4 filesystem, but instead of\nrejecting the filesystem, the program instead crashed.  I figured out\nthat zeroing the superblock was enough to trigger this:\n\n# dd if\u003d/dev/zero of\u003d/dev/sda bs\u003d1024k count\u003d1\n# xfs_copy  /dev/sda /dev/sdb\nFloating point exception\n\nThe exact crash happens in this line from libxfs_getbuf_flags, which is\ncalled from the main() routine of xfs_copy:\n\n\tif (btp \u003d\u003d btp-\u003ebt_mount-\u003em_ddev_targp) {\n\t\t(*bpp)-\u003eb_pag \u003d xfs_perag_get(btp-\u003ebt_mount,\n\t\t\t\txfs_daddr_to_agno(btp-\u003ebt_mount, blkno));\n\nThe problem here is that the uncached read filled the incore superblock\nwith zeroes, which means mbuf.sb_agblocks is zero.  This causes a\ndivision by zero in xfs_daddr_to_agno, thereby crashing the program.\n\nIn commit f8b581d6, we made it so that xfs_buf structures contain a\npassive reference to the associated perag structure.  That commit\nassumes that no program would try a cached buffer read until the buffer\ncache is fully set up, which is true throughout xfsprogs... except for\nthe beginning of xfs_copy.  For whatever reason, it attempts an uncached\nread of the superblock to figure out the real superblock size, then\nperforms a *cached* read with the proper buffer length and verifier.\nThe cached read crashes the program.\n\nFix the problem by changing the (second) cached read into an uncached read.\n\nFixes: f8b581d6 (\"libxfs: actually make buffers track the per-ag structures\")\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "766bfbd71f5cf596b5aec66772eb8326fdb3dd63",
      "tree": "5c9e3446c126cf4d838bb98d569ec1da901a91a3",
      "parents": [
        "84c5f08fdfdaf437ea7b0c836083b614d8957572"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:24:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:24:33 2022 -0500"
      },
      "message": "xfs_db: identify the minlogsize transaction reservation\n\nRight now, we don\u0027t make it easy to spot the transaction reservation\nused to compute the minimum log size in userspace:\n\n# xfs_db -c logres /dev/sda\ntype 0 logres 168184 logcount 5 flags 0x4\n...\ntype 25 logres 760 logcount 0 flags 0x0\ntype -1 logres 547200 logcount 8 flags 0x4\n\nType \"-1\" doesn\u0027t communicate the purpose at all, it just looks like a\nmath error.  Help out the user a bit by printing more information:\n\nminlogsize logres 547200 logcount 8\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "84c5f08fdfdaf437ea7b0c836083b614d8957572",
      "tree": "814028a8e7fdbb92c50dfd25dbcce0c6626b4953",
      "parents": [
        "fa0f9232bd89e2955ee54e0be4adb6713a00d8b4"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:23:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:23:33 2022 -0500"
      },
      "message": "xfs_repair: don\u0027t flag log_incompat inconsistencies as corruptions\n\nWhile testing xfs/233 and xfs/127 with LARP mode enabled, I noticed\nerrors such as the following:\n\nxfs_growfs --BlockSize\u003d4096 --Blocks\u003d8192\ndata blocks changed from 8192 to 2579968\nmeta-data\u003d/dev/sdf               isize\u003d512    agcount\u003d630, agsize\u003d4096 blks\n         \u003d                       sectsz\u003d512   attr\u003d2, projid32bit\u003d1\n         \u003d                       crc\u003d1        finobt\u003d1, sparse\u003d1, rmapbt\u003d1\n         \u003d                       reflink\u003d1    bigtime\u003d1 inobtcount\u003d1\ndata     \u003d                       bsize\u003d4096   blocks\u003d2579968, imaxpct\u003d25\n         \u003d                       sunit\u003d0      swidth\u003d0 blks\nnaming   \u003dversion 2              bsize\u003d4096   ascii-ci\u003d0, ftype\u003d1\nlog      \u003dinternal log           bsize\u003d4096   blocks\u003d3075, version\u003d2\n         \u003d                       sectsz\u003d512   sunit\u003d0 blks, lazy-count\u003d1\nrealtime \u003dnone                   extsz\u003d4096   blocks\u003d0, rtextents\u003d0\n_check_xfs_filesystem: filesystem on /dev/sdf is inconsistent (r)\n*** xfs_repair -n output ***\nPhase 1 - find and verify superblock...\n        - reporting progress in intervals of 15 minutes\nPhase 2 - using internal log\n        - zero log...\n        - 23:03:47: zeroing log - 3075 of 3075 blocks done\n        - scan filesystem freespace and inode maps...\nwould fix log incompat feature mismatch in AG 30 super, 0x0 !\u003d 0x1\nwould fix log incompat feature mismatch in AG 8 super, 0x0 !\u003d 0x1\nwould fix log incompat feature mismatch in AG 12 super, 0x0 !\u003d 0x1\nwould fix log incompat feature mismatch in AG 24 super, 0x0 !\u003d 0x1\nwould fix log incompat feature mismatch in AG 18 super, 0x0 !\u003d 0x1\n\u003csnip\u003e\n\n0x1 corresponds to XFS_SB_FEAT_INCOMPAT_LOG_XATTRS, which is the feature\nbit used to indicate that the log contains extended attribute log intent\nitems.  This is a mechanism to prevent older kernels from trying to\nrecover log items that they won\u0027t know how to recover.\n\nI thought about this a little bit more, and realized that log_incompat\nfeatures bits are set on the primary sb prior to writing certain types\nof log records, and cleared once the log has written the committed\nchanges back to the filesystem.  If the secondary superblocks are\nupdated at any point during that interval (due to things like growfs or\nsetting labels), the log_incompat field will now be set on the secondary\nsupers.\n\nDue to the ephemeral nature of the current log_incompat feature bits,\na discrepancy between the primary and secondary supers is not a\ncorruption.  If we\u0027re in dry run mode, we should log the discrepancy,\nbut that\u0027s not a reason to end with EXIT_FAILURE.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "fa0f9232bd89e2955ee54e0be4adb6713a00d8b4",
      "tree": "2dcadc973f32987fa3909eb0ac0f5427c53d4027",
      "parents": [
        "d6bfc06df0739606eb2a5aa49249001205475e95"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:22:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:22:33 2022 -0500"
      },
      "message": "xfs_repair: always rewrite secondary supers when needsrepair is set\n\nDave Chinner complained about xfs_scrub failures coming from xfs/158.\nThat test induces xfs_repair to fail while upgrading a filesystem to\nhave the inobtcount feature, and then restarts xfs_repair to finish the\nupgrade.  When the second xfs_repair run starts, it will find that the\nprimary super has NEEDSREPAIR set, along with whatever new feature that\nwe were trying to add to the filesystem.\n\nFrom there, repair completes the upgrade in much the same manner as the\nfirst repair run would have, with one big exception -- it forgets to set\nfeatures_changed to trigger rewriting of the secondary supers at the end\nof repair.  This results in discrepancies between the supers:\n\n# XFS_REPAIR_FAIL_AFTER_PHASE\u003d2 xfs_repair -c inobtcount\u003d1 /dev/sdf\nPhase 1 - find and verify superblock...\nPhase 2 - using internal log\n        - zero log...\n        - scan filesystem freespace and inode maps...\n        - found root inode chunk\nAdding inode btree counts to filesystem.\nKilled\n# xfs_repair /dev/sdf\nPhase 1 - find and verify superblock...\nPhase 2 - using internal log\n        - zero log...\n        - scan filesystem freespace and inode maps...\nclearing needsrepair flag and regenerating metadata\nbad inobt block count 0, saw 1\nbad finobt block count 0, saw 1\nbad inobt block count 0, saw 1\nbad finobt block count 0, saw 1\nbad inobt block count 0, saw 1\nbad finobt block count 0, saw 1\nbad inobt block count 0, saw 1\nbad finobt block count 0, saw 1\n        - found root inode chunk\nPhase 3 - for each AG...\n        - scan and clear agi unlinked lists...\n        - process known inodes and perform inode discovery...\n        - agno \u003d 0\n        - agno \u003d 1\n        - agno \u003d 2\n        - agno \u003d 3\n        - process newly discovered inodes...\nPhase 4 - check for duplicate blocks...\n        - setting up duplicate extent list...\n        - check for inodes claiming duplicate blocks...\n        - agno \u003d 1\n        - agno \u003d 2\n        - agno \u003d 0\n        - agno \u003d 3\nPhase 5 - rebuild AG headers and trees...\n        - reset superblock...\nPhase 6 - check inode connectivity...\n        - resetting contents of realtime bitmap and summary inodes\n        - traversing filesystem ...\n        - traversal finished ...\n        - moving disconnected inodes to lost+found ...\nPhase 7 - verify and correct link counts...\ndone\n# xfs_db -c \u0027sb 0\u0027 -c \u0027print\u0027 -c \u0027sb 1\u0027 -c \u0027print\u0027 /dev/sdf | \\\n\tegrep \u0027(features_ro_compat|features_incompat)\u0027\nfeatures_ro_compat \u003d 0xd\nfeatures_incompat \u003d 0xb\nfeatures_ro_compat \u003d 0x5\nfeatures_incompat \u003d 0xb\n\nCuriously, re-running xfs_repair will not trigger any warnings about the\nfeatureset mismatch between the primary and secondary supers.  xfs_scrub\nimmediately notices, which is what causes xfs/158 to fail.\n\nThis discrepancy doesn\u0027t happen when the upgrade completes successfully\nin a single repair run, so we need to teach repair to rewrite the\nsecondaries at the end of repair any time needsrepair was set.\n\nReported-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "d6bfc06df0739606eb2a5aa49249001205475e95",
      "tree": "d9076bd9feb698124d8a81366e7bd0772c96b59e",
      "parents": [
        "053fcbc7a2c1d3acb52e5c40de7971f42e3094ee"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:21:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:21:33 2022 -0500"
      },
      "message": "libxfs: remove xfs_globals.larp\n\nThis dummy debugging knob isn\u0027t necessary anymore, so get rid of it.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n"
    },
    {
      "commit": "053fcbc7a2c1d3acb52e5c40de7971f42e3094ee",
      "tree": "b43ddfee4fe15d577be1e96cdcae6a69adb8e130",
      "parents": [
        "95e3fc7f38057ee1d511c12f45e69aceedcbffb7"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:20:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:20:33 2022 -0500"
      },
      "message": "xfs_logprint: fix formatting specifiers\n\nFix a missing %u -\u003e %PRIu32 conversion, and add the required \u0027%\u0027 in the\nformat specifiers because PRIu{32,64} do not include it on their own.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "95e3fc7f38057ee1d511c12f45e69aceedcbffb7",
      "tree": "3a9a0fef30b1690c289994ef75419c055fb85a9a",
      "parents": [
        "e298041ea1efe1473fea04e9d44d2c2a388f74a1"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Tue Jul 12 13:19:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:19:33 2022 -0500"
      },
      "message": "misc: fix unsigned integer comparison complaints\n\ngcc 11.2 complains about certain variables now that xfs_extnum_t is an\nunsigned 64-bit integer:\n\ndinode.c: In function ‘process_exinode’:\ndinode.c:960:21: error: comparison of unsigned expression in ‘\u003c 0’ is always false [-Werror\u003dtype-limits]\n  960 |         if (numrecs \u003c 0)\n\nSince we actually have a function that will tell us the maximum\nsupported extent count for an ondisk dinode structure, use a direct\ncomparison instead of tricky integer math to detect overflows.  A more\nexhaustive audit is probably necessary.\n\nIOWS, shut up, gcc...\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "e298041ea1efe1473fea04e9d44d2c2a388f74a1",
      "tree": "cde2772e1ebef0ff1159ff1ddf9d1a712a85ef43",
      "parents": [
        "c21a5691ad8cd85798acd75d7b5ff0081095218d"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:18:33 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 12 13:18:33 2022 -0500"
      },
      "message": "xfsprogs: Release v5.19.0-rc0.1\n    \nUpdate all the necessary files for a 5.19.0-rc0.1 release.\n    \nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n"
    },
    {
      "commit": "c21a5691ad8cd85798acd75d7b5ff0081095218d",
      "tree": "cde2772e1ebef0ff1159ff1ddf9d1a712a85ef43",
      "parents": [
        "5e572d1ae8b3c21f964d5728c99c6e078f63777a"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jul 06 13:48:59 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Jul 06 13:48:59 2022 -0500"
      },
      "message": "xfs: don\u0027t hold xattr leaf buffers across transaction rolls\n\nSource kernel commit: e53bcffad0326c1ef4b4baec4262b5343e420c44\n\nNow that we\u0027ve established (again!) that empty xattr leaf buffers are\nok, we no longer need to bhold them to transactions when we\u0027re creating\nnew leaf blocks.  Get rid of the entire mechanism, which should simplify\nthe xattr code quite a bit.\n\nThe original justification for using bhold here was to prevent the AIL\nfrom trying to write the empty leaf block into the fs during the brief\ntime that we release the buffer lock.  The reason for /that/ was to\nprevent recovery from tripping over the empty ondisk block.\n\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n"
    },
    {
      "commit": "5e572d1ae8b3c21f964d5728c99c6e078f63777a",
      "tree": "4f183e0fd89acd2ab774891e03709c98e9cca6e7",
      "parents": [
        "53cbe27875ebe17ea83aff63d875dee0896dd4ca"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jul 06 13:48:58 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Jul 06 13:48:58 2022 -0500"
      },
      "message": "xfs: empty xattr leaf header blocks are not corruption\n\nSource kernel commit: 7be3bd8856fba99f8b25b9c223250e42292c312e\n\nTLDR: Revert commit 51e6104fdb95 (\"xfs: detect empty attr leaf blocks in\nxfs_attr3_leaf_verify\") because it was wrong.\n\nEvery now and then we get a corruption report from the kernel or\nxfs_repair about empty leaf blocks in the extended attribute structure.\nWe\u0027ve long thought that these shouldn\u0027t be possible, but prior to 5.18\none would shake loose in the recoveryloop fstests about once a month.\n\nA new addition to the xattr leaf block verifier in 5.19-rc1 makes this\nhappen every 7 minutes on my testing cloud.  I added a ton of logging to\ndetect any time we set the header count on an xattr leaf block to zero.\nThis produced the following dmesg output on generic/388:\n\nXFS (sda4): ino 0x21fcbaf leaf 0x129bf78 hdcount\u003d\u003d0!\nCall Trace:\n\u003cTASK\u003e\ndump_stack_lvl+0x34/0x44\nxfs_attr3_leaf_create+0x187/0x230\nxfs_attr_shortform_to_leaf+0xd1/0x2f0\nxfs_attr_set_iter+0x73e/0xa90\nxfs_xattri_finish_update+0x45/0x80\nxfs_attr_finish_item+0x1b/0xd0\nxfs_defer_finish_noroll+0x19c/0x770\n__xfs_trans_commit+0x153/0x3e0\nxfs_attr_set+0x36b/0x740\nxfs_xattr_set+0x89/0xd0\n__vfs_setxattr+0x67/0x80\n__vfs_setxattr_noperm+0x6e/0x120\nvfs_setxattr+0x97/0x180\nsetxattr+0x88/0xa0\npath_setxattr+0xc3/0xe0\n__x64_sys_setxattr+0x27/0x30\ndo_syscall_64+0x35/0x80\nentry_SYSCALL_64_after_hwframe+0x46/0xb0\n\nSo now we know that someone is creating empty xattr leaf blocks as part\nof converting a sf xattr structure into a leaf xattr structure.  The\nconversion routine logs any existing sf attributes in the same\ntransaction that creates the leaf block, so we know this is a setxattr\nto a file that has no attributes at all.\n\nNext, g/388 calls the shutdown ioctl and cycles the mount to trigger log\nrecovery.  I also augmented buffer item recovery to call -\u003everify_struct\non any attr leaf blocks and complain if it finds a failure:\n\nXFS (sda4): Unmounting Filesystem\nXFS (sda4): Mounting V5 Filesystem\nXFS (sda4): Starting recovery (logdev: internal)\nXFS (sda4): xattr leaf daddr 0x129bf78 hdrcount \u003d\u003d 0!\nCall Trace:\n\u003cTASK\u003e\ndump_stack_lvl+0x34/0x44\nxfs_attr3_leaf_verify+0x3b8/0x420\nxlog_recover_buf_commit_pass2+0x60a/0x6c0\nxlog_recover_items_pass2+0x4e/0xc0\nxlog_recover_commit_trans+0x33c/0x350\nxlog_recovery_process_trans+0xa5/0xe0\nxlog_recover_process_data+0x8d/0x140\nxlog_do_recovery_pass+0x19b/0x720\nxlog_do_log_recovery+0x62/0xc0\nxlog_do_recover+0x33/0x1d0\nxlog_recover+0xda/0x190\nxfs_log_mount+0x14c/0x360\nxfs_mountfs+0x517/0xa60\nxfs_fs_fill_super+0x6bc/0x950\nget_tree_bdev+0x175/0x280\nvfs_get_tree+0x1a/0x80\npath_mount+0x6f5/0xaa0\n__x64_sys_mount+0x103/0x140\ndo_syscall_64+0x35/0x80\nentry_SYSCALL_64_after_hwframe+0x46/0xb0\nRIP: 0033:0x7fc61e241eae\n\nAnd a moment later, the _delwri_submit of the recovered buffers trips\nthe same verifier and recovery fails:\n\nXFS (sda4): Metadata corruption detected at xfs_attr3_leaf_verify+0x393/0x420 [xfs], xfs_attr3_leaf block 0x129bf78\nXFS (sda4): Unmount and run xfs_repair\nXFS (sda4): First 128 bytes of corrupted metadata buffer:\n00000000: 00 00 00 00 00 00 00 00 3b ee 00 00 00 00 00 00  ........;.......\n00000010: 00 00 00 00 01 29 bf 78 00 00 00 00 00 00 00 00  .....).x........\n00000020: a5 1b d0 02 b2 9a 49 df 8e 9c fb 8d f8 31 3e 9d  ......I......1\u003e.\n00000030: 00 00 00 00 02 1f cb af 00 00 00 00 10 00 00 00  ................\n00000040: 00 50 0f b0 00 00 00 00 00 00 00 00 00 00 00 00  .P..............\n00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................\n00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................\n00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................\nXFS (sda4): Corruption of in-memory data (0x8) detected at _xfs_buf_ioapply+0x37f/0x3b0 [xfs] (fs/xfs/xfs_buf.c:1518).  Shutting down filesystem.\nXFS (sda4): Please unmount the filesystem and rectify the problem(s)\nXFS (sda4): log mount/recovery failed: error -117\nXFS (sda4): log mount failed\n\nI think I see what\u0027s going on here -- setxattr is racing with something\nthat shuts down the filesystem:\n\nThread 1                                Thread 2\n--------                                --------\nxfs_attr_sf_addname\nxfs_attr_shortform_to_leaf\n\u003ccreate empty leaf\u003e\nxfs_trans_bhold(leaf)\nxattri_dela_state \u003d XFS_DAS_LEAF_ADD\n\u003croll transaction\u003e\n\u003cflush log\u003e\n\u003cshut down filesystem\u003e\nxfs_trans_bhold_release(leaf)\n\u003cdiscover fs is dead, bail\u003e\n\nThread 3\n--------\n\u003ccycle mount, start recovery\u003e\nxlog_recover_buf_commit_pass2\nxlog_recover_do_reg_buffer\n\u003creplay empty leaf buffer from recovered buf item\u003e\nxfs_buf_delwri_queue(leaf)\nxfs_buf_delwri_submit\n_xfs_buf_ioapply(leaf)\nxfs_attr3_leaf_write_verify\n\u003ctrip over empty leaf buffer\u003e\n\u003cfail recovery\u003e\n\nAs you can see, the bhold keeps the leaf buffer locked and thus prevents\nthe *AIL* from tripping over the ichdr.count\u003d\u003d0 check in the write\nverifier.  Unfortunately, it doesn\u0027t prevent the log from getting\nflushed to disk, which sets up log recovery to fail.\n\nSo.  It\u0027s clear that the kernel has always had the ability to persist\nattr leaf blocks with ichdr.count\u003d\u003d0, which means that it\u0027s part of the\nondisk format now.\n\nUnfortunately, this check has been added and removed multiple times\nthroughout history.  It first appeared in[1] kernel 3.10 as part of the\nearly V5 format patches.  The check was later discovered to break log\nrecovery and hence disabled[2] during log recovery in kernel 4.10.\nSimultaneously, the check was added[3] to xfs_repair 4.9.0 to try to\nweed out the empty leaf blocks.  This was still not correct because log\nrecovery would recover an empty attr leaf block successfully only for\nregular xattr operations to trip over the empty block during of the\nblock during regular operation.  Therefore, the check was removed\nentirely[4] in kernel 5.7 but removal of the xfs_repair check was\nforgotten.  The continued complaints from xfs_repair lead to us\nmistakenly re-adding[5] the verifier check for kernel 5.19.  Remove it\nonce again.\n\n[1] 517c22207b04 (\"xfs: add CRCs to attr leaf blocks\")\n[2] 2e1d23370e75 (\"xfs: ignore leaf attr ichdr.count in verifier\nduring log replay\")\n[3] f7140161 (\"xfs_repair: junk leaf attribute if count \u003d\u003d 0\")\n[4] f28cef9e4dac (\"xfs: don\u0027t fail verifier on empty attr3 leaf\nblock\")\n[5] 51e6104fdb95 (\"xfs: detect empty attr leaf blocks in\nxfs_attr3_leaf_verify\")\n\nLooking at the rest of the xattr code, it seems that files with empty\nleaf blocks behave as expected -- listxattr reports no attributes;\ngetxattr on any xattr returns nothing as expected; removexattr does\nnothing; and setxattr can add attributes just fine.\n\nOriginal-bug: 517c22207b04 (\"xfs: add CRCs to attr leaf blocks\")\nStill-not-fixed-by: 2e1d23370e75 (\"xfs: ignore leaf attr ichdr.count in verifier during log replay\")\nRemoved-in: f28cef9e4dac (\"xfs: don\u0027t fail verifier on empty attr3 leaf block\")\nFixes: 51e6104fdb95 (\"xfs: detect empty attr leaf blocks in xfs_attr3_leaf_verify\")\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "53cbe27875ebe17ea83aff63d875dee0896dd4ca",
      "tree": "45c2a37a02f627ac1c2f322d3dc897fcc59d716b",
      "parents": [
        "41cbb27c99349582390d6173a094c968205376f5"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jul 06 13:48:57 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Jul 06 13:48:57 2022 -0500"
      },
      "message": "xfs: fix variable state usage\n\nSource kernel commit: 10930b254d5be1cb4350fb7a456ccd5ea7e3cbd9\n\nThe variable @args is fed to a tracepoint, and that\u0027s the only place\nit\u0027s used.  This is fine for the kernel, but for userspace, tracepoints\nare #define\u0027d out of existence, which results in this warning on gcc\n11.2:\n\nxfs_attr.c: In function ‘xfs_attr_node_try_addname’:\nxfs_attr.c:1440:42: warning: unused variable ‘args’ [-Wunused-variable]\n1440 |         struct xfs_da_args              *args \u003d attr-\u003exattri_da_args;\n|                                          ^~~~\n\nClean this up.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "41cbb27c99349582390d6173a094c968205376f5",
      "tree": "a1f877cdc92affaf75824bd6ba12acd04dfc9ec6",
      "parents": [
        "2962287481b2f9a76ba026cf16f7535f79b7bdbc"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jul 06 13:48:54 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Jul 06 13:48:54 2022 -0500"
      },
      "message": "xfs: fix TOCTOU race involving the new logged xattrs control knob\n\nSource kernel commit: f4288f01820e2d57722d21874c1fda661003c9b9\n\nI found a race involving the larp control knob, aka the debugging knob\nthat lets developers enable logging of extended attribute updates:\n\nThread 1                        Thread 2\n\necho 0 \u003e /sys/fs/xfs/debug/larp\nsetxattr(REPLACE)\nxfs_has_larp (returns false)\nxfs_attr_set\n\necho 1 \u003e /sys/fs/xfs/debug/larp\n\nxfs_attr_defer_replace\nxfs_attr_init_replace_state\nxfs_has_larp (returns true)\nxfs_attr_init_remove_state\n\n\u003coops, wrong DAS state!\u003e\n\nThis isn\u0027t a particularly severe problem right now because xattr logging\nis only enabled when CONFIG_XFS_DEBUG\u003dy, and developers *should* know\nwhat they\u0027re doing.\n\nHowever, the eventual intent is that callers should be able to ask for\nthe assistance of the log in persisting xattr updates.  This capability\nmight not be required for /all/ callers, which means that dynamic\ncontrol must work correctly.  Once an xattr update has decided whether\nor not to use logged xattrs, it needs to stay in that mode until the end\nof the operation regardless of what subsequent parallel operations might\ndo.\n\nTherefore, it is an error to continue sampling xfs_globals.larp once\nxfs_attr_change has made a decision about larp, and it was not correct\nfor me to have told Allison that -\u003ecreate_intent functions can sample\nthe global log incompat feature bitfield to decide to elide a log item.\n\nInstead, create a new op flag for the xfs_da_args structure, and convert\nall other callers of xfs_has_larp and xfs_sb_version_haslogxattrs within\nthe attr update state machine to look for the operations flag.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "2962287481b2f9a76ba026cf16f7535f79b7bdbc",
      "tree": "d1b866bdc7e13eae1c94f7e38a5fe515f82d3c47",
      "parents": [
        "90542cd26f4f5dce38f95344cd5aa4f0ffa2f503"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:29:41 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:29:41 2022 -0500"
      },
      "message": "xfsprogs: Release v5.19.0-rc0\n    \nUpdate all the necessary files for a 5.19.0-rc0 release.\n\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n"
    },
    {
      "commit": "90542cd26f4f5dce38f95344cd5aa4f0ffa2f503",
      "tree": "f6e2077d2876636ef1541d0292aa1d8809d39a70",
      "parents": [
        "69e72722136fc79fd1cdf77022e42c16774764b6"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs_logprint: Add log item printing for ATTRI and ATTRD\n\nThis patch implements a new set of log printing functions to print the\nATTRI and ATTRD items and vectors in the log.  These will be used during\nlog dump and log recover operations.\n\nThough most attributes are strings, the attribute operations accept\nany binary payload, so we should not assume them printable.  This was\ndone intentionally in preparation for parent pointers.  Until parent\npointers get here, attributes have no discernible format.  So the print\nroutines are just a simple print or hex dump for now.\n\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "69e72722136fc79fd1cdf77022e42c16774764b6",
      "tree": "06250eb87011b578baa37ab33081513a0bc275b4",
      "parents": [
        "7666cef45eed455b4b0dd9e327d153690a6381a9"
      ],
      "author": {
        "name": "Chandan Babu R",
        "email": "chandan.babu@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "mkfs: Add option to create filesystem with large extent counters\n\nEnabling nrext64 option on mkfs.xfs command line extends the maximum values of\ninode data and attr fork extent counters to 2^48 - 1 and 2^32 - 1\nrespectively.  This also sets the XFS_SB_FEAT_INCOMPAT_NREXT64 incompat flag\non the superblock preventing older kernels from mounting such a filesystem.\n\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "7666cef45eed455b4b0dd9e327d153690a6381a9",
      "tree": "fed3cb1c67af289cff50c7a4cd19fddd9351d937",
      "parents": [
        "ac87307e07fb3d842cd5e01c6d03ba1431d3e34e"
      ],
      "author": {
        "name": "Chandan Babu R",
        "email": "chandan.babu@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs_info: Report NREXT64 feature status\n\nThis commit adds support to libfrog to obtain information about the\navailability of NREXT64 feature in the underlying filesystem.\n\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "ac87307e07fb3d842cd5e01c6d03ba1431d3e34e",
      "tree": "45a04a6e331c16e802bb091cbbb47ef883032788",
      "parents": [
        "f4ba72b09e303f29cbd52e1ce7ea9cbaf6d89581"
      ],
      "author": {
        "name": "Chandan Babu R",
        "email": "chandan.babu@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfsprogs: Invoke bulkstat ioctl with XFS_BULK_IREQ_NREXT64 flag\n\nThis commit adds support to libfrog to enable reporting 64-bit extent counters\nto its users. In order to do so, bulkstat ioctl is now invoked with the newly\nintroduced XFS_BULK_IREQ_NREXT64 flag if the underlying filesystem\u0027s geometry\nsupports 64-bit extent counters.\n\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "f4ba72b09e303f29cbd52e1ce7ea9cbaf6d89581",
      "tree": "adbb8fd0f5cdc8fca850cb48bd31d687448ae708",
      "parents": [
        "582285d24a808302580cec9a0cbc55e86e317f09"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: move xfs_attr_use_log_assist usage out of libxfs\n\nSource kernel commit: efc2efeba169ff37bbd425631985064365c614e0\n\nThe LARP patchset added an awkward coupling point between libxfs and\nwhat would be libxlog, if the XFS log were actually its own library.\nMove the code that sets up logged xattr updates out of libxfs and into\nxfs_xattr.c so that libxfs no longer has to know about xlog_* functions.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "582285d24a808302580cec9a0cbc55e86e317f09",
      "tree": "0c514ddc2235db1d7af6b86ea39de6baf93c47c3",
      "parents": [
        "d539f7135de7c05cdbfe39d570d2c417dc5fc642"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: avoid unnecessary runtime sibling pointer endian conversions\n\nSource kernel commit: 5672225e8f2a872a22b0cecedba7a6644af1fb84\n\nCommit dc04db2aa7c9 has caused a small aim7 regression, showing a\nsmall increase in CPU usage in __xfs_btree_check_sblock() as a\nresult of the extra checking.\n\nThis is likely due to the endian conversion of the sibling poitners\nbeing unconditional instead of relying on the compiler to endian\nconvert the NULL pointer at compile time and avoiding the runtime\nconversion for this common case.\n\nRework the checks so that endian conversion of the sibling pointers\nis only done if they are not null as the original code did.\n\n.... and these need to be \"inline\" because the compiler completely\nfails to inline them automatically like it should be doing.\n\n$ size fs/xfs/libxfs/xfs_btree.o*\ntext    data     bss     dec     hex filename\n51874     240       0   52114    cb92 fs/xfs/libxfs/xfs_btree.o.orig\n51562     240       0   51802    ca5a fs/xfs/libxfs/xfs_btree.o.inline\n\nJust when you think the tools have advanced sufficiently we don\u0027t\nhave to care about stuff like this anymore, along comes a reminder\nthat *our tools still suck*.\n\nFixes: dc04db2aa7c9 (\"xfs: detect self referencing btree sibling pointers\")\nReported-by: kernel test robot \u003coliver.sang@intel.com\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "d539f7135de7c05cdbfe39d570d2c417dc5fc642",
      "tree": "9644ab868f6c56cf6b79cdda55e2928935198ef9",
      "parents": [
        "3ce2772ef7f9cd65bd2a343aadf027f3a1306bfa"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: convert buf_cancel_table allocation to kmalloc_array\n\nSource kernel commit: 910bbdf2f4d7df46781bc9b723048f5ebed3d0d7\n\nWhile we\u0027re messing around with how recovery allocates and frees the\nbuffer cancellation table, convert the allocation to use kmalloc_array\ninstead of the old kmem_alloc APIs, and make it handle a null return,\neven though that\u0027s not likely.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "3ce2772ef7f9cd65bd2a343aadf027f3a1306bfa",
      "tree": "9644ab868f6c56cf6b79cdda55e2928935198ef9",
      "parents": [
        "f470603782feb36a2a1ab8c1c3d65b57950d85fa"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: move xfs_attr_use_log_assist out of xfs_log.c\n\nSource kernel commit: d9c61ccb3b09d8f892cccbf662ce0c870f8e4ade\n\nThe LARP patchset added an awkward coupling point between libxfs and\nwhat would be libxlog, if the XFS log were actually its own library.\nMove the code that enables logged xattr updates out of \"lib\"xlog and into\nxfs_xattr.c so that it no longer has to know about xlog_* functions.\n\nWhile we\u0027re at it, give xfs_xattr.c its own header file.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "f470603782feb36a2a1ab8c1c3d65b57950d85fa",
      "tree": "dbe00051531460d92ee99164a6dc9468b782b118",
      "parents": [
        "03032e7792e8d7914271b370a1379c948560f5a7"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: refactor buffer cancellation table allocation\n\nSource kernel commit: 2723234923b3294dbcf6019c288c87465e927ed4\n\nMove the code that allocates and frees the buffer cancellation tables\nused by log recovery into the file that actually uses the tables.  This\nis a precursor to some cleanups and a memory leak fix.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "03032e7792e8d7914271b370a1379c948560f5a7",
      "tree": "68409366ca9912e1880828fbf0f968c0ba8ded82",
      "parents": [
        "494b7c2e3eade9232793db394c04d81aaae655cb"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: don\u0027t leak btree cursor when insrec fails after a split\n\nSource kernel commit: a54f78def73d847cb060b18c4e4a3d1d26c9ca6d\n\nThe recent patch to improve btree cycle checking caused a regression\nwhen I rebased the in-memory btree branch atop the 5.19 for-next branch,\nbecause in-memory short-pointer btrees do not have AG numbers.  This\nproduced the following complaint from kmemleak:\n\nunreferenced object 0xffff88803d47dde8 (size 264):\ncomm \"xfs_io\", pid 4889, jiffies 4294906764 (age 24.072s)\nhex dump (first 32 bytes):\n90 4d 0b 0f 80 88 ff ff 00 a0 bd 05 80 88 ff ff  .M..............\ne0 44 3a a0 ff ff ff ff 00 df 08 06 80 88 ff ff  .D:.............\nbacktrace:\n[\u003cffffffffa0388059\u003e] xfbtree_dup_cursor+0x49/0xc0 [xfs]\n[\u003cffffffffa029887b\u003e] xfs_btree_dup_cursor+0x3b/0x200 [xfs]\n[\u003cffffffffa029af5d\u003e] __xfs_btree_split+0x6ad/0x820 [xfs]\n[\u003cffffffffa029b130\u003e] xfs_btree_split+0x60/0x110 [xfs]\n[\u003cffffffffa029f6da\u003e] xfs_btree_make_block_unfull+0x19a/0x1f0 [xfs]\n[\u003cffffffffa029fada\u003e] xfs_btree_insrec+0x3aa/0x810 [xfs]\n[\u003cffffffffa029fff3\u003e] xfs_btree_insert+0xb3/0x240 [xfs]\n[\u003cffffffffa02cb729\u003e] xfs_rmap_insert+0x99/0x200 [xfs]\n[\u003cffffffffa02cf142\u003e] xfs_rmap_map_shared+0x192/0x5f0 [xfs]\n[\u003cffffffffa02cf60b\u003e] xfs_rmap_map_raw+0x6b/0x90 [xfs]\n[\u003cffffffffa0384a85\u003e] xrep_rmap_stash+0xd5/0x1d0 [xfs]\n[\u003cffffffffa0384dc0\u003e] xrep_rmap_visit_bmbt+0xa0/0xf0 [xfs]\n[\u003cffffffffa0384fb6\u003e] xrep_rmap_scan_iext+0x56/0xa0 [xfs]\n[\u003cffffffffa03850d8\u003e] xrep_rmap_scan_ifork+0xd8/0x160 [xfs]\n[\u003cffffffffa0385195\u003e] xrep_rmap_scan_inode+0x35/0x80 [xfs]\n[\u003cffffffffa03852ee\u003e] xrep_rmap_find_rmaps+0x10e/0x270 [xfs]\n\nI noticed that xfs_btree_insrec has a bunch of debug code that return\nout of the function immediately, without freeing the \"new\" btree cursor\nthat can be returned when _make_block_unfull calls xfs_btree_split.  Fix\nthe error return in this function to free the btree cursor.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "494b7c2e3eade9232793db394c04d81aaae655cb",
      "tree": "655d4a5a607138b778a4c69c5e57f622d7dc8257",
      "parents": [
        "29c42f23d19c687d5da2b7ba4463abe6070058f0"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: assert in xfs_btree_del_cursor should take into account error\n\nSource kernel commit: 56486f307100e8fc66efa2ebd8a71941fa10bf6f\n\nxfs/538 on a 1kB block filesystem failed with this assert:\n\nXFS: Assertion failed: cur-\u003ebc_btnum !\u003d XFS_BTNUM_BMAP || cur-\u003ebc_ino.allocated \u003d\u003d 0 || xfs_is_shutdown(cur-\u003ebc_mp), file: fs/xfs/libxfs/xfs_btree.c, line: 448\n\nThe problem was that an allocation failed unexpectedly in\nxfs_bmbt_alloc_block() after roughly 150,000 minlen allocation error\ninjections, resulting in an EFSCORRUPTED error being returned to\nxfs_bmapi_write(). The error occurred on extent-to-btree format\nconversion allocating the new root block:\n\nRIP: 0010:xfs_bmbt_alloc_block+0x177/0x210\nCall Trace:\n\u003cTASK\u003e\nxfs_btree_new_iroot+0xdf/0x520\nxfs_btree_make_block_unfull+0x10d/0x1c0\nxfs_btree_insrec+0x364/0x790\nxfs_btree_insert+0xaa/0x210\nxfs_bmap_add_extent_hole_real+0x1fe/0x9a0\nxfs_bmapi_allocate+0x34c/0x420\nxfs_bmapi_write+0x53c/0x9c0\nxfs_alloc_file_space+0xee/0x320\nxfs_file_fallocate+0x36b/0x450\nvfs_fallocate+0x148/0x340\n__x64_sys_fallocate+0x3c/0x70\ndo_syscall_64+0x35/0x80\nentry_SYSCALL_64_after_hwframe+0x44/0xa\n\nWhy the allocation failed at this point is unknown, but is likely\nthat we ran the transaction out of reserved space and filesystem out\nof space with bmbt blocks because of all the minlen allocations\nbeing done causing worst case fragmentation of a large allocation.\n\nRegardless of the cause, we\u0027ve then called xfs_bmapi_finish() which\ncalls xfs_btree_del_cursor(cur, error) to tear down the cursor.\n\nSo we have a failed operation, error !\u003d 0, cur-\u003ebc_ino.allocated \u003e 0\nand the filesystem is still up. The assert fails to take into\naccount that allocation can fail with an error and the transaction\nteardown will shut the filesystem down if necessary. i.e. the\nassert needs to check \"|| error !\u003d 0\" as well, because at this point\nshutdown is pending because the current transaction is dirty....\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "29c42f23d19c687d5da2b7ba4463abe6070058f0",
      "tree": "320d34abd4879f7bdcc42008cba214a7289747f5",
      "parents": [
        "128ba9ce6eb8704c13520df8e6502112af63c387"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: don\u0027t assert fail on perag references on teardown\n\nSource kernel commit: 5b55cbc2d72632e874e50d2e36bce608e55aaaea\n\nNot fatal, the assert is there to catch developer attention. I\u0027m\nseeing this occasionally during recoveryloop testing after a\nshutdown, and I don\u0027t want this to stop an overnight recoveryloop\nrun as it is currently doing.\n\nConvert the ASSERT to a XFS_IS_CORRUPT() check so it will dump a\ncorruption report into the log and cause a test failure that way,\nbut it won\u0027t stop the machine dead.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "128ba9ce6eb8704c13520df8e6502112af63c387",
      "tree": "0f380d0c4ada8d07f0f9b6838056d95a0d7a65c9",
      "parents": [
        "433bc15b8be5b69642daba768a0fe06ae436d64a"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: share xattr name and value buffers when logging xattr updates\n\nSource kernel commit: 4183e4f27f402d712bccab30588a6fe7575963c0\n\nWhile running xfs/297 and generic/642, I noticed a crash in\nxfs_attri_item_relog when it tries to copy the attr name to the new\nxattri log item.  I think what happened here was that we called\n-\u003eiop_commit on the old attri item (which nulls out the pointers) as\npart of a log force at the same time that a chained attr operation was\nongoing.  The system was busy enough that at some later point, the defer\nops operation decided it was necessary to relog the attri log item, but\nas we\u0027ve detached the name buffer from the old attri log item, we can\u0027t\ncopy it to the new one, and kaboom.\n\nI think there\u0027s a broader refcounting problem with LARP mode -- the\nsetxattr code can return to userspace before the CIL actually formats\nand commits the log item, which results in a UAF bug.  Therefore, the\nxattr log item needs to be able to retain a reference to the name and\nvalue buffers until the log items have completely cleared the log.\nFurthermore, each time we create an intent log item, we allocate new\nmemory and (re)copy the contents; sharing here would be very useful.\n\nSolve the UAF and the unnecessary memory allocations by having the log\ncode create a single refcounted buffer to contain the name and value\ncontents.  This buffer can be passed from old to new during a relog\noperation, and the logging code can (optionally) attach it to the\nxfs_attr_item for reuse when LARP mode is enabled.\n\nThis also fixes a problem where the xfs_attri_log_item objects weren\u0027t\nbeing freed back to the same cache where they came from.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "433bc15b8be5b69642daba768a0fe06ae436d64a",
      "tree": "bbb9df0ce545ea7d9cafdc9aa7b6c45035a04ba6",
      "parents": [
        "7e5dda22112cfba25b2c2202949364010bcf8e17"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: do not use logged xattr updates on V4 filesystems\n\nSource kernel commit: 22a68ba724232ba675166c307ddef3749ae4c37c\n\nV4 superblocks do not contain the log_incompat feature bit, which means\nthat we cannot protect xattr log items against kernels that are too old\nto know how to recover them.  Turn off the log items for such\nfilesystems and adjust the \"delayed\" name to reflect what it\u0027s really\ncontrolling.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "7e5dda22112cfba25b2c2202949364010bcf8e17",
      "tree": "c2af809020db1f7da56fa86a2fe22031ff56ee62",
      "parents": [
        "eff5933f57b9867932e183bdf8bc75eefe9dded9"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "Julia.Lawall@inria.fr",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: fix typo in comment\n\nSource kernel commit: 41bc61c02a5a3aa4f8ba5f9e9c54668468925c72\n\nSpelling mistake (triple letters) in comment.\nDetected with the help of Coccinelle.\n\nSigned-off-by: Julia Lawall \u003cJulia.Lawall@inria.fr\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "eff5933f57b9867932e183bdf8bc75eefe9dded9",
      "tree": "1b382cde36bee07b5f20ed405b05ea0ecacedf74",
      "parents": [
        "6d8c85b514099e0b177c5a14c1d985001b7ce945"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: rename struct xfs_attr_item to xfs_attr_intent\n\nSource kernel commit: e3c5de22026fda01674c400b97f96857dfb58aab\n\nEverywhere else in XFS, structures that capture the state of an ongoing\ndeferred work item all have names that end with \"_intent\".  The new\nextended attribute deferred work items are not named as such, so fix it\nto follow the naming convention used elsewhere.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "6d8c85b514099e0b177c5a14c1d985001b7ce945",
      "tree": "eaaf5b8654303e13e09ebacd2481e5d113fdcf1b",
      "parents": [
        "96bcaff65772ec64e8a25deaeaa54372d256ac04"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: clean up state variable usage in xfs_attr_node_remove_attr\n\nSource kernel commit: 3768f6985700106e90eca87d814dc08e609a9969\n\nThe state variable is now a local variable pointing to a heap\nallocation, so we don\u0027t need to zero-initialize it, nor do we need the\nconditional to decide if we should free it.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "96bcaff65772ec64e8a25deaeaa54372d256ac04",
      "tree": "ebc351a515a93a16eb0229b9c341eddb05e82129",
      "parents": [
        "05ea32a52f43866322287a8128caebe81d9f453a"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: put attr[id] log item cache init with the others\n\nSource kernel commit: 4136e38af728eddcab2e51aecde28e94d0782b9b\n\nInitialize and destroy the xattr log item caches in the same places that\nwe do all the other log item caches.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "05ea32a52f43866322287a8128caebe81d9f453a",
      "tree": "57b499bb0bf30610000567f10992726c87f994e0",
      "parents": [
        "3b0ca6322b7efc468e96458492e2e21e0bfb2918"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: remove struct xfs_attr_item.xattri_flags\n\nSource kernel commit: 500a512c60d132dbffc0233ba22ad067756c0ccd\n\nNobody uses this field, so get rid of it and the unused flag definition.\nRearrange the structure layout to reduce its size from 104 to 96 bytes.\nThis gets us from 39 to 42 objects per page.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "3b0ca6322b7efc468e96458492e2e21e0bfb2918",
      "tree": "341fea6d8b3990bed0f129a6cbcfdaab22fe32ed",
      "parents": [
        "209da5f62d10e63855ccded1b5b50d0ead8a052e"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: use a separate slab cache for deferred xattr work state\n\nSource kernel commit: e2c78949b641d34cb4051b32c2fa5e03a4bfef35\n\nCreate a separate slab cache for struct xfs_attr_item objects, since we\ncan pack the (104-byte) intent items more tightly than we can with the\ngeneral slab cache objects.  On x86, this means 39 intents per memory\npage instead of 32.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "209da5f62d10e63855ccded1b5b50d0ead8a052e",
      "tree": "3410802cc36c9c310280c7d7b37d5a50ad06c0ce",
      "parents": [
        "ecc6ab2b2d9016e532b5204728a344a4dd4a2a5b"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: put the xattr intent item op flags in their own namespace\n\nSource kernel commit: b53d212b4b5c29ab16edb7eca2b0e05927b7aa34\n\nThe flags that are stored in the extended attr intent log item really\nshould have a separate namespace from the rest of the XFS_ATTR_* flags.\nGive them one to make it a little more obvious that they\u0027re intent item\nflags.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "ecc6ab2b2d9016e532b5204728a344a4dd4a2a5b",
      "tree": "b370deb1778b2d0becf4d9ed14beb473a6251833",
      "parents": [
        "40c3c9f0384ed3d96d2a349937b124b9f0257cde"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: clean up xfs_attr_node_hasname\n\nSource kernel commit: 4d0cdd2bb8f0bf1a30d361f14bafc428794551e0\n\nThe calling conventions of this function are a mess -- callers /can/\nprovide a pointer to a pointer to a state structure, but it\u0027s not\nrequired, and as evidenced by the last two patches, the callers that do\nweren\u0027t be careful enough about how to deal with an existing da state.\n\nPush the allocation and freeing responsibilty to the callers, which\nmeans that callers from the xattr node state machine steps now have the\nvisibility to allocate or free the da state structure as they please.\nAs a bonus, the node remove/add paths for larp-mode replaces can reset\nthe da state structure instead of freeing and immediately reallocating\nit.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "40c3c9f0384ed3d96d2a349937b124b9f0257cde",
      "tree": "3f863ff4e63c510a77e4686b63798a4874ce2432",
      "parents": [
        "52bc85347960b4ea724f04291d3d37df10422e71"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: reject unknown xattri log item filter flags during recovery\n\nSource kernel commit: 85d76aec6bbb3dd0131511e73d48b2816e7ab8de\n\nMake sure we screen the \"attr flags\" field of recovered xattr intent log\nitems to reject flag bits that we don\u0027t know about.  This is really the\nattr *filter* field from xfs_da_args, so rename the field and create\na mask to make checking for invalid bits easier.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "52bc85347960b4ea724f04291d3d37df10422e71",
      "tree": "a791fe72a6460fc33d905c3361219857f3cf5365",
      "parents": [
        "5b39118945c6f7d5d5bd95f211b0405cc8d61e2b"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: don\u0027t leak the retained da state when doing a leaf to node conversion\n\nSource kernel commit: a618acab136b1b01a4c10957ce8bae70cc9f7ca4\n\nIf a setxattr operation finds an xattr structure in leaf format, adding\nthe attr can fail due to lack of space and hence requires an upgrade to\nnode format.  After this happens, we\u0027ll roll the transaction and\nre-enter the state machine, at which time we need to perform a second\nlookup of the attribute name to find its new location.  This lookup\nattaches a new da state structure to the xfs_attr_item but doesn\u0027t free\nthe old one (from the leaf lookup) and leaks it.  Fix that.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "5b39118945c6f7d5d5bd95f211b0405cc8d61e2b",
      "tree": "1b93f6ddd15c0c7bf45f978d5db035478f69a89c",
      "parents": [
        "d45dd440f5ef2229ab3c671870e993a342415d5b"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@kernel.org",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: don\u0027t leak da state when freeing the attr intent item\n\nSource kernel commit: 309001c22cdd75c62e6c3a217bf6967e178f929a\n\nkmemleak reported that we lost an xfs_da_state while removing xattrs in\ngeneric/020:\n\nunreferenced object 0xffff88801c0e4b40 (size 480):\ncomm \"attr\", pid 30515, jiffies 4294931061 (age 5.960s)\nhex dump (first 32 bytes):\n78 bc 65 07 00 c9 ff ff 00 30 60 1c 80 88 ff ff  x.e......0`.....\n02 00 00 00 00 00 00 00 80 18 83 4e 80 88 ff ff  ...........N....\nbacktrace:\n[\u003cffffffffa023ef4a\u003e] xfs_da_state_alloc+0x1a/0x30 [xfs]\n[\u003cffffffffa021b6f3\u003e] xfs_attr_node_hasname+0x23/0x90 [xfs]\n[\u003cffffffffa021c6f1\u003e] xfs_attr_set_iter+0x441/0xa30 [xfs]\n[\u003cffffffffa02b5104\u003e] xfs_xattri_finish_update+0x44/0x80 [xfs]\n[\u003cffffffffa02b515e\u003e] xfs_attr_finish_item+0x1e/0x40 [xfs]\n[\u003cffffffffa0244744\u003e] xfs_defer_finish_noroll+0x184/0x740 [xfs]\n[\u003cffffffffa02a6473\u003e] __xfs_trans_commit+0x153/0x3e0 [xfs]\n[\u003cffffffffa021d149\u003e] xfs_attr_set+0x469/0x7e0 [xfs]\n[\u003cffffffffa02a78d9\u003e] xfs_xattr_set+0x89/0xd0 [xfs]\n[\u003cffffffff812e6512\u003e] __vfs_removexattr+0x52/0x70\n[\u003cffffffff812e6a08\u003e] __vfs_removexattr_locked+0xb8/0x150\n[\u003cffffffff812e6af6\u003e] vfs_removexattr+0x56/0x100\n[\u003cffffffff812e6bf8\u003e] removexattr+0x58/0x90\n[\u003cffffffff812e6cce\u003e] path_removexattr+0x9e/0xc0\n[\u003cffffffff812e6d44\u003e] __x64_sys_lremovexattr+0x14/0x20\n[\u003cffffffff81786b35\u003e] do_syscall_64+0x35/0x80\n\nI think this is a consequence of xfs_attr_node_removename_setup\nattaching a new da(btree) state to xfs_attr_item and never freeing it.\nI /think/ it\u0027s the case that the remove paths could detach the da state\nearlier in the remove state machine since nothing else accesses the\nstate.  However, let\u0027s future-proof the new xattr code by adding a\ncatch-all when we free the xfs_attr_item to make sure we never leak the\nda state.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "d45dd440f5ef2229ab3c671870e993a342415d5b",
      "tree": "95ba237489546f6791bda13557e5c6211c2f7ad9",
      "parents": [
        "9c4aae5894a8d3a8456b8a194218b26341f4bc6b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: detect empty attr leaf blocks in xfs_attr3_leaf_verify\n\nSource kernel commit: 51e6104fdb95f377c8741794778319bd413f4fff\n\nxfs_repair flags these as a corruption error, so the verifier should\ncatch software bugs that result in empty leaf blocks being written\nto disk, too.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "9c4aae5894a8d3a8456b8a194218b26341f4bc6b",
      "tree": "290ebaa5e7a5522d5df57c8ee8d195e3b0ef489a",
      "parents": [
        "aacbe991701464ec0f98485c7135dd5d9b2edcdd"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: ATTR_REPLACE algorithm with LARP enabled needs rework\n\nSource kernel commit: fdaf1bb3cafcfee9ef05c4eaf6ee1193fd90cbd2\n\nWe can\u0027t use the same algorithm for replacing an existing attribute\nwhen logging attributes. The existing algorithm is essentially:\n\n1. create new attr w/ INCOMPLETE\n2. atomically flip INCOMPLETE flags between old + new attribute\n3. remove old attr which is marked w/ INCOMPLETE\n\nThis algorithm guarantees that we see either the old or new\nattribute, and if we fail after the atomic flag flip, we don\u0027t have\nto recover the removal of the old attr because we never see\nINCOMPLETE attributes in lookups.\n\nFor logged attributes, however, this does not work. The logged\nattribute intents do not track the work that has been done as the\ntransaction rolls, and hence the only recovery mechanism we have is\n\"run the replace operation from scratch\".\n\nThis is further exacerbated by the attempt to avoid needing the\nINCOMPLETE flag to create an atomic swap. This means we can create\na second active attribute of the same name before we remove the\noriginal. If we fail at any point after the create but before the\nremoval has completed, we end up with duplicate attributes in\nthe attr btree and recovery only tries to replace one of them.\n\nThere are several other failure modes where we can leave partially\nallocated remote attributes that expose stale data, partially free\nremote attributes that enable UAF based stale data exposure, etc.\n\nTO fix this, we need a different algorithm for replace operations\nwhen LARP is enabled. Luckily, it\u0027s not that complex if we take the\nright first step. That is, the first thing we log is the attri\nintent with the new name/value pair and mark the old attr as\nINCOMPLETE in the same transaction.\n\nFrom there, we then remove the old attr and keep relogging the\nnew name/value in the intent, such that we always know that we have\nto create the new attr in recovery. Once the old attr is removed,\nwe then run a normal ATTR_CREATE operation relogging the intent as\nwe go. If the new attr is local, then it gets created in a single\natomic transaction that also logs the final intent done. If the new\nattr is remote, the we set INCOMPLETE on the new attr while we\nallocate and set the remote value, and then we clear the INCOMPLETE\nflag at in the last transaction taht logs the final intent done.\n\nIf we fail at any point in this algorithm, log recovery will always\nsee the same state on disk: the new name/value in the intent, and\neither an INCOMPLETE attr or no attr in the attr btree. If we find\nan INCOMPLETE attr, we run the full replace starting with removing\nthe INCOMPLETE attr. If we don\u0027t find it, then we simply create the\nnew attr.\n\nNotably, recovery of a failed create that has an INCOMPLETE flag set\nis now the same - we start with the lookup of the INCOMPLETE attr,\nand if that exists then we do the full replace recovery process,\notherwise we just create the new attr.\n\nHence changing the way we do the replace operation when LARP is\nenabled allows us to use the same log recovery algorithm for both\nthe ATTR_CREATE and ATTR_REPLACE operations. This is also the same\nalgorithm we use for runtime ATTR_REPLACE operations (except for the\nstep setting up the initial conditions).\n\nThe result is that:\n\n- ATTR_CREATE uses the same algorithm regardless of whether LARP is\nenabled or not\n- ATTR_REPLACE with larp\u003d0 is identical to the old algorithm\n- ATTR_REPLACE with larp\u003d1 runs an unmodified attr removal algorithm\nfrom the larp\u003d0 code and then runs the unmodified ATTR_CREATE\ncode.\n- log recovery when larp\u003d1 runs the same ATTR_REPLACE algorithm as\nit uses at runtime.\n\nBecause the state machine is now quite clean, changing the algorithm\nis really just a case of changing the initial state and how the\nstates link together for the ATTR_REPLACE case. Hence it\u0027s not a\nhuge amount of code for what is a fairly substantial rework\nof the attr logging and recovery algorithm....\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "aacbe991701464ec0f98485c7135dd5d9b2edcdd",
      "tree": "9cb44da7febde5955279f917f587fb08b99d9607",
      "parents": [
        "00ee9b95504bf86f3436e4983e8395ed112512d7"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: use XFS_DA_OP flags in deferred attr ops\n\nSource kernel commit: e7f358dee4e5cf1ce8b11ff2e65d5ccb1ced24db\n\nWe currently store the high level attr operation in\nargs-\u003eattr_flags. This field contains what the VFS is telling us to\ndo, but don\u0027t necessarily match what we are doing in the low level\nmodification state machine. e.g. XATTR_REPLACE implies both\nXFS_DA_OP_ADDNAME and XFS_DA_OP_RENAME because it is doing both a\nremove and adding a new attr.\n\nHowever, deep in the individual state machine operations, we check\nerrors against this high level VFS op flags, not the low level\nXFS_DA_OP flags. Indeed, we don\u0027t even have a low level flag for\na REMOVE operation, so the only way we know we are doing a remove\nis the complete absence of XATTR_REPLACE, XATTR_CREATE,\nXFS_DA_OP_ADDNAME and XFS_DA_OP_RENAME. And because there are other\nflags in these fields, this is a pain to check if we need to.\n\nAs the XFS_DA_OP flags are only needed once the deferred operations\nare set up, set these flags appropriately when we set the initial\noperation state. We also introduce a XFS_DA_OP_REMOVE flag to make\nit easy to know that we are doing a remove operation.\n\nWith these, we can remove the use of XATTR_REPLACE and XATTR_CREATE\nin low level lookup operations, and manipulate the low level flags\naccording to the low level context that is operating. e.g. log\nrecovery does not have a VFS xattr operation state to copy into\nargs-\u003eattr_flags, and the low level state machine ops we do for\nrecovery do not match the high level VFS operations that were in\nprogress when the system failed...\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "00ee9b95504bf86f3436e4983e8395ed112512d7",
      "tree": "985e9b6222d6d88b6fae22395ae79ec576773d80",
      "parents": [
        "fc32183a1e6d9817ef7a4c0fcd11883a0e17c967"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: remove xfs_attri_remove_iter\n\nSource kernel commit: 59782a236b622a983ff101b2cb1333f714e4ed4e\n\nxfs_attri_remove_iter is not used anymore, so remove it and all the\ninfrastructure it uses and is needed to drive it. THe\nxfs_attr_refillstate() function now throws an unused warning, so\nisolate the xfs_attr_fillstate()/xfs_attr_refillstate() code pair\nwith an #if 0 and a comment explaining why we want to keep this code\nand restore the optimisation it provides in the near future.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "fc32183a1e6d9817ef7a4c0fcd11883a0e17c967",
      "tree": "1f4b71560f222fb7239896954cae90b0aa78effa",
      "parents": [
        "3d7e9d5ced8db4f1808988ccac164c773a8280e1"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: switch attr remove to xfs_attri_set_iter\n\nSource kernel commit: 4b9879b19cafa63ae02fef30f678b2179a648d45\n\nNow that xfs_attri_set_iter() has initial states for removing\nattributes, switch the pure attribute removal code over to using it.\nThis requires attrs being removed to always be marked as INCOMPLETE\nbefore we start the removal due to the fact we look up the attr to\nremove again in xfs_attr_node_remove_attr().\n\nNote: this drops the fillstate/refillstate optimisations from\nthe remove path that avoid having to look up the path again after\nsetting the incomplete flag and removing remote attrs. Restoring\nthat optimisation to this path is future Dave\u0027s problem.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "3d7e9d5ced8db4f1808988ccac164c773a8280e1",
      "tree": "6fcd03896b62b2376366f05196b1c120393dd608",
      "parents": [
        "5a9d08d86546a6414a564d68a1d3fb05e83d2a29"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: introduce attr remove initial states into xfs_attr_set_iter\n\nSource kernel commit: e5d5596a2a1790d8c57938f820aa33e58f90ad0d\n\nWe need to merge the add and remove code paths to enable safe\nrecovery of replace operations. Hoist the initial remove states from\nxfs_attr_remove_iter into xfs_attr_set_iter. We will make use of\nthem in the next patches.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "5a9d08d86546a6414a564d68a1d3fb05e83d2a29",
      "tree": "0bb36cc6d8f9e1537ac5d4727c12b4ce93af570d",
      "parents": [
        "cf76c91718081dd3e199192cf5faabaaf8029887"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: xfs_attr_set_iter() does not need to return EAGAIN\n\nSource kernel commit: 4e3d96a57a06f20f4ce04a92422cc100251f346d\n\nNow that the full xfs_attr_set_iter() state machine always\nterminates with either the state being XFS_DAS_DONE on success or\nan error on failure, we can get rid of the need for it to return\n-EAGAIN whenever it needs to roll the transaction before running\nthe next state.\n\nThat is, we don\u0027t need to spray -EAGAIN return states everywhere,\nthe caller just check the state machine state for completion to\ndetermine what action should be taken next. This greatly simplifies\nthe code within the state machine implementation as it now only has\nto handle 0 for success or -errno for error and it doesn\u0027t need to\ntell the caller to retry.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "cf76c91718081dd3e199192cf5faabaaf8029887",
      "tree": "4f636e40d38bd448fcc8bef7a4b3fc9979b03a78",
      "parents": [
        "d6d0318ddaebb74b7ad4c097a545b6fef1252829"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: clean up final attr removal in xfs_attr_set_iter\n\nSource kernel commit: b11fa61bc4c679172a35e48d149f797ee37db3fc\n\nClean up the final leaf/node states in xfs_attr_set_iter() to\nfurther simplify the high level state machine and to set the\ncompletion state correctly. As we are adding a separate state\nfor node format removal, we need to ensure that node formats\nare collapsed back to shortform or empty correctly.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "d6d0318ddaebb74b7ad4c097a545b6fef1252829",
      "tree": "c97d7320e742fac5f60b0cfd75da25dec92e3360",
      "parents": [
        "3d434104084f6db7377988fb0403fbf1458ec965"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: remote xattr removal in xfs_attr_set_iter() is conditional\n\nSource kernel commit: 2e7ef218e489f5b3f5156a305b55a08c41839c1b\n\nWe may not have a remote value for the old xattr we have to remove,\nso skip over the remote value removal states and go straight to\nthe xattr name removal in the leaf/node block.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "3d434104084f6db7377988fb0403fbf1458ec965",
      "tree": "f06615ec1d7f0e8dbfe0860d370869d4d4cc9177",
      "parents": [
        "03a861f4ddedcbb054fdeaee471531f318d47c1a"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: XFS_DAS_LEAF_REPLACE state only needed if !LARP\n\nSource kernel commit: 411b434a63248ecff58aaf498b09eaf3b3f52f90\n\nWe can skip the REPLACE state when LARP is enabled, but that means\nthe XFS_DAS_FLIP_LFLAG state is now poorly named - it indicates\nsomething that has been done rather than what the state is going to\ndo. Rename it to \"REMOVE_OLD\" to indicate that we are now going to\nperform removal of the old attr.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "03a861f4ddedcbb054fdeaee471531f318d47c1a",
      "tree": "2ef7d3a4b1f4de58f80ec5c30d4e67cc806cd500",
      "parents": [
        "21b9a05df03df12bae194c7dbad217d7fbda0c99"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: split remote attr setting out from replace path\n\nSource kernel commit: 7d03533629d1c3fca395e6fd0935ca1de676f2bc\n\nWhen we set a new xattr, we have three exit paths:\n\n1. nothing else to do\n2. allocate and set the remote xattr value\n3. perform the rest of a replace operation\n\nCurrently we push both 2 and 3 into the same state, regardless of\nwhether we just set a remote attribute or not. Once we\u0027ve set the\nremote xattr, we have two exit states:\n\n1. nothing else to do\n2. perform the rest of a replace operation\n\nHence we can split the remote xattr allocation and setting into\ntheir own states and factor it out of xfs_attr_set_iter() to further\nclean up the state machine and the implementation of the state\nmachine.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "21b9a05df03df12bae194c7dbad217d7fbda0c99",
      "tree": "e5da2a981d79ce14ae436ba4e114374d9c47e48c",
      "parents": [
        "c3e7bcbb2d616c29adfea30e592f61d559fb2e3d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: consolidate leaf/node states in xfs_attr_set_iter\n\nSource kernel commit: 251b29c88eb84922e916ed4685f50db741aeb0af\n\nThe operations performed from XFS_DAS_FOUND_LBLK through to\nXFS_DAS_RM_LBLK are now identical to XFS_DAS_FOUND_NBLK through to\nXFS_DAS_RM_NBLK. We can collapse these down into a single set of\ncode.\n\nTo do this, define the states that leaf and node run through as\nseparate sets of sequential states. Then as we move to the next\nstate, we can use increments rather than specific state assignments\nto move through the states. This means the state progression is set\nby the initial state that enters the series and we don\u0027t need to\nduplicate the code anymore.\n\nAt the exit point of the series we need to select the correct leaf\nor node state, but that can also be done by state increment rather\nthan assignment.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "c3e7bcbb2d616c29adfea30e592f61d559fb2e3d",
      "tree": "d71a063e660e5e7e7f7257380ad2b70d47327cbd",
      "parents": [
        "cb787289c04ccd6c24e66d283b359af6b9ee0479"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: kill XFS_DAC_LEAF_ADDNAME_INIT\n\nSource kernel commit: 2157d1699e59819c8a31ba3e47008e4145d854a9\n\nWe re-enter the XFS_DAS_FOUND_LBLK state when we have to allocate\nmultiple extents for a remote xattr. We currently have a flag\ncalled XFS_DAC_LEAF_ADDNAME_INIT to avoid running the remote attr\nhole finding code more than once.\n\nHowever, for the node format tree, we have a separate state for this\nso we never reenter the state machine at XFS_DAS_FOUND_NBLK and so\nit does not need a special flag to skip over the remote attr hold\nfinding code.\n\nConvert the leaf block code to use the same state machine as the\nnode blocks and kill the  XFS_DAC_LEAF_ADDNAME_INIT flag.\n\nThis further points out that this \"ALLOC\" state is only traversed\nif we have remote xattrs or we are doing a rename operation. Rename\nboth the leaf and node alloc states to _ALLOC_RMT to indicate they\nare iterating to do allocation of remote xattr blocks.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "cb787289c04ccd6c24e66d283b359af6b9ee0479",
      "tree": "1c4f5337585d07358078b68919fe9636e7c0b30f",
      "parents": [
        "08b9530a875828647814e8d45972ca48fcb7240d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: separate out initial attr_set states\n\nSource kernel commit: e0c41089b998f5a54dabd7a34ab24108e192d2ee\n\nWe current use XFS_DAS_UNINIT for several steps in the attr_set\nstate machine. We use it for setting shortform xattrs, converting\nfrom shortform to leaf, leaf add, leaf-to-node and leaf add. All of\nthese things are essentially known before we start the state machine\niterating, so we really should separate them out:\n\nXFS_DAS_SF_ADD:\n        - tries to do a shortform add\n        - on success -\u003e done\n        - on ENOSPC converts to leaf, -\u003e XFS_DAS_LEAF_ADD\n        - on error, dies.\n\nXFS_DAS_LEAF_ADD:\n        - tries to do leaf add\n        - on success:\n                - inline attr -\u003e done\n                - remote xattr || REPLACE -\u003e XFS_DAS_FOUND_LBLK\n        - on ENOSPC converts to node, -\u003e XFS_DAS_NODE_ADD\n        - on error, dies\n\nXFS_DAS_NODE_ADD:\n        - tries to do node add\n        - on success:\n                - inline attr -\u003e done\n                - remote xattr || REPLACE -\u003e XFS_DAS_FOUND_NBLK\n        - on error, dies\n\nThis makes it easier to understand how the state machine starts\nup and sets us up on the path to further state machine\nsimplifications.\n\nThis also converts the DAS state tracepoints to use strings rather\nthan numbers, as converting between enums and numbers requires\nmanual counting rather than just reading the name.\n\nThis also introduces a XFS_DAS_DONE state so that we can trace\nsuccessful operation completions easily.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "08b9530a875828647814e8d45972ca48fcb7240d",
      "tree": "5cb27d04c36485248d361f2a8a74d3a904ae2a1e",
      "parents": [
        "52396d814f9de6824bc681dc5a7476ef800556ed"
      ],
      "author": {
        "name": "Catherine Hoang",
        "email": "catherine.hoang@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: remove warning counters from struct xfs_dquot_res\n\nSource kernel commit: 2e06df552a7cba13eb0046b9116a9aa26001ee2c\n\nWarning counts are not used anywhere in the kernel. In addition, there\nare no use cases, test coverage, or documentation for this functionality.\nRemove the \u0027warnings\u0027 field from struct xfs_dquot_res and any other\nrelated code.\n\nSigned-off-by: Catherine Hoang \u003ccatherine.hoang@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "52396d814f9de6824bc681dc5a7476ef800556ed",
      "tree": "3b67d509ca731db7145d117b70554f00b9304eff",
      "parents": [
        "94f2912964ec47ab9310a6b68ae144c926336a07"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: rework deferred attribute operation setup\n\nSource kernel commit: 709c8632597c3276cd21324b0256628f1a7fd4df\n\nLogged attribute intents only have set and remove types - there is\nno separate intent type for a replace operation. We should have a\nseparate type for a replace operation, as it needs to perform\noperations that neither SET or REMOVE can perform.\n\nAdd this type to the intent items and rearrange the deferred\noperation setup to reflect the different operations we are\nperforming.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "94f2912964ec47ab9310a6b68ae144c926336a07",
      "tree": "c18c991e7ba049d15a87bc730ad2728a8b813b86",
      "parents": [
        "bacc4c4c674ebaa3894b1bfc56d9b884a56d3d75"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: make xattri_leaf_bp more useful\n\nSource kernel commit: e22b88de5bacdd60ffa70e911e5fbae9ad36441a\n\nWe currently set it and hold it when converting from short to leaf\nform, then release it only to immediately look it back up again\nto do the leaf insert.\n\nDo a bit of refactoring to xfs_attr_leaf_try_add() to avoid this\nmessy handling of the newly allocated leaf buffer.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "bacc4c4c674ebaa3894b1bfc56d9b884a56d3d75",
      "tree": "d22970cb49090d216139c65185b16d2bf0d59a3c",
      "parents": [
        "c818a9fbf04fbe4f5582f499caa3e3217707e82a"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: avoid empty xattr transaction when attrs are inline\n\nSource kernel commit: a4b8917b06c71a4ea61ac45b6e979eb7676417f8\n\ngeneric/642 triggered a reproducable assert failure in\nxlog_cil_commit() that resulted from a xfs_attr_set() committing\nan empty but dirty transaction. When the CIL is empty and this\noccurs, xlog_cil_commit() tries a background push and this triggers\na \"pushing an empty CIL\" assert.\n\nXFS: Assertion failed: !list_empty(\u0026cil-\u003exc_cil), file: fs/xfs/xfs_log_cil.c, line: 1274\nCall Trace:\n\u003cTASK\u003e\nxlog_cil_commit+0xa5a/0xad0\n__xfs_trans_commit+0xb8/0x330\nxfs_trans_commit+0x10/0x20\nxfs_attr_set+0x3e2/0x4c0\nxfs_xattr_set+0x8d/0xe0\n__vfs_setxattr+0x6b/0x90\n__vfs_setxattr_noperm+0x76/0x220\n__vfs_setxattr_locked+0xdf/0x100\nvfs_setxattr+0x94/0x170\nsetxattr+0x110/0x200\npath_setxattr+0xbf/0xe0\n__x64_sys_setxattr+0x2b/0x30\ndo_syscall_64+0x35/0x80\n\nThe problem is related to the breakdown of attribute addition in\nxfs_attr_set_iter() and how it is called from deferred operations.\nWhen we have a pure leaf xattr insert, we add the xattr to the leaf\nand set the next state to XFS_DAS_FOUND_LBLK and return -EAGAIN.\nThis requeues the xattr defered work, rolls the transaction and\nruns xfs_attr_set_iter() again. This then checks the xattr for\nbeing remote (it\u0027s not) and whether a replace op is being done (this\nis a create op) and if neither are true it returns without having\ndone anything.\n\nxfs_xattri_finish_update() then unconditionally sets the transaction\ndirty, and the deferops finishes and returns to __xfs_trans_commit()\nwhich sees the transaction dirty and tries to commit it by calling\nxlog_cil_commit(). The transaction is empty, and then the assert\nfires if this happens when the CIL is empty.\n\nThis patch addresses the structure of xfs_attr_set_iter() that\nrequires re-entry on leaf add even when nothing will be done. This\ngets rid of the trailing empty transaction and so doesn\u0027t trigger\nthe XFS_TRANS_DIRTY assignment in xfs_xattri_finish_update()\nincorrectly. Addressing that is for a different patch.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson\u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "c818a9fbf04fbe4f5582f499caa3e3217707e82a",
      "tree": "f0bfbb066f92de3f89932832f8c633f87b699ad1",
      "parents": [
        "7f92d9ee5f6cc5418c7dcef213b02e9e3ea04a2f"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: add leaf to node error tag\n\nSource kernel commit: c5218a7cd97349c53bc64e447778a07e49364d40\n\nAdd an error tag on xfs_attr3_leaf_to_node to test log attribute\nrecovery and replay.\n\nSigned-off-by: Catherine Hoang \u003ccatherine.hoang@oracle.com\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "7f92d9ee5f6cc5418c7dcef213b02e9e3ea04a2f",
      "tree": "33ed32d3a0c133e7d1d266d138686af15731016c",
      "parents": [
        "ef291627758163caeaa3491f7332b8a00787e98f"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: add leaf split error tag\n\nSource kernel commit: c3b948be34702a0a81f10662c4040e500a90eb54\n\nAdd an error tag on xfs_da3_split to test log attribute recovery\nand replay.\n\nSigned-off-by: Catherine Hoang \u003ccatherine.hoang@oracle.com\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "ef291627758163caeaa3491f7332b8a00787e98f",
      "tree": "953e1472437a4e0a5355b9f8a64b9ebc919664d1",
      "parents": [
        "bc522905c5d712405ceec1c05b1bcc85cdbe65e3"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Add helper function xfs_init_attr_trans\n\nSource kernel commit: c3546cf5d1e50389a789290f8c21a555e3408aa8\n\nQuick helper function to collapse duplicate code to initialize\ntransactions for attributes\n\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSuggested-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "bc522905c5d712405ceec1c05b1bcc85cdbe65e3",
      "tree": "a104538fe1a746e2fdb66eba8ec767392b3bb393",
      "parents": [
        "a951e052d82a16c68eea4cb214d548635bfb05ce"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Add helper function xfs_attr_leaf_addname\n\nSource kernel commit: cd1549d6df22e4f72903dbb169202203d429bcff\n\nThis patch adds a helper function xfs_attr_leaf_addname.  While this\ndoes help to break down xfs_attr_set_iter, it does also hoist out some\nof the state management.  This patch has been moved to the end of the\nclean up series for further discussion.\n\nSuggested-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Chandan Babu R \u003cchandanrlinux@gmail.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "a951e052d82a16c68eea4cb214d548635bfb05ce",
      "tree": "3cb838f0cee9d6a3372ef876bf1c71b94ffddd28",
      "parents": [
        "5363c39d58697be0d8d6cc5bf80f3b2627f64bb4"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Merge xfs_delattr_context into xfs_attr_item\n\nSource kernel commit: d68c51e9a4095b57f06bf5dd15ab8fae6dab5d8b\n\nThis is a clean up patch that merges xfs_delattr_context into\nxfs_attr_item.  Now that the refactoring is complete and the delayed\noperation infrastructure is in place, we can combine these to eliminate\nthe extra struct\n\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdarrick.wong@oracle.com\u003e\nReviewed-by: Chandan Babu R \u003cchandanrlinux@gmail.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "5363c39d58697be0d8d6cc5bf80f3b2627f64bb4",
      "tree": "235f5536b0997ec31280146d346d0c1460bd12bd",
      "parents": [
        "a28320315509a3c79dc3e0c7f1ddfe43d21c4c42"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Add larp debug option\n\nSource kernel commit: 535e2f75c4e377e6ccc9d4396695b516d118f8f0\n\nThis patch adds a debug option to enable log attribute replay. Eventually\nthis can be removed when delayed attrs becomes permanent.\n\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Chandan Babu R \u003cchandanrlinux@gmail.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "a28320315509a3c79dc3e0c7f1ddfe43d21c4c42",
      "tree": "c685b68873a69ab6e86004295ba3373f81a04d73",
      "parents": [
        "9ebd7ae8733a9d9851f0c839d50e90c385e9617c"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Add log attribute error tag\n\nSource kernel commit: abd61ca3c333506ffa4ee73b78659ab57e7efcf7\n\nThis patch adds an error tag that we can use to test log attribute\nrecovery and replay\n\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdarrick.wong@oracle.com\u003e\nReviewed-by: Chandan Babu R \u003cchandanrlinux@gmail.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "9ebd7ae8733a9d9851f0c839d50e90c385e9617c",
      "tree": "842af5728167b87c39e975dd47f20a823a506593",
      "parents": [
        "4a12ea99a1b658778edf438eeba27ee8c7575261"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Remove unused xfs_attr_*_args\n\nSource kernel commit: 73159fc27c6944ebe55e6652d6a1981d7cb3eb4a\n\nRemove xfs_attr_set_args, xfs_attr_remove_args, and xfs_attr_trans_roll.\nThese high level loops are now driven by the delayed operations code,\nand can be removed.\n\nAdditionally collapse in the leaf_bp parameter of xfs_attr_set_iter\nsince we only have one caller that passes dac-\u003eleaf_bp\n\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Chandan Babu R \u003cchandanrlinux@gmail.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "4a12ea99a1b658778edf438eeba27ee8c7575261",
      "tree": "58a69e4375e738668508cc89d30b4c2420dba0d3",
      "parents": [
        "669c8c823359d9dac21c37ca25737a82e559aaad"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Add xfs_attr_set_deferred and xfs_attr_remove_deferred\n\nSource kernel commit: f3f36c893f260275eb9229cdc3dabb4c79650591\n\nThese routines set up and queue a new deferred attribute operations.\nThese functions are meant to be called by any routine needing to\ninitiate a deferred attribute operation as opposed to the existing\ninline operations. New helper function xfs_attr_item_init also added.\n\nFinally enable delayed attributes in xfs_attr_set and xfs_attr_remove.\n\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Chandan Babu R \u003cchandanrlinux@gmail.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "669c8c823359d9dac21c37ca25737a82e559aaad",
      "tree": "bbecb06731fe744c7581445f39263418f0279fe3",
      "parents": [
        "c6ad4bc15019235a6cbe1a51d6d6e454dd4a8d89"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Skip flip flags for delayed attrs\n\nSource kernel commit: f38dc503d366b589d98d5676a5b279d10b47bcb9\n\nThis is a clean up patch that skips the flip flag logic for delayed attr\nrenames.  Since the log replay keeps the inode locked, we do not need to\nworry about race windows with attr lookups.  So we can skip over\nflipping the flag and the extra transaction roll for it\n\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Chandan Babu R \u003cchandanrlinux@gmail.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "c6ad4bc15019235a6cbe1a51d6d6e454dd4a8d89",
      "tree": "10e0ee64475523b02dd89ad629d5f29eac0f7c6b",
      "parents": [
        "6bcbc2443f477e36240b06caf96db98d4091e6aa"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Implement attr logging and replay\n\nSource kernel commit: 1d08e11d04d293cb7006d1c8641be1fdd8a8e397\n\nThis patch adds the needed routines to create, log and recover logged\nextended attribute intents.\n\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Chandan Babu R \u003cchandanrlinux@gmail.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "6bcbc2443f477e36240b06caf96db98d4091e6aa",
      "tree": "97ef269d791b103eca8b8fa4fc0c2c04c58b23b2",
      "parents": [
        "eddff049e816d172a06be8e43d5637f37be2ba9e"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Set up infrastructure for log attribute replay\n\nSource kernel commit: fd920008784ead369e79c2be2f8d9cc736e306ca\n\nCurrently attributes are modified directly across one or more\ntransactions. But they are not logged or replayed in the event of an\nerror. The goal of log attr replay is to enable logging and replaying\nof attribute operations using the existing delayed operations\ninfrastructure.  This will later enable the attributes to become part of\nlarger multi part operations that also must first be recorded to the\nlog.  This is mostly of interest in the scheme of parent pointers which\nwould need to maintain an attribute containing parent inode information\nany time an inode is moved, created, or removed.  Parent pointers would\nthen be of interest to any feature that would need to quickly derive an\ninode path from the mount point. Online scrub, nfs lookups and fs grow\nor shrink operations are all features that could take advantage of this.\n\nThis patch adds two new log item types for setting or removing\nattributes as deferred operations.  The xfs_attri_log_item will log an\nintent to set or remove an attribute.  The corresponding\nxfs_attrd_log_item holds a reference to the xfs_attri_log_item and is\nfreed once the transaction is done.  Both log items use a generic\nxfs_attr_log_format structure that contains the attribute name, value,\nflags, inode, and an op_flag that indicates if the operations is a set\nor remove.\n\n[dchinner: added extra little bits needed for intent whiteouts]\n\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Chandan Babu R \u003cchandanrlinux@gmail.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "eddff049e816d172a06be8e43d5637f37be2ba9e",
      "tree": "8163943f5680d12b0f1e588fd81c96339403f2b8",
      "parents": [
        "9c0383ad5eead6d4d18ee884610beff7d75d232d"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Return from xfs_attr_set_iter if there are no more rmtblks to process\n\nSource kernel commit: 9a39cdabc172ef2de3f21a34e73cdc1d02338d79\n\nDuring an attr rename operation, blocks are saved for later removal\nas rmtblkno2. The rmtblkno is used in the case of needing to alloc\nmore blocks if not enough were available.  However, in the case\nthat no further blocks need to be added or removed, we can return as soon\nas xfs_attr_node_addname completes, rather than rolling the transaction\nwith an -EAGAIN return.  This extra loop does not hurt anything right\nnow, but it will be a problem later when we get into log items because\nwe end up with an empty log transaction.  So, add a simple check to\ncut out the unneeded iteration.\n\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Chandan Babu R \u003cchandanrlinux@gmail.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "9c0383ad5eead6d4d18ee884610beff7d75d232d",
      "tree": "2e6ba90b3b3e2641e7880449820b134fecbe1218",
      "parents": [
        "b12d5ae5d62fe82244e97582a8d45f629ee2a134"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "allison.henderson@oracle.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: Fix double unlock in defer capture code\n\nSource kernel commit: 7b3ec2b20e44f579c022ad62243aa18c04c6addc\n\nThe new deferred attr patch set uncovered a double unlock in the\nrecent port of the defer ops capture and continue code.  During log\nrecovery, we\u0027re allowed to hold buffers to a transaction that\u0027s being\nused to replay an intent item.  When we capture the resources as part\nof scheduling a continuation of an intent chain, we call xfs_buf_hold\nto retain our reference to the buffer beyond the transaction commit,\nbut we do /not/ call xfs_trans_bhold to maintain the buffer lock.\nThis means that xfs_defer_ops_continue needs to relock the buffers\nbefore xfs_defer_restore_resources joins then tothe new transaction.\n\nAdditionally, the buffers should not be passed back via the dres\nstructure since they need to remain locked unlike the inodes.  So\nsimply set dr_bufs to zero after populating the dres structure.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Chandan Babu R \u003cchandan.babu@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "b12d5ae5d62fe82244e97582a8d45f629ee2a134",
      "tree": "c285b3a511e4f2d597b1023e3273223085512e24",
      "parents": [
        "617613282338cc7546bccec104474f8e5be7d66d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: validate v5 feature fields\n\nSource kernel commit: f0f5f658065a5af09126ec892e4c383540a1c77f\n\nWe don\u0027t check that the v4 feature flags taht v5 requires to be set\nare actually set anywhere. Do this check when we see that the\nfilesystem is a v5 filesystem.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "617613282338cc7546bccec104474f8e5be7d66d",
      "tree": "aa83a0f995bede3357247e71b1338a3f8a8aef5f",
      "parents": [
        "173809afb6bb67b87f0de5da3cf3d9b9a68ef90a"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: set XFS_FEAT_NLINK correctly\n\nSource kernel commit: dd0d2f9755191690541b09e6385d0f8cd8bc9d8f\n\nWhile xfs_has_nlink() is not used in kernel, it is used in userspace\n(e.g. by xfs_db) so we need to set the XFS_FEAT_NLINK flag correctly\nin xfs_sb_version_to_features().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "173809afb6bb67b87f0de5da3cf3d9b9a68ef90a",
      "tree": "b2c03b5bdfe1a80ec3586d67985b39b6fbef7243",
      "parents": [
        "4a845716063a22d2aad3775c3db24cd9cf8c3f15"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: validate inode fork size against fork format\n\nSource kernel commit: 1eb70f54c445fcbb25817841e774adb3d912f3e8\n\nxfs_repair catches fork size/format mismatches, but the in-kernel\nverifier doesn\u0027t, leading to null pointer failures when attempting\nto perform operations on the fork. This can occur in the\nxfs_dir_is_empty() where the in-memory fork format does not match\nthe size and so the fork data pointer is accessed incorrectly.\n\nNote: this causes new failures in xfs/348 which is testing mode vs\nftype mismatches. We now detect a regular file that has been changed\nto a directory or symlink mode as being corrupt because the data\nfork is for a symlink or directory should be in local form when\nthere are only 3 bytes of data in the data fork. Hence the inode\nverify for the regular file now fires w/ -EFSCORRUPTED because\nthe inode fork format does not match the format the corrupted mode\nsays it should be in.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "4a845716063a22d2aad3775c3db24cd9cf8c3f15",
      "tree": "3dc0c85ace55eb7d2186179eb72cbfffb6b167c2",
      "parents": [
        "2dea773a7bee5d150ddcc880d308b4bf6e18928d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: detect self referencing btree sibling pointers\n\nSource kernel commit: dc04db2aa7c9307e740d6d0e173085301c173b1a\n\nTo catch the obvious graph cycle problem and hence potential endless\nlooping.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "2dea773a7bee5d150ddcc880d308b4bf6e18928d",
      "tree": "629e612c5d11af66f3abf6786a90e03b3bda8af5",
      "parents": [
        "93d8bb2f590301bdab4925fe8c6492a6c208c743"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: tag transactions that contain intent done items\n\nSource kernel commit: bb7b1c9c5dd3d24db3f296e365570fd50c8ca80c\n\nIntent whiteouts will require extra work to be done during\ntransaction commit if the transaction contains an intent done item.\n\nTo determine if a transaction contains an intent done item, we want\nto avoid having to walk all the items in the transaction to check if\nthey are intent done items. Hence when we add an intent done item to\na transaction, tag the transaction to indicate that it contains such\nan item.\n\nWe don\u0027t tag the transaction when the defer ops is relogging an\nintent to move it forward in the log. Whiteouts will never apply to\nthese cases, so we don\u0027t need to bother looking for them.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "93d8bb2f590301bdab4925fe8c6492a6c208c743",
      "tree": "5166aec09351430492fd76194bf4d8c91a861727",
      "parents": [
        "227a3b639d2a457ecaaeb4fd15d6bc9a835f65eb"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: don\u0027t commit the first deferred transaction without intents\n\nSource kernel commit: 5ddd658ea878f8dbae5ec33dba6cfdabb5056916\n\nIf the first operation in a string of defer ops has no intents,\nthen there is no reason to commit it before running the first call\nto xfs_defer_finish_one(). This allows the defer ops to be used\neffectively for non-intent based operations without requiring an\nunnecessary extra transaction commit when first called.\n\nThis fixes a regression in per-attribute modification transaction\ncount when delayed attributes are not being used.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "227a3b639d2a457ecaaeb4fd15d6bc9a835f65eb",
      "tree": "deda8659c8e281e4b75f2abac5cef3d5532fb1bc",
      "parents": [
        "5a282e43fd719e37b866f797c9aacac199d08a19"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: hide log iovec alignment constraints\n\nSource kernel commit: b2c28035cea290edbcec697504e5b7a4b1e023e7\n\nCallers currently have to round out the size of buffers to match the\naligment constraints of log iovecs and xlog_write(). They should not\nneed to know this detail, so introduce a new function to calculate\nthe iovec length (for use in -\u003eiop_size implementations). Also\nmodify xlog_finish_iovec() to round up the length to the correct\nalignment so the callers don\u0027t need to do this, either.\n\nConvert the only user - inode forks - of this alignment rounding to\nuse the new interface.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "5a282e43fd719e37b866f797c9aacac199d08a19",
      "tree": "78e5e54e6a9898f20f2a8d5f71ac2722208b784d",
      "parents": [
        "b8e570fc6b5c99270bf956ff4501f0cabb7decc3"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jun 22 14:28:52 2022 -0500"
      },
      "message": "xfs: zero inode fork buffer at allocation\n\nSource kernel commit: cb512c921639613ce03f87e62c5e93ed9fe8c84d\n\nWhen we first allocate or resize an inline inode fork, we round up\nthe allocation to 4 byte alingment to make journal alignment\nconstraints. We don\u0027t clear the unused bytes, so we can copy up to\nthree uninitialised bytes into the journal. Zero those bytes so we\nonly ever copy zeros into the journal.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\nReviewed-by: Allison Henderson \u003callison.henderson@oracle.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    }
  ],
  "next": "b8e570fc6b5c99270bf956ff4501f0cabb7decc3"
}
