)]}'
{
  "commit": "8210bb29c1b66200cff7b25febcf6e39baf49fbf",
  "tree": "9f3f60f830d67c9fede42c5b29b051e9f075269a",
  "parents": [
    "2a4ae3bcdf05b8639406eaa09a2939f3c6dd8e75"
  ],
  "author": {
    "name": "Harshad Shirwadkar",
    "email": "harshadshirwadkar@gmail.com",
    "time": "Tue Mar 16 15:19:21 2021 -0700"
  },
  "committer": {
    "name": "Theodore Ts\u0027o",
    "email": "tytso@mit.edu",
    "time": "Sun Mar 21 00:38:18 2021 -0400"
  },
  "message": "ext4: fix rename whiteout with fast commit\n\nThis patch adds rename whiteout support in fast commits. Note that the\nwhiteout object that gets created is actually char device. Which\nimples, the function ext4_inode_journal_mode(struct inode *inode)\nwould return \"JOURNAL_DATA\" for this inode. This has a consequence in\nfast commit code that it will make creation of the whiteout object a\nfast-commit ineligible behavior and thus will fall back to full\ncommits. With this patch, this can be observed by running fast commits\nwith rename whiteout and seeing the stats generated by ext4_fc_stats\ntracepoint as follows:\n\next4_fc_stats: dev 254:32 fc ineligible reasons:\nXATTR:0, CROSS_RENAME:0, JOURNAL_FLAG_CHANGE:0, NO_MEM:0, SWAP_BOOT:0,\nRESIZE:0, RENAME_DIR:0, FALLOC_RANGE:0, INODE_JOURNAL_DATA:16;\nnum_commits:6, ineligible: 6, numblks: 3\n\nSo in short, this patch guarantees that in case of rename whiteout, we\nfall back to full commits.\n\nAmir mentioned that instead of creating a new whiteout object for\nevery rename, we can create a static whiteout object with irrelevant\nnlink. That will make fast commits to not fall back to full\ncommit. But until this happens, this patch will ensure correctness by\nfalling back to full commits.\n\nFixes: 8016e29f4362 (\"ext4: fast commit recovery path\")\nCc: stable@kernel.org\nSigned-off-by: Harshad Shirwadkar \u003charshadshirwadkar@gmail.com\u003e\nLink: https://lore.kernel.org/r/20210316221921.1124955-1-harshadshirwadkar@gmail.com\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ea3b41579f389e3c51623c049ebc8fb0669d7940",
      "old_mode": 33188,
      "old_path": "fs/ext4/ext4.h",
      "new_id": "826a56e3bbd285671bd4ca6a827e767bcad21c33",
      "new_mode": 33188,
      "new_path": "fs/ext4/ext4.h"
    },
    {
      "type": "modify",
      "old_id": "6c4f19b0a55630b52ba5041aadf2c189ff11b81e",
      "old_mode": 33188,
      "old_path": "fs/ext4/fast_commit.c",
      "new_id": "7541d0b5d7069a169600f5ba26e41de125bc6528",
      "new_mode": 33188,
      "new_path": "fs/ext4/fast_commit.c"
    },
    {
      "type": "modify",
      "old_id": "1fe8370dbf0b9a45bb64e0f1503cfb88617f2d2d",
      "old_mode": 33188,
      "old_path": "fs/ext4/namei.c",
      "new_id": "883e2a7cd4ab5e277c1bf22e5cd9b89473ff7170",
      "new_mode": 33188,
      "new_path": "fs/ext4/namei.c"
    }
  ]
}
