)]}'
{
  "log": [
    {
      "commit": "2150edc6c5cf00f7adb54538b9ea2a3e9cedca3f",
      "tree": "f72a0d85e66f500b4cead348a231e3d3b9f357bc",
      "parents": [
        "cd764695b67386a81964f68e9c66efd9f13f4d29",
        "4b905671d2ea09fd48fed72c581df17e40823f39"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (57 commits)\n  jbd2: Fix oops in jbd2_journal_init_inode() on corrupted fs\n  ext4: Remove \"extents\" mount option\n  block: Add Kconfig help which notes that ext4 needs CONFIG_LBD\n  ext4: Make printk\u0027s consistently prefixed with \"EXT4-fs: \"\n  ext4: Add sanity checks for the superblock before mounting the filesystem\n  ext4: Add mount option to set kjournald\u0027s I/O priority\n  jbd2: Submit writes to the journal using WRITE_SYNC\n  jbd2: Add pid and journal device name to the \"kjournald2 starting\" message\n  ext4: Add markers for better debuggability\n  ext4: Remove code to create the journal inode\n  ext4: provide function to release metadata pages under memory pressure\n  ext3: provide function to release metadata pages under memory pressure\n  add releasepage hooks to block devices which can be used by file systems\n  ext4: Fix s_dirty_blocks_counter if block allocation failed with nodelalloc\n  ext4: Init the complete page while building buddy cache\n  ext4: Don\u0027t allow new groups to be added during block allocation\n  ext4: mark the blocks/inode bitmap beyond end of group as used\n  ext4: Use new buffer_head flag to check uninit group bitmaps initialization\n  ext4: Fix the race between read_inode_bitmap() and ext4_new_inode()\n  ext4: code cleanup\n  ...\n"
    },
    {
      "commit": "cd764695b67386a81964f68e9c66efd9f13f4d29",
      "tree": "504e961ab6bad164c41f4b9c1ff00c0ce7f645ee",
      "parents": [
        "97d61b8e3aef163a75f80f4762794c154572293d",
        "ffda8c7dc492e2170bb263f7c56f286992ceb54b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 16:27:31 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 16:27:31 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (45 commits)\n  [SCSI] qla2xxx: Update version number to 8.03.00-k1.\n  [SCSI] qla2xxx: Add ISP81XX support.\n  [SCSI] qla2xxx: Use proper request/response queues with MQ instantiations.\n  [SCSI] qla2xxx: Correct MQ-chain information retrieval during a firmware dump.\n  [SCSI] qla2xxx: Collapse EFT/FCE copy procedures during a firmware dump.\n  [SCSI] qla2xxx: Don\u0027t pollute kernel logs with ZIO/RIO status messages.\n  [SCSI] qla2xxx: Don\u0027t fallback to interrupt-polling during re-initialization with MSI-X enabled.\n  [SCSI] qla2xxx: Remove support for reading/writing HW-event-log.\n  [SCSI] cxgb3i: add missing include\n  [SCSI] scsi_lib: fix DID_RESET status problems\n  [SCSI] fc transport: restore missing dev_loss_tmo callback to LLDD\n  [SCSI] aha152x_cs: Fix regression that keeps driver from using shared interrupts\n  [SCSI] sd: Correctly handle 6-byte commands with DIX\n  [SCSI] sd: DIF: Fix tagging on platforms with signed char\n  [SCSI] sd: DIF: Show app tag on error\n  [SCSI] Fix error handling for DIF/DIX\n  [SCSI] scsi_lib: don\u0027t decrement busy counters when inserting commands\n  [SCSI] libsas: fix test for negative unsigned and typos\n  [SCSI] a2091, gvp11: kill warn_unused_result warnings\n  [SCSI] fusion: Move a dereference below a NULL test\n  ...\n\nFixed up trivial conflict due to moving the async part of sd_probe\naround in the async probes vs using dev_set_name() in naming.\n"
    },
    {
      "commit": "022992ee59e90fef719493c09988884be157fb73",
      "tree": "f532c33454d9fc3a7fb2cf488b25f69a93d00bc6",
      "parents": [
        "5fbbf5f648a9c4ef99276854f05b2255d1b004d3",
        "0ba4887c6329043d6cee5b5b477cfe50c2b57674"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 14:51:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 14:51:11 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6:\n  regulator: fix kernel-doc warnings\n  regulator: catch some registration errors\n  regulator: Add basic DocBook manual\n  regulator: Fix some kerneldoc rendering issues\n  regulator: Add missing kerneldoc\n  regulator: Clean up kerneldoc warnings\n  regulator: Remove extraneous kerneldoc annotations\n  regulator: init/link earlier\n  regulator: move set_machine_constraints after regulator device initialization\n  regulator: da903x: make da903x_is_enabled return 0 or 1\n  regulator: da903x: add \u0027\\n\u0027 to error messages\n  regulator: sysfs attribute reduction (v2)\n  regulator: code shrink (v2)\n  regulator: improved mode error checks\n  regulator: enable/disable refcounting\n  regulator: struct device - replace bus_id with dev_name(), dev_set_name()\n"
    },
    {
      "commit": "5fbbf5f648a9c4ef99276854f05b2255d1b004d3",
      "tree": "59c9ae762c3df2800e894001b3de58c5f1972486",
      "parents": [
        "ce279e6ec91c49f2c5f59f7492e19d39edbf8bbd",
        "56cf391a9462a4897ea660a6af3662dda5ae8c84"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 14:25:41 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 14:25:41 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (84 commits)\n  wimax: fix kernel-doc for debufs_dentry member of struct wimax_dev\n  net: convert pegasus driver to net_device_ops\n  bnx2x: Prevent eeprom set when driver is down\n  net: switch kaweth driver to netdevops\n  pcnet32: round off carrier watch timer\n  i2400m/usb: wrap USB power saving in #ifdef CONFIG_PM\n  wimax: testing for rfkill support should also test for CONFIG_RFKILL_MODULE\n  wimax: fix kconfig interactions with rfkill and input layers\n  wimax: fix \u0027#ifndef CONFIG_BUG\u0027 layout to avoid warning\n  r6040: bump release number to 0.20\n  r6040: warn about MAC address being unset\n  r6040: check PHY status when bringing interface up\n  r6040: make printks consistent with DRV_NAME\n  gianfar: Fixup use of BUS_ID_SIZE\n  mlx4_en: Returning real Max in get_ringparam\n  mlx4_en: Consider inline packets on completion\n  netdev: bfin_mac: enable bfin_mac net dev driver for BF51x\n  qeth: convert to net_device_ops\n  vlan: add neigh_setup\n  dm9601: warn on invalid mac address\n  ...\n"
    },
    {
      "commit": "894bcdfb1a40a7c5032242c380b956aab106e05d",
      "tree": "cb5d34da6a7f524bb3188be539422896f2427405",
      "parents": [
        "a419df8a0ff01b6694cebc8885778f854165d17d",
        "4044ba58dd15cb01797c4fd034f39ef4a75f7cc3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 14:03:34 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 14:03:34 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: don\u0027t retry recovery of raid1 that fails due to error on source drive.\n  md: Allow md devices to be created by name.\n  md: make devices disappear when they are no longer needed.\n  md: centralise all freeing of an \u0027mddev\u0027 in \u0027md_free\u0027\n  md: move allocation of -\u003equeue from mddev_find to md_probe\n  md: need another print_sb for mdp_superblock_1\n  md: use list_for_each_entry macro directly\n  md: raid0: make hash_spacing and preshift sector-based.\n  md: raid0: Represent the size of strip zones in sectors.\n  md: raid0 create_strip_zones(): Add KERN_INFO/KERN_ERR to printk\u0027s.\n  md: raid0 create_strip_zones(): Make two local variables sector-based.\n  md: raid0: Represent zone-\u003ezone_offset in sectors.\n  md: raid0: Represent device offset in sectors.\n  md: raid0_make_request(): Replace local variable block by sector.\n  md: raid0_make_request(): Remove local variable chunk_size.\n  md: raid0_make_request(): Replace chunksize_bits by chunksect_bits.\n  md: use sysfs_notify_dirent to notify changes to md/sync_action.\n  md: fix bitmap-on-external-file bug.\n"
    },
    {
      "commit": "871af1210f13966ab911ed2166e4ab2ce775b99d",
      "tree": "f17f0016f6e966d54a379a3de6e6bbde3b9359fe",
      "parents": [
        "e427fe042cf90c0652eed9a85e57a8fd8af89890"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Mon Jan 05 14:16:39 2009 +0000"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Jan 08 16:34:27 2009 -0500"
      },
      "message": "libata: Add 32bit PIO support\n\nThis matters for some controllers and in one or two cases almost doubles\nPIO performance. Add a bmdma32 operations set we can inherit and activate\nit for some controllers\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4044ba58dd15cb01797c4fd034f39ef4a75f7cc3",
      "tree": "e1bea8143538fc3eaeeb8578c2f9231e32809a25",
      "parents": [
        "efeb53c0e57213e843b7ef3cc6ebcdea7d6186ac"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:11 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:11 2009 +1100"
      },
      "message": "md: don\u0027t retry recovery of raid1 that fails due to error on source drive.\n\nIf a raid1 has only one working drive and it has a sector which\ngives an error on read, then an attempt to recover onto a spare will\nfail, but as the single remaining drive is not removed from the\narray, the recovery will be immediately re-attempted, resulting\nin an infinite recovery loop.\n\nSo detect this situation and don\u0027t retry recovery once an error\non the lone remaining drive is detected.\n\nAllow recovery to be retried once every time a spare is added\nin case the problem wasn\u0027t actually a media error.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "efeb53c0e57213e843b7ef3cc6ebcdea7d6186ac",
      "tree": "ef580effd8809fb0bc5d6ffa6f3b8abaa9180539",
      "parents": [
        "d3374825ce57ba2214d375023979f6197ccc1385"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "message": "md: Allow md devices to be created by name.\n\nUsing sequential numbers to identify md devices is somewhat artificial.\nUsing names can be a lot more user-friendly.\n\nAlso, creating md devices by opening the device special file is a bit\nawkward.\n\nSo this patch provides a new option for creating and naming devices.\n\nWriting a name such as \"md_home\" to\n    /sys/modules/md_mod/parameters/new_array\nwill cause an array with that name to be created.  It will appear in\n/sys/block/ /proc/partitions and /proc/mdstat as \u0027md_home\u0027.\nIt will have an arbitrary minor number allocated.\n\nmd devices that a created by an open are destroyed on the last\nclose when the device is inactive.\nFor named md devices, they will not be destroyed until the array\nis explicitly stopped, either with the STOP_ARRAY ioctl or by\nwriting \u0027clear\u0027 to /sys/block/md_XXXX/md/array_state.\n\nThe name of the array must start \u0027md_\u0027 to avoid conflict with\nother devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d3374825ce57ba2214d375023979f6197ccc1385",
      "tree": "441ea927a7c702e4eadeafbac8be97d664bfb83b",
      "parents": [
        "a21d15042d8cd736caf82c2bac564f3f93f3d017"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "message": "md: make devices disappear when they are no longer needed.\n\nCurrently md devices, once created, never disappear until the module\nis unloaded.  This is essentially because the gendisk holds a\nreference to the mddev, and the mddev holds a reference to the\ngendisk, this a circular reference.\n\nIf we drop the reference from mddev to gendisk, then we need to ensure\nthat the mddev is destroyed when the gendisk is destroyed.  However it\nis not possible to hook into the gendisk destruction process to enable\nthis.\n\nSo we drop the reference from the gendisk to the mddev and destroy the\ngendisk when the mddev gets destroyed.  However this has a\ncomplication.\nBetween the call\n   __blkdev_get-\u003eget_gendisk-\u003ekobj_lookup-\u003emd_probe\nand the call\n   __blkdev_get-\u003emd_open\n\nthere is no obvious way to hold a reference on the mddev any more, so\nunless something is done, it will disappear and gendisk will be\ndestroyed prematurely.\n\nAlso, once we decide to destroy the mddev, there will be an unlockable\nmoment before the gendisk is unlinked (blk_unregister_region) during\nwhich a new reference to the gendisk can be created.  We need to\nensure that this reference can not be used.  i.e. the -\u003eopen must\nfail.\n\nSo:\n 1/  in md_probe we set a flag in the mddev (hold_active) which\n     indicates that the array should be treated as active, even\n     though there are no references, and no appearance of activity.\n     This is cleared by md_release when the device is closed if it\n     is no longer needed.\n     This ensures that the gendisk will survive between md_probe and\n     md_open.\n\n 2/  In md_open we check if the mddev we expect to open matches\n     the gendisk that we did open.\n     If there is a mismatch we return -ERESTARTSYS and modify\n     __blkdev_get to retry from the top in that case.\n     In the -ERESTARTSYS sys case we make sure to wait until\n     the old gendisk (that we succeeded in opening) is really gone so\n     we loop at most once.\n\nSome udev configurations will always open an md device when it first\nappears.   If we allow an md device that was just created by an open\nto disappear on an immediate close, then this can race with such udev\nconfigurations and result in an infinite loop the device being opened\nand closed, then re-open due to the \u0027ADD\u0027 even from the first open,\nand then close and so on.\nSo we make sure an md device, once created by an open, remains active\nat least until some md \u0027ioctl\u0027 has been made on it.  This means that\nall normal usage of md devices will allow them to disappear promptly\nwhen not needed, but the worst that an incorrect usage will do it\ncause an inactive md device to be left in existence (it can easily be\nremoved).\n\nAs an array can be stopped by writing to a sysfs attribute\n  echo clear \u003e /sys/block/mdXXX/md/array_state\nwe need to use scheduled work for deleting the gendisk and other\nkobjects.  This allows us to wait for any pending gendisk deletion to\ncomplete by simply calling flush_scheduled_work().\n\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cd2ac9321c26dc7a76455cd2a4df89123fa2b73e",
      "tree": "8163a2cc791282cf32fafed19a60f357882d6169",
      "parents": [
        "159ec1fc060ab22b157a62364045f5e98749c4d3"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "message": "md: need another print_sb for mdp_superblock_1\n\nmd_print_devices is called in two code path: MD_BUG(...), and md_ioctl\nwith PRINT_RAID_DEBUG.  it will dump out all in use md devices\ninformation;\n\nHowever, it wrongly processed two types of superblock in one:\n\nThe header file \u003clinux/raid/md_p.h\u003e has defined two types of superblock,\nstruct mdp_superblock_s (typedefed with mdp_super_t) according to md with\nmetadata 0.90, and struct mdp_superblock_1 according to md with metadata\n1.0 and later,\n\nThese two types of superblock are very different,\n\nThe md_print_devices code processed them both in mdp_super_t, that would\nlead to wrong informaton dump like:\n\n\t[ 6742.345877]\n\t[ 6742.345887] md:\t**********************************\n\t[ 6742.345890] md:\t* \u003cCOMPLETE RAID STATE PRINTOUT\u003e *\n\t[ 6742.345892] md:\t**********************************\n\t[ 6742.345896] md1: \u003cram7\u003e\u003cram6\u003e\u003cram5\u003e\u003cram4\u003e\n\t[ 6742.345907] md: rdev ram7, SZ:00065472 F:0 S:1 DN:3\n\t[ 6742.345909] md: rdev superblock:\n\t[ 6742.345914] md:  SB: (V:0.90.0) ID:\u003c42ef13c7.598c059a.5f9f1645.801e9ee6\u003e CT:4919856d\n\t[ 6742.345918] md:     L5 S00065472 ND:4 RD:4 md1 LO:2 CS:65536\n\t[ 6742.345922] md:     UT:4919856d ST:1 AD:4 WD:4 FD:0 SD:0 CSUM:b7992907 E:00000001\n\t[ 6742.345924]      D  0:  DISK\u003cN:0,(1,8),R:0,S:6\u003e\n\t[ 6742.345930]      D  1:  DISK\u003cN:1,(1,10),R:1,S:6\u003e\n\t[ 6742.345933]      D  2:  DISK\u003cN:2,(1,12),R:2,S:6\u003e\n\t[ 6742.345937]      D  3:  DISK\u003cN:3,(1,14),R:3,S:6\u003e\n\t[ 6742.345942] md:     THIS:  DISK\u003cN:3,(1,14),R:3,S:6\u003e\n\t...\n\t[ 6742.346058] md0: \u003cram3\u003e\u003cram2\u003e\u003cram1\u003e\u003cram0\u003e\n\t[ 6742.346067] md: rdev ram3, SZ:00065472 F:0 S:1 DN:3\n\t[ 6742.346070] md: rdev superblock:\n\t[ 6742.346073] md:  SB: (V:1.0.0) ID:\u003c369aad81.00000000.00000000.00000000\u003e CT:9a322a9c\n\t[ 6742.346077] md:     L-1507699579 S976570180 ND:48 RD:0 md0 LO:65536 CS:196610\n\t[ 6742.346081] md:     UT:00000018 ST:0 AD:131048 WD:0 FD:8 SD:0 CSUM:00000000 E:00000000\n\t[ 6742.346084]      D  0:  DISK\u003cN:-1,(-1,-1),R:-1,S:-1\u003e\n\t[ 6742.346089]      D  1:  DISK\u003cN:-1,(-1,-1),R:-1,S:-1\u003e\n\t[ 6742.346092]      D  2:  DISK\u003cN:-1,(-1,-1),R:-1,S:-1\u003e\n\t[ 6742.346096]      D  3:  DISK\u003cN:-1,(-1,-1),R:-1,S:-1\u003e\n\t[ 6742.346102] md:     THIS:  DISK\u003cN:0,(0,0),R:0,S:0\u003e\n\t...\n\t[ 6742.346219] md:\t**********************************\n\t[ 6742.346221]\n\nHere md1 is metadata 0.90.0, and md0 is metadata 1.2\n\nAfter some more code to distinguish these two types of superblock, in this patch,\n\nit will generate dump information like:\n\n\t[ 7906.755790]\n\t[ 7906.755799] md:\t**********************************\n\t[ 7906.755802] md:\t* \u003cCOMPLETE RAID STATE PRINTOUT\u003e *\n\t[ 7906.755804] md:\t**********************************\n\t[ 7906.755808] md1: \u003cram7\u003e\u003cram6\u003e\u003cram5\u003e\u003cram4\u003e\n\t[ 7906.755819] md: rdev ram7, SZ:00065472 F:0 S:1 DN:3\n\t[ 7906.755821] md: rdev superblock (MJ:0):\n\t[ 7906.755826] md:  SB: (V:0.90.0) ID:\u003c3fca7a0d.a612bfed.5f9f1645.801e9ee6\u003e CT:491989f3\n\t[ 7906.755830] md:     L5 S00065472 ND:4 RD:4 md1 LO:2 CS:65536\n\t[ 7906.755834] md:     UT:491989f3 ST:1 AD:4 WD:4 FD:0 SD:0 CSUM:00fb52ad E:00000001\n\t[ 7906.755836]      D  0:  DISK\u003cN:0,(1,8),R:0,S:6\u003e\n\t[ 7906.755842]      D  1:  DISK\u003cN:1,(1,10),R:1,S:6\u003e\n\t[ 7906.755845]      D  2:  DISK\u003cN:2,(1,12),R:2,S:6\u003e\n\t[ 7906.755849]      D  3:  DISK\u003cN:3,(1,14),R:3,S:6\u003e\n\t[ 7906.755855] md:     THIS:  DISK\u003cN:3,(1,14),R:3,S:6\u003e\n\t...\n\t[ 7906.755972] md0: \u003cram3\u003e\u003cram2\u003e\u003cram1\u003e\u003cram0\u003e\n\t[ 7906.755981] md: rdev ram3, SZ:00065472 F:0 S:1 DN:3\n\t[ 7906.755984] md: rdev superblock (MJ:1):\n\t[ 7906.755989] md:  SB: (V:1) (F:0) Array-ID:\u003c5fbcf158:55aa:5fbe:9a79:1e939880dcbd\u003e\n\t[ 7906.755990] md:    Name: \"DG5:0\" CT:1226410480\n\t[ 7906.755998] md:       L5 SZ130944 RD:4 LO:2 CS:128 DO:24 DS:131048 SO:8 RO:0\n\t[ 7906.755999] md:     Dev:00000003 UUID: 9194d744:87f7:a448:85f2:7497b84ce30a\n\t[ 7906.756001] md:       (F:0) UT:1226410480 Events:0 ResyncOffset:-1 CSUM:0dbcd829\n\t[ 7906.756003] md:         (MaxDev:384)\n\t...\n\t[ 7906.756113] md:\t**********************************\n\t[ 7906.756116]\n\nthis md0 (metadata 1.2) information dumping is exactly according to struct\nmdp_superblock_1.\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Dan Williams \u003cdan.j.williams@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "159ec1fc060ab22b157a62364045f5e98749c4d3",
      "tree": "1de0edfd782245b271d2898e36ae76c00e1e1b6d",
      "parents": [
        "ccacc7d2cf03114a24ab903f710118e9e5d43273"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "message": "md: use list_for_each_entry macro directly\n\nThe rdev_for_each macro defined in \u003clinux/raid/md_k.h\u003e is identical to\nlist_for_each_entry_safe, from \u003clinux/list.h\u003e, it should be defined to\nuse list_for_each_entry_safe, instead of reinventing the wheel.\n\nBut some calls to each_entry_safe don\u0027t really need a safe version,\njust a direct list_for_each_entry is enough, this could save a temp\nvariable (tmp) in every function that used rdev_for_each.\n\nIn this patch, most rdev_for_each loops are replaced by list_for_each_entry,\ntotally save many tmp vars; and only in the other situations that will call\nlist_del to delete an entry, the safe version is used.\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ccacc7d2cf03114a24ab903f710118e9e5d43273",
      "tree": "c856e2a17f6c6a26996a8cfba87680a2375061d5",
      "parents": [
        "83838ed87898e0a8ff8dbf001e54e6c017f0a011"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "message": "md: raid0: make hash_spacing and preshift sector-based.\n\nThis patch renames the hash_spacing and preshift members of struct\nraid0_private_data to spacing and sector_shift respectively and\nchanges the semantics as follows:\n\nWe always have spacing \u003d 2 * hash_spacing. In case\nsizeof(sector_t) \u003e sizeof(u32) we also have sector_shift \u003d preshift + 1\nwhile sector_shift \u003d preshift \u003d 0 otherwise.\n\nNote that the values of nb_zone and zone are unaffected by these changes\nbecause in the sector_div() preceeding the assignement of these two\nvariables both arguments double.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "83838ed87898e0a8ff8dbf001e54e6c017f0a011",
      "tree": "218e6c8dbe52257251f165cd544c4bebbeae3c40",
      "parents": [
        "0825b87a7dd9645c7e16489fec839a3cb5c40a08"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "message": "md: raid0: Represent the size of strip zones in sectors.\n\nThis completes the block -\u003e sector conversion of struct strip_zone.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6199d3db0fc34f8ada895879d04a353a6ae632bc",
      "tree": "5a7d5f4a080abf6c46a87f121a859fd45fd53254",
      "parents": [
        "019c4e2f3e02aac4b44003913b54ca4b332e4371"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "message": "md: raid0: Represent zone-\u003ezone_offset in sectors.\n\nFor the same reason as in the previous patch, rename it from zone_offset\nto zone_start.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "019c4e2f3e02aac4b44003913b54ca4b332e4371",
      "tree": "ebdd73075be543d5feb1a1e86a793a2b3311ea9b",
      "parents": [
        "e0f06868341700c5c1964a04f6c5b51d0a2d5bca"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:06 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:06 2009 +1100"
      },
      "message": "md: raid0: Represent device offset in sectors.\n\nRename zone-\u003edev_offset to zone-\u003edev_start to make sure all users\nhave been converted.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0c3573f19d135d718264e38c46597295bd6154b7",
      "tree": "0943035f89d163d9d7b354445303fb03e5ea7fb1",
      "parents": [
        "538452700d95480c16e7aa6b10ff77cd937d33f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:05 2009 +1100"
      },
      "message": "md: use sysfs_notify_dirent to notify changes to md/sync_action.\n\nThere is no compelling need for this, but sysfs_notify_dirent is a\nnicer interface and the change is good for consistency.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0ba4887c6329043d6cee5b5b477cfe50c2b57674",
      "tree": "49aa64865a18e7df29cb347b7ad837e075fc1acf",
      "parents": [
        "6001e13c5f708eb68c744a69df3c2c281156030d"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Thu Jan 08 11:50:23 2009 -0800"
      },
      "committer": {
        "name": "Liam Girdwood",
        "email": "lrg@slimlogic.co.uk",
        "time": "Thu Jan 08 20:10:38 2009 +0000"
      },
      "message": "regulator: fix kernel-doc warnings\n\nFix kernel-doc warnings in regulator/driver.h:\n\nWarning(linux-next-20090108//include/linux/regulator/driver.h:95): Excess struct/union/enum/typedef member \u0027set_current\u0027 description in \u0027regulator_ops\u0027\nWarning(linux-next-20090108//include/linux/regulator/driver.h:95): Excess struct/union/enum/typedef member \u0027get_current\u0027 description in \u0027regulator_ops\u0027\nWarning(linux-next-20090108//include/linux/regulator/driver.h:124): No description found for parameter \u0027irq\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\ncc: Liam Girdwood \u003clrg@slimlogic.co.uk\u003e\ncc: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Liam Girdwood \u003clrg@slimlogic.co.uk\u003e\n"
    },
    {
      "commit": "c8e7e4640facbe99d10a6e262523b25be129b9b9",
      "tree": "0240abf412f237e65c77c288454f864a64cbb856",
      "parents": [
        "69279fb9a95051971ac03e558c4d46e7ba84ab3a"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Wed Dec 31 12:52:42 2008 +0000"
      },
      "committer": {
        "name": "Liam Girdwood",
        "email": "lrg@slimlogic.co.uk",
        "time": "Thu Jan 08 20:10:33 2009 +0000"
      },
      "message": "regulator: Add missing kerneldoc\n\nThis is only the documentation that the kerneldoc system warns about.\n\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Liam Girdwood \u003clrg@slimlogic.co.uk\u003e\n"
    },
    {
      "commit": "69279fb9a95051971ac03e558c4d46e7ba84ab3a",
      "tree": "40b924b79cc21eeddd579d5e769503f82ee9396a",
      "parents": [
        "8dc5390d4f3fd8acc73773a56fea13544e7924dc"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Wed Dec 31 12:52:41 2008 +0000"
      },
      "committer": {
        "name": "Liam Girdwood",
        "email": "lrg@slimlogic.co.uk",
        "time": "Thu Jan 08 20:10:33 2009 +0000"
      },
      "message": "regulator: Clean up kerneldoc warnings\n\nRemove kerneldoc warnings that don\u0027t relate to missing documentation,\nmostly by renaming parameters in the documentation to match their\nactual names.\n\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Liam Girdwood \u003clrg@slimlogic.co.uk\u003e\n"
    },
    {
      "commit": "7f46b1343f723f98634a5dcee47856b2000079ed",
      "tree": "ed22b6298c8dd2f687890a0d79abcd1d273b5f81",
      "parents": [
        "b8c31da64165b8566fc6e1c9c826f76e7b98ff02",
        "9e42d0cf5020aaf217433cad1a224745241d212a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jan 08 11:05:59 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jan 08 11:05:59 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6\n"
    },
    {
      "commit": "85da1fb545e5fe51c35e0576f71780cc557f4277",
      "tree": "59566f93ed45a4c8481b43aadff784c80aebacdc",
      "parents": [
        "73ac36ea14fd18ea3dc057e41b16ff31a3c0bd5a",
        "5886188dc7ba9a76babcd37452f44079a9a77f71"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 09:10:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 09:10:16 2009 -0800"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc\n\n* \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (53 commits)\n  serial: Add driver for the Cell Network Processor serial port NWP device\n  powerpc: enable dynamic ftrace\n  powerpc/cell: Fix the prototype of create_vma_map()\n  powerpc/mm: Make clear_fixmap() actually work\n  powerpc/kdump: Use ppc_save_regs() in crash_setup_regs()\n  powerpc: Export cacheable_memzero as its now used in a driver\n  powerpc: Fix missing semicolons in mmu_decl.h\n  powerpc/pasemi: local_irq_save uses an unsigned long\n  powerpc/cell: Fix some u64 vs. long types\n  powerpc/cell: Use correct types in beat files\n  powerpc: Use correct type in prom_init.c\n  powerpc: Remove unnecessary casts\n  mtd/ps3vram: Use _PAGE_NO_CACHE in memory ioremap\n  mtd/ps3vram: Use msleep in waits\n  mtd/ps3vram: Use proper kernel types\n  mtd/ps3vram: Cleanup ps3vram driver messages\n  mtd/ps3vram: Remove ps3vram debug routines\n  mtd/ps3vram: Add modalias support to the ps3vram driver\n  mtd/ps3vram: Add ps3vram driver for accessing video RAM as MTD\n  powerpc: Fix iseries drivers build failure without CONFIG_VIOPATH\n  ...\n"
    },
    {
      "commit": "91f68b7359144aa40bb9668124543d15284750b4",
      "tree": "69f11509a40655c17a44da9b61debdb31209f208",
      "parents": [
        "b53907c0100a353a7ac53bed260e735e5ccbbbcc"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Jan 07 18:09:12 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:15 2009 -0800"
      },
      "message": "generic swap(): introduce global macro swap(a, b)\n\nThere have been some local definitions of swap(), it\u0027s time to replace\nthem all with a uniform one.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f06295b44c296c8fb08823a3118468ae343b60f2",
      "tree": "cf50932653af81aae1dc33bbf18ba7d8a94f5223",
      "parents": [
        "a6684999f7c6bddd75cf9755ad7ff44435f72fff"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "kees.cook@canonical.com",
        "time": "Wed Jan 07 18:08:52 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:12 2009 -0800"
      },
      "message": "ELF: implement AT_RANDOM for glibc PRNG seeding\n\nWhile discussing[1] the need for glibc to have access to random bytes\nduring program load, it seems that an earlier attempt to implement\nAT_RANDOM got stalled.  This implements a random 16 byte string, available\nto every ELF program via a new auxv AT_RANDOM vector.\n\n[1] http://sourceware.org/ml/libc-alpha/2008-10/msg00006.html\n\nUlrich said:\n\nglibc needs right after startup a bit of random data for internal\nprotections (stack canary etc).  What is now in upstream glibc is that we\nalways unconditionally open /dev/urandom, read some data, and use it.  For\nevery process startup.  That\u0027s slow.\n\n...\n\nThe solution is to provide a limited amount of random data to the\nstarting process in the aux vector.  I suggested 16 bytes and this is\nwhat the patch implements.  If we need only 16 bytes or less we use the\ndata directly.  If we need more we\u0027ll use the 16 bytes to see a PRNG.\nThis avoids the costly /dev/urandom use and it allows the kernel to use\nthe most adequate source of random data for this purpose.  It might not\nbe the same pool as that for /dev/urandom.\n\nConcerns were expressed about the depletion of the randomness pool.  But\nthis patch doesn\u0027t make the situation worse, it doesn\u0027t deplete entropy\nmore than happens now.\n\nSigned-off-by: Kees Cook \u003ckees.cook@canonical.com\u003e\nCc: Jakub Jelinek \u003cjakub@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "61bce0f1371cfff497fe85594fd39d1a0b15ebe1",
      "tree": "97871c4148856e39ffcc8a6ffec89495018729f1",
      "parents": [
        "f9fb860f67b9542cd78d1558dec7058092b57d8e"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Jan 07 18:08:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:12 2009 -0800"
      },
      "message": "pid: generalize task_active_pid_ns\n\nCurrently task_active_pid_ns is not safe to call after a task becomes a\nzombie and exit_task_namespaces is called, as nsproxy becomes NULL.  By\nreading the pid namespace from the pid of the task we can trivially solve\nthis problem at the cost of one extra memory read in what should be the\nsame cacheline as we read the namespace from.\n\nWhen moving things around I have made task_active_pid_ns out of line\nbecause keeping it in pid_namespace.h would require adding includes of\npid.h and sched.h that I don\u0027t think we want.\n\nThis change does make task_active_pid_ns unsafe to call during\ncopy_process until we attach a pid on the task_struct which seems to be a\nreasonable trade off.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Bastian Blank \u003cbastian@waldi.eu.org\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f9fb860f67b9542cd78d1558dec7058092b57d8e",
      "tree": "1c14a2d7013df108b6103b7d24b1201fd78b922b",
      "parents": [
        "6af866af34a96fed24a55979a78b6f73bd4e8e87"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Jan 07 18:08:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:12 2009 -0800"
      },
      "message": "pid: implement ns_of_pid\n\nA current problem with the pid namespace is that it is easy to do pid\nrelated work after exit_task_namespaces which drops the nsproxy pointer.\n\nHowever if we are doing pid namespace related work we are always operating\non some struct pid which retains the pid_namespace pointer of the pid\nnamespace it was allocated in.\n\nSo provide ns_of_pid which allows us to find the pid namespace a pid was\nallocated in.\n\nUsing this we have the needed infrastructure to do pid namespace related\nwork at anytime we have a struct pid, removing the chance of accidentally\nhaving a NULL pointer dereference when accessing current-\u003ensproxy.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Bastian Blank \u003cbastian@waldi.eu.org\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6af866af34a96fed24a55979a78b6f73bd4e8e87",
      "tree": "e0c4b27ce3b684ebb2f6fa3685051e01a86d7354",
      "parents": [
        "300ed6cbb70718872cb4936d1d22ef295f9ba44d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 07 18:08:45 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:11 2009 -0800"
      },
      "message": "cpuset: remove remaining pointers to cpumask_t\n\nImpact: cleanups, use new cpumask API\n\nFinal trivial cleanups: mainly s/cpumask_t/struct cpumask\n\nNote there is a FIXME in generate_sched_domains(). A future patch will\nchange struct cpumask *doms to struct cpumask *doms[].\n(I suppose Rusty will do this.)\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e7c5ec9193d32b9559a3bb8893ceedbda85201ff",
      "tree": "fd7505c03e2c7525a110a702907c0604c233e2d9",
      "parents": [
        "2cb378c862777d050c20db903b119a029845fdcb"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Wed Jan 07 18:08:38 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:10 2009 -0800"
      },
      "message": "cgroups: add css_tryget()\n\nAdd css_tryget(), that obtains a counted reference on a CSS.  It is used\nin situations where the caller has a \"weak\" reference to the CSS, i.e.\none that does not protect the cgroup from removal via a reference count,\nbut would instead be cleaned up by a destroy() callback.\n\ncss_tryget() will return true on success, or false if the cgroup is being\nremoved.\n\nThis is similar to Kamezawa Hiroyuki\u0027s patch from a week or two ago, but\nwith the difference that in the event of css_tryget() racing with a\ncgroup_rmdir(), css_tryget() will only return false if the cgroup really\ndoes get removed.\n\nThis implementation is done by biasing css-\u003erefcnt, so that a refcnt of 1\nmeans \"releasable\" and 0 means \"released or releasing\".  In the event of a\nrace, css_tryget() distinguishes between \"released\" and \"releasing\" by\nchecking for the CSS_REMOVED flag in css-\u003eflags.\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nTested-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "999cd8a450f8f93701669a61cac4d3b19eca07e8",
      "tree": "990e5b08e6db971d2e9943f89abf39e7c8f4cb1e",
      "parents": [
        "b5a84319a4343a0db753436fd8147e61eaafa7ea"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Wed Jan 07 18:08:36 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:10 2009 -0800"
      },
      "message": "cgroups: add a per-subsystem hierarchy_mutex\n\nThese patches introduce new locking/refcount support for cgroups to\nreduce the need for subsystems to call cgroup_lock(). This will\nultimately allow the atomicity of cgroup_rmdir() (which was removed\nrecently) to be restored.\n\nThese three patches give:\n\n1/3 - introduce a per-subsystem hierarchy_mutex which a subsystem can\n     use to prevent changes to its own cgroup tree\n\n2/3 - use hierarchy_mutex in place of calling cgroup_lock() in the\n     memory controller\n\n3/3 - introduce a css_tryget() function similar to the one recently\n      proposed by Kamezawa, but avoiding spurious refcount failures in\n      the event of a race between a css_tryget() and an unsuccessful\n      cgroup_rmdir()\n\nFuture patches will likely involve:\n\n- using hierarchy mutex in place of cgroup_lock() in more subsystems\n where appropriate\n\n- restoring the atomicity of cgroup_rmdir() with respect to cgroup_create()\n\nThis patch:\n\nAdd a hierarchy_mutex to the cgroup_subsys object that protects changes to\nthe hierarchy observed by that subsystem.  It is taken by the cgroup\nsubsystem (in addition to cgroup_mutex) for the following operations:\n\n- linking a cgroup into that subsystem\u0027s cgroup tree\n- unlinking a cgroup from that subsystem\u0027s cgroup tree\n- moving the subsystem to/from a hierarchy (including across the\n  bind() callback)\n\nThus if the subsystem holds its own hierarchy_mutex, it can safely\ntraverse its own hierarchy.\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nTested-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5a84319a4343a0db753436fd8147e61eaafa7ea",
      "tree": "5faae671b431b50a32a2d8c7a57cc9361d8f336d",
      "parents": [
        "544122e5e0ee27d5aac4a441f7746712afbf248c"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:35 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:10 2009 -0800"
      },
      "message": "memcg: fix shmem\u0027s swap accounting\n\nNow, you can see following even when swap accounting is enabled.\n\n 1. Create Group 01, and 02.\n 2. allocate a \"file\" on tmpfs by a task under 01.\n 3. swap out the \"file\" (by memory pressure)\n 4. Read \"file\" from a task in group 02.\n 5. the charge of \"file\" is moved to group 02.\n\nThis is not ideal behavior. This is because SwapCache which was loaded\nby read-ahead is not taken into account..\n\nThis is a patch to fix shmem\u0027s swapcache behavior.\n  - remove mem_cgroup_cache_charge_swapin().\n  - Add SwapCache handler routine to mem_cgroup_cache_charge().\n    By this, shmem\u0027s file cache is charged at add_to_page_cache()\n    with GFP_NOWAIT.\n  - pass the page of swapcache to shrink_mem_cgroup.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a5e924f5f8abf97944e625d74967cc9452cfbce8",
      "tree": "3a90d35e270617933f352c8c748880a62fa6eeca",
      "parents": [
        "3bb4edf24b26358eccfc69ac8b9a9c36ccc312da"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Wed Jan 07 18:08:28 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:09 2009 -0800"
      },
      "message": "memcg: remove mem_cgroup_try_charge\n\nAfter previous patch, mem_cgroup_try_charge is not used by anyone, so we\ncan remove it.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c772be939e078afd2505ede7d596a30f8f61de95",
      "tree": "2cf3157fdd2b3570e105f2d91576585750526fb3",
      "parents": [
        "a7885eb8ad465ec9db99ac5b5e6680f0ca8e11c8"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:09 2009 -0800"
      },
      "message": "memcg: fix calculation of active_ratio\n\nCurrently, inactive_ratio of memcg is calculated at setting limit.\nbecause page_alloc.c does so and current implementation is straightforward\nporting.\n\nHowever, memcg introduced hierarchy feature recently.  In hierarchy\nrestriction, memory limit is not only decided memory.limit_in_bytes of\ncurrent cgroup, but also parent limit and sibling memory usage.\n\nThen, The optimal inactive_ratio is changed frequently.  So, everytime\ncalculation is better.\n\nTested-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a7885eb8ad465ec9db99ac5b5e6680f0ca8e11c8",
      "tree": "4f3ffaa399fbc16003cc1787228f10543dc9c3ef",
      "parents": [
        "2733c06ac864ed40b9dfbbd5270f3f16949bd4a1"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:08 2009 -0800"
      },
      "message": "memcg: swappiness\n\nCurrently, /proc/sys/vm/swappiness can change swappiness ratio for global\nreclaim.  However, memcg reclaim doesn\u0027t have tuning parameter for itself.\n\nIn general, the optimal swappiness depend on workload.  (e.g.  hpc\nworkload need to low swappiness than the others.)\n\nThen, per cgroup swappiness improve administrator tunability.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9439c1c95b5c25b8031b2a7eb7e1590eb84be7f5",
      "tree": "79eaae56278407e0a223e562a2d0079834ca5529",
      "parents": [
        "3e2f41f1f64744f7942980d93cc93dd3e5924560"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:21 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:08 2009 -0800"
      },
      "message": "memcg: remove mem_cgroup_cal_reclaim()\n\nNow, get_scan_ratio() return correct value although memcg reclaim.  Then,\nmem_cgroup_calc_reclaim() can be removed.\n\nSo, memcg reclaim get the same capability of anon/file reclaim balancing\nas global reclaim now.\n\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e2f41f1f64744f7942980d93cc93dd3e5924560",
      "tree": "7b605c407b7470877fd9c5c853407f75edcbeb49",
      "parents": [
        "a3d8e0549d913e30968fa02e505dfe02c0a23e0d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:08 2009 -0800"
      },
      "message": "memcg: add zone_reclaim_stat\n\nIntroduce mem_cgroup_per_zone::reclaim_stat member and its statics\ncollecting function.\n\nNow, get_scan_ratio() can calculate correct value on memcg reclaim.\n\n[hugh@veritas.com: avoid reclaim_stat oops when disabled]\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3d8e0549d913e30968fa02e505dfe02c0a23e0d",
      "tree": "e4d3df33666a18614289ae7bc76c27ad7950eb73",
      "parents": [
        "14797e2363c2b2f1ce139fd1c5a215e4e05aa1d9"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:19 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:08 2009 -0800"
      },
      "message": "memcg: add mem_cgroup_zone_nr_pages()\n\nIntroduce mem_cgroup_zone_nr_pages().  It is called by zone_nr_pages()\nhelper function.\n\nThis patch doesn\u0027t have any behavior change.\n\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14797e2363c2b2f1ce139fd1c5a215e4e05aa1d9",
      "tree": "a56edaa680c7c338a5a3043aa24897d7f668b6c9",
      "parents": [
        "549927620b04a8f8073ce2ee2a8977f209af2ee5"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:08 2009 -0800"
      },
      "message": "memcg: add inactive_anon_is_low()\n\nThe inactive_anon_is_low() is key component of active/inactive anon\nbalancing on reclaim.  However current inactive_anon_is_low() function\nonly consider global reclaim.\n\nTherefore, we need following ugly scan_global_lru() condition.\n\n\tif (lru \u003d\u003d LRU_ACTIVE_ANON \u0026\u0026\n\t    (!scan_global_lru(sc) || inactive_anon_is_low(zone))) {\n\t\tshrink_active_list(nr_to_scan, zone, sc, priority, file);\n\t\treturn 0;\n\nit cause that memcg reclaim always deactivate pages when shrink_list() is\ncalled.  To make mem_cgroup_inactive_anon_is_low() improve active/inactive\nanon balancing of memcgroup.\n\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@gmail.com\u003e\nCc: \"Pekka Enberg\" \u003cpenberg@cs.helsinki.fi\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e9015716ae9b59e9635d692fddfcfb9582c146c",
      "tree": "e1876d3822c46a20e1c35b41580f5ef6b2f6e053",
      "parents": [
        "f89eb90e33fd4e4e0cc1a6d20afd63c5a561885a"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:15 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:07 2009 -0800"
      },
      "message": "mm: introduce zone_reclaim struct\n\nAdd zone_reclam_stat struct for later enhancement.\n\nA later patch uses this.  This patch doesn\u0027t any behavior change (yet).\n\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f89eb90e33fd4e4e0cc1a6d20afd63c5a561885a",
      "tree": "2e39e02196dda539c900383ab03f08a311124cd9",
      "parents": [
        "670ec2f170301425fc4fdfa63d40652071fe85f6"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:07 2009 -0800"
      },
      "message": "inactive_anon_is_low: move to vmscan\n\nThe inactive_anon_is_low() is called only vmscan.  Then it can move to\nvmscan.c\n\nThis patch doesn\u0027t have any functional change.\n\nReviewd-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c26fdd70c3094fa3e84caf9ef434911933d5477",
      "tree": "06a3bafc12f5f8fd91d9ed1fca5ea0a632ef2004",
      "parents": [
        "887007561ae58628f03aa9046949747c04f63be8"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:10 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:06 2009 -0800"
      },
      "message": "memcg: revert gfp mask fix\n\nMy patch, memcg-fix-gfp_mask-of-callers-of-charge.patch changed gfp_mask\nof callers of charge to be GFP_HIGHUSER_MOVABLE for showing what will\nhappen at memory reclaim.\n\nBut in recent discussion, it\u0027s NACKed because it sounds ugly.\n\nThis patch is for reverting it and add some clean up to gfp_mask of\ncallers of charge.  No behavior change but need review before generating\nHUNK in deep queue.\n\nThis patch also adds explanation to meaning of gfp_mask passed to charge\nfunctions in memcontrol.h.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a636b327f731143ccc544b966cfd8de6cb6d72c6",
      "tree": "e53b03b64e8ebca20649c2d877bc4c3ef54ec34c",
      "parents": [
        "2e4d40915fb85207fe48cfc31201824ec6d7426e"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:06 2009 -0800"
      },
      "message": "memcg: avoid unnecessary system-wide-oom-killer\n\nCurrent mmtom has new oom function as pagefault_out_of_memory().  It\u0027s\nadded for select bad process rathar than killing current.\n\nWhen memcg hit limit and calls OOM at page_fault, this handler called and\nsystem-wide-oom handling happens.  (means kernel panics if panic_on_oom is\ntrue....)\n\nTo avoid overkill, check memcg\u0027s recent behavior before starting\nsystem-wide-oom.\n\nAnd this patch also fixes to guarantee \"don\u0027t accnout against process with\nTIF_MEMDIE\".  This is necessary for smooth OOM.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e4d40915fb85207fe48cfc31201824ec6d7426e",
      "tree": "60f4a8ce1278a861ff530885353da74d1cf0bdb4",
      "parents": [
        "18f59ea7de08db2449ba99185e8d8cc30e7acac5"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Wed Jan 07 18:08:07 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:06 2009 -0800"
      },
      "message": "memcontrol: rcu_read_lock() to protect mm_match_cgroup()\n\nmm_match_cgroup() calls cgroup_subsys_state().\n\nWe must use rcu_read_lock() to protect cgroup_subsys_state().\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28dbc4b6a01fb579a9441c7b81e3d3413dc452df",
      "tree": "c45d94be6cd243f3e677ec8279bfec87855802d0",
      "parents": [
        "52bc0d82100cd896213a9a25ec01c1ba87b939db"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Jan 07 18:08:05 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: memory cgroup resource counters for hierarchy\n\nAdd support for building hierarchies in resource counters.  Cgroups allows\nus to build a deep hierarchy, but we currently don\u0027t link the resource\ncounters belonging to the memory controller control groups, in the same\nfashion as the corresponding cgroup entries in the cgroup hierarchy.  This\npatch provides the infrastructure for resource counters that have the same\nhiearchy as their cgroup counter parts.\n\nThese set of patches are based on the resource counter hiearchy patches\nposted by Pavel Emelianov.\n\nNOTE: Building hiearchies is expensive, deeper hierarchies imply charging\nthe all the way up to the root.  It is known that hiearchies are\nexpensive, so the user needs to be careful and aware of the trade-offs\nbefore creating very deep ones.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f8d665422603ee1b8ed04dcad4242f14d623c941",
      "tree": "d872a12113998ed99ce22247091c481b9f465faa",
      "parents": [
        "08e552c69c6930d64722de3ec18c51844d06ee28"
      ],
      "author": {
        "name": "Hirokazu Takahashi",
        "email": "taka@valinux.co.jp",
        "time": "Wed Jan 07 18:08:02 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: add mem_cgroup_disabled()\n\nWe check mem_cgroup is disabled or not by checking\nmem_cgroup_subsys.disabled.  I think it has more references than expected,\nnow.\n\nreplacing\n   if (mem_cgroup_subsys.disabled)\nwith\n   if (mem_cgroup_disabled())\n\ngive us good look, I think.\n\n[kamezawa.hiroyu@jp.fujitsu.com: fix typo]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08e552c69c6930d64722de3ec18c51844d06ee28",
      "tree": "a744d57ed4b23401115f1033dcaac9e85d550e09",
      "parents": [
        "8c7c6e34a1256a5082d38c8e9bd1474476912715"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: synchronized LRU\n\nA big patch for changing memcg\u0027s LRU semantics.\n\nNow,\n  - page_cgroup is linked to mem_cgroup\u0027s its own LRU (per zone).\n\n  - LRU of page_cgroup is not synchronous with global LRU.\n\n  - page and page_cgroup is one-to-one and statically allocated.\n\n  - To find page_cgroup is on what LRU, you have to check pc-\u003emem_cgroup as\n    - lru \u003d page_cgroup_zoneinfo(pc, nid_of_pc, zid_of_pc);\n\n  - SwapCache is handled.\n\nAnd, when we handle LRU list of page_cgroup, we do following.\n\n\tpc \u003d lookup_page_cgroup(page);\n\tlock_page_cgroup(pc); .....................(1)\n\tmz \u003d page_cgroup_zoneinfo(pc);\n\tspin_lock(\u0026mz-\u003elru_lock);\n\t.....add to LRU\n\tspin_unlock(\u0026mz-\u003elru_lock);\n\tunlock_page_cgroup(pc);\n\nBut (1) is spin_lock and we have to be afraid of dead-lock with zone-\u003elru_lock.\nSo, trylock() is used at (1), now. Without (1), we can\u0027t trust \"mz\" is correct.\n\nThis is a trial to remove this dirty nesting of locks.\nThis patch changes mz-\u003elru_lock to be zone-\u003elru_lock.\nThen, above sequence will be written as\n\n        spin_lock(\u0026zone-\u003elru_lock); # in vmscan.c or swap.c via global LRU\n\tmem_cgroup_add/remove/etc_lru() {\n\t\tpc \u003d lookup_page_cgroup(page);\n\t\tmz \u003d page_cgroup_zoneinfo(pc);\n\t\tif (PageCgroupUsed(pc)) {\n\t\t\t....add to LRU\n\t\t}\n        spin_lock(\u0026zone-\u003elru_lock); # in vmscan.c or swap.c via global LRU\n\nThis is much simpler.\n(*) We\u0027re safe even if we don\u0027t take lock_page_cgroup(pc). Because..\n    1. When pc-\u003emem_cgroup can be modified.\n       - at charge.\n       - at account_move().\n    2. at charge\n       the PCG_USED bit is not set before pc-\u003emem_cgroup is fixed.\n    3. at account_move()\n       the page is isolated and not on LRU.\n\nPros.\n  - easy for maintenance.\n  - memcg can make use of laziness of pagevec.\n  - we don\u0027t have to duplicated LRU/Active/Unevictable bit in page_cgroup.\n  - LRU status of memcg will be synchronized with global LRU\u0027s one.\n  - # of locks are reduced.\n  - account_move() is simplified very much.\nCons.\n  - may increase cost of LRU rotation.\n    (no impact if memcg is not configured.)\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8c7c6e34a1256a5082d38c8e9bd1474476912715",
      "tree": "09f53c7c4bac5532a9ecbdadb4450702c744ea6f",
      "parents": [
        "27a7faa0779dd13729196c1a818c294f44bbd1ee"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:00 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: mem+swap controller core\n\nThis patch implements per cgroup limit for usage of memory+swap.  However\nthere are SwapCache, double counting of swap-cache and swap-entry is\navoided.\n\nMem+Swap controller works as following.\n  - memory usage is limited by memory.limit_in_bytes.\n  - memory + swap usage is limited by memory.memsw_limit_in_bytes.\n\nThis has following benefits.\n  - A user can limit total resource usage of mem+swap.\n\n    Without this, because memory resource controller doesn\u0027t take care of\n    usage of swap, a process can exhaust all the swap (by memory leak.)\n    We can avoid this case.\n\n    And Swap is shared resource but it cannot be reclaimed (goes back to memory)\n    until it\u0027s used. This characteristic can be trouble when the memory\n    is divided into some parts by cpuset or memcg.\n    Assume group A and group B.\n    After some application executes, the system can be..\n\n    Group A -- very large free memory space but occupy 99% of swap.\n    Group B -- under memory shortage but cannot use swap...it\u0027s nearly full.\n\n    Ability to set appropriate swap limit for each group is required.\n\nMaybe someone wonder \"why not swap but mem+swap ?\"\n\n  - The global LRU(kswapd) can swap out arbitrary pages. Swap-out means\n    to move account from memory to swap...there is no change in usage of\n    mem+swap.\n\n    In other words, when we want to limit the usage of swap without affecting\n    global LRU, mem+swap limit is better than just limiting swap.\n\nAccounting target information is stored in swap_cgroup which is\nper swap entry record.\n\nCharge is done as following.\n  map\n    - charge  page and memsw.\n\n  unmap\n    - uncharge page/memsw if not SwapCache.\n\n  swap-out (__delete_from_swap_cache)\n    - uncharge page\n    - record mem_cgroup information to swap_cgroup.\n\n  swap-in (do_swap_page)\n    - charged as page and memsw.\n      record in swap_cgroup is cleared.\n      memsw accounting is decremented.\n\n  swap-free (swap_free())\n    - if swap entry is freed, memsw is uncharged by PAGE_SIZE.\n\nThere are people work under never-swap environments and consider swap as\nsomething bad. For such people, this mem+swap controller extension is just an\noverhead.  This overhead is avoided by config or boot option.\n(see Kconfig. detail is not in this patch.)\n\nTODO:\n - maybe more optimization can be don in swap-in path. (but not very safe.)\n   But we just do simple accounting at this stage.\n\n[nishimura@mxp.nes.nec.co.jp: make resize limit hold mutex]\n[hugh@veritas.com: memswap controller core swapcache fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "27a7faa0779dd13729196c1a818c294f44bbd1ee",
      "tree": "30837689bf39eb734a8917f2c912e1b8ac0c28c0",
      "parents": [
        "c077719be8e9e6b55702117513d1b5f41d80404a"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: swap cgroup for remembering usage\n\nFor accounting swap, we need a record per swap entry, at least.\n\nThis patch adds following function.\n  - swap_cgroup_swapon() .... called from swapon\n  - swap_cgroup_swapoff() ... called at the end of swapoff.\n\n  - swap_cgroup_record() .... record information of swap entry.\n  - swap_cgroup_lookup() .... lookup information of swap entry.\n\nThis patch just implements \"how to record information\".  No actual method\nfor limit the usage of swap.  These routine uses flat table to record and\nlookup.  \"wise\" lookup system like radix-tree requires requires memory\nallocation at new records but swap-out is usually called under memory\nshortage (or memcg hits limit.) So, I used static allocation.  (maybe\ndynamic allocation is not very hard but it adds additional memory\nallocation in memory shortage path.)\n\nNote1: In this, we use pointer to record information and this means\n      8bytes per swap entry. I think we can reduce this when we\n      create \"id of cgroup\" in the range of 0-65535 or 0-255.\n\nReported-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nTested-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReported-by: Hugh Dickins \u003chugh@veritas.com\u003e\nReported-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c077719be8e9e6b55702117513d1b5f41d80404a",
      "tree": "3369f02d87390a40f5867d0482972bac506424a8",
      "parents": [
        "d13d144309d2e5a3e6ad978b16c1d0226ddc9231"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:57 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: mem+swap controller Kconfig\n\nConfig and control variable for mem+swap controller.\n\nThis patch adds CONFIG_CGROUP_MEM_RES_CTLR_SWAP\n(memory resource controller swap extension.)\n\nFor accounting swap, it\u0027s obvious that we have to use additional memory to\nremember \"who uses swap\".  This adds more overhead.  So, it\u0027s better to\noffer \"choice\" to users.  This patch adds 2 choices.\n\nThis patch adds 2 parameters to enable swap extension or not.\n  - CONFIG\n  - boot option\n\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d13d144309d2e5a3e6ad978b16c1d0226ddc9231",
      "tree": "37c19902b527823956db969d9428737081b2a94d",
      "parents": [
        "c1e862c1f5ad34771b6d0a528cf681e0dcad7c86"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:56 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: handle swap caches\n\nSwapCache support for memory resource controller (memcg)\n\nBefore mem+swap controller, memcg itself should handle SwapCache in proper\nway.  This is cut-out from it.\n\nIn current memcg, SwapCache is just leaked and the user can create tons of\nSwapCache.  This is a leak of account and should be handled.\n\nSwapCache accounting is done as following.\n\n  charge (anon)\n\t- charged when it\u0027s mapped.\n\t  (because of readahead, charge at add_to_swap_cache() is not sane)\n  uncharge (anon)\n\t- uncharged when it\u0027s dropped from swapcache and fully unmapped.\n\t  means it\u0027s not uncharged at unmap.\n\t  Note: delete from swap cache at swap-in is done after rmap information\n\t        is established.\n  charge (shmem)\n\t- charged at swap-in. this prevents charge at add_to_page_cache().\n\n  uncharge (shmem)\n\t- uncharged when it\u0027s dropped from swapcache and not on shmem\u0027s\n\t  radix-tree.\n\n  at migration, check against \u0027old page\u0027 is modified to handle shmem.\n\nComparing to the old version discussed (and caused troubles), we have\nadvantages of\n  - PCG_USED bit.\n  - simple migrating handling.\n\nSo, situation is much easier than several months ago, maybe.\n\n[hugh@veritas.com: memcg: handle swap caches build fix]\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nTested-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "01b1ae63c2270cbacfd43fea94578c17950eb548",
      "tree": "ab0275f32e8548c4413014d43cab1f52f03c9c5c",
      "parents": [
        "bced0520fe462bb94021dcabd32e99630c171be2"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:50 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:04 2009 -0800"
      },
      "message": "memcg: simple migration handling\n\nNow, management of \"charge\" under page migration is done under following\nmanner. (Assume migrate page contents from oldpage to newpage)\n\n before\n  - \"newpage\" is charged before migration.\n at success.\n  - \"oldpage\" is uncharged at somewhere(unmap, radix-tree-replace)\n at failure\n  - \"newpage\" is uncharged.\n  - \"oldpage\" is charged if necessary (*1)\n\nBut (*1) is not reliable....because of GFP_ATOMIC.\n\nThis patch tries to change behavior as following by charge/commit/cancel ops.\n\n before\n  - charge PAGE_SIZE (no target page)\n success\n  - commit charge against \"newpage\".\n failure\n  - commit charge against \"oldpage\".\n    (PCG_USED bit works effectively to avoid double-counting)\n  - if \"oldpage\" is obsolete, cancel charge of PAGE_SIZE.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a81b88cb53e335ff7d019e6398c95792c817d93",
      "tree": "6ebca4d509a541ac707e10f9369916549e90c0ad",
      "parents": [
        "0b82ac37b889ec881b645860da3775118effb3ca"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:04 2009 -0800"
      },
      "message": "memcg: introduce charge-commit-cancel style of functions\n\nThere is a small race in do_swap_page().  When the page swapped-in is\ncharged, the mapcount can be greater than 0.  But, at the same time some\nprocess (shares it ) call unmap and make mapcount 1-\u003e0 and the page is\nuncharged.\n\n      CPUA \t\t\tCPUB\n       mapcount \u003d\u003d 1.\n   (1) charge if mapcount\u003d\u003d0     zap_pte_range()\n                                (2) mapcount 1 \u003d\u003e 0.\n\t\t\t        (3) uncharge(). (success)\n   (4) set page\u0027s rmap()\n       mapcount 0\u003d\u003e1\n\nThen, this swap page\u0027s account is leaked.\n\nFor fixing this, I added a new interface.\n  - charge\n   account to res_counter by PAGE_SIZE and try to free pages if necessary.\n  - commit\n   register page_cgroup and add to LRU if necessary.\n  - cancel\n   uncharge PAGE_SIZE because of do_swap_page failure.\n\n     CPUA\n  (1) charge (always)\n  (2) set page\u0027s rmap (mapcount \u003e 0)\n  (3) commit charge was necessary or not after set_pte().\n\nThis protocol uses PCG_USED bit on page_cgroup for avoiding over accounting.\nUsual mem_cgroup_charge_common() does charge -\u003e commit at a time.\n\nAnd this patch also adds following function to clarify all charges.\n\n  - mem_cgroup_newpage_charge() ....replacement for mem_cgroup_charge()\n\tcalled against newly allocated anon pages.\n\n  - mem_cgroup_charge_migrate_fixup()\n        called only from remove_migration_ptes().\n\twe\u0027ll have to rewrite this later.(this patch just keeps old behavior)\n\tThis function will be removed by additional patch to make migration\n\tclearer.\n\nGood for clarifying \"what we do\"\n\nThen, we have 4 following charge points.\n  - newpage\n  - swap-in\n  - add-to-cache.\n  - migration.\n\n[akpm@linux-foundation.org: add missing inline directives to stubs]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a47295e6bc42ad35f9c15ac66f598aa24debd4e2",
      "tree": "cb765e996ef35ae88e29d60796655d0d35e8cf5e",
      "parents": [
        "e7b80bb695a5b64c92e314838e083b2f3bdf29b2"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Wed Jan 07 18:07:44 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:03 2009 -0800"
      },
      "message": "cgroups: make cgroup_path() RCU-safe\n\nFix races between /proc/sched_debug by freeing cgroup objects via an RCU\ncallback.  Thus any cgroup reference obtained from an RCU-safe source will\nremain valid during the RCU section.  Since dentries are also RCU-safe,\nthis allows us to traverse up the tree safely.\n\nAdditionally, make cgroup_path() check for a NULL cgrp-\u003edentry to avoid\ntrying to report a path for a partially-created cgroup.\n\n[lizf@cn.fujitsu.com: call deactive_super() in cgroup_diput()]\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b2aa30f7bb381e04c93eed106089ba55553955f1",
      "tree": "eda632102a0bc6e325a24e77a9c2819eab5aeef3",
      "parents": [
        "2019f634ce5904c19eba4e86f51b1a119a53a9f1"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Wed Jan 07 18:07:37 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:02 2009 -0800"
      },
      "message": "cgroups: don\u0027t put struct cgroupfs_root protected by RCU\n\nWe don\u0027t access struct cgroupfs_root in fast path, so we should not put\nstruct cgroupfs_root protected by RCU\n\nBut the comment in struct cgroup_subsys.root confuse us.\n\nstruct cgroup_subsys.root is used in these places:\n\n1 find_css_set(): if (ss-\u003eroot-\u003esubsys_list.next \u003d\u003d \u0026ss-\u003esibling)\n2 rebind_subsystems(): if (ss-\u003eroot !\u003d \u0026rootnode)\n                       rcu_assign_pointer(ss-\u003eroot, root);\n                       rcu_assign_pointer(subsys[i]-\u003eroot, \u0026rootnode);\n3 cgroup_has_css_refs(): if (ss-\u003eroot !\u003d cgrp-\u003eroot)\n4 cgroup_init_subsys(): ss-\u003eroot \u003d \u0026rootnode;\n5 proc_cgroupstats_show(): ss-\u003ename, ss-\u003eroot-\u003esubsys_bits,\n                           ss-\u003eroot-\u003enumber_of_cgroups, !ss-\u003edisabled);\n6 cgroup_clone(): root \u003d subsys-\u003eroot;\n                  if ((root !\u003d subsys-\u003eroot) ||\n\nAll these place we have held cgroup_lock() or we don\u0027t dereference to\nstruct cgroupfs_root.  It\u0027s means wo don\u0027t need RCU when use struct\ncgroup_subsys.root, and we should not put struct cgroupfs_root protected\nby RCU.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nReviewed-by: Paul Menage \u003cmenage@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "04143e2fb9d512c21e1dcfb561dbb0445dcfdc8c",
      "tree": "1a8b6add3f19db63663bcf33205b771272e451d8",
      "parents": [
        "2e8671cb566da993425d324fc355af31edc6e7f1"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Wed Jan 07 18:07:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:01 2009 -0800"
      },
      "message": "ext3: tighten restrictions on inode flags\n\nAt the moment there are few restrictions on which flags may be set on\nwhich inodes.  Specifically DIRSYNC may only be set on directories and\nIMMUTABLE and APPEND may not be set on links.  Tighten that to disallow\nTOPDIR being set on non-directories and only NODUMP and NOATIME to be set\non non-regular file, non-directories.\n\nIntroduces a flags masking function which masks flags based on mode and\nuse it during inode creation and when flags are set via the ioctl to\nfacilitate future consistency.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e8671cb566da993425d324fc355af31edc6e7f1",
      "tree": "6da1dc8231ecbff398229398b602a6a3543979fd",
      "parents": [
        "5df096d67ec2b6578518caed7d57317a4b807aa1"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Wed Jan 07 18:07:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:01 2009 -0800"
      },
      "message": "ext3: don\u0027t inherit inappropriate inode flags from parent\n\nAt present INDEX is the only flag that new ext3 inodes do NOT inherit from\ntheir parent.  In addition prevent the flags DIRTY, ECOMPR, IMAGIC and\nTOPDIR from being inherited.  List inheritable flags explicitly to prevent\nfuture flags from accidentally being inherited.\n\nThis fixes the TOPDIR flag inheritance bug reported at\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9866.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5df096d67ec2b6578518caed7d57317a4b807aa1",
      "tree": "8e92d19c89dea347eed6fc018fc6e4388bf9ebdc",
      "parents": [
        "f420d4dc4272fd223986762df2ad06056ddebada"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Wed Jan 07 18:07:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:00 2009 -0800"
      },
      "message": "ext3: allocate -\u003es_blockgroup_lock separately\n\nAs spotted by kmemtrace, struct ext3_sb_info is 17152 bytes on 64-bit\nwhich makes it a very bad fit for SLAB allocators.  The culprit of the\nwasted memory is -\u003es_blockgroup_lock which can be as big as 16 KB when\nNR_CPUS \u003e\u003d 32.\n\nTo fix that, allocate -\u003es_blockgroup_lock, which fits nicely in a order 2\npage in the worst case, separately.  This shinks down struct ext3_sb_info\nenough to fit a 1 KB slab cache so now we allocate 16 KB + 1 KB instead of\n32 KB saving 15 KB of memory.\n\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f420d4dc4272fd223986762df2ad06056ddebada",
      "tree": "2ae50476e901dc5c2e5d189d44785e27234bcce9",
      "parents": [
        "ef8b646183868b2d042fa6cde0eef2a31263ff85"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Wed Jan 07 18:07:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:00 2009 -0800"
      },
      "message": "jbd: improve fsync batching\n\nThere is a flaw with the way jbd handles fsync batching.  If we fsync() a\nfile and we were not the last person to run fsync() on this fs then we\nautomatically sleep for 1 jiffie in order to wait for new writers to join\ninto the transaction before forcing the commit.  The problem with this is\nthat with really fast storage (ie a Clariion) the time it takes to commit\na transaction to disk is way faster than 1 jiffie in most cases, so\nsleeping means waiting longer with nothing to do than if we just committed\nthe transaction and kept going.  Ric Wheeler noticed this when using\nfs_mark with more than 1 thread, the throughput would plummet as he added\nmore threads.\n\nThis patch attempts to fix this problem by recording the average time in\nnanoseconds that it takes to commit a transaction to disk, and what time\nwe started the transaction.  If we run an fsync() and we have been running\nfor less time than it takes to commit the transaction to disk, we sleep\nfor the delta amount of time and then commit to disk.  We acheive\nsub-jiffie sleeping using schedule_hrtimeout.  This means that the wait\ntime is auto-tuned to the speed of the underlying disk, instead of having\nthis static timeout.  I weighted the average according to somebody\u0027s\ncomments (Andreas Dilger I think) in order to help normalize random\noutliers where we take way longer or way less time to commit than the\naverage.  I also have a min() check in there to make sure we don\u0027t sleep\nlonger than a jiffie in case our storage is super slow, this was requested\nby Andrew.\n\nI unfortunately do not have access to a Clariion, so I had to use a\nramdisk to represent a super fast array.  I tested with a SATA drive with\nbarrier\u003d1 to make sure there was no regression with local disks, I tested\nwith a 4 way multipathed Apple Xserve RAID array and of course the\nramdisk.  I ran the following command\n\nfs_mark -d /mnt/ext3-test -s 4096 -n 2000 -D 64 -t $i\n\nwhere $i was 2, 4, 8, 16 and 32.  I mkfs\u0027ed the fs each time.  Here are my\nresults\n\ntype\tthreads\t\twith patch\twithout patch\nsata\t2\t\t24.6\t\t26.3\nsata\t4\t\t49.2\t\t48.1\nsata\t8\t\t70.1\t\t67.0\nsata\t16\t\t104.0\t\t94.1\nsata\t32\t\t153.6\t\t142.7\n\nxserve\t2\t\t246.4\t\t222.0\nxserve\t4\t\t480.0\t\t440.8\nxserve\t8\t\t829.5\t\t730.8\nxserve\t16\t\t1172.7\t\t1026.9\nxserve\t32\t\t1816.3\t\t1650.5\n\nramdisk\t2\t\t2538.3\t\t1745.6\nramdisk\t4\t\t2942.3\t\t661.9\nramdisk\t8\t\t2882.5\t\t999.8\nramdisk\t16\t\t2738.7\t\t1801.9\nramdisk\t32\t\t2541.9\t\t2394.0\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Ric Wheeler \u003crwheeler@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef8b646183868b2d042fa6cde0eef2a31263ff85",
      "tree": "5f8ebd60f844fcb7b1b056d6d663151a2f5e16f9",
      "parents": [
        "0e090f1e05a563cc9acdda442767176bf1616001"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Wed Jan 07 18:07:21 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:00 2009 -0800"
      },
      "message": "ext2: tighten restrictions on inode flags\n\nAt the moment there are few restrictions on which flags may be set on\nwhich inodes.  Specifically DIRSYNC may only be set on directories and\nIMMUTABLE and APPEND may not be set on links.  Tighten that to disallow\nTOPDIR being set on non-directories and only NODUMP and NOATIME to be set\non non-regular file, non-directories.\n\nIntroduces a flags masking function which masks flags based on mode and\nuse it during inode creation and when flags are set via the ioctl to\nfacilitate future consistency.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e090f1e05a563cc9acdda442767176bf1616001",
      "tree": "61ccecf39f24a689a751e070f629775bc8aedcdc",
      "parents": [
        "18a82eb9f980b5e02cea651e4ecda26265d98933"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Wed Jan 07 18:07:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:00 2009 -0800"
      },
      "message": "ext2: don\u0027t inherit inappropriate inode flags from parent\n\nAt present BTREE/INDEX is the only flag that new ext2 inodes do NOT\ninherit from their parent.  In addition prevent the flags DIRTY, ECOMPR,\nINDEX, IMAGIC and TOPDIR from being inherited.  List inheritable flags\nexplicitly to prevent future flags from accidentally being inherited.\n\nThis fixes the TOPDIR flag inheritance bug reported at\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9866.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "18a82eb9f980b5e02cea651e4ecda26265d98933",
      "tree": "7626c16d880eed47f0eaf323f8e8e9441c84d357",
      "parents": [
        "22d613d13445de9dea6edc3289c304237eb191f6"
      ],
      "author": {
        "name": "Pekka J Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Wed Jan 07 18:07:19 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:00 2009 -0800"
      },
      "message": "ext2: allocate -\u003es_blockgroup_lock separately\n\nAs spotted by kmemtrace, struct ext2_sb_info is 17024 bytes on 64-bit\nwhich makes it a very bad fit for SLAB allocators.  The culprit of the\nwasted memory is -\u003es_blockgroup_lock which can be as big as 16 KB when\nNR_CPUS \u003e\u003d 32.\n\nTo fix that, allocate -\u003es_blockgroup_lock, which fits nicely in a order 2\npage in the worst case, separately.  This shinks down struct ext2_sb_info\nenough to fit a 1 KB slab cache so now we allocate 16 KB + 1 KB instead of\n32 KB saving 15 KB of memory.\n\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1107ba885e46964316c083d441d5dd185b6c9e49",
      "tree": "98cc3f81ad7ff554e10fc263abfb7727a438cc5a",
      "parents": [
        "d8220347da2a0639f5e1919a5af08f49cb37c24f"
      ],
      "author": {
        "name": "Alex Zeffertt",
        "email": "alex.zeffertt@eu.citrix.com",
        "time": "Wed Jan 07 18:07:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:30:59 2009 -0800"
      },
      "message": "xen: add xenfs to allow usermode \u003c-\u003e Xen interaction\n\nThe xenfs filesystem exports various interfaces to usermode.  Initially\nthis exports a file to allow usermode to interact with xenbus/xenstore.\n\nTraditionally this appeared in /proc/xen.  Rather than extending procfs,\nthis patch adds a backward-compat mountpoint on /proc/xen, and provides\na xenfs filesystem which can be mounted there.\n\nSigned-off-by: Alex Zeffertt \u003calex.zeffertt@eu.citrix.com\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5886188dc7ba9a76babcd37452f44079a9a77f71",
      "tree": "3d8e4e807c88b33299abb85e138970498f322f60",
      "parents": [
        "2b79d6962322facfd377a402730e4b381af95a40"
      ],
      "author": {
        "name": "Benjamin Krill",
        "email": "ben@codiert.org",
        "time": "Wed Jan 07 10:32:38 2009 +0100"
      },
      "committer": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Thu Jan 08 16:25:18 2009 +1100"
      },
      "message": "serial: Add driver for the Cell Network Processor serial port NWP device\n\nAdd support for the nwp serial device which is connected to a DCR bus. It\nuses the of_serial device driver to determine necessary properties from\nthe device tree.  The supported device is added as serial port number 85.\n\nNWP stands for network processor and it is part of the QPACE - Quantum\nChromodynamics Parallel Computing on the Cell Broadband Engine project.\nThe implementation is a lightweight uart implementation with the focus\nto consume as little resources as possible and it is connected to a\nDCR bus.\n\nSigned-off-by: Benjamin Krill \u003cben@codiert.org\u003e\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\n"
    },
    {
      "commit": "713404d6082fee34a829a0c6d511e4aec72d7654",
      "tree": "dccfa03988c763b0b39241181f37cdffb5b0fdcc",
      "parents": [
        "d599edcaea987e233fad808f88850f725e8a5530",
        "db43910cb42285a99f45f7e0a0a32e32d0b61dcf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 17:21:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 17:21:24 2009 -0800"
      },
      "message": "Merge branch \u0027for-2.6.29\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.29\u0027 of git://linux-nfs.org/~bfields/linux: (67 commits)\n  nfsd: get rid of NFSD_VERSION\n  nfsd: last_byte_offset\n  nfsd: delete wrong file comment from nfsd/nfs4xdr.c\n  nfsd: git rid of nfs4_cb_null_ops declaration\n  nfsd: dprint each op status in nfsd4_proc_compound\n  nfsd: add etoosmall to nfserrno\n  NFSD: FIDs need to take precedence over UUIDs\n  SUNRPC: The sunrpc server code should not be used by out-of-tree modules\n  svc: Clean up deferred requests on transport destruction\n  nfsd: fix double-locks of directory mutex\n  svc: Move kfree of deferral record to common code\n  CRED: Fix NFSD regression\n  NLM: Clean up flow of control in make_socks() function\n  NLM: Refactor make_socks() function\n  nfsd: Ensure nfsv4 calls the underlying filesystem on LOCKT\n  SUNRPC: Ensure the server closes sockets in a timely fashion\n  NFSD: Add documenting comments for nfsctl interface\n  NFSD: Replace open-coded integer with macro\n  NFSD: Fix a handful of coding style issues in write_filehandle()\n  NFSD: clean up failover sysctl function naming\n  ...\n"
    },
    {
      "commit": "b424e8d3b438e841cd1700f6433a100a5d611e4a",
      "tree": "545638d0b925de4c7f740286760767cca86cb91e",
      "parents": [
        "7c7758f99d39d529a64d4f60d22129bbf2f16d74",
        "f6dc1e5e3d4b523e1616b43beddb04e4fb1d376a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 15:41:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 15:41:01 2009 -0800"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6\n\n* \u0027linux-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: (98 commits)\n  PCI PM: Put PM callbacks in the order of execution\n  PCI PM: Run default PM callbacks for all devices using new framework\n  PCI PM: Register power state of devices during initialization\n  PCI PM: Call pci_fixup_device from legacy routines\n  PCI PM: Rearrange code in pci-driver.c\n  PCI PM: Avoid touching devices behind bridges in unknown state\n  PCI PM: Move pci_has_legacy_pm_support\n  PCI PM: Power-manage devices without drivers during suspend-resume\n  PCI PM: Add suspend counterpart of pci_reenable_device\n  PCI PM: Fix poweroff and restore callbacks\n  PCI: Use msleep instead of cpu_relax during ASPM link retraining\n  PCI: PCIe portdrv: Add kerneldoc comments to remining core funtions\n  PCI: PCIe portdrv: Rearrange code so that related things are together\n  PCI: PCIe portdrv: Fix suspend and resume of PCI Express port services\n  PCI: PCIe portdrv: Add kerneldoc comments to some core functions\n  x86/PCI: Do not use interrupt links for devices using MSI-X\n  net: sfc: Use pci_clear_master() to disable bus mastering\n  PCI: Add pci_clear_master() as opposite of pci_set_master()\n  PCI hotplug: remove redundant test in cpq hotplug\n  PCI: pciehp: cleanup register and field definitions\n  ...\n"
    },
    {
      "commit": "7c7758f99d39d529a64d4f60d22129bbf2f16d74",
      "tree": "8847b5e56812fe4c4c812cfffc78e391a91f4ebe",
      "parents": [
        "67acd8b4b7a3f1b183ae358e1dfdb8a80e170736",
        "8a70da82edc50aa7a4b54864babf2d72538ba1bb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 15:37:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 15:37:24 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (123 commits)\n  wimax/i2400m: add CREDITS and MAINTAINERS entries\n  wimax: export linux/wimax.h and linux/wimax/i2400m.h with headers_install\n  i2400m: Makefile and Kconfig\n  i2400m/SDIO: TX and RX path backends\n  i2400m/SDIO: firmware upload backend\n  i2400m/SDIO: probe/disconnect, dev init/shutdown and reset backends\n  i2400m/SDIO: header for the SDIO subdriver\n  i2400m/USB: TX and RX path backends\n  i2400m/USB: firmware upload backend\n  i2400m/USB: probe/disconnect, dev init/shutdown and reset backends\n  i2400m/USB: header for the USB bus driver\n  i2400m: debugfs controls\n  i2400m: various functions for device management\n  i2400m: RX and TX data/control paths\n  i2400m: firmware loading and bootrom initialization\n  i2400m: linkage to the networking stack\n  i2400m: Generic probe/disconnect, reset and message passing\n  i2400m: host/device procotol and core driver definitions\n  i2400m: documentation and instructions for usage\n  wimax: Makefile, Kconfig and docbook linkage for the stack\n  ...\n"
    },
    {
      "commit": "67acd8b4b7a3f1b183ae358e1dfdb8a80e170736",
      "tree": "4418034f6e83f954337a17bc6a872fa5ae3c4b5e",
      "parents": [
        "b13d3720ecd29d5044334fdbbae3432f26802bae",
        "ad160d23198193135cb2bcc75222e0816b5838c0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 15:35:47 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 15:35:47 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux-2.6-async\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux-2.6-async:\n  async: don\u0027t do the initcall stuff post boot\n  bootchart: improve output based on Dave Jones\u0027 feedback\n  async: make the final inode deletion an asynchronous event\n  fastboot: Make libata initialization even more async\n  fastboot: make the libata port scan asynchronous\n  fastboot: make scsi probes asynchronous\n  async: Asynchronous function calls to speed up kernel boot\n"
    },
    {
      "commit": "db43910cb42285a99f45f7e0a0a32e32d0b61dcf",
      "tree": "81f3d99bd8b473d3302028a0839017bdc960a77d",
      "parents": [
        "87df4de8073f922a1f643b9fa6ba0412d5529ecf"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Mon Dec 15 19:42:24 2008 +0200"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jan 07 17:38:32 2009 -0500"
      },
      "message": "nfsd: get rid of NFSD_VERSION\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "87df4de8073f922a1f643b9fa6ba0412d5529ecf",
      "tree": "8a7e5d7c5d531ac277c2e0026329f589ccdae101",
      "parents": [
        "4e65ebf08951326709817e654c149d0a94982e01"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Mon Dec 15 19:42:03 2008 +0200"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jan 07 17:38:31 2009 -0500"
      },
      "message": "nfsd: last_byte_offset\n\nrefactor the nfs4 server lock code to use last_byte_offset\nto compute the last byte covered by the lock.  Check for overflow\nso that the last byte is set to NFS4_MAX_UINT64 if offset + len\nwraps around.\n\nAlso, use NFS4_MAX_UINT64 for ~(u64)0 where appropriate.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "c6906a2cb7cc318a56f6c335a2c4a3b004dd9e04",
      "tree": "387eb7a58f56e5138040831fe931ff067cebb947",
      "parents": [
        "8903709b054a8dafe4e8c6d9a6444034d7aba36f",
        "baa91878ab9b0f1cdb7ab03b53ee2e4389245644"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 13:11:28 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 13:11:28 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes:\n  kbuild: fix typos (s/bin_shipped/bin.o_shipped/) in Documentation\n  kbuild: add a symlink to the source for separate objdirs\n  kconfig: add script to manipulate .config files on the command line\n  kbuild: reintroduce ALLSOURCE_ARCHS support for tags/cscope\n  bootchart: improve output based on Dave Jones\u0027 feedback\n  fix modules_install via NFS\n  qnx: include \u003clinux/types.h\u003e for definitions of __[us]{8,16,32,64} types\n"
    },
    {
      "commit": "8d1a0a13edecfdcb47fee3238ed4a2af2a2867f9",
      "tree": "f3ca0d2af8ec1e54a7d114c7dc2f177ae635b774",
      "parents": [
        "ede6f5aea054d3fb67c78857f7abdee602302043"
      ],
      "author": {
        "name": "Anders Larsen",
        "email": "al@alarsen.net",
        "time": "Thu Jan 01 17:17:35 2009 +0100"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Wed Jan 07 21:44:20 2009 +0100"
      },
      "message": "qnx: include \u003clinux/types.h\u003e for definitions of __[us]{8,16,32,64} types\n\nOn 2008-12-30 11:32:33, Sam Ravnborg wrote:\n\u003e We have added a few additional validation checks of the userspace headers:\n...\n\u003e 3) We should include \u003clinux/types.h\u003e and not \u003casm/types.h\u003e\n\u003e 4) If we use a __[us]{8,16,32,64} type then we must include \u003clinux/types.h\u003e\n\nSatisfy these requirements for the linux/qnx*.h headers.\n\nSigned-off-by: Anders Larsen \u003cal@alarsen.net\u003e\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "fa7b906e7fef53b6c9eb3ecb8164b0a69e9e1a68",
      "tree": "8fa745403e1506c211d00ce787d71ee647d65ea2",
      "parents": [
        "08249903ea233a79b4167395f2fb79ccd1fb5f94",
        "66c7acf61dc6b27954bb9ceb8617d447ac03734a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 11:59:27 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 11:59:27 2009 -0800"
      },
      "message": "Merge branch \u0027i2c-for-linus\u0027 of git://jdelvare.pck.nerim.net/jdelvare-2.6\n\n* \u0027i2c-for-linus\u0027 of git://jdelvare.pck.nerim.net/jdelvare-2.6:\n  i2c: Use snprintf to set adapter names\n  Input: apanel - convert to new i2c binding\n  i2c: Drop I2C_CLASS_CAM_DIGITAL\n  i2c: Drop I2C_CLASS_CAM_ANALOG and I2C_CLASS_SOUND\n  i2c: Drop I2C_CLASS_ALL\n  i2c: Get rid of remaining bus_id access\n  i2c: Replace bus_id with dev_name(), dev_set_name()\n"
    },
    {
      "commit": "08249903ea233a79b4167395f2fb79ccd1fb5f94",
      "tree": "13285b46a495b578f721bb83024dae579466e089",
      "parents": [
        "0d6326a100d7aec588d7c1da9ad77ca7cc7c5b71",
        "183b3af66eb71b5337be10d82dd177a8e3f414e1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 11:58:30 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 11:58:30 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6:\n  avr32: Move syscalls.h under arch/avr32/include/asm/\n  avr32: Define DIE_OOPS\n  avr32: Remove DMATEST from defconfigs\n  arch/avr32: Eliminate NULL test and memset after alloc_bootmem\n  avr32: data param to at32_add_device_mci() must be non-NULL\n  atmel-mci: move atmel-mci.h file to include/linux\n  avr32: Hammerhead board support\n  avr32: Allow reserving multiple pins at once\n  favr-32: Remove deprecated call\n  MIMC200: Remove deprecated call\n  avr: struct device - replace bus_id with dev_name(), dev_set_name()\n  avr32: Introducing asm/syscalls.h\n"
    },
    {
      "commit": "57c44c5f6fb0a8002feb258c1af58e1a744b1fcb",
      "tree": "978bd46ca765a88e9c101cb705bbb0bf46015643",
      "parents": [
        "76052749143d03006271cc0ce8205ad756917062",
        "5a9e67b1a19e08a82387709f325d26e07b891d27"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 11:31:52 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 11:31:52 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (24 commits)\n  trivial: chack -\u003e check typo fix in main Makefile\n  trivial: Add a space (and a comma) to a printk in 8250 driver\n  trivial: Fix misspelling of \"firmware\" in docs for ncr53c8xx/sym53c8xx\n  trivial: Fix misspelling of \"firmware\" in powerpc Makefile\n  trivial: Fix misspelling of \"firmware\" in usb.c\n  trivial: Fix misspelling of \"firmware\" in qla1280.c\n  trivial: Fix misspelling of \"firmware\" in a100u2w.c\n  trivial: Fix misspelling of \"firmware\" in megaraid.c\n  trivial: Fix misspelling of \"firmware\" in ql4_mbx.c\n  trivial: Fix misspelling of \"firmware\" in acpi_memhotplug.c\n  trivial: Fix misspelling of \"firmware\" in ipw2100.c\n  trivial: Fix misspelling of \"firmware\" in atmel.c\n  trivial: Fix misspelled firmware in Kconfig\n  trivial: fix an -\u003e a typos in documentation and comments\n  trivial: fix then -\u003e than typos in comments and documentation\n  trivial: update Jesper Juhl CREDITS entry with new email\n  trivial: fix singal -\u003e signal typo\n  trivial: Fix incorrect use of \"loose\" in event.c\n  trivial: printk: fix indentation of new_text_line declaration\n  trivial: rtc-stk17ta8: fix sparse warning\n  ...\n"
    },
    {
      "commit": "940fbf411e5fb42aee8ab7dd814b24080951dbfc",
      "tree": "7320f8e12279a1dc2b92019046f0f6f202028b1f",
      "parents": [
        "ede6f5aea054d3fb67c78857f7abdee602302043"
      ],
      "author": {
        "name": "Detlef Riekenberg",
        "email": "wine.dev@web.de",
        "time": "Wed Jan 07 10:11:44 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 11:27:12 2009 -0800"
      },
      "message": "linux/types.h: Don\u0027t depend on __GNUC__ for __le64/__be64\n\nThe typedefs for __u64 and __s64 where fixed to be available for other\ncompiler on May 2 2008 by H.  Peter Anvin (in commit edfa5cfa3dc5)\n\nAcked-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Detlef Riekenberg \u003cwine.dev@web.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "16cf0ebc35dd63f72628ba1246132a6fd17bced2",
      "tree": "502bfcaac930695eb7f4ff8d7748f913b9accb83",
      "parents": [
        "ef1bba28bfe68ef3c0488feeaabd3e8bc523130c"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Jan 05 14:50:27 2009 +0100"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:13:25 2009 -0800"
      },
      "message": "x86/PCI: Do not use interrupt links for devices using MSI-X\n\npcibios_enable_device() and pcibios_disable_device() don\u0027t handle\nIRQs for devices that have MSI enabled and it should treat the\ndevices with MSI-X enabled in the same way.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "6a479079c07211bf348ac8a79754f26bea258f26",
      "tree": "1587c0ed9446c7d0d6ab8a38d1524132e2faae35",
      "parents": [
        "b8d9cb2a2226118fd71f657c80b06b670a653022"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Tue Dec 23 03:08:29 2008 +0000"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:13:23 2009 -0800"
      },
      "message": "PCI: Add pci_clear_master() as opposite of pci_set_master()\n\nDuring an online device reset it may be useful to disable bus-mastering.\npci_disable_device() does that, and far more besides, so is not suitable\nfor an online reset.\n\nAdd pci_clear_master() which does just this.\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nReviewed-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "322162a71bd9fc4edb1b11236e7bc8aa27ccac22",
      "tree": "f5a5ea837934c8af3285157ee53f0d1d6e05cfcf",
      "parents": [
        "67f6533802fd2cc6f5b3c6355ef72bcf636d7fda"
      ],
      "author": {
        "name": "Kenji Kaneshige",
        "email": "kaneshige.kenji@jp.fujitsu.com",
        "time": "Fri Dec 19 15:19:02 2008 +0900"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:13:22 2009 -0800"
      },
      "message": "PCI: pciehp: cleanup register and field definitions\n\nClean up register definitions related to PCI Express Hot plug.\n\n  - Add register definitions into include/linux/pci_regs.h, and use\n    them instead of pciehp\u0027s locally definied register definitions.\n  - Remove pciehp\u0027s locally defined register definitions\n  - Remove unused register definitions in pciehp.\n  - Some minor cleanups.\n\nSigned-off-by: Kenji Kaneshige \u003ckaneshige.kenji@jp.fujitsu.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "db5679437a2b938c9127480a3923633721583a4f",
      "tree": "b2625345baa35490104b81fc1c7bd8ef6bb74100",
      "parents": [
        "287d19ce2e67c15e79a187b3bdcbbea1a0a51a7d"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 18 09:17:16 2008 -0800"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:13:18 2009 -0800"
      },
      "message": "PCI: add interface to set visible size of VPD\n\nThe VPD on all devices may not be 32K. Unfortunately, there is no\ngeneric way to find the size, so this adds a simple API hook\nto reset it.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "287d19ce2e67c15e79a187b3bdcbbea1a0a51a7d",
      "tree": "128d9c67557a4fe5e5e910b8ca2d50aedee31b7c",
      "parents": [
        "1120f8b8169fb2cb51219d326892d963e762edb6"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 18 09:17:16 2008 -0800"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:13:17 2009 -0800"
      },
      "message": "PCI: revise VPD access interface\n\nChange PCI VPD API which was only used by sysfs to something usable\nin drivers.\n   * move iteration over multiple words to the low level\n   * use conventional types for arguments\n   * add exportable wrapper\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "68feac87de15edfc2c700d2d81b814288c93d003",
      "tree": "97ee9f0dc3ee3728aca7d5a252eda6a1cb633430",
      "parents": [
        "e8c331e963c58b83db24b7d0e39e8c07f687dbc6"
      ],
      "author": {
        "name": "Bjorn Helgaas",
        "email": "bjorn.helgaas@hp.com",
        "time": "Tue Dec 16 21:36:55 2008 -0700"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:13:12 2009 -0800"
      },
      "message": "PCI: add pci_common_swizzle() for INTx swizzling\n\nThis patch adds pci_common_swizzle(), which swizzles INTx values all the\nway up to a root bridge.\n\nThis common implementation can replace several architecture-specific\nones.  This should someday be combined with pci_get_interrupt_pin(),\nbut I left it separate for now to make reviewing easier.\n\nSigned-off-by: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "e8c331e963c58b83db24b7d0e39e8c07f687dbc6",
      "tree": "da9e7df2441da952dc11bd732b0171d3170fa8bf",
      "parents": [
        "e046cbd6c05ee859244245d7beeac395cd0057b3"
      ],
      "author": {
        "name": "Kenji Kaneshige",
        "email": "kaneshige.kenji@jp.fujitsu.com",
        "time": "Wed Dec 17 12:09:12 2008 +0900"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:13:11 2009 -0800"
      },
      "message": "PCI hotplug: introduce functions for ACPI slot detection\n\nSome ACPI related PCI hotplug code can be shared among PCI hotplug\ndrivers. This patch introduces the following functions in\ndrivers/pci/hotplug/acpi_pcihp.c to share the code, and changes\nacpiphp and pciehp to use them.\n\n- int acpi_pci_detect_ejectable(struct pci_bus *pbus)\n  This checks if the specified PCI bus has ejectable slots.\n\n- int acpi_pci_check_ejectable(struct pci_bus *pbus, acpi_handle handle)\n  This checks if the specified handle is ejectable ACPI PCI slot. The\n  \u0027pbus\u0027 parameter is needed to check if \u0027handle\u0027 is PCI related ACPI\n  object.\n\nThis patch also introduces the following inline function in\ninclude/linux/pci-acpi.h, which is useful to get ACPI handle of the\nPCI bridge from struct pci_bus of the bridge\u0027s secondary bus.\n\n- static inline acpi_handle acpi_pci_get_bridge_handle(struct pci_bus *pbus)\n  This returns ACPI handle of the PCI bridge which generates PCI bus\n  specified by \u0027pbus\u0027.\n\nSigned-off-by: Kenji Kaneshige \u003ckaneshige.kenji@jp.fujitsu.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "fde09c6d8f92de0c9f75698a75f0989f2234c517",
      "tree": "7d01ac3c194e87897185a2bf015f6d3b472e7601",
      "parents": [
        "14add80b5120966fe0659d61815b9e9b4b68fdc5"
      ],
      "author": {
        "name": "Yu Zhao",
        "email": "yu.zhao@intel.com",
        "time": "Sat Nov 22 02:39:32 2008 +0800"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:13:01 2009 -0800"
      },
      "message": "PCI: define PCI resource names in an \u0027enum\u0027\n\nThis patch moves all definitions of the PCI resource names to an \u0027enum\u0027,\nand also replaces some hard-coded resource variables with symbol\nnames. This change eases introduction of device specific resources.\n\nReviewed-by: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nSigned-off-by: Yu Zhao \u003cyu.zhao@intel.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "14add80b5120966fe0659d61815b9e9b4b68fdc5",
      "tree": "7f803ec36d14e76fb0bc672717bd0dd3dea30a08",
      "parents": [
        "6a49d8120021897e139641062236215aac5d220e"
      ],
      "author": {
        "name": "Yu Zhao",
        "email": "yu.zhao@intel.com",
        "time": "Sat Nov 22 02:38:52 2008 +0800"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:13:00 2009 -0800"
      },
      "message": "PCI: remove unnecessary arg of pci_update_resource()\n\nThis cleanup removes unnecessary argument \u0027struct resource *res\u0027 in\npci_update_resource(), so it takes same arguments as other companion\nfunctions (pci_assign_resource(), etc.).\n\nSigned-off-by: Yu Zhao \u003cyu.zhao@intel.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "1684f5ddd4c0c754f52c78eaa2c5c69ad09fb18c",
      "tree": "1085974a81fba002bcc05cdd88a11134ec13799c",
      "parents": [
        "bebd590ca27e80ffe3129ab4f0a3124f0a340f43"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Dec 01 14:30:30 2008 -0800"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:12:57 2009 -0800"
      },
      "message": "PCI: uninline pci_ioremap_bar()\n\nIt\u0027s too large to be inlined.\n\nAcked-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "57c2cf71c12318b72ebaa5720d210476b6bac4d4",
      "tree": "ba071276800dc24d9232fd124c4678b2a86f86b5",
      "parents": [
        "12b955ff63db0b75cfc2d4939696c57b31891ec6"
      ],
      "author": {
        "name": "Bjorn Helgaas",
        "email": "bjorn.helgaas@hp.com",
        "time": "Thu Dec 11 11:24:23 2008 -0700"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:12:50 2009 -0800"
      },
      "message": "PCI: add pci_swizzle_interrupt_pin()\n\nThis patch adds pci_swizzle_interrupt_pin(), which implements the\nINTx swizzling algorithm specified in Table 9-1 of the \"PCI-to-PCI\nBridge Architecture Specification,\" revision 1.2.\n\nThere are many architecture-specific implementations of this\nswizzle that can be replaced by this common one.\n\nReviewed-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "e8de1481fd7126ee9e93d6889da6f00c05e1e019",
      "tree": "3e0e564f6aff2f8f0f66bdf37dc2eb87d6e17cde",
      "parents": [
        "23616941914917cf25b94789856b5326b68d8ee8"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Wed Oct 22 19:55:31 2008 -0700"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:12:32 2009 -0800"
      },
      "message": "resource: allow MMIO exclusivity for device drivers\n\nDevice drivers that use pci_request_regions() (and similar APIs) have a\nreasonable expectation that they are the only ones accessing their device.\nAs part of the e1000e hunt, we were afraid that some userland (X or some\nbootsplash stuff) was mapping the MMIO region that the driver thought it\nhad exclusively via /dev/mem or via various sysfs resource mappings.\n\nThis patch adds the option for device drivers to cause their reserved\nregions to the \"banned from /dev/mem use\" list, so now both kernel memory\nand device-exclusive MMIO regions are banned.\nNOTE: This is only active when CONFIG_STRICT_DEVMEM is set.\n\nIn addition to the config option, a kernel parameter iomem\u003drelaxed is\nprovided for the cases where developers want to diagnose, in the field,\ndrivers issues from userspace.\n\nReviewed-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "23616941914917cf25b94789856b5326b68d8ee8",
      "tree": "dd32448bbb06a53711d34b5e7f71dac8a07527d2",
      "parents": [
        "07ae95f988a34465bdcb384bfa73c03424fe2312"
      ],
      "author": {
        "name": "Andrew Patterson",
        "email": "andrew.patterson@hp.com",
        "time": "Mon Nov 10 15:31:10 2008 -0700"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:12:32 2009 -0800"
      },
      "message": "ACPI/PCI: remove obsolete _OSC capability support functions\n\nThe acpi_query_osc, __pci_osc_support_set, pci_osc_support_set, and\npcie_osc_support_set functions have been obsoleted in favor of setting\nthese capabilities during root bridge discovery with\npci_acpi_osc_support.  There are no longer any callers of these\nfunctions, so remove them.\n\nSigned-off-by: Andrew Patterson \u003candrew.patterson@hp.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "07ae95f988a34465bdcb384bfa73c03424fe2312",
      "tree": "4e1901b7fd2ccfdb85a92953c0010a4d3900a3f8",
      "parents": [
        "eb9188bdb9d65aeead2382ec3dd656a17ec8936d"
      ],
      "author": {
        "name": "Andrew Patterson",
        "email": "andrew.patterson@hp.com",
        "time": "Mon Nov 10 15:31:05 2008 -0700"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:12:31 2009 -0800"
      },
      "message": "ACPI/PCI: PCI MSI _OSC support capabilities called when root bridge added\n\nThe _OSC capability OSC_MSI_SUPPORT is set when the root bridge is added\nwith pci_acpi_osc_support(), so we no longer need to do it in the PCI\nMSI driver.  Also adds the function pci_msi_enabled, which returns true\nif pci\u003dnomsi is not on the kernel command-line.\n\nSigned-off-by: Andrew Patterson \u003candrew.patterson@hp.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "3e1b16002af29758b6bc9c38939d43838d9335bc",
      "tree": "6782f844e3813355280ad3367c58d90d576901f2",
      "parents": [
        "0ef5f8f6159e44b4faa997be08d1a3bcbf44ad08"
      ],
      "author": {
        "name": "Andrew Patterson",
        "email": "andrew.patterson@hp.com",
        "time": "Mon Nov 10 15:30:55 2008 -0700"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:12:29 2009 -0800"
      },
      "message": "ACPI/PCI: PCIe ASPM _OSC support capabilities called when root bridge added\n\nThe _OSC capabilities OSC_ACTIVE_STATE_PWR_SUPPORT and\nOSC_CLOCK_PWR_CAPABILITY_SUPPORT are set when the root bridge is added\nwith pci_acpi_osc_support(), so we no longer need to do it in the ASPM\ndriver.  Also add the function pcie_aspm_enabled, which returns true if\npcie_aspm\u003doff is not on the kernel command-line.\n\nSigned-off-by: Andrew Patterson \u003candrew.patterson@hp.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "0ef5f8f6159e44b4faa997be08d1a3bcbf44ad08",
      "tree": "0753c27a1eb2f5802501e60d575f01fe6edccc2f",
      "parents": [
        "990a7ac5645883a833a11b900bb6f25b65dea65b"
      ],
      "author": {
        "name": "Andrew Patterson",
        "email": "andrew.patterson@hp.com",
        "time": "Mon Nov 10 15:30:50 2008 -0700"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:12:28 2009 -0800"
      },
      "message": "ACPI/PCI: PCI extended config _OSC support called when root bridge added\n\nThe _OSC capability OSC_EXT_PCI_CONFIG_SUPPORT is set when the root\nbridge is added with pci_acpi_osc_support() if we can access PCI\nextended config space.\n\nThis adds the function pci_ext_cfg_avail which returns true if we can\naccess PCI extended config space (offset greater than 0xff). It\ncurrently only returns false if arch\u003dx86 and raw_pci_ext_ops is not set\n(which might happen if pci\u003dnommcfg is set on the kernel command-line).\n\nSigned-off-by: Andrew Patterson \u003candrew.patterson@hp.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "990a7ac5645883a833a11b900bb6f25b65dea65b",
      "tree": "8644b7da9b41069d873d2b4dbe600bc5a828347d",
      "parents": [
        "8b62091e20215730be1b94b7cd135a78a3e692ca"
      ],
      "author": {
        "name": "Andrew Patterson",
        "email": "andrew.patterson@hp.com",
        "time": "Mon Nov 10 15:30:45 2008 -0700"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:12:27 2009 -0800"
      },
      "message": "ACPI/PCI: call _OSC support during root bridge discovery\n\nAdd pci_acpi_osc_support() and call it when a PCI bridge is added.  This\nallows us to avoid having every individual PCI root bridge driver call\n_OSC support for every root bridge in their probe functions, a\nsignificant savings in boot time.\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "8b62091e20215730be1b94b7cd135a78a3e692ca",
      "tree": "7db8bdcc12b34f470c12441deaa5032a731152b9",
      "parents": [
        "d3a54014e2a94bd37b7dee5e76e03f7bc4fab49a"
      ],
      "author": {
        "name": "Andrew Patterson",
        "email": "andrew.patterson@hp.com",
        "time": "Mon Nov 10 15:30:40 2008 -0700"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:12:26 2009 -0800"
      },
      "message": "ACPI/PCI: include missing acpi.h file in pci-acpi.h.\n\nThe pci-acpi.h file will not compile without including linux/acpi.h.\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "f7b7baae6b30ff04124259ff8d7c0c0d281320e6",
      "tree": "5c380e022c8ebb89dd3d5fac7f63b5ae8d45f5c3",
      "parents": [
        "d91cdc745524a1b1ff537712a62803b8413c12d6"
      ],
      "author": {
        "name": "Sheng Yang",
        "email": "sheng@linux.intel.com",
        "time": "Tue Nov 11 17:17:46 2008 +0800"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Jan 07 11:12:24 2009 -0800"
      },
      "message": "PCI: add PCI Advanced Feature Capability defines\n\nPCI Advanced Features Capability is introduced by \"Conventional PCI\nAdvanced Caps ECN\" (can be downloaded in pcisig.com).  Add defines for\nthe various AF capabilities, including function level reset (FLR).\n\nReviewed-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nSigned-off-by: Sheng Yang \u003csheng@linux.intel.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "e30698743419d20dce03d033761f203b4d847ab0",
      "tree": "95c5844eedd59a419dae38b52c7bbbf88ea0bcaa",
      "parents": [
        "143ee2d5557c0598a97f3089eb29e8226e0e8cee"
      ],
      "author": {
        "name": "Inaky Perez-Gonzalez",
        "email": "inaky@linux.intel.com",
        "time": "Sat Dec 20 16:57:59 2008 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 07 10:00:22 2009 -0800"
      },
      "message": "wimax: export linux/wimax.h and linux/wimax/i2400m.h with headers_install\n\nThese two files are what user space can use to establish communication\nwith the WiMAX kernel API and to speak the Intel 2400m Wireless WiMAX\nconnection\u0027s control protocol.\n\nSigned-off-by: Inaky Perez-Gonzalez \u003cinaky@linux.intel.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "ea24652d253eabfb83e955e55ce032228d9d99b9",
      "tree": "9cad05e40ec16a35231afad3cb3c9d5c40f05c36",
      "parents": [
        "3e91029ae049852c153da3fc355ab255ea7e2e0a"
      ],
      "author": {
        "name": "Inaky Perez-Gonzalez",
        "email": "inaky@linux.intel.com",
        "time": "Sat Dec 20 16:57:43 2008 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 07 10:00:18 2009 -0800"
      },
      "message": "i2400m: host/device procotol and core driver definitions\n\nThe wimax/i2400m.h defines the structures and constants for the\nhost-device protocols:\n\n - boot / firmware upload protocol\n\n - general data transport protocol\n\n - control protocol\n\nIt is done in such a way that can also be used verbatim by user space.\n\ndrivers/net/wimax/i2400m.h defines all the APIs used by the core,\nbus-generic driver (i2400m) and the bus specific drivers\n(i2400m-BUSNAME). It also gives a roadmap to the driver\nimplementation.\n\ndebug-levels.h adds the core driver\u0027s debug settings.\n\nSigned-off-by: Inaky Perez-Gonzalez \u003cinaky@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "ea912f4e7f264981faf8665cfb63d46d7f948117",
      "tree": "b0bfe3d7abcee4beb935f0391b8c0180ccb56941",
      "parents": [
        "60fa9ca6cfff2be4132ea93b7dd632801ec0c817"
      ],
      "author": {
        "name": "Inaky Perez-Gonzalez",
        "email": "inaky@linux.intel.com",
        "time": "Sat Dec 20 16:57:35 2008 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 07 10:00:17 2009 -0800"
      },
      "message": "wimax: debug macros and debug settings for the WiMAX stack\n\nThis file contains a simple debug framework that is used in the stack;\nit allows the debug level to be controlled at compile-time (so the\ndebug code is optimized out) and at run-time (for what wasn\u0027t compiled\nout).\n\nThis is eventually going to be moved to use dynamic_printk(). Just\nneed to find time to do it.\n\nSigned-off-by: Inaky Perez-Gonzalez \u003cinaky@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "ace22f0881e1333d0c55ddf484e5352fe03a806a",
      "tree": "e604b974810263cfb6721fd4846bf61888b6b518",
      "parents": [
        "0d695913b0016b362a84a8bb6d6e28f8d90a70e2"
      ],
      "author": {
        "name": "Inaky Perez-Gonzalez",
        "email": "inaky@linux.intel.com",
        "time": "Sat Dec 20 16:57:33 2008 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 07 10:00:16 2009 -0800"
      },
      "message": "wimax: headers for kernel API and user space interaction\n\nDefinitions for the user/kernel API protocol through generic\nnetlink. User space can copy it verbatim and use it.\n\nKernel API definition declares the main data types and calls for the\ndrivers to integrate into the WiMAX stack. Provides usage\ndocumentation.\n\nSigned-off-by: Inaky Perez-Gonzalez \u003cinaky@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "5e07878787ad07361571150230cc3a8d522ae046",
      "tree": "5ad18b64184d84bf15d281ac1b5504aa399f295e",
      "parents": [
        "34c65d82e02147331701c7795e3144d511adf4e9"
      ],
      "author": {
        "name": "Inaky Perez-Gonzalez",
        "email": "inaky@linux.intel.com",
        "time": "Sat Dec 20 16:57:39 2008 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 07 10:00:16 2009 -0800"
      },
      "message": "debugfs: add helpers for exporting a size_t simple value\n\nIn the same spirit as debugfs_create_*(), introduce helpers for\nexporting size_t values over debugfs.\n\nThe only trick done is that the format verifier is kept at %llu\ninstead of %zu; otherwise type warnings would pop up:\n\nformat ‘%zu’ expects type ‘size_t’, but argument 2 has type ‘long long unsigned int’\n\nThere is no real way to fix this one--however, we can consider %llu\nand %zu to be compatible if we consider that we are using the same for\nvalidating in debugfs_create_{x,u}{8,16,32}().\n\nSigned-off-by: Inaky Perez-Gonzalez \u003cinaky@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "34c65d82e02147331701c7795e3144d511adf4e9",
      "tree": "2f1a39cbea44efcc0ad0a7e04addded9db66e233",
      "parents": [
        "338b67b0c1a97ca705023a8189cf41aa0828d294"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Aug 18 13:21:04 2008 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 07 10:00:14 2009 -0800"
      },
      "message": "USB: remove info() macro from usb.h\n\nUSB should not be having it\u0027s own printk macros, so remove info() and\nuse the system-wide standard of dev_info() wherever possible.\n\nNo one in the tree is using the macro, so it can now be removed.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "338b67b0c1a97ca705023a8189cf41aa0828d294",
      "tree": "696d1545368d9a98ff52191e995b4ee3a0e39bae",
      "parents": [
        "5aa637505fb8610cd2724b09fa0ab03fd6cdca63"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Aug 14 09:37:34 2008 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 07 10:00:14 2009 -0800"
      },
      "message": "USB: remove warn() macro from usb.h\n\nUSB should not be having it\u0027s own printk macros, so remove warn() and\nuse the system-wide standard of dev_warn() wherever possible.  In the\nfew places that will not work out, use a basic printk().\n\nNow that all in-tree users are gone, remove the macro.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "25ff1c316f6a763f1eefe7f8984b2d8c03888432",
      "tree": "623759675a8e2db8cbcacc665d97d874e57ab4c5",
      "parents": [
        "9ebd9616648bc0e47e7f8e1898c919305f1e6347"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Mon Dec 15 12:43:41 2008 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 07 10:00:11 2009 -0800"
      },
      "message": "USB: storage: add last-sector hacks\n\nThis patch (as1189b) adds some hacks to usb-storage for dealing with\nthe growing problems involving bad capacity values and last-sector\naccesses:\n\n\tA new flag, US_FL_CAPACITY_OK, is created to indicate that\n\tthe device is known to report its capacity correctly.  An\n\tunusual_devs entry for Linux\u0027s own File-backed Storage Gadget\n\tis added with this flag set, since g_file_storage always\n\treports the correct capacity and since the capacity need\n\tnot be even (it is determined by the size of the backing\n\tfile).\n\n\tAn entry in unusual_devs.h which has only the CAPACITY_OK\n\tflag set shouldn\u0027t prejudice libusual, since the device will\n\twork perfectly well with either usb-storage or ub.  So a\n\tnew macro, COMPLIANT_DEV, is added to let libusual know\n\tabout these entries.\n\n\tWhen a last-sector access succeeds and the total number of\n\tsectors is odd (the unexpected case, in which guessing that\n\tthe number is even might cause trouble), a WARN is triggered.\n\tThe kerneloops.org project will collect these warnings,\n\tallowing us to add CAPACITY_OK flags for the devices in\n\tquestion before implementing the default-to-even heuristic.\n\tIf users want to prevent the stack dump produced by the WARN,\n\tthey can disable the hack by adding an unusual_devs entry\n\tfor their device with the CAPACITY_OK flag.\n\n\tWhen a last-sector access fails three times in a row and\n\tneither the FIX_CAPACITY nor the CAPACITY_OK flag is set,\n\twe assume the last-sector bug is present.  We replace the\n\texisting status and sense data with values that will cause\n\tthe SCSI core to fail the access immediately rather than\n\tretry indefinitely.  This should fix the difficulties\n\tpeople have been having with Nokia phones.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    }
  ],
  "next": "856395d6e137b4e7194972cb7765f3de6a72ba61"
}
