)]}'
{
  "commit": "be4f1ac828776bbc7868a68b465cd8eedb733cfd",
  "tree": "e1200a933beeb93702ce0c571a4ca3304f3cab72",
  "parents": [
    "0b8fd3033c308e4088760aa1d38ce77197b4e074"
  ],
  "author": {
    "name": "Christoph Hellwig",
    "email": "hch@infradead.org",
    "time": "Tue Dec 20 20:08:41 2011 +0000"
  },
  "committer": {
    "name": "Ben Myers",
    "email": "bpm@sgi.com",
    "time": "Fri Dec 23 16:41:47 2011 -0600"
  },
  "message": "xfs: log all dirty inodes in xfs_fs_sync_fs\n\nSince Linux 2.6.36 the writeback code has introduces various measures for\nlive lock prevention during sync().  Unfortunately some of these are\nactively harmful for the XFS model, where the inode gets marked dirty for\nmetadata from the data I/O handler.\n\nThe older_than_this checks that are now more strictly enforced since\n\n    writeback: avoid livelocking WB_SYNC_ALL writeback\n\nby only calling into __writeback_inodes_sb and thus only sampling the\ncurrent cut off time once.  But on a slow enough devices the previous\nasynchronous sync pass might not have fully completed yet, and thus XFS\nmight mark metadata dirty only after that sampling of the cut off time for\nthe blocking pass already happened.  I have not myself reproduced this\nmyself on a real system, but by introducing artificial delay into the\nXFS I/O completion workqueues it can be reproduced easily.\n\nFix this by iterating over all XFS inodes in -\u003esync_fs and log all that\nare dirty.  This might log inode that only got redirtied after the\nprevious pass, but given how cheap delayed logging of inodes is it\nisn\u0027t a major concern for performance.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nTested-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1add17ca33504eb2dd67b3e967331893f51352cc",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_super.c",
      "new_id": "8a899496fd5fe55ef50f4cfdcfcce20e7875a60c",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_super.c"
    },
    {
      "type": "modify",
      "old_id": "be5c51d8f7572d715fc51f0c86563b46aba380c8",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_sync.c",
      "new_id": "f0994aedcd158c2db3d6f9b2bf4d21a4f819bec6",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_sync.c"
    },
    {
      "type": "modify",
      "old_id": "941202e7ac6e594e2c423c19bc89248397e39516",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_sync.h",
      "new_id": "fa965479d788d29da66b0e85bd59123c1fe08c65",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_sync.h"
    }
  ]
}
