)]}'
{
  "commit": "a6e50b409d3f9e0833e69c3c9cca822e8fa4adbb",
  "tree": "82ca807c21156437270e6a1ed255b18ccf8b3672",
  "parents": [
    "d5b9dd04bd74b774b8e8d93ced7a0d15ad403fa9"
  ],
  "author": {
    "name": "Mikulas Patocka",
    "email": "mpatocka@redhat.com",
    "time": "Tue Aug 02 12:32:04 2011 +0100"
  },
  "committer": {
    "name": "Alasdair G Kergon",
    "email": "agk@redhat.com",
    "time": "Tue Aug 02 12:32:04 2011 +0100"
  },
  "message": "dm snapshot: skip reading origin when overwriting complete chunk\n\nIf we write a full chunk in the snapshot, skip reading the origin device\nbecause the whole chunk will be overwritten anyway.\n\nThis patch changes the snapshot write logic when a full chunk is written.\nIn this case:\n  1. allocate the exception\n  2. dispatch the bio (but don\u0027t report the bio completion to device mapper)\n  3. write the exception record\n  4. report bio completed\n\nCallbacks must be done through the kcopyd thread, because callbacks must not\nrace with each other.  So we create two new functions:\n\n  dm_kcopyd_prepare_callback: allocate a job structure and prepare the callback.\n  (This function must not be called from interrupt context.)\n\n  dm_kcopyd_do_callback: submit callback.\n  (This function may be called from interrupt context.)\n\nPerformance test (on snapshots with 4k chunk size):\n  without the patch:\n    non-direct-io sequential write (dd):    17.7MB/s\n    direct-io sequential write (dd):        20.9MB/s\n    non-direct-io random write (mkfs.ext2): 0.44s\n\n  with the patch:\n    non-direct-io sequential write (dd):    26.5MB/s\n    direct-io sequential write (dd):        33.2MB/s\n    non-direct-io random write (mkfs.ext2): 0.27s\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "98725e11932453fff0859b0cc7777a1fb61c67ca",
      "old_mode": 33188,
      "old_path": "drivers/md/dm-kcopyd.c",
      "new_id": "f82147029636d87b30e990daa230dfb17ca69c50",
      "new_mode": 33188,
      "new_path": "drivers/md/dm-kcopyd.c"
    },
    {
      "type": "modify",
      "old_id": "94dee05dd28e4ee76fe64bc9665c4a2d630ae414",
      "old_mode": 33188,
      "old_path": "drivers/md/dm-snap.c",
      "new_id": "6f758870fc19cf0e66db3055dab36ab96e038fee",
      "new_mode": 33188,
      "new_path": "drivers/md/dm-snap.c"
    },
    {
      "type": "modify",
      "old_id": "298d587e349b17169ad1a295645f66e307f42ff4",
      "old_mode": 33188,
      "old_path": "include/linux/dm-kcopyd.h",
      "new_id": "5e54458e920f36466a29d83ccbe913a03f347a01",
      "new_mode": 33188,
      "new_path": "include/linux/dm-kcopyd.h"
    }
  ]
}
