)]}'
{
  "commit": "561ec68e4de7947167937c49c451728e6b19e63b",
  "tree": "4391af5bc00e5a2039e703df43ec3e84a21b63d5",
  "parents": [
    "55e8e30c382d25c34f8aafcc78efec948571a941"
  ],
  "author": {
    "name": "Zhang, Yanmin",
    "email": "yanmin_zhang@linux.intel.com",
    "time": "Fri Nov 14 08:26:30 2008 +0100"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "jens.axboe@oracle.com",
    "time": "Tue Nov 18 15:08:56 2008 +0100"
  },
  "message": "block: fix boot failure with CONFIG_DEBUG_BLOCK_EXT_DEVT\u003dy and nash\n\nWe run into system boot failure with kernel 2.6.28-rc. We found it on a\ncouple of machines, including T61 notebook, nehalem machine, and another\nHPC NX6325 notebook.  All the machines use FedoraCore 8 or FedoraCore 9.\nWith kernel prior to 2.6.28-rc, system boot doesn\u0027t fail.\n\nI debug it and locate the root cause. Pls. see\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d11899\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d471517\n\nAs a matter of fact, there are 2 bugs.\n\n1)root\u003d/dev/sda1, system boot randomly fails. Mostly, boot for 5 times\nand fails once. nash has a bug. Some of its functions misuse return\nvalue 0.  Sometimes, 0 means timeout and no uevent available. Sometimes,\n0 means nash gets an uevent, but the uevent isn\u0027t block-related (for\nexmaple, usb). If by coincidence, kernel tells nash that uevents are\navailable, but kernel also set timeout, nash might stops collecting\nother uevents in queue if current uevent isn\u0027t block-related.  I work\nout a patch for nash to fix it.\nhttp://bugzilla.kernel.org/attachment.cgi?id\u003d18858\n\n2) root\u003dLABEL\u003d/, system always can\u0027t boot. initrd init reports\nswitchroot fails. Here is an executation branch of nash when booting:\n    (1) nash read /sys/block/sda/dev; Assume major is 8 (on my desktop)\n    (2) nash query /proc/devices with the major number; It found line\n\t\"8 sd\";\n    (3) nash use \u0027sd\u0027 to search its own probe table to find device (DISK)\n\ttype for the device and add it to its own list;\n    (4) Later on, it probes all devices in its list to get filesystem\n\tlabels; scsi register \"8 sd\" always.\n\nWhen major is 259, nash fails to find the device(DISK) type. I enables\nCONFIG_DEBUG_BLOCK_EXT_DEVT\u003dy when compiling kernel, so 259 is picked up\nfor device /dev/sda1, which causes nash to fail to find device (DISK)\ntype.\n\nTo fixing issue 2), I create a patch for nash and another patch for\nkernel.\n\nhttp://bugzilla.kernel.org/attachment.cgi?id\u003d18859\nhttp://bugzilla.kernel.org/attachment.cgi?id\u003d18837\n\nBelow is the patch for kernel 2.6.28-rc4. It registers blkext, a new\nblock device in proc/devices.\n\nWith 2 patches on nash and 1 patch on kernel, I boot my machines for\ndozens of times without failure.\n\nSigned-off-by Zhang Yanmin \u003cyanmin.zhang@linux.intel.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4e5e7493f6764e8f3a03b62e40bd40b724d15880",
      "old_mode": 33188,
      "old_path": "block/genhd.c",
      "new_id": "27549e470da54d858e3bccd99946e2db2a311fa6",
      "new_mode": 33188,
      "new_path": "block/genhd.c"
    }
  ]
}
