)]}'
{
  "commit": "080dcec41709be72613133f695be75b98dd43e88",
  "tree": "8f453a9fe9b2a144662aad4e06944722610a1056",
  "parents": [
    "297252c81de8043ca6c36e5984c24fdb5aab9013"
  ],
  "author": {
    "name": "Artem Bityutskiy",
    "email": "Artem.Bityutskiy@nokia.com",
    "time": "Sun Jul 25 14:29:16 2010 +0300"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "jaxboe@fusionio.com",
    "time": "Sat Aug 07 18:53:56 2010 +0200"
  },
  "message": "writeback: simplify bdi code a little\n\nThis patch simplifies bdi code a little by removing the \u0027pending_list\u0027 which is\nredundant. Indeed, currently the forker thread (\u0027bdi_forker_thread()\u0027) is\nworking like this:\n\n1. In a loop, fetch all bdi\u0027s which have works but have no writeback thread and\n   move them to the \u0027pending_list\u0027.\n2. If the list is empty, sleep for 5 sec.\n3. Otherwise, take one bdi from the list, fork the writeback thread for this\n   bdi, and repeat the loop.\n\nIOW, it first moves everything to the \u0027pending_list\u0027, then process only one\nelement, and so on. This patch simplifies the algorithm, which is now as\nfollows.\n\n1. Find the first bdi which has a work and remove it from the global list of\n   bdi\u0027s (bdi_list).\n2. If there was not such bdi, sleep 5 sec.\n3. Fork the writeback thread for this bdi and repeat the loop.\n\nIOW, now we find the first bdi to process, process it, and so on. This is\nsimpler and involves less lists.\n\nThe bonus now is that we can get rid of a couple of functions, as well as\nremove complications which involve \u0027rcu_call()\u0027 and \u0027bdi-\u003ercu_head\u0027.\n\nThis patch also makes sure we use \u0027list_add_tail_rcu()\u0027, instead of plain\n\u0027list_add_tail()\u0027, but this piece of code is going to be removed in the next\npatch anyway.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f0936f5f85dd8e0d391877316995a6fd07229109",
      "old_mode": 33188,
      "old_path": "include/linux/backing-dev.h",
      "new_id": "95ecb2bebca88f6a4d9a4d840b2830cddc19493d",
      "new_mode": 33188,
      "new_path": "include/linux/backing-dev.h"
    },
    {
      "type": "modify",
      "old_id": "72e6eb96efe21f572a9caac092722512bde2b9df",
      "old_mode": 33188,
      "old_path": "mm/backing-dev.c",
      "new_id": "dbc66815a0fe00a591695a211adb8d280ad79979",
      "new_mode": 33188,
      "new_path": "mm/backing-dev.c"
    }
  ]
}
