)]}'
{
  "commit": "b6564f8f1df29cd61a05118347dacece7e251f75",
  "tree": "82afd1fbee86f4a1d05c91f3bb010a07bf48b7c0",
  "parents": [
    "b7ddd5699b8b304886c519a932415c07efaf9201"
  ],
  "author": {
    "name": "Darrick J. Wong",
    "email": "djwong@kernel.org",
    "time": "Mon Feb 13 15:42:24 2023 -0800"
  },
  "committer": {
    "name": "Darrick J. Wong",
    "email": "djwong@kernel.org",
    "time": "Fri Mar 03 08:59:00 2023 -0800"
  },
  "message": "xfs: convert GETPARENTS structures to flex arrays\n\nThe current definition of the GETPARENTS ioctl doesn\u0027t use the buffer\nspace terribly efficiently because each parent pointer record struct\nincorporates enough space to hold the maximally sized dirent name.  Most\ndirent names are much less than 255 bytes long, which means we\u0027re\nwasting a lot of space.\n\nConvert the xfs_getparents_rec structure to use a flex array to store\nthe dirent name as a null terminated string, which allows us to pack the\ninformation much more densely.  For this to work, augment the\nxfs_getparents struct to end with a flex array of buffer offsets to each\nxfs_getparents_rec object, much as we do for the attrlist multi ioctl.\nRecord objects are allocated from the end of the buffer towards the\nhead.\n\nFinally, reduce the amount of data that we copy to userspace to the head\narray containg the offsets, and however much of the buffer\u0027s end is used\nfor the parent records.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ec6fdf78fde70d9faa83a6206d3f4ad96a668a6a",
      "old_mode": 33188,
      "old_path": "fs/xfs/libxfs/xfs_fs.h",
      "new_id": "c8be149398a6495b0d95b7d7bb50cb46d2486f88",
      "new_mode": 33188,
      "new_path": "fs/xfs/libxfs/xfs_fs.h"
    },
    {
      "type": "modify",
      "old_id": "b3154830ef915122d8633cfdc8a75dd7064edf53",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_ioctl.c",
      "new_id": "14138ce5100ab1c8cd17a845f6e6e3422eebdc04",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_ioctl.c"
    },
    {
      "type": "modify",
      "old_id": "38d8113b832dbb99f9b3bde66852ca37c45a5ddf",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_ondisk.h",
      "new_id": "b7f29b4acac3a7bb149db7588e74da1908954210",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_ondisk.h"
    },
    {
      "type": "modify",
      "old_id": "801223d011e70f50dffc27f1c3997557d2b76769",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_parent_utils.c",
      "new_id": "04e2e93a198642c20fe6e619ae27ad35f36cc97a",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_parent_utils.c"
    },
    {
      "type": "modify",
      "old_id": "01f127dae086850bc82053d7b8d98d170089f233",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_parent_utils.h",
      "new_id": "48de5b700f9cead184abafce491f598bfca8e795",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_parent_utils.h"
    },
    {
      "type": "modify",
      "old_id": "d31f47eced4cb09946f6c04b6d498259a79c5c4f",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_trace.h",
      "new_id": "f831ee910235ccb39ae41549e8aaac3991b9d287",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_trace.h"
    }
  ]
}
