)]}'
{
  "commit": "014b164e1392a166fe96e003d2f0e7ad2e2a0bb7",
  "tree": "fec4eb1a16160e3b16faa567e0fa8bcb2cb21607",
  "parents": [
    "cf9d1e428cc28ef5798aeda0822a6ce64849a439"
  ],
  "author": {
    "name": "David Woodhouse",
    "email": "dwmw2@infradead.org",
    "time": "Tue Apr 22 23:54:38 2008 +0100"
  },
  "committer": {
    "name": "David Woodhouse",
    "email": "dwmw2@infradead.org",
    "time": "Tue Apr 22 23:54:38 2008 +0100"
  },
  "message": "[JFFS2] Fix free space leak with in-band cleanmarkers\n\nWe were accounting for the cleanmarker by calling jffs2_link_node_ref()\n(without locking!), which adjusted both superblock and per-eraseblock\naccounting, subtracting the size of the cleanmarker from {jeb,c}-\u003efree_size\nand adding it to {jeb,c}-\u003eused_size.\n\nBut only _then_ were we adding the size of the newly-erased block back\nto the superblock counts, and we were adding each of jeb-\u003e{free,used}_size\nto the corresponding superblock counts. Thus, the size of the cleanmarker\nwas effectively subtracted from the superblock\u0027s free_size _twice_.\n\nFix this, by always adding a full eraseblock size to c-\u003efree_size when\nwe\u0027ve erased a block. And call jffs2_link_node_ref() under the proper\nlock, while we\u0027re at it.\n\nThanks to Alexander Yurchenko and/or Damir Shayhutdinov for (almost)\npinpointing the problem.\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "96d9ad56e57303662f5165f02d97b00b9d7c8960",
      "old_mode": 33188,
      "old_path": "fs/jffs2/erase.c",
      "new_id": "bdc6a7bec802ad1b8f387bd8b47270c0f32d600e",
      "new_mode": 33188,
      "new_path": "fs/jffs2/erase.c"
    }
  ]
}
