)]}'
{
  "commit": "ac8c23a0b219ec6f0c2caf8f2e91438feeb4c12c",
  "tree": "0cfe79e6cd5bd968c04ec176383c1fd0efc86757",
  "parents": [
    "61582abdf803aaa6584b483383308296e53cc7f1"
  ],
  "author": {
    "name": "Valentin Bartenev",
    "email": "vbart@nginx.com",
    "time": "Wed Feb 11 17:52:15 2015 +0300"
  },
  "committer": {
    "name": "Valentin Bartenev",
    "email": "vbart@nginx.com",
    "time": "Wed Feb 11 17:52:15 2015 +0300"
  },
  "message": "Refactored sendfile() AIO preload.\n\nThis reduces layering violation and simplifies the logic of AIO preread, since\nit\u0027s now triggered by the send chain function itself without falling back to\nthe copy filter.  The context of AIO operation is now stored per file buffer,\nwhich makes it possible to properly handle cases when multiple buffers come\nfrom different locations, each with its own configuration.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "13536a69a4c6e3ea9cba5d3b001aa6f8d8f93e49",
      "old_mode": 33188,
      "old_path": "src/core/ngx_buf.h",
      "new_id": "219894ffc5fca87104023312b34decb34b40d737",
      "new_mode": 33188,
      "new_path": "src/core/ngx_buf.h"
    },
    {
      "type": "modify",
      "old_id": "ed14e6023e7ac5d822ea03340d60c30798558e76",
      "old_mode": 33188,
      "old_path": "src/core/ngx_connection.h",
      "new_id": "143cab7b31f18b22731691e26aafc5cc33484740",
      "new_mode": 33188,
      "new_path": "src/core/ngx_connection.h"
    },
    {
      "type": "modify",
      "old_id": "9d7a8460f9be973ab41d99f9fa17b7a03e4d66eb",
      "old_mode": 33188,
      "old_path": "src/core/ngx_output_chain.c",
      "new_id": "ca390e254d9b0d6e218306a76b2d9bdc7015592e",
      "new_mode": 33188,
      "new_path": "src/core/ngx_output_chain.c"
    },
    {
      "type": "modify",
      "old_id": "a1643a1343de8e2d4ad2b21df592e36d89f2f53e",
      "old_mode": 33188,
      "old_path": "src/event/ngx_event.h",
      "new_id": "555cda0f472f77afd5736f796f2458cfa4f18cce",
      "new_mode": 33188,
      "new_path": "src/event/ngx_event.h"
    },
    {
      "type": "modify",
      "old_id": "3ad27b0425b30fb32b2b088febbe57a66ff4bd84",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_copy_filter_module.c",
      "new_id": "cdd7fceb619ed7241196f1ae8cab92c8bb467297",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_copy_filter_module.c"
    },
    {
      "type": "modify",
      "old_id": "cffab9a694dcd6bd264c42ad0baa50fa0e45b690",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_request.h",
      "new_id": "9be0c6e71283d22dbd4f05a1936238f73046ad69",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_request.h"
    },
    {
      "type": "modify",
      "old_id": "0bb383de5515f96a0b57324c1913599405ccc6bf",
      "old_mode": 33188,
      "old_path": "src/os/unix/ngx_file_aio_read.c",
      "new_id": "b11cf8a3d841eefabbe1e861bc781ac0f083d72e",
      "new_mode": 33188,
      "new_path": "src/os/unix/ngx_file_aio_read.c"
    },
    {
      "type": "modify",
      "old_id": "a78ec961365621b6090bf7d130cc2f322809141a",
      "old_mode": 33188,
      "old_path": "src/os/unix/ngx_files.h",
      "new_id": "a046ee75635557fd5d06b91679bc2cf8d018bdd1",
      "new_mode": 33188,
      "new_path": "src/os/unix/ngx_files.h"
    },
    {
      "type": "modify",
      "old_id": "7199c8654a4c4257cf15712cb2c83898e2af64ee",
      "old_mode": 33188,
      "old_path": "src/os/unix/ngx_freebsd_sendfile_chain.c",
      "new_id": "25790b6b62bb09ba59bfa23d318e6f0f6915c5e9",
      "new_mode": 33188,
      "new_path": "src/os/unix/ngx_freebsd_sendfile_chain.c"
    },
    {
      "type": "modify",
      "old_id": "8273c13f960645539d938cd16ee4e11c173eba10",
      "old_mode": 33188,
      "old_path": "src/os/unix/ngx_linux_aio_read.c",
      "new_id": "b0a9236042166bb60dce4d7bf29caf26577a3dcb",
      "new_mode": 33188,
      "new_path": "src/os/unix/ngx_linux_aio_read.c"
    }
  ]
}
