)]}'
{
  "commit": "312012668712cf46ecf6b2a445855c2440ae5148",
  "tree": "5fba10a3842a3a1af2104b9e56c073f921195008",
  "parents": [
    "b1ab412372e9abf5bd274fae2a07b681cfa478e2"
  ],
  "author": {
    "name": "Andreas Gruenbacher",
    "email": "agruenba@redhat.com",
    "time": "Tue Feb 22 18:42:30 2022 +0100"
  },
  "committer": {
    "name": "Andreas Gruenbacher",
    "email": "agruenba@redhat.com",
    "time": "Mon Mar 21 14:33:09 2022 +0100"
  },
  "message": "gfs2: Add read/write page \u0027fault_stats\u0027\n\nSince merge c03098d4b9ad7, gfs2 has page faults disabled when reading\nfrom and writing to user-space buffers.  When parts of those buffers are\nnot resident, we allow the inode glock to be stolen while faulting those\nbuffers in.  This is necessary for deadlock avoidance.  This can lead to\nthe following change in behavior:\n\n* A small amount of performance degradation when memory is highly\n  fragmented.\n\n* Lock contention will now more commonly lead to short buffered\n  reads and writes, which must be handled in user space.\n\n* During direct I/O reads and writes, again on lock contention,\n  the inode glock may be dropped and re-acquired.  Direct I/O\n  was never guaranteed to be atomic with respect to other read /\n  write operations, but the above merge allows for even more\n  non-atomicity.\n\nTo allow diagnosing problems with those changes more easily, add a\n\u0027fault_stats\u0027 debugfs file with the following statistics:\n\n    read 0 0 0 0\n    write 0 0 0 0\n\nIn each line, the first pair of numbers refers to buffered I/O while the\nsecond pair refers to direct I/O.  In each pair, the first number is the\nnumber of times pages were faulted in.  The second number in each line\nis the number of short operations (i.e., the inode glock was lost before\nthe entire operation could be completed).  The fourth number in each\nline is the number of \"split\" operations (i.e., the inode glock wasn\u0027t\nheld over the duration of the entire operation).\n\nSigned-off-by: Andreas Gruenbacher \u003cagruenba@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "19a038bc33bc28ec493843a2fd2e6bfa131ffc24",
      "old_mode": 33188,
      "old_path": "fs/gfs2/file.c",
      "new_id": "a021ea93b8703bc14be4a504557e18ba4d1e5798",
      "new_mode": 33188,
      "new_path": "fs/gfs2/file.c"
    },
    {
      "type": "modify",
      "old_id": "630c6550eacfef96f273ead0e3d993eff63bc825",
      "old_mode": 33188,
      "old_path": "fs/gfs2/glock.c",
      "new_id": "d7642c2222c2f9ee2e5d518a97a9620794f43a24",
      "new_mode": 33188,
      "new_path": "fs/gfs2/glock.c"
    },
    {
      "type": "modify",
      "old_id": "8c00fb389ae5e1daf8cce844f5c1bfe3f8bb60ce",
      "old_mode": 33188,
      "old_path": "fs/gfs2/incore.h",
      "new_id": "27ebe16560c999eda7e86414d847b55737b60789",
      "new_mode": 33188,
      "new_path": "fs/gfs2/incore.h"
    },
    {
      "type": "modify",
      "old_id": "7f8410d8fdc1d7e7a7ecefe604cebf12da32bde8",
      "old_mode": 33188,
      "old_path": "fs/gfs2/ops_fstype.c",
      "new_id": "ec7f038713cd4719b4aaf349e5344befa4e0eb81",
      "new_mode": 33188,
      "new_path": "fs/gfs2/ops_fstype.c"
    }
  ]
}
