)]}'
{
  "commit": "111ebb6e6f7bd7de6d722c5848e95621f43700d9",
  "tree": "bb00b13001db9be201e9b6d31468a79f4d1240bf",
  "parents": [
    "4c91c3648c620003cb7b21b8858f36cd6132e168"
  ],
  "author": {
    "name": "OGAWA Hirofumi",
    "email": "hirofumi@mail.parknet.co.jp",
    "time": "Fri Jun 23 02:03:26 2006 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Fri Jun 23 07:42:49 2006 -0700"
  },
  "message": "[PATCH] writeback: fix range handling\n\nWhen a writeback_control\u0027s `start\u0027 and `end\u0027 fields are used to\nindicate a one-byte-range starting at file offset zero, the required\nvalues of .start\u003d0,.end\u003d0 mean that the -\u003ewritepages() implementation\nhas no way of telling that it is being asked to perform a range\nrequest.  Because we\u0027re currently overloading (start \u003d\u003d 0 \u0026\u0026 end \u003d\u003d 0)\nto mean \"this is not a write-a-range request\".\n\nTo make all this sane, the patch changes range of writeback_control.\n\nSo caller does: If it is calling -\u003ewritepages() to write pages, it\nsets range (range_start/end or range_cyclic) always.\n\nAnd if range_cyclic is true, -\u003ewritepages() thinks the range is\ncyclic, otherwise it just uses range_start and range_end.\n\nThis patch does,\n\n    - Add LLONG_MAX, LLONG_MIN, ULLONG_MAX to include/linux/kernel.h\n      -1 is usually ok for range_end (type is long long). But, if someone did,\n\n\t\trange_end +\u003d val;\t\trange_end is \"val - 1\"\n\t\tu64val \u003d range_end \u003e\u003e bits;\tu64val is \"~(0ULL)\"\n\n      or something, they are wrong. So, this adds LLONG_MAX to avoid nasty\n      things, and uses LLONG_MAX for range_end.\n\n    - All callers of -\u003ewritepages() sets range_start/end or range_cyclic.\n\n    - Fix updates of -\u003ewriteback_index. It seems already bit strange.\n      If it starts at 0 and ended by check of nr_to_write, this last\n      index may reduce chance to scan end of file.  So, this updates\n      -\u003ewriteback_index only if range_cyclic is true or whole-file is\n      scanned.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: \"Vladimir V. Saveliev\" \u003cvs@namesys.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e2b4ce1dad6680cc54d8af516e7cf876533361fd",
      "old_mode": 33188,
      "old_path": "fs/cifs/file.c",
      "new_id": "487ea8b3baaa4f512db3b802b7329e79a7f94d00",
      "new_mode": 33188,
      "new_path": "fs/cifs/file.c"
    },
    {
      "type": "modify",
      "old_id": "f3fbe2d030f4def8fae388ef49bc617bf251e913",
      "old_mode": 33188,
      "old_path": "fs/fs-writeback.c",
      "new_id": "6db95cf3aaa22dfd8abdfaae7a92313cf10520df",
      "new_mode": 33188,
      "new_path": "fs/fs-writeback.c"
    },
    {
      "type": "modify",
      "old_id": "9bf2eb30e6f4e575c4e31874fad1bf2c48c66519",
      "old_mode": 33188,
      "old_path": "fs/mpage.c",
      "new_id": "1e4598247d0b962f02eca7f390bf6683c9df3e4e",
      "new_mode": 33188,
      "new_path": "fs/mpage.c"
    },
    {
      "type": "modify",
      "old_id": "aab5ffe77e9fd67e3ac9173a4cb9488fd393f074",
      "old_mode": 33188,
      "old_path": "fs/sync.c",
      "new_id": "955aef04da289fecb80f51981ae98f538e6bcdc2",
      "new_mode": 33188,
      "new_path": "fs/sync.c"
    },
    {
      "type": "modify",
      "old_id": "f4fc576ed4c40c6d28dd940a869801a138a0a5e6",
      "old_mode": 33188,
      "old_path": "include/linux/kernel.h",
      "new_id": "25fccd859fbf311d1026aa6ff3a1e5c171cd85fd",
      "new_mode": 33188,
      "new_path": "include/linux/kernel.h"
    },
    {
      "type": "modify",
      "old_id": "56f92fcbe94aa9a82508b5db1a878c43cd348699",
      "old_mode": 33188,
      "old_path": "include/linux/writeback.h",
      "new_id": "9e38b566d0e77325d50fb9bfd52b28898c753349",
      "new_mode": 33188,
      "new_path": "include/linux/writeback.h"
    },
    {
      "type": "modify",
      "old_id": "fd57442186cbec1b55654639415af850ba352a2f",
      "old_mode": 33188,
      "old_path": "mm/filemap.c",
      "new_id": "3342067ca436e33a8399664a35c7265986272427",
      "new_mode": 33188,
      "new_path": "mm/filemap.c"
    },
    {
      "type": "modify",
      "old_id": "75d7f48b79bba537d522cbd709138d48196d6782",
      "old_mode": 33188,
      "old_path": "mm/page-writeback.c",
      "new_id": "8ccf6f1b1473c1e26e0da73e5f8f95c4b041def9",
      "new_mode": 33188,
      "new_path": "mm/page-writeback.c"
    },
    {
      "type": "modify",
      "old_id": "46be8a02280e70f1526e518a820340977a3afc69",
      "old_mode": 33188,
      "old_path": "mm/vmscan.c",
      "new_id": "bc5d4f43036cc100d566b0628d89b8433104224f",
      "new_mode": 33188,
      "new_path": "mm/vmscan.c"
    }
  ]
}
