)]}'
{
  "commit": "cf634d540a29018e8d69ab1befb7e08182bc6594",
  "tree": "0639c640ff8089a405323e96f33ae9cc7d21e4c3",
  "parents": [
    "40a3cb0d2314a41975aa385a74643878454f6eac"
  ],
  "author": {
    "name": "Sebastian Andrzej Siewior",
    "email": "bigeasy@linutronix.de",
    "time": "Wed Jul 27 13:49:02 2022 +0200"
  },
  "committer": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Sat Jul 30 00:35:51 2022 -0400"
  },
  "message": "fs/dcache: Disable preemption on i_dir_seq write side on PREEMPT_RT\n\ni_dir_seq is a sequence counter with a lock which is represented by the\nlowest bit. The writer atomically updates the counter which ensures that it\ncan be modified by only one writer at a time. This requires preemption to\nbe disabled across the write side critical section.\n\nOn !PREEMPT_RT kernels this is implicit by the caller acquiring\ndentry::lock. On PREEMPT_RT kernels spin_lock() does not disable preemption\nwhich means that a preempting writer or reader would live lock. It\u0027s\ntherefore required to disable preemption explicitly.\n\nAn alternative solution would be to replace i_dir_seq with a seqlock_t for\nPREEMPT_RT, but that comes with its own set of problems due to arbitrary\nlock nesting. A pure sequence count with an associated spinlock is not\npossible because the locks held by the caller are not necessarily related.\n\nAs the critical section is small, disabling preemption is a sensible\nsolution.\n\nReported-by: Oleg.Karfich@wago.com\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nLink: https://lkml.kernel.org/r/20220613140712.77932-2-bigeasy@linutronix.de\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "94b737311b61dab8c51e6ab8b561a319a906da9e",
      "old_mode": 33188,
      "old_path": "fs/dcache.c",
      "new_id": "71969505e82e6e5e3c745c157c62446c22625d53",
      "new_mode": 33188,
      "new_path": "fs/dcache.c"
    }
  ]
}
