)]}'
{
  "commit": "ecdc63948763586e101108dfe1ba316ec069fe39",
  "tree": "a127e8fef9ce30007a357cff51f092ab500f8e7f",
  "parents": [
    "c37336b078ba9d2ff38c535b194996a7ad6e69f8"
  ],
  "author": {
    "name": "Evgeniy Dushistov",
    "email": "dushistov@mail.ru",
    "time": "Sun Aug 27 01:23:46 2006 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sun Aug 27 11:01:31 2006 -0700"
  },
  "message": "[PATCH] ufs: truncate correction\n\n1) When we allocated last fragment in ufs_truncate, we read page, check\n   if block mapped to address, and if not trying to allocate it.  This is\n   wrong behaviour, fragment may be NOT allocated, but mapped, this\n   happened because of \"block map\" function not checked allocated fragment\n   or not, it just take address of the first fragment in the block, add\n   offset of fragment and return result, this is correct behaviour in\n   almost all situation except call from ufs_truncate.\n\n2) Almost all implementation of UFS, which I can investigate have such\n   \"defect\": if you have full disk, and try truncate file, for example 3GB\n   to 2MB, and have hole in this region, truncate return -ENOSPC.  I tried\n   evade from this problem, but \"block allocation\" algorithm is tied to\n   right value of i_lastfrag, and fix of this corner case may slow down of\n   ordinaries scenarios, so this patch makes behavior of \"truncate\"\n   operations similar to what other UFS implementations do.\n\nSigned-off-by: Evgeniy Dushistov \u003cdushistov@mail.ru\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": "c9b55872079b5a328264021c992ea71a408585db",
      "old_mode": 33188,
      "old_path": "fs/ufs/truncate.c",
      "new_id": "ea11d04c41a07f07d6ed2151561b5dfc2b22cdd8",
      "new_mode": 33188,
      "new_path": "fs/ufs/truncate.c"
    }
  ]
}
