)]}'
{
  "commit": "f18573abcc57844a7c3c12699d40eead8728cd8a",
  "tree": "99d5dcfdfe29578bb23900e63f226022f5e87281",
  "parents": [
    "afdc1a780ef84a54b613dae6f971407748aab61c"
  ],
  "author": {
    "name": "FUJITA Tomonori",
    "email": "fujita.tomonori@lab.ntt.co.jp",
    "time": "Fri Apr 11 12:56:52 2008 +0200"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "jens.axboe@oracle.com",
    "time": "Mon Apr 21 09:50:08 2008 +0200"
  },
  "message": "block: move the padding adjustment to blk_rq_map_sg\n\nblk_rq_map_user adjusts bi_size of the last bio. It breaks the rule\nthat req-\u003edata_len (the true data length) is equal to sum(bio). It\nbroke the scsi command completion code.\n\ncommit e97a294ef6938512b655b1abf17656cf2b26f709 was introduced to fix\nthe above issue. However, the partial completion code doesn\u0027t work\nwith it. The commit is also a layer violation (scsi mid-layer should\nnot know about the block layer\u0027s padding).\n\nThis patch moves the padding adjustment to blk_rq_map_sg (suggested by\nJames). The padding works like the drain buffer. This patch breaks the\nrule that req-\u003edata_len is equal to sum(sg), however, the drain buffer\nalready broke it. So this patch just restores the rule that\nreq-\u003edata_len is equal to sub(bio) without breaking anything new.\n\nNow when a low level driver needs padding, blk_rq_map_user and\nblk_rq_map_user_iov guarantee there\u0027s enough room for padding.\nblk_rq_map_sg can safely extend the last entry of a scatter list.\n\nblk_rq_map_sg must extend the last entry of a scatter list only for a\nrequest that got through bio_copy_user_iov. This patches introduces\nnew REQ_COPY_USER flag.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ab43533ba641be51a8ed02129054d4d8530d684f",
      "old_mode": 33188,
      "old_path": "block/blk-map.c",
      "new_id": "3c942bd6422a2ba639597ace2ad9f3768ccf1456",
      "new_mode": 33188,
      "new_path": "block/blk-map.c"
    },
    {
      "type": "modify",
      "old_id": "0f58616bcd7f183514c43eb913f0e0c23c855215",
      "old_mode": 33188,
      "old_path": "block/blk-merge.c",
      "new_id": "b5c5c4a9e3f08d051a25d44e92689580d19cbce5",
      "new_mode": 33188,
      "new_path": "block/blk-merge.c"
    },
    {
      "type": "modify",
      "old_id": "f6980bd9d8f9a9a8b75a57de89cd9c8e26cc214c",
      "old_mode": 33188,
      "old_path": "drivers/scsi/scsi.c",
      "new_id": "12d69d7c85775475ce89de8fc6a6381ba4453809",
      "new_mode": 33188,
      "new_path": "drivers/scsi/scsi.c"
    },
    {
      "type": "modify",
      "old_id": "6f79d40dd3c01f25c105b9bdae4f5e70a7c88e1e",
      "old_mode": 33188,
      "old_path": "include/linux/blkdev.h",
      "new_id": "b3a58adc435282ed0a3ad55f0cb2cf96ade5428d",
      "new_mode": 33188,
      "new_path": "include/linux/blkdev.h"
    }
  ]
}
