)]}'
{
  "commit": "e4ebbb228aa8c56c064ce723b2f08bad708f2a40",
  "tree": "dcde6f2c37d1f8b9077d2f1f165801473aa85a22",
  "parents": [
    "4f41db2e04c13faa75bcc95cecc1abf2f07f31bf"
  ],
  "author": {
    "name": "OGAWA Hirofumi",
    "email": "hirofumi@mail.parknet.co.jp",
    "time": "Tue May 13 20:56:34 2014 +0900"
  },
  "committer": {
    "name": "Daniel Phillips",
    "email": "daniel@tux3.org",
    "time": "Tue May 13 20:56:34 2014 +0900"
  },
  "message": "tux3: Fix tux3_iattrdirty() usages\n\nNow, on some paths, mark_inode_dirty() is not called after\ntux3_iattrdirty() was called.\n\nE.g. If inode-\u003ei_ctime is same with current time, file_update_time()\nskips to dirty inode.\n\n\ttux3_iattrdirty()\n\tfile_update_time() {\n\t    if (!timespec_equal(\u0026inode-\u003ei_ctime, \u0026now))\n\t\tsync_it |\u003d S_CTIME;\n\t    if (sync_it)\n\t        mark_inode_dirty_sync()\n\t}\n\nThis is wrong as tux3_iattrdirty() usage. tux3_iattrdirty() was\ncalled, the caller must call mark_inode_dirty() too.\n\nOtherwise,\n\n\tdelta \u003d 1\n\ttux3_iattrdirty(inode)\n\t    iattr_delta \u003d delta\n\n        /* flush delta 1 */\n\tinode is not dirty, so iattr_delta \u003d\u003d 1 is remaining\n\n\t/* flush delta 2 for data pages */\n\tread_idata_for_i_size()\n\t    if (iattr_delta !\u003d delta)\n\t\t/*\n\t\t * iattr_delta is still 1, so read from idata[], but\n\t\t * idata[] is invalid.\n\t\t */\n\nBy remaining iattr_delta, future inode flush is confused, and hits to\nassertion.\n\nTo fix this, this makes sure to call tux3_iattrdirty() only when we call\nmark_inode_dirty().\n\n[FIXME: file_update_time() of mmap and write can race.]\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "acc815c27d6b691093a863161862f312643f6314",
      "old_mode": 33188,
      "old_path": "fs/tux3/user/inode.c",
      "new_id": "56df92d152ad0edfc630ae14017e9841ccf20cb4",
      "new_mode": 33188,
      "new_path": "fs/tux3/user/inode.c"
    },
    {
      "type": "modify",
      "old_id": "8c17fbe8f9537cf479ed76925cfdc9e5f91b34c2",
      "old_mode": 33188,
      "old_path": "fs/tux3/user/tux3fuse.c",
      "new_id": "121d8155021af2688e1dca2d919f23f4eb519816",
      "new_mode": 33188,
      "new_path": "fs/tux3/user/tux3fuse.c"
    }
  ]
}
