)]}'
{
  "log": [
    {
      "commit": "04bf7e745b841619d2f14f2f8b6f2c97f1c6757e",
      "tree": "46372d66552fa2945ba8dbf1a4692d280123a66e",
      "parents": [
        "46a0fac9438764533245928b78d35fbaa5d7adf4"
      ],
      "author": {
        "name": "Will Page",
        "email": "will.page@ni.com",
        "time": "Mon Apr 06 17:32:15 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 14:36:28 2009 -0700"
      },
      "message": "8250_pci: add support for National Instruments legacy 8420 RS232 boards\n\nSigned-off-by: Will Page \u003cwill.page@ni.com\u003e\nSigned-off-by: Shawn Bohrer \u003cshawn.bohrer@ni.com\u003e\nSigned-off-by: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "46a0fac9438764533245928b78d35fbaa5d7adf4",
      "tree": "9b0bf6bde8b581eda40a80e4405644f80ba091bb",
      "parents": [
        "97ea33f9e375e4f9b3049ca861e5c91cc626c55f"
      ],
      "author": {
        "name": "Shawn Bohrer",
        "email": "shawn.bohrer@ni.com",
        "time": "Mon Apr 06 17:32:07 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 14:36:27 2009 -0700"
      },
      "message": "8250_pci: add support for National Instruments 843x RS232 devices\n\nThis implements basic support for all 843x RS232 devices, but does not\nadd DMA support.  This means that sustained data transfers at high baud\nrates may not be possible on multiple ports simultaneously.\n\nSigned-off-by: Shawn Bohrer \u003cshawn.bohrer@ni.com\u003e\nSigned-off-by: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ffa009c366e33f3eae48bba2547051fe15795f64",
      "tree": "78736a4ee7c16819830a32a313867e3a88ac6aff",
      "parents": [
        "8e320d02718d2872d52ef88a69a493e420494269",
        "46f06b72378d3187f0d12f7a60d020676bfbf332"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 14:26:05 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 14:26:05 2009 -0700"
      },
      "message": "Merge git://git.infradead.org/iommu-2.6\n\n* git://git.infradead.org/iommu-2.6:\n  drivers/pci/intr_remapping.c: include acpi.h\n  intel-iommu: Fix oops in device_to_iommu() when devices not found.\n  intel-iommu: Handle PCI domains appropriately.\n  intel-iommu: Fix device-to-iommu mapping for PCI-PCI bridges.\n  x2apic/intr-remap: decouple interrupt remapping from x2apic\n  x86, dmar: check if it\u0027s initialized before disable queue invalidation\n  intel-iommu: set compatibility format interrupt\n  Intel IOMMU Suspend/Resume Support - Interrupt Remapping\n  Intel IOMMU Suspend/Resume Support - Queued Invalidation\n  Intel IOMMU Suspend/Resume Support - DMAR\n  intel-iommu: Add for_each_iommu() and for_each_active_iommu() macros\n"
    },
    {
      "commit": "609862be074cc20e007c640fd936ffe798b41abc",
      "tree": "2ebcacf036fce1b075fe267f608b6abe3f196c67",
      "parents": [
        "12fe32e4f942ac5c71a4ab70b039fee65c0dc29d",
        "eedeeabdeeadb016b8c783e3620d06b98d0cb4e1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:37:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:37:30 2009 -0700"
      },
      "message": "Merge branch \u0027locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  lockdep: add stack dumps to asserts\n  hrtimer: fix rq-\u003elock inversion (again)\n"
    },
    {
      "commit": "12fe32e4f942ac5c71a4ab70b039fee65c0dc29d",
      "tree": "b0878e49e9fab1fd154fde1dd57057391831b668",
      "parents": [
        "a63856252d2112e7c452696037a86ceb12f47f80",
        "2121db74ba0fd2259f0e2265511684fadda9ac49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:30:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:30:00 2009 -0700"
      },
      "message": "Merge branch \u0027kmemtrace-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027kmemtrace-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  kmemtrace: trace kfree() calls with NULL or zero-length objects\n  kmemtrace: small cleanups\n  kmemtrace: restore original tracing data binary format, improve ABI\n  kmemtrace: kmemtrace_alloc() must fill type_id\n  kmemtrace: use tracepoints\n  kmemtrace, rcu: don\u0027t include unnecessary headers, allow kmemtrace w/ tracepoints\n  kmemtrace, rcu: fix rcupreempt.c data structure dependencies\n  kmemtrace, rcu: fix rcu_tree_trace.c data structure dependencies\n  kmemtrace, rcu: fix linux/rcutree.h and linux/rcuclassic.h dependencies\n  kmemtrace, mm: fix slab.h dependency problem in mm/failslab.c\n  kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_unlzma.c\n  kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_bunzip2.c\n  kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_inflate.c\n  kmemtrace, squashfs: fix slab.h dependency problem in squasfs\n  kmemtrace, befs: fix slab.h dependency problem\n  kmemtrace, security: fix linux/key.h header file dependencies\n  kmemtrace, fs: fix linux/fdtable.h header file dependencies\n  kmemtrace, fs: uninline simple_transaction_set()\n  kmemtrace, fs, security: move alloc_secdata() and free_secdata() to linux/security.h\n"
    },
    {
      "commit": "a63856252d2112e7c452696037a86ceb12f47f80",
      "tree": "b1ad03fe441349069f80e58de425b3f72af9e5b7",
      "parents": [
        "b24241a09208874d5d770bee30791daae41ad762",
        "04826f43d4f0a4d56423eb8abb9f2ec9987df5b5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:25:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:25:56 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.30\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.30\u0027 of git://linux-nfs.org/~bfields/linux: (81 commits)\n  nfsd41: define nfsd4_set_statp as noop for !CONFIG_NFSD_V4\n  nfsd41: define NFSD_DRC_SIZE_SHIFT in set_max_drc\n  nfsd41: Documentation/filesystems/nfs41-server.txt\n  nfsd41: CREATE_EXCLUSIVE4_1\n  nfsd41: SUPPATTR_EXCLCREAT attribute\n  nfsd41: support for 3-word long attribute bitmask\n  nfsd: dynamically skip encoded fattr bitmap in _nfsd4_verify\n  nfsd41: pass writable attrs mask to nfsd4_decode_fattr\n  nfsd41: provide support for minor version 1 at rpc level\n  nfsd41: control nfsv4.1 svc via /proc/fs/nfsd/versions\n  nfsd41: add OPEN4_SHARE_ACCESS_WANT nfs4_stateid bmap\n  nfsd41: access_valid\n  nfsd41: clientid handling\n  nfsd41: check encode size for sessions maxresponse cached\n  nfsd41: stateid handling\n  nfsd: pass nfsd4_compound_state* to nfs4_preprocess_{state,seq}id_op\n  nfsd41: destroy_session operation\n  nfsd41: non-page DRC for solo sequence responses\n  nfsd41: Add a create session replay cache\n  nfsd41: create_session operation\n  ...\n"
    },
    {
      "commit": "b24241a09208874d5d770bee30791daae41ad762",
      "tree": "7fbfe7905cc449a2593527b4510f15f0e5cfb392",
      "parents": [
        "22eb5aa6c7940861f9603581665b9d9a1c60be30",
        "abe213d7f6fb87f48f4324320733f666db1bc11b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:25:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:25:27 2009 -0700"
      },
      "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: Delete unused i2c-algo-sgi helper module\n  i2c: Delete many unused driver IDs\n  i2c: Deprecate client_register and client_unregister methods\n"
    },
    {
      "commit": "3cd69271f86770499425c7cea2902512ba936a75",
      "tree": "5b1bbd7ae199afcf4e2f283c95c72be03013e069",
      "parents": [
        "1aa2a7cc6fd7b5c86681a6ae9dfd1072c261a435",
        "67a32ec750109fdfc7cba311145a18d543521822"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:22:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:22:45 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.o-hand.com/linux-rpurdie-leds\n\n* \u0027for-linus\u0027 of git://git.o-hand.com/linux-rpurdie-leds:\n  leds: introduce lp5521 led driver\n  leds: just ignore invalid GPIOs in leds-gpio\n  leds: Fix \u0026\u0026/|| confusion in leds-pca9532.c\n  leds: move h1940-leds\u0027s probe function to .devinit.text\n  leds: remove an unnecessary \"goto\" on drivers/leds/leds-s3c24.c\n  leds: add BD2802GU LED driver\n  leds: remove experimental flag from leds-clevo-mail\n  leds: Prevent multiple LED triggers with the same name\n  leds: Add gpio-led trigger\n  leds: Add rb532 LED driver for the User LED\n  leds: Add suspend/resume state flags to leds-gpio\n  leds: simple driver for pwm driven LEDs\n  leds: Fix leds-gpio driver multiple module_init/exit usage\n  leds: Add dac124s085 driver\n  leds: allow led-drivers to use a variable range of brightness values\n  leds: Add openfirmware platform device support\n"
    },
    {
      "commit": "04826f43d4f0a4d56423eb8abb9f2ec9987df5b5",
      "tree": "df7248108f29ef3c19e3153e2244ac381cf451be",
      "parents": [
        "f0ad670d7061efad138df19aefe569263c4ea37b"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Mon Apr 06 12:00:49 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Apr 06 09:48:20 2009 -0700"
      },
      "message": "nfsd41: define nfsd4_set_statp as noop for !CONFIG_NFSD_V4\n\nFixes following modpost error:\nERROR: \"nfsd4_set_statp\" [fs/nfsd/nfsd.ko] undefined!\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "f0ad670d7061efad138df19aefe569263c4ea37b",
      "tree": "d68d7a2deb01814aa5c8e1d32b867010a3284bd2",
      "parents": [
        "3ef1728898f0285c13aa6901f412b52835e23578"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Mon Apr 06 12:00:36 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Apr 06 09:17:53 2009 -0700"
      },
      "message": "nfsd41: define NFSD_DRC_SIZE_SHIFT in set_max_drc\n\nFixes the following compiler error:\nfs/nfsd/nfssvc.c: In function \u0027set_max_drc\u0027:\nfs/nfsd/nfssvc.c:240: error: \u0027NFSD_DRC_SIZE_SHIFT\u0027 undeclared\n\nCONFIG_NFSD_V4 is not set\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "abe213d7f6fb87f48f4324320733f666db1bc11b",
      "tree": "c4666bf63f34cdfe3f97e5a80cebd5c2eb5b5119",
      "parents": [
        "7c8ad4aff0699197469327d0e50d1e48f2ccb39b"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Apr 06 18:12:25 2009 +0200"
      },
      "committer": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Apr 06 18:12:25 2009 +0200"
      },
      "message": "i2c: Delete unused i2c-algo-sgi helper module\n\nThe i2c-algo-sgi code was merged into the vino driver, so we can\ndelete it now.\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\n"
    },
    {
      "commit": "7c8ad4aff0699197469327d0e50d1e48f2ccb39b",
      "tree": "76a51c0f3ee1d61b2f0cc6b976b18dcafc1847cb",
      "parents": [
        "e3ee703366da3a4ce80f24b47a5df56cd816c5d6"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Apr 06 18:12:25 2009 +0200"
      },
      "committer": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Apr 06 18:12:25 2009 +0200"
      },
      "message": "i2c: Delete many unused driver IDs\n\nDelete many unused I2C driver IDs. We should be able to get rid of\ni2c_driver.id pretty soon now.\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\n"
    },
    {
      "commit": "e3ee703366da3a4ce80f24b47a5df56cd816c5d6",
      "tree": "f3227fac0636bfc6fb4cfb01bb1b75ee42f50235",
      "parents": [
        "0221c81b1b8eb0cbb6b30a0ced52ead32d2b4e4c"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Apr 06 18:12:24 2009 +0200"
      },
      "committer": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Apr 06 18:12:24 2009 +0200"
      },
      "message": "i2c: Deprecate client_register and client_unregister methods\n\nThe new i2c binding model makes the client_register and\nclient_unregister methods of struct i2c_adapter useless, so we can\nremove them with the rest of the legacy model.\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\n"
    },
    {
      "commit": "0b56129be72c38179697b7441aacbe133d515ff9",
      "tree": "7f13b977bc999fb3d4904b8196e362236c5a5c77",
      "parents": [
        "95dc5768c9e9ce207319e17bcf7e28288c671d02"
      ],
      "author": {
        "name": "Kim Kyuwon",
        "email": "chammoru@gmail.com",
        "time": "Wed Mar 04 11:59:29 2009 -0800"
      },
      "committer": {
        "name": "Richard Purdie",
        "email": "rpurdie@linux.intel.com",
        "time": "Mon Apr 06 16:06:26 2009 +0100"
      },
      "message": "leds: add BD2802GU LED driver\n\nROHM BD2802GU is a RGB LED controller attached to i2c bus and specifically\nengineered for decoration purposes.  This RGB controller incorporates\nlighting patterns and illuminates.\n\nThis driver is designed to minimize power consumption, so when there is no\nemitting LED, it enters to reset state.  And because the BD2802GU has lots\nof features that can\u0027t be covered by the current LED framework, it\nprovides Advanced Configuration Function(ADF) mode, so that user\napplications can set registers of BD2802GU directly.\n\nHere are basic usage examples :\n; to turn on LED (not blink)\n$ echo 1 \u003e /sys/class/leds/led1_R/brightness\n; to blink LED\n$ echo timer \u003e /sys/class/leds/led1_R/trigger\n$ echo 1 \u003e /sys/class/leds/led1_R/delay_on\n$ echo 1 \u003e /sys/class/leds/led1_R/delay_off\n; to turn off LED\n$ echo 0 \u003e /sys/class/leds/led1_R/brightness\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Kim Kyuwon \u003cchammoru@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Richard Purdie \u003crpurdie@linux.intel.com\u003e\n"
    },
    {
      "commit": "defb512d2576992c63ba1c18c24eea31cfeaa26e",
      "tree": "eb2ae7031d62073d452d55192167e66767e99faa",
      "parents": [
        "41c42ff5dbe29b7b826e6736f960959c76e7acf0"
      ],
      "author": {
        "name": "Richard Purdie",
        "email": "rpurdie@linux.intel.com",
        "time": "Tue Feb 17 15:04:07 2009 +0000"
      },
      "committer": {
        "name": "Richard Purdie",
        "email": "rpurdie@linux.intel.com",
        "time": "Mon Apr 06 16:06:26 2009 +0100"
      },
      "message": "leds: Add suspend/resume state flags to leds-gpio\n\nAdd an option to preserve LED state when suspending/resuming to the LED\ngpio driver. Based on a suggestion from Robert Jarzmik.\n\nTested-by: Robert Jarzmik \u003crobert.jarzmik@free.fr\u003e\nSigned-off-by: Richard Purdie \u003crpurdie@linux.intel.com\u003e\n"
    },
    {
      "commit": "41c42ff5dbe29b7b826e6736f960959c76e7acf0",
      "tree": "c405b8e5e266994fbf81d7610cf8498215e0baff",
      "parents": [
        "b2bdc3e7130001804f27e7c1254930143119f435"
      ],
      "author": {
        "name": "Luotao Fu",
        "email": "l.fu@pengutronix.de",
        "time": "Wed Feb 11 13:24:40 2009 -0800"
      },
      "committer": {
        "name": "Richard Purdie",
        "email": "rpurdie@linux.intel.com",
        "time": "Mon Apr 06 16:06:26 2009 +0100"
      },
      "message": "leds: simple driver for pwm driven LEDs\n\nAdd a simple driver for pwm driver LEDs.  pwm_id and period can be defined\nin board file.  It is developed for pxa, however it is probably generic\nenough to be used on other platforms with pwm.\n\nSigned-off-by: Luotao Fu \u003cl.fu@pengutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Richard Purdie \u003crpurdie@linux.intel.com\u003e\n"
    },
    {
      "commit": "1bd465e6b0e2b559db47420fea686507a01cfab0",
      "tree": "623c7a906e4ce117873a33f5b1717e150d5f9e59",
      "parents": [
        "a7d878af94b223013a48078e0c8c0a654c24a057"
      ],
      "author": {
        "name": "Guennadi Liakhovetski",
        "email": "lg@denx.de",
        "time": "Sat Jan 10 18:54:39 2009 +0000"
      },
      "committer": {
        "name": "Richard Purdie",
        "email": "rpurdie@linux.intel.com",
        "time": "Mon Apr 06 16:06:25 2009 +0100"
      },
      "message": "leds: allow led-drivers to use a variable range of brightness values\n\nThis patch allows drivers to override the default maximum brightness value\nof 255.  We take care to preserve backwards-compatibility as much as\npossible, so that user-space ABI doesn\u0027t change for existing drivers.\nLED trigger code has also been updated to use the per-LED maximum.\n\nSigned-off-by: Guennadi Liakhovetski \u003clg@denx.de\u003e\nSigned-off-by: Richard Purdie \u003crpurdie@linux.intel.com\u003e\n"
    },
    {
      "commit": "aeb6fafb8fa53266d70ca7474fcda2bdaf96524a",
      "tree": "ebe8e0c616a9dbfdfe5184b64d0150ea02d3d1b2",
      "parents": [
        "644b2d99b7a8677a56909a7b1fde31677eba4471"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 06 14:48:07 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 08:04:54 2009 -0700"
      },
      "message": "block: Add flag for telling the IO schedulers NOT to anticipate more IO\n\nBy default, CFQ will anticipate more IO from a given io context if the\npreviously completed IO was sync. This used to be fine, since the only\nsync IO was reads and O_DIRECT writes. But with more \"normal\" sync writes\nbeing used now, we don\u0027t want to anticipate for those.\n\nAdd a bio/request flag that informs the IO scheduler that this is a sync\nrequest that we should not idle for. Introduce WRITE_ODIRECT specifically\nfor O_DIRECT writes, and make sure that the other sync writes set this\nflag.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1f242524c3c1f5d40f1c9c343427e34d1aadd6e",
      "tree": "53d085bd25792ab45dafbd4ab1dc537c6ab8e467",
      "parents": [
        "1faa16d22877f4839bd433547d770c676d1d964c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 06 14:48:02 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 08:04:53 2009 -0700"
      },
      "message": "Add WRITE_SYNC_PLUG and SWRITE_SYNC_PLUG\n\n(S)WRITE_SYNC always unplugs the device right after IO submission.\nSometimes we want to build up a queue before doing so, so add\nvariants that explicitly DON\u0027T unplug the queue. The caller must\nthen do that after submitting all the IO.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1faa16d22877f4839bd433547d770c676d1d964c",
      "tree": "9a0d50be1ef0358c1f53d7107413100904e7d526",
      "parents": [
        "0221c81b1b8eb0cbb6b30a0ced52ead32d2b4e4c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 06 14:48:01 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 08:04:53 2009 -0700"
      },
      "message": "block: change the request allocation/congestion logic to be sync/async based\n\nThis makes sure that we never wait on async IO for sync requests, instead\nof doing the split on writes vs reads.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "48f286a28fe13fcbc510720fcffb872a184b51dd",
      "tree": "f50d868589138628c04dd5600a029ef80fa21da2",
      "parents": [
        "ea431793f198e26d1553f36ed8b5a830b531eee4",
        "fa15ce8ad59e9653d50b8596596cb02d3566d4aa"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:38:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:38:37 2009 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.o-hand.com/linux-mfd\n\n* \u0027for-next\u0027 of git://git.o-hand.com/linux-mfd:\n  mfd: fix da903x warning\n  mfd: fix MAINTAINERS entry\n  mfd: Use the value of the final spin when reading the AUXADC\n  mfd: Storage class should be before const qualifier\n  mfd: PASIC3: supply clock_rate to DS1WM via driver_data\n  mfd: remove DS1WM clock handling\n  mfd: remove unused PASIC3 bus_shift field\n  pxa/magician: remove deprecated .bus_shift from PASIC3 platform_data\n  mfd: convert PASIC3 to use MFD core\n  mfd: convert DS1WM to use MFD core\n  mfd: Support active high IRQs on WM835x\n  mfd: Use bulk read to fill WM8350 register cache\n  mfd: remove duplicated #include from pcf50633\n"
    },
    {
      "commit": "32fb6c17566ec66de87324a834c7776f40e35e78",
      "tree": "87b8ed5d66495536fbb452255c3eacd1cfb0c43a",
      "parents": [
        "45e36c1666aa6c8b0c538abcf984b336184d8c3f",
        "7ec0a7290797f57b780f792d12f4bcc19c83aa4f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:16:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:16:25 2009 -0700"
      },
      "message": "Merge branch \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6\n\n* \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (140 commits)\n  ACPI: processor: use .notify method instead of installing handler directly\n  ACPI: button: use .notify method instead of installing handler directly\n  ACPI: support acpi_device_ops .notify methods\n  toshiba-acpi: remove MAINTAINERS entry\n  ACPI: battery: asynchronous init\n  acer-wmi: Update copyright notice \u0026 documentation\n  acer-wmi: Cleanup the failure cleanup handling\n  acer-wmi: Blacklist Acer Aspire One\n  video: build fix\n  thinkpad-acpi: rework brightness support\n  thinkpad-acpi: enhanced debugging messages for the fan subdriver\n  thinkpad-acpi: enhanced debugging messages for the hotkey subdriver\n  thinkpad-acpi: enhanced debugging messages for rfkill subdrivers\n  thinkpad-acpi: restrict access to some firmware LEDs\n  thinkpad-acpi: remove HKEY disable functionality\n  thinkpad-acpi: add new debug helpers and warn of deprecated atts\n  thinkpad-acpi: add missing log levels\n  thinkpad-acpi: cleanup debug helpers\n  thinkpad-acpi: documentation cleanup\n  thinkpad-acpi: drop ibm-acpi alias\n  ...\n"
    },
    {
      "commit": "3516c6a8dc0b1153c611c4cf0dc4a51631f052bb",
      "tree": "c54a5fc916cbe73e43dee20902642f367f44a551",
      "parents": [
        "714f83d5d9f7c785f622259dad1f4fad12d64664",
        "ba0e1ebb7ea0616eebc29d2077355bacea62a9d8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:06:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:06:45 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: (714 commits)\n  Staging: sxg: slicoss: Specify the license for Sahara SXG and Slicoss drivers\n  Staging: serqt_usb: fix build due to proc tty changes\n  Staging: serqt_usb: fix checkpatch errors\n  Staging: serqt_usb: add TODO file\n  Staging: serqt_usb: Lindent the code\n  Staging: add USB serial Quatech driver\n  staging: document that the wifi staging drivers a bit better\n  Staging: echo cleanup\n  Staging: BUG to BUG_ON changes\n  Staging: remove some pointless conditionals before kfree_skb()\n  Staging: line6: fix build error, select SND_RAWMIDI\n  Staging: line6: fix checkpatch errors in variax.c\n  Staging: line6: fix checkpatch errors in toneport.c\n  Staging: line6: fix checkpatch errors in pcm.c\n  Staging: line6: fix checkpatch errors in midibuf.c\n  Staging: line6: fix checkpatch errors in midi.c\n  Staging: line6: fix checkpatch errors in dumprequest.c\n  Staging: line6: fix checkpatch errors in driver.c\n  Staging: line6: fix checkpatch errors in audio.c\n  Staging: line6: fix checkpatch errors in pod.c\n  ...\n"
    },
    {
      "commit": "714f83d5d9f7c785f622259dad1f4fad12d64664",
      "tree": "20563541ae438e11d686b4d629074eb002a481b7",
      "parents": [
        "8901e7ffc2fa78ede7ce9826dbad68a3a25dc2dc",
        "645dae969c3b8651c5bc7c54a1835ec03820f85f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:04:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:04:19 2009 -0700"
      },
      "message": "Merge branch \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (413 commits)\n  tracing, net: fix net tree and tracing tree merge interaction\n  tracing, powerpc: fix powerpc tree and tracing tree interaction\n  ring-buffer: do not remove reader page from list on ring buffer free\n  function-graph: allow unregistering twice\n  trace: make argument \u0027mem\u0027 of trace_seq_putmem() const\n  tracing: add missing \u0027extern\u0027 keywords to trace_output.h\n  tracing: provide trace_seq_reserve()\n  blktrace: print out BLK_TN_MESSAGE properly\n  blktrace: extract duplidate code\n  blktrace: fix memory leak when freeing struct blk_io_trace\n  blktrace: fix blk_probes_ref chaos\n  blktrace: make classic output more classic\n  blktrace: fix off-by-one bug\n  blktrace: fix the original blktrace\n  blktrace: fix a race when creating blk_tree_root in debugfs\n  blktrace: fix timestamp in binary output\n  tracing, Text Edit Lock: cleanup\n  tracing: filter fix for TRACE_EVENT_FORMAT events\n  ftrace: Using FTRACE_WARN_ON() to check \"freed record\" in ftrace_release()\n  x86: kretprobe-booster interrupt emulation code fix\n  ...\n\nFix up trivial conflicts in\n arch/parisc/include/asm/ftrace.h\n include/linux/memory.h\n kernel/extable.c\n kernel/module.c\n"
    },
    {
      "commit": "90975ef71246c5c688ead04e8ff6f36dc92d28b3",
      "tree": "eda44b2efe91509719b0e62219c2efec13a9e762",
      "parents": [
        "cab4e4c43f92582a2bfc026137b3d8a175bd0360",
        "558f6ab9106e6be701acb0257e7171df1bbccf04"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:33:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:33:07 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask: (36 commits)\n  cpumask: remove cpumask allocation from idle_balance, fix\n  numa, cpumask: move numa_node_id default implementation to topology.h, fix\n  cpumask: remove cpumask allocation from idle_balance\n  x86: cpumask: x86 mmio-mod.c use cpumask_var_t for downed_cpus\n  x86: cpumask: update 32-bit APM not to mug current-\u003ecpus_allowed\n  x86: microcode: cleanup\n  x86: cpumask: use work_on_cpu in arch/x86/kernel/microcode_core.c\n  cpumask: fix CONFIG_CPUMASK_OFFSTACK\u003dy cpu hotunplug crash\n  numa, cpumask: move numa_node_id default implementation to topology.h\n  cpumask: convert node_to_cpumask_map[] to cpumask_var_t\n  cpumask: remove x86 cpumask_t uses.\n  cpumask: use cpumask_var_t in uv_flush_tlb_others.\n  cpumask: remove cpumask_t assignment from vector_allocation_domain()\n  cpumask: make Xen use the new operators.\n  cpumask: clean up summit\u0027s send_IPI functions\n  cpumask: use new cpumask functions throughout x86\n  x86: unify cpu_callin_mask/cpu_callout_mask/cpu_initialized_mask/cpu_sibling_setup_mask\n  cpumask: convert struct cpuinfo_x86\u0027s llc_shared_map to cpumask_var_t\n  cpumask: convert node_to_cpumask_map[] to cpumask_var_t\n  x86: unify 32 and 64-bit node_to_cpumask_map\n  ...\n"
    },
    {
      "commit": "cab4e4c43f92582a2bfc026137b3d8a175bd0360",
      "tree": "2f0e8fbc2e7d2d0cd6f1658a5e084a53b1e83a2e",
      "parents": [
        "5412b5399e095730008a14f2107331b2123733e4",
        "49502677e11079c2e3e01867c922a894ce06a8be"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:30:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:30:21 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-module-and-param\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-module-and-param:\n  module: use strstarts()\n  strstarts: helper function for !strncmp(str, prefix, strlen(prefix))\n  arm: allow usage of string functions in linux/string.h\n  module: don\u0027t use stop_machine on module load\n  module: create a request_module_nowait()\n  module: include other structures in module version check\n  module: remove the SHF_ALLOC flag on the __versions section.\n  module: clarify the force-loading taint message.\n  module: Export symbols needed for Ksplice\n  Ksplice: Add functions for walking kallsyms symbols\n  module: remove module_text_address()\n  module: __module_address\n  module: Make find_symbol return a struct kernel_symbol\n  kernel/module.c: fix an unused goto label\n  param: fix charp parameters set via sysfs\n\nFix trivial conflicts in kernel/extable.c manually.\n"
    },
    {
      "commit": "e4c393fd551654179c46b65e4a70ea20d831c783",
      "tree": "087c5c1f514a2ffeb75c925545e584fb269bea3a",
      "parents": [
        "0a053e8c71d666daf30da2d407147b1293923d8b",
        "38a6ed3ed8e108b662f4016a1ebf068dcf4c1ef4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:23:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:23:25 2009 -0700"
      },
      "message": "Merge branch \u0027printk-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027printk-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  printk: correct the behavior of printk_timed_ratelimit()\n  vsprintf: unify the format decoding layer for its 3 users, cleanup\n  fix regression from \"vsprintf: unify the format decoding layer for its 3 users\"\n  vsprintf: fix bug in negative value printing\n  vsprintf: unify the format decoding layer for its 3 users\n  vsprintf: add binary printf\n  printk: introduce printk_once()\n\nFix trivial conflicts (printk_once vs log_buf_kexec_setup() added near\neach other) in include/linux/kernel.h.\n"
    },
    {
      "commit": "478c6a43fcbc6c11609f8cee7c7b57223907754f",
      "tree": "a7f7952099da60d33032aed6de9c0c56c9f8779e",
      "parents": [
        "8a3f257c704e02aee9869decd069a806b45be3f1",
        "6bb597507f9839b13498781e481f5458aea33620"
      ],
      "author": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 02:14:15 2009 -0400"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 02:14:15 2009 -0400"
      },
      "message": "Merge branch \u0027linus\u0027 into release\n\nConflicts:\n\tarch/x86/kernel/cpu/cpufreq/longhaul.c\n\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "33526a53600ac887d100e3c9b4be3637ac8ae3a5",
      "tree": "646cb10e5f02bbbd913eafe9dbc1cfa80166f20e",
      "parents": [
        "47ae106d3f37e1fd715975eaf8130e20e171cf52",
        "786c221a37d3931189d9c9421f63dec92f4d698b"
      ],
      "author": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:51:51 2009 -0400"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:51:51 2009 -0400"
      },
      "message": "Merge branch \u0027x2apic\u0027 into release\n"
    },
    {
      "commit": "7c27fd19b6d985957424348361afa066ff4c74d8",
      "tree": "276063bee8ebb64088e274fd152d0c40e6573372",
      "parents": [
        "336d63b8a3cadc1c678f4b16d6105633c7f6af75",
        "16dd55f309cf69a648ca3b1fc04b3b6f079c8be0"
      ],
      "author": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:42:14 2009 -0400"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:42:14 2009 -0400"
      },
      "message": "Merge branch \u0027sony-laptop\u0027 into release\n"
    },
    {
      "commit": "3266d63c0684138f4900d4e5c6fbfab59e054afc",
      "tree": "83b67cc2dca6dfb25e81ff21716fdd4c56b39623",
      "parents": [
        "4926a236396ffc82be004cc89223a7f2747a44dc",
        "7faa144a518c456e2057918f030f50100144ccc6"
      ],
      "author": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:39:26 2009 -0400"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:39:26 2009 -0400"
      },
      "message": "Merge branch \u0027battery\u0027 into release\n"
    },
    {
      "commit": "4f3bff70a64b105921dac8630bc4381567b21ebd",
      "tree": "2601d581e21c4ca9392bbf85dfb981a2181ecba6",
      "parents": [
        "2ddb9f17ba026122b53b34fb4182ece91e24cf92",
        "03a971a2899886006f19f3495973bbd646d8bdae"
      ],
      "author": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:39:12 2009 -0400"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:39:12 2009 -0400"
      },
      "message": "Merge branch \u0027thermal\u0027 into release\n"
    },
    {
      "commit": "7d33ccbeecd8393cc690cf9a71008236cdd7cc2c",
      "tree": "93b0356d89abf9ffa1c90da3a9b2e30b34074089",
      "parents": [
        "b72019dbd126e60bb5f9f350f76127b1527facba"
      ],
      "author": {
        "name": "Philipp Zabel",
        "email": "philipp.zabel@gmail.com",
        "time": "Tue Feb 17 10:09:19 2009 +0100"
      },
      "committer": {
        "name": "Samuel Ortiz",
        "email": "samuel@sortiz.org",
        "time": "Sun Apr 05 00:32:22 2009 +0200"
      },
      "message": "mfd: remove DS1WM clock handling\n\nThis driver requests a clock that usually is supplied by the MFD in which\nthe DS1WM is contained. Currently, it is impossible for a MFD to register\ntheir clocks with the generic clock API due to different implementations\nacross architectures.\nFor now, this patch removes the clock handling from DS1WM altogether,\ntrusting that the MFD enable/disable functions will switch the clock if\nneeded. The clock rate is obtained from a new parameter in driver_data.\n\nSigned-off-by: Philipp Zabel \u003cphilipp.zabel@gmail.com\u003e\nSigned-off-by: Samuel Ortiz \u003csameo@openedhand.com\u003e\n"
    },
    {
      "commit": "b72019dbd126e60bb5f9f350f76127b1527facba",
      "tree": "140b56be03f02542190e4d668021d714bfa50457",
      "parents": [
        "0ef2067d0fdb0572bd0df288d1d32e27c929d824"
      ],
      "author": {
        "name": "Philipp Zabel",
        "email": "philipp.zabel@gmail.com",
        "time": "Tue Feb 17 10:06:52 2009 +0100"
      },
      "committer": {
        "name": "Samuel Ortiz",
        "email": "samuel@sortiz.org",
        "time": "Sun Apr 05 00:32:22 2009 +0200"
      },
      "message": "mfd: remove unused PASIC3 bus_shift field\n\nRemoves the now-unused bus_shift field from pasic3_platform_data.\n\nSigned-off-by: Philipp Zabel \u003cphilipp.zabel@gmail.com\u003e\nSigned-off-by: Samuel Ortiz \u003csameo@openedhand.com\u003e\n"
    },
    {
      "commit": "a23a175795cdb202619ac176129b2f0c2a5c9456",
      "tree": "d3b03c863d501a107eaefffeb733179b19315327",
      "parents": [
        "3206450355100eae8e033645318b95bb60f1faff"
      ],
      "author": {
        "name": "Philipp Zabel",
        "email": "philipp.zabel@gmail.com",
        "time": "Tue Feb 17 10:06:41 2009 +0100"
      },
      "committer": {
        "name": "Samuel Ortiz",
        "email": "samuel@sortiz.org",
        "time": "Sun Apr 05 00:32:20 2009 +0200"
      },
      "message": "mfd: convert DS1WM to use MFD core\n\nThis patch converts the DS1WM driver into an MFD cell. It also\ncalculates the bus_shift parameter from the memory resource size.\n\nSigned-off-by: Philipp Zabel \u003cphilipp.zabel@gmail.com\u003e\nSigned-off-by: Samuel Ortiz \u003csameo@openedhand.com\u003e\n"
    },
    {
      "commit": "3206450355100eae8e033645318b95bb60f1faff",
      "tree": "c24ba036ef75df55dbbe8ad41f88a29efa955c09",
      "parents": [
        "9dfd338198bec67ebc82ed363078f9d8aa74ec3e"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Fri Feb 06 15:27:13 2009 +0100"
      },
      "committer": {
        "name": "Samuel Ortiz",
        "email": "samuel@sortiz.org",
        "time": "Sun Apr 05 00:32:20 2009 +0200"
      },
      "message": "mfd: Support active high IRQs on WM835x\n\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Samuel Ortiz \u003csameo@openedhand.com\u003e\n"
    },
    {
      "commit": "601cc11d054ae4b5e9b5babec3d8e4667a2cb9b5",
      "tree": "725ec3422b4fe50267915c1d5b80c49712ffff75",
      "parents": [
        "6bb597507f9839b13498781e481f5458aea33620"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 08:03:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 04 14:20:34 2009 -0700"
      },
      "message": "Make non-compat preadv/pwritev use native register size\n\nInstead of always splitting the file offset into 32-bit \u0027high\u0027 and \u0027low\u0027\nparts, just split them into the largest natural word-size - which in C\nterms is \u0027unsigned long\u0027.\n\nThis allows 64-bit architectures to avoid the unnecessary 32-bit\nshifting and masking for native format (while the compat interfaces will\nobviously always have to do it).\n\nThis also changes the order of \u0027high\u0027 and \u0027low\u0027 to be \"low first\".  Why?\nBecause when we have it like this, the 64-bit system calls now don\u0027t use\nthe \"pos_high\" argument at all, and it makes more sense for the native\nsystem call to simply match the user-mode prototype.\n\nThis results in a much more natural calling convention, and allows the\ncompiler to generate much more straightforward code.  On x86-64, we now\ngenerate\n\n        testq   %rcx, %rcx      # pos_l\n        js      .L122   #,\n        movq    %rcx, -48(%rbp) # pos_l, pos\n\nfrom the C source\n\n        loff_t pos \u003d pos_from_hilo(pos_h, pos_l);\n\t...\n        if (pos \u003c 0)\n                return -EINVAL;\n\nand the \u0027pos_h\u0027 register isn\u0027t even touched.  It used to generate code\nlike\n\n        mov     %r8d, %r8d      # pos_low, pos_low\n        salq    $32, %rcx       #, tmp71\n        movq    %r8, %rax       # pos_low, pos.386\n        orq     %rcx, %rax      # tmp71, pos.386\n        js      .L122   #,\n        movq    %rax, -48(%rbp) # pos.386, pos\n\nwhich isn\u0027t _that_ horrible, but it does show how the natural word size\nis just a more sensible interface (same arguments will hold in the user\nlevel glibc wrapper function, of course, so the kernel side is just half\nof the equation!)\n\nNote: in all cases the user code wrapper can again be the same. You can\njust do\n\n\t#define HALF_BITS (sizeof(unsigned long)*4)\n\t__syscall(PWRITEV, fd, iov, count, offset, (offset \u003e\u003e HALF_BITS) \u003e\u003e HALF_BITS);\n\nor something like that.  That way the user mode wrapper will also be\nnicely passing in a zero (it won\u0027t actually have to do the shifts, the\ncompiler will understand what is going on) for the last argument.\n\nAnd that is a good idea, even if nobody will necessarily ever care: if\nwe ever do move to a 128-bit lloff_t, this particular system call might\nbe left alone.  Of course, that will be the least of our worries if we\nreally ever need to care, so this may not be worth really caring about.\n\n[ Fixed for lost \u0027loff_t\u0027 cast noticed by Andrew Morton ]\n\nAcked-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: linux-api@vger.kernel.org\nCc: linux-arch@vger.kernel.org\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "276dbf997043cbf38f0087624e0f9c51742c8885",
      "tree": "eface2519a6ad4c25c2864ee1ee69361ea3f594c",
      "parents": [
        "924b6231edfaf1e764ffb4f97ea382bf4facff58"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Sat Apr 04 01:45:37 2009 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Sat Apr 04 10:43:31 2009 +0100"
      },
      "message": "intel-iommu: Handle PCI domains appropriately.\n\nWe were comparing {bus,devfn} and assuming that a match meant it was the\nsame device. It doesn\u0027t -- the same {bus,devfn} can exist in\nmultiple PCI domains. Include domain number in device identification\n(and call it \u0027segment\u0027 in most places, because there\u0027s already a lot of\nreferences to \u0027domain\u0027 which means something else, and this code is\ninfected with ACPI thinking already).\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "79fb54abd285b442e1f30f851902f3ddf58e7704",
      "tree": "93c8278368e7f6328e1cfa695ce96d5c95f3e338",
      "parents": [
        "8c18f2052e756e7d5dea712fc6e7ed70c00e8a39"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Fri Apr 03 08:29:17 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:23 2009 -0700"
      },
      "message": "nfsd41: CREATE_EXCLUSIVE4_1\n\nImplement the CREATE_EXCLUSIVE4_1 open mode conforming to\nhttp://tools.ietf.org/html/draft-ietf-nfsv4-minorversion1-26\n\nThis mode allows the client to atomically create a file\nif it doesn\u0027t exist while setting some of its attributes.\n\nIt must be implemented if the server supports persistent\nreply cache and/or pnfs.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "8c18f2052e756e7d5dea712fc6e7ed70c00e8a39",
      "tree": "66762e98af4caa4774b8229fb6fd007fccaab74e",
      "parents": [
        "7e70570647827345352cf6c17461c9fa166f570a"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Fri Apr 03 08:29:14 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:23 2009 -0700"
      },
      "message": "nfsd41: SUPPATTR_EXCLCREAT attribute\n\nReturn bitmask for supported EXCLUSIVE4_1 create attributes.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "7e70570647827345352cf6c17461c9fa166f570a",
      "tree": "a200662bb68cd9a1396c365a47b50e46f0ea9f73",
      "parents": [
        "95ec28cda323104bbff64fc7ec8ee4c9042e51fa"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:29:11 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:23 2009 -0700"
      },
      "message": "nfsd41: support for 3-word long attribute bitmask\n\nAlso, use client minorversion to generate supported attrs\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "f3ec22b5b0b4b220ee600bf1a8b6dc045b4e72bd",
      "tree": "8cd3459e082c3ae0422d5ba0ed12716f52df3054",
      "parents": [
        "8daf220a6a83c47b9648c28bb819c14c60bad7f9"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Fri Apr 03 08:29:02 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:22 2009 -0700"
      },
      "message": "nfsd41: provide support for minor version 1 at rpc level\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "8daf220a6a83c47b9648c28bb819c14c60bad7f9",
      "tree": "e762cf2c8f0b31dac96989ac14c4cc8756e1af1d",
      "parents": [
        "84459a1162801fb84734e5f9e6dc5194f791d69b"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Fri Apr 03 08:28:59 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:21 2009 -0700"
      },
      "message": "nfsd41: control nfsv4.1 svc via /proc/fs/nfsd/versions\n\nSupport enabling and disabling nfsv4.1 via /proc/fs/nfsd/versions\nby writing the strings \"+4.1\" or \"-4.1\" correspondingly.\n\nUse user mode nfs-utils (rpc.nfsd option) to enable.\nThis will allow us to get rid of CONFIG_NFSD_V4_1\n\n[nfsd41: disable support for minorversion by default]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d87a8ade95288f28c729e076cd74929f3f199b6c",
      "tree": "700a10f87def9db1c9657f2f7a61286bc06c8d03",
      "parents": [
        "60adfc50de3855628dea8f8896a65f471f51301c"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:28:53 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:21 2009 -0700"
      },
      "message": "nfsd41: access_valid\n\nFor nfs41, the open share flags are used also for\ndelegation \"wants\" and \"signals\".  Check that they are valid.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "6668958fac1d05f55420de702f3678d46c1e93a5",
      "tree": "2ee7fe01bb6720ecb1147c5c7f7e3d0289fc71bb",
      "parents": [
        "dd453dfd70538cadc02cb47ff8d8cfd0cb8cf435"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:28:45 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:19 2009 -0700"
      },
      "message": "nfsd41: stateid handling\n\nWhen sessions are used, stateful operation sequenceid and stateid handling\nare not used. When sessions are used,  on the first open set the seqid to 1,\nmark state confirmed and skip seqid processing.\n\nWhen sessionas are used the stateid generation number is ignored when it is zero\nwhereas without sessions bad_stateid or stale stateid is returned.\n\nAdd flags to propagate session use to all stateful ops and down to\ncheck_stateid_generation.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[nfsd4_has_session should return a boolean, not u32]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: pass nfsd4_compoundres * to nfsd4_process_open1]\n[nfsd41: calculate HAS_SESSION in nfs4_preprocess_stateid_op]\n[nfsd41: calculate HAS_SESSION in nfs4_preprocess_seqid_op]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "dd453dfd70538cadc02cb47ff8d8cfd0cb8cf435",
      "tree": "c55174fec4f6c7ddd803a598bcd755ec87e7ff0e",
      "parents": [
        "e10e0cfc2f27364c73b28adbd3c8688d97049e73"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Fri Apr 03 08:28:41 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:19 2009 -0700"
      },
      "message": "nfsd: pass nfsd4_compound_state* to nfs4_preprocess_{state,seq}id_op\n\nCurrently we only use cstate-\u003ecurrent_fh,\nwill also be used by nfsd41 code.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "e10e0cfc2f27364c73b28adbd3c8688d97049e73",
      "tree": "bc674e4140ea34b7893c14425ad43a930655743c",
      "parents": [
        "bf864a31d50e3e94d6e76537b97d664913906ff8"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Fri Apr 03 08:28:38 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:19 2009 -0700"
      },
      "message": "nfsd41: destroy_session operation\n\nImplement the destory_session operation confoming to\nhttp://tools.ietf.org/html/draft-ietf-nfsv4-minorversion1-26\n\n[use sessionid_lock spin lock]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "bf864a31d50e3e94d6e76537b97d664913906ff8",
      "tree": "8de829d0cdc0c88fe523fc4a288b8e16eedc6a2e",
      "parents": [
        "38eb76a54d803e6792816623651b1a9cb85f8d01"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:28:35 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:19 2009 -0700"
      },
      "message": "nfsd41: non-page DRC for solo sequence responses\n\nA session inactivity time compound (lease renewal) or a compound where the\nsequence operation has sa_cachethis set to FALSE do not require any pages\nto be held in the v4.1 DRC. This is because struct nfsd4_slot is already\ncaching the session information.\n\nAdd logic to the nfs41 server to not cache response pages for solo sequence\nresponses.\n\nReturn nfserr_replay_uncached_rep on the operation following the sequence\noperation when sa_cachethis is FALSE.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: use cstate session in nfsd4_replay_cache_entry]\n[nfsd41: rename nfsd4_no_page_in_cache]\n[nfsd41 rename nfsd4_enc_no_page_replay]\n[nfsd41 nfsd4_is_solo_sequence]\n[nfsd41 change nfsd4_not_cached return]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[changed return type to bool]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41 drop parens in nfsd4_is_solo_sequence call]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[changed \"\u003d\u003d 0\" to \"!\"]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "38eb76a54d803e6792816623651b1a9cb85f8d01",
      "tree": "090f34b2d92bd92637dabf0fc287cbf544c0cb38",
      "parents": [
        "ec6b5d7b5064fde27aee798b81107ea3a830de85"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:28:32 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:18 2009 -0700"
      },
      "message": "nfsd41: Add a create session replay cache\n\nReplace the nfs4_client cl_seqid field with a single struct nfs41_slot used\nfor the create session replay cache.\n\nThe CREATE_SESSION slot sets the sl_session pointer to NULL. Otherwise, the\nslot and it\u0027s replay cache are used just like the session slots.\n\nFix unconfirmed create_session replay response by initializing the\ncreate_session slot sequence id to 0.\n\nA future patch will set the CREATE_SESSION cache when a SEQUENCE operation\npreceeds the CREATE_SESSION operation. This compound is currently only cached\nin the session slot table.\n\nSigned-off-by: Andy Adamson\u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: use bool inuse for slot state]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: revert portion of nfsd4_set_cache_entry]\nSigned-off-by: Andy Adamson \u003candros@netpp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "ec6b5d7b5064fde27aee798b81107ea3a830de85",
      "tree": "de1571b6773201268796fe5bf3db9bb0f8d23812",
      "parents": [
        "14778a133e3be332be77d981552a79260a61ee17"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:28:28 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:18 2009 -0700"
      },
      "message": "nfsd41: create_session operation\n\nImplement the create_session operation confoming to\nhttp://tools.ietf.org/html/draft-ietf-nfsv4-minorversion1-26\n\nLook up the client id (generated by the server on exchange_id,\ngiven by the client on create_session).\nIf neither a confirmed or unconfirmed client is found\nthen the client id is stale\nIf a confirmed cilent is found (i.e. we already received\ncreate_session for it) then compare the sequence id\nto determine if it\u0027s a replay or possibly a mis-ordered rpc.\nIf the seqid is in order, update the confirmed client seqid\nand procedd with updating the session parameters.\n\nIf an unconfirmed client_id is found then verify the creds\nand seqid.  If both match move the client id to confirmed state\nand proceed with processing the create_session.\n\nCurrently, we do not support persistent sessions, and RDMA.\n\nalloc_init_session generates a new sessionid and creates\na session structure.\n\nNFSD_PAGES_PER_SLOT is used for the max response cached calculation, and for\nthe counting of DRC pages using the hard limits set in struct srv_serv.\n\nA note on NFSD_PAGES_PER_SLOT:\n\nOther patches in this series allow for NFSD_PAGES_PER_SLOT + 1 pages to be\ncached in a DRC slot when the response size is less than NFSD_PAGES_PER_SLOT *\nPAGE_SIZE but xdr_buf pages are used. e.g. a READDIR operation will encode a\nsmall amount of data in the xdr_buf head, and then the READDIR in the xdr_buf\npages.  So, the hard limit calculation use of pages by a session is\nunderestimated by the number of cached operations using the xdr_buf pages.\n\nYet another patch caches no pages for the solo sequence operation, or any\ncompound where cache_this is False.  So the hard limit calculation use of\npages by a session is overestimated by the number of these operations in the\ncache.\n\nTODO: improve resource pre-allocation and negotiate session\nparameters accordingly.  Respect and possibly adjust\nbackchannel attributes.\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\n[nfsd41: remove headerpadsz from channel attributes]\nOur client and server only support a headerpadsz of 0.\n[nfsd41: use DRC limits in fore channel init]\n[nfsd41: do not change CREATE_SESSION back channel attrs]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[use sessionid_lock spin lock]\n[nfsd41: use bool inuse for slot state]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41 remove sl_session from alloc_init_session]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[simplify nfsd4_encode_create_session error handling]\n[nfsd41: fix comment style in init_forechannel_attrs]\n[nfsd41: allocate struct nfsd4_session and slot table in one piece]\n[nfsd41: no need to INIT_LIST_HEAD in alloc_init_session just prior to list_add]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "da3846a2866ddf239311766ff434a82e7b4ac701",
      "tree": "c40d6c1754999f1f572f12c4fa68f281a93b040c",
      "parents": [
        "c3d06f9ce8544fecfe13e377d1e2c2e47fe18dbc"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:28:22 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:17 2009 -0700"
      },
      "message": "nfsd41: nfsd DRC logic\n\nReplay a request in nfsd4_sequence.\nAdd a minorversion to struct nfsd4_compound_state.\n\nPass the current slot to nfs4svc_encode_compound res via struct\nnfsd4_compoundres to set an NFSv4.1 DRC entry.\n\nSigned-off-by: Andy Adamson\u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: use bool inuse for slot state]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: use cstate session in nfs4svc_encode_compoundres]\n[nfsd41 replace nfsd4_set_cache_entry]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "c3d06f9ce8544fecfe13e377d1e2c2e47fe18dbc",
      "tree": "f34acde5f484a8374065295e205921e1860da65c",
      "parents": [
        "074fe897536f095309c5aaffcf912952882ab2cb"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:28:18 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:17 2009 -0700"
      },
      "message": "nfsd41: hard page limit for DRC\n\nUse no more than 1/128th of the number of free pages at nfsd startup for the\nv4.1 DRC.\n\nThis is an arbitrary default which should probably end up under the control\nof an administrator.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[moved added fields in struct svc_serv under CONFIG_NFSD_V4_1]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[fix set_max_drc calculation of sv_drc_max_pages]\n[moved NFSD_DRC_SIZE_SHIFT\u0027s declaration up in header file]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "074fe897536f095309c5aaffcf912952882ab2cb",
      "tree": "d4bb2fff645a2df1dbdec4af6787359d888a3695",
      "parents": [
        "f9bb94c4c60f6e1d1717077bfddb614f03a607d1"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:28:15 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:17 2009 -0700"
      },
      "message": "nfsd41: DRC save, restore, and clear functions\n\nCache all the result pages, including the rpc header in rq_respages[0],\nfor a request in the slot table cache entry.\n\nCache the statp pointer from nfsd_dispatch which points into rq_respages[0]\njust past the rpc header. When setting a cache entry, calculate and save the\nlength of the nfs data minus the rpc header for rq_respages[0].\n\nWhen replaying a cache entry, replace the cached rpc header with the\nreplayed request rpc result header, unless there is not enough room in the\ncached results first page. In that case, use the cached rpc header.\n\nThe sessions fore channel maxresponse size cached is set to NFSD_PAGES_PER_SLOT\n* PAGE_SIZE. For compounds we are cacheing with operations such as READDIR\nthat use the xdr_buf-\u003epages to hold data, we choose to cache the extra page of\ndata rather than copying data from xdr_buf-\u003epages into the xdr_buf-\u003ehead page.\n\n[nfsd41: limit cache to maxresponsesize_cached]\n[nfsd41: mv nfsd4_set_statp under CONFIG_NFSD_V4_1]\n[nfsd41: rename nfsd4_move_pages]\n[nfsd41: rename page_no variable]\n[nfsd41: rename nfsd4_set_cache_entry]\n[nfsd41: fix nfsd41_copy_replay_data comment]\n[nfsd41: add to nfsd4_set_cache_entry]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b85d4c01b76f6969a085d07a767fa45225cb14be",
      "tree": "5441d0f6bcec52fab3b81ad4887239ff784c5ad9",
      "parents": [
        "a1bcecd29cdf1670df6908a620add4211c0abb7a"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Fri Apr 03 08:28:08 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:16 2009 -0700"
      },
      "message": "nfsd41: sequence operation\n\nImplement the sequence operation conforming to\nhttp://tools.ietf.org/html/draft-ietf-nfsv4-minorversion1-26\n\nCheck for stale clientid (as derived from the sessionid).\nEnforce slotid range and exactly-once semantics using\nthe slotid and seqid.\n\nIf everything went well renew the client lease and\nmark the slot INPROGRESS.\n\nAdd a struct nfsd4_slot pointer to struct nfsd4_compound_state.\nTo be used for sessions DRC replay.\n\n[nfsd41: rename sequence catchthis to cachethis]\nSigned-off-by: Andy Adamson\u003candros@netapp.com\u003e\n[pulled some code to set cstate-\u003eslot from \"nfsd DRC logic\"]\n[use sessionid_lock spin lock]\n[nfsd41: use bool inuse for slot state]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd: add a struct nfsd4_slot pointer to struct nfsd4_compound_state]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: add nfsd4_session pointer to nfsd4_compound_state]\n[nfsd41: set cstate session]\n[nfsd41: use cstate session in nfsd4_sequence]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[simplify nfsd4_encode_sequence error handling]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "a1bcecd29cdf1670df6908a620add4211c0abb7a",
      "tree": "a4323b21675db5a47a45f5d292fef468b9786007",
      "parents": [
        "0733d21338747483985a5964e852af160d88e429"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:28:05 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:15 2009 -0700"
      },
      "message": "nfsd41: match clientid establishment method\n\nWe need to distinguish between client names provided by NFSv4.0 clients\nSETCLIENTID and those provided by NFSv4.1 via EXCHANGE_ID when looking\nup the clientid by string.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[nfsd41: use boolean values for use_exchange_id argument]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: simplify match_clientid_establishment logic]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "0733d21338747483985a5964e852af160d88e429",
      "tree": "fb8014cc66d3bfc33e1b7cc6a0da369bccc34cd3",
      "parents": [
        "069b6ad4bb20abf175ea7875e82e8002154773af"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:28:01 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:15 2009 -0700"
      },
      "message": "nfsd41: exchange_id operation\n\nImplement the exchange_id operation confoming to\nhttp://tools.ietf.org/html/draft-ietf-nfsv4-minorversion1-28\n\nBased on the client provided name, hash a client id.\nIf a confirmed one is found, compare the op\u0027s creds and\nverifier.  If the creds match and the verifier is different\nthen expire the old client (client re-incarnated), otherwise,\nif both match, assume it\u0027s a replay and ignore it.\n\nIf an unconfirmed client is found, then copy the new creds\nand verifer if need update, otherwise assume replay.\n\nThe client is moved to a confirmed state on create_session.\n\nIn the nfs41 branch set the exchange_id flags to\nEXCHGID4_FLAG_USE_NON_PNFS | EXCHGID4_FLAG_SUPP_MOVED_REFER\n(pNFS is not supported, Referrals are supported,\nMigration is not.).\n\nAddress various scenarios from section 18.35 of the spec:\n\n1. Check for EXCHGID4_FLAG_UPD_CONFIRMED_REC_A and set\n   EXCHGID4_FLAG_CONFIRMED_R as appropriate.\n\n2. Return error codes per 18.35.4 scenarios.\n\n3. Update client records or generate new client ids depending on\n   scenario.\n\nNote: 18.35.4 case 3 probably still needs revisiting.  The handling\nseems not quite right.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Andy Adamosn \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: use utsname for major_id (and copy to server_scope)]\n[nfsd41: fix handling of various exchange id scenarios]\nSigned-off-by: Mike Sager \u003csager@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: reverse use of EXCHGID4_INVAL_FLAG_MASK_A]\n[simplify nfsd4_encode_exchange_id error handling]\n[nfsd41: embed an xdr_netobj in nfsd4_exchange_id]\n[nfsd41: return nfserr_serverfault for spa_how \u003d\u003d SP4_MACH_CRED]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "069b6ad4bb20abf175ea7875e82e8002154773af",
      "tree": "e3a933d4c7f0444d29f9266fc5aa77f6e87f5a69",
      "parents": [
        "2db134eb3b39faefc7fbfb200156d175edba2f68"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:27:58 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:14 2009 -0700"
      },
      "message": "nfsd41: proc stubs\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "2db134eb3b39faefc7fbfb200156d175edba2f68",
      "tree": "dd07afee13667410cb64dba1de3a80c54d1bd989",
      "parents": [
        "5282fd724b667b7d65f2e41e405a825e58a78813"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:27:55 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:14 2009 -0700"
      },
      "message": "nfsd41: xdr infrastructure\n\nDefine nfsd41_dec_ops vector and add it to nfsd4_minorversion for\nminorversion 1.\n\nNote: nfsd4_enc_ops vector is shared for v4.0 and v4.1\nsince we don\u0027t need to filter out obsolete ops as this is\ndone in the decoding phase.\n\nexchange_id, create_session, destroy_session, and sequence ops are\nimplemented as stubs returning nfserr_opnotsupp at this stage.\n\n[was nfsd41: xdr stubs]\n[get rid of CONFIG_NFSD_V4_1]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "5282fd724b667b7d65f2e41e405a825e58a78813",
      "tree": "6603d2895c789db0e2244e9966f3a2246a6addb9",
      "parents": [
        "c4bf7868064ce8b9c75d8049d077e593c20602b3"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Fri Apr 03 08:27:52 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:14 2009 -0700"
      },
      "message": "nfsd41: sessionid hashing\n\nSimple sessionid hashing using its monotonically increasing sequence number.\n\nLocking considerations:\nsessionid_hashtbl access is controlled by the sessionid_lock spin lock.\nIt must be taken for insert, delete, and lookup.\nnfsd4_sequence looks up the session id and if the session is found,\nit calls nfsd4_get_session (still under the sessionid_lock).\nnfsd4_destroy_session calls nfsd4_put_session after unhashing\nit, so when the session\u0027s kref reaches zero it\u0027s going to get freed.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[we don\u0027t use a prime for sessionid hash table size]\n[use sessionid_lock spin lock]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "9fb870702d02c05f9410423bfff3f63e46e26180",
      "tree": "849fd556192da4b34cc872a36f8ad415e87775c6",
      "parents": [
        "7116ed6b9973021ff43edeb10f4cb834db94000f"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Fri Apr 03 08:27:46 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:13 2009 -0700"
      },
      "message": "nfsd41: introduce nfs4_client cl_sessions list\n\n[get rid of CONFIG_NFSD_V4_1]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "7116ed6b9973021ff43edeb10f4cb834db94000f",
      "tree": "fb47a0d182cbf2afb87f482ac03d1a1763f8ee3b",
      "parents": [
        "10add806c38c022d18af48f3ec28c91b4eaf7bb3"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:27:43 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:13 2009 -0700"
      },
      "message": "nfsd41: sessions basic data types\n\nThis patch provides basic data structures representing the nfs41\nsessions and slots, plus helpers for keeping a reference count\non the session and freeing it.\n\nNote that our server only support a headerpadsz of 0 and\nit ignores backchannel attributes at the moment.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: remove headerpadsz from channel attributes]\n[nfsd41: embed nfsd4_channel in nfsd4_session]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: use bool inuse for slot state]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41 remove sl_session from nfsd4_slot]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "10add806c38c022d18af48f3ec28c91b4eaf7bb3",
      "tree": "d0d141a89d5eac49e337021e1d6d9c451cc4e896",
      "parents": [
        "18df1884a872a2cc405a578cfd0d3adc8d227277"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Fri Apr 03 08:27:40 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:12 2009 -0700"
      },
      "message": "nfsd41: define nfs41 error codes\n\nDefine all error code present in\nhttp://tools.ietf.org/html/draft-ietf-nfsv4-minorversion1-29.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: clean up error code definitions]\n[nfsd41: change NFSERR_REPLAY_ME]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "18df1884a872a2cc405a578cfd0d3adc8d227277",
      "tree": "fe6406c9797757d034f63208f3231fa7b7f331cb",
      "parents": [
        "2f425878b6a71571341dcd3f9e9d1a6f6355da9c"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Fri Apr 03 08:27:36 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:12 2009 -0700"
      },
      "message": "nfs41: common protocol definitions\n\nDefine all NFSv4.1 common operation and error code constants.\n\nNote that some of the definitions are used by both the nfs41 client\nand the server code. This patch is duplicated in the nfs41 and nfsd41\nsessions patchset.\n\nSigned-off-by: Andy Adamson\u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: add exchange id flags]\nSigned-off-by: Mike Sager \u003csager@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[removed server-only hunk changing NFSERR_REPLAY_ME]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: add SEQ4_XX to nfs41-common-protocol]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: generic error code update]\n[nfs41: reverse EXCHGID4_INVAL_FLAG_MASK_{A,R}]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "2f425878b6a71571341dcd3f9e9d1a6f6355da9c",
      "tree": "52735958c1614458bd6b459040f977dfc3c3e9a9",
      "parents": [
        "20766016329eb4985c2c8b2a1b2333e0f865fdf9"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 03 08:27:32 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:12 2009 -0700"
      },
      "message": "nfsd: don\u0027t use the deferral service, return NFS4ERR_DELAY\n\nOn an NFSv4.1 server cache miss that causes an upcall, NFS4ERR_DELAY will be\nreturned. It is up to the NFSv4.1 client to resend only the operations that\nhave not been processed.\n\nInitialize rq_usedeferral to 1 in svc_process(). It sill be turned off in\nnfsd4_proc_compound() only when NFSv4.1 Sessions are used.\n\nNote: this isn\u0027t an adequate solution on its own. It\u0027s acceptable as a way\nto get some minimal 4.1 up and working, but we\u0027re going to have to find a\nway to avoid returning DELAY in all common cases before 4.1 can really be\nconsidered ready.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfsd41: reverse rq_nodeferral negative logic]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[sunrpc: initialize rq_usedeferral]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b1dbb67911fecb290db3f566281bcd9ccc9dc6df",
      "tree": "f55add06f624f7fed8a68372d8c96b583ca578fe",
      "parents": [
        "492f59f526d95e73028f57bff475b4bbe3c8cb72",
        "70f454408e68fdba2c2529ab7d6ec3c3525e59f2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 17:33:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 17:33:30 2009 -0700"
      },
      "message": "Merge branch \u0027ipi-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027ipi-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  s390: remove arch specific smp_send_stop()\n  panic: clean up kernel/panic.c\n  panic, smp: provide smp_send_stop() wrapper on UP too\n  panic: decrease oops_in_progress only after having done the panic\n  generic-ipi: eliminate WARN_ON()s during oops/panic\n  generic-ipi: cleanups\n  generic-ipi: remove CSD_FLAG_WAIT\n  generic-ipi: remove kmalloc()\n  generic IPI: simplify barriers and locking\n"
    },
    {
      "commit": "492f59f526d95e73028f57bff475b4bbe3c8cb72",
      "tree": "8419a65de08183e350a468433fb3f4205e49ae80",
      "parents": [
        "f945b7abcb6cfd3106c9855aa2aa6e4396a19d76",
        "7bee946358c3cb957d4aa648fc5ab3cad0b232d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 17:29:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 17:29:53 2009 -0700"
      },
      "message": "Merge branch \u0027locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  locking: rename trace_softirq_[enter|exit] \u003d\u003e lockdep_softirq_[enter|exit]\n  lockdep: remove duplicate CONFIG_DEBUG_LOCKDEP definitions\n  lockdep: require framepointers for x86\n  lockdep: remove extra \"irq\" string\n  lockdep: fix incorrect state name\n"
    },
    {
      "commit": "7237d3de78ff89ec2e18eae5fe962d063024fef5",
      "tree": "07d0196e9e3122546cc0366c686d363423bfe894",
      "parents": [
        "8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84"
      ],
      "author": {
        "name": "Suresh Siddha",
        "email": "suresh.b.siddha@intel.com",
        "time": "Mon Mar 30 13:55:30 2009 -0800"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Fri Apr 03 20:08:12 2009 -0400"
      },
      "message": "x86, ACPI: add support for x2apic ACPI extensions\n\nAll logical processors with APIC ID values of 255 and greater will have their\nAPIC reported through Processor X2APIC structure (type-9 entry type) and all\nlogical processors with APIC ID less than 255 will have their APIC reported\nthrough legacy Processor Local APIC (type-0 entry type) only. This is the\nsame case even for NMI structure reporting.\n    \nThe Processor X2APIC Affinity structure provides the association between the\nX2APIC ID of a logical processor and the proximity domain to which the logical\nprocessor belongs.\n    \nFor OSPM, Procssor IDs outside the 0-254 range are to be declared as Device()\nobjects in the ACPI namespace.\n\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "5fba0925fd6b67d94181055b7222e3d934b4efee",
      "tree": "167c0e259ec94f426674d3f79563c3e556cda845",
      "parents": [
        "811158b147a503fbdf9773224004ffd32002d1fe",
        "621de593081524da2f0f7b060f5951b4155eb4a2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 15:25:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 15:25:44 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:\n  HID: remove compat stuff\n  HID: constify arrays of struct apple_key_translation\n  HID: add support for Kye/Genius Ergo 525V\n  HID: Support Apple mini aluminum keyboard\n  HID: support for Kensington slimblade device\n  HID: DragonRise game controller force feedback driver\n  HID: add support for another version of 0e8f:0003 device in hid-pl\n  HID: fix race between usb_register_dev() and hiddev_open()\n  HID: bring back possibility to specify vid/pid ignore on module load\n  HID: make HID_DEBUG defaults consistent\n  HID: autosuspend -- fix lockup of hid on reset\n  HID: hid_reset_resume() needs to be defined only when CONFIG_PM is set\n  HID: fix USB HID devices after STD with autosuspend\n  HID: do not try to compile PM code with CONFIG_PM unset\n  HID: autosuspend support for USB HID\n"
    },
    {
      "commit": "811158b147a503fbdf9773224004ffd32002d1fe",
      "tree": "0a11dcfefe721bfc38ea9f1f4a238822dbae0dda",
      "parents": [
        "4e76c5ccd5ac9bd003467d3bb0f49b18572dd4cd",
        "b26e0ed4936b743b693a4cc1413561fa3e4eaf65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 15:24:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 15:24:35 2009 -0700"
      },
      "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: (28 commits)\n  trivial: Update my email address\n  trivial: NULL noise: drivers/mtd/tests/mtd_*test.c\n  trivial: NULL noise: drivers/media/dvb/frontends/drx397xD_fw.h\n  trivial: Fix misspelling of \"Celsius\".\n  trivial: remove unused variable \u0027path\u0027 in alloc_file()\n  trivial: fix a pdlfush -\u003e pdflush typo in comment\n  trivial: jbd header comment typo fix for JBD_PARANOID_IOFAIL\n  trivial: wusb: Storage class should be before const qualifier\n  trivial: drivers/char/bsr.c: Storage class should be before const qualifier\n  trivial: h8300: Storage class should be before const qualifier\n  trivial: fix where cgroup documentation is not correctly referred to\n  trivial: Give the right path in Documentation example\n  trivial: MTD: remove EOL from MODULE_DESCRIPTION\n  trivial: Fix typo in bio_split()\u0027s documentation\n  trivial: PWM: fix of #endif comment\n  trivial: fix typos/grammar errors in Kconfig texts\n  trivial: Fix misspelling of firmware\n  trivial: cgroups: documentation typo and spelling corrections\n  trivial: Update contact info for Jochen Hein\n  trivial: fix typo \"resgister\" -\u003e \"register\"\n  ...\n"
    },
    {
      "commit": "ce0d9d7255a55628fd3732bf583c83e90150b699",
      "tree": "d8aa3910a4ba9d87f98639dafe2fdf69b591fa15",
      "parents": [
        "dab8c35990692026fca989c3449fd67a59275c6a"
      ],
      "author": {
        "name": "Evgeniy Polyakov",
        "email": "zbr@ioremap.net",
        "time": "Wed Jan 14 02:05:27 2009 +0300"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Apr 03 14:53:32 2009 -0700"
      },
      "message": "Staging: dst: core files.\n\nThis patch contains DST core files, which introduce\nblock layer, connector and sysfs registration glue and main headers.\n\nConnector is used for the configuration of the node (its type, address,\ndevice name and so on). Sysfs provides bits of information about running\ndevices in the following format:\n\n+/*\n+ * DST sysfs tree for device called \u0027storage\u0027:\n+ *\n+ * /sys/bus/dst/devices/storage/\n+ * /sys/bus/dst/devices/storage/type : 192.168.4.80:1025\n+ * /sys/bus/dst/devices/storage/size : 800\n+ * /sys/bus/dst/devices/storage/name : storage\n+ */\n\nDST header contains structure definitions and protocol command description.\n\nSigned-off-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "161fde083f3403e7aa178dc944bf43c339e18491",
      "tree": "79473edadf7aad496c9158400ea7bb4f8336516e",
      "parents": [
        "b24696bc55f66fecc30715e003f10fc2555a9271"
      ],
      "author": {
        "name": "Han, Weidong",
        "email": "weidong.han@intel.com",
        "time": "Fri Apr 03 17:15:47 2009 +0800"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Fri Apr 03 21:46:01 2009 +0100"
      },
      "message": "intel-iommu: set compatibility format interrupt\n\nWhen extended interrupt mode (x2apic mode) is not supported in a\nsystem, it must set compatibility format interrupt to bypass\ninterrupt remapping, otherwise compatibility format interrupts\nwill be blocked.\n\nThis will be used when interrupt remapping is enabled while x2apic\nis not supported.\n\nSigned-off-by: Weidong Han \u003cweidong.han@intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "b24696bc55f66fecc30715e003f10fc2555a9271",
      "tree": "3ef565bf041a06106a73d0b27ccc256845ef5644",
      "parents": [
        "eb4a52bc660ea835482c582eaaf4893742cbd160"
      ],
      "author": {
        "name": "Fenghua Yu",
        "email": "fenghua.yu@intel.com",
        "time": "Fri Mar 27 14:22:44 2009 -0700"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Fri Apr 03 21:45:59 2009 +0100"
      },
      "message": "Intel IOMMU Suspend/Resume Support - Interrupt Remapping\n\nThis patch enables suspend/resume for interrupt remapping. During suspend,\ninterrupt remapping is disabled. When resume, interrupt remapping is enabled\nagain.\n\nSigned-off-by: Fenghua Yu \u003cfenghua.yu@intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "f59c7b69bcba31cd355ababe067202b9895d6102",
      "tree": "4f06ceb6ab9a135acd9b316c806aaa99c097b373",
      "parents": [
        "8f912ba4d7cdaf7d31cf39fe5a9b7732308a256d"
      ],
      "author": {
        "name": "Fenghua Yu",
        "email": "fenghua.yu@intel.com",
        "time": "Fri Mar 27 14:22:42 2009 -0700"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Fri Apr 03 21:45:54 2009 +0100"
      },
      "message": "Intel IOMMU Suspend/Resume Support - DMAR\n\nThis patch implements the suspend and resume feature for Intel IOMMU\nDMAR. It hooks to kernel suspend and resume interface. When suspend happens, it\nsaves necessary hardware registers. When resume happens, it restores the\nregisters and restarts IOMMU by enabling translation, setting up root entry, and\nre-enabling queued invalidation.\n\nSigned-off-by: Fenghua Yu \u003cfenghua.yu@intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "8f912ba4d7cdaf7d31cf39fe5a9b7732308a256d",
      "tree": "2f2e63e48c32471d729289c0772be1a093529228",
      "parents": [
        "20bec8ab1458c24bed0d5492ee15d87807fc415a"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Fri Apr 03 15:19:32 2009 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Fri Apr 03 21:45:46 2009 +0100"
      },
      "message": "intel-iommu: Add for_each_iommu() and for_each_active_iommu() macros\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "133e2a3164771454aa326859c2b293687189b553",
      "tree": "4e21f63be087738d7ffe7526d41e15140fc63ff0",
      "parents": [
        "20bec8ab1458c24bed0d5492ee15d87807fc415a",
        "8c6db1bbf80123839ec87bdd6cb364aea384623d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 12:13:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 12:13:45 2009 -0700"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx\n\n* \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:\n  dma: Add SoF and EoF debugging to ipu_idmac.c, minor cleanup\n  dw_dmac: add cyclic API to DW DMA driver\n  dmaengine: Add privatecnt to revert DMA_PRIVATE property\n  dmatest: add dma interrupts and callbacks\n  dmatest: add xor test\n  dmaengine: allow dma support for async_tx to be toggled\n  async_tx: provide __async_inline for HAS_DMA\u003dn archs\n  dmaengine: kill some unused headers\n  dmaengine: initialize tx_list in dma_async_tx_descriptor_init\n  dma: i.MX31 IPU DMA robustness improvements\n  dma: improve section assignment in i.MX31 IPU DMA driver\n  dma: ipu_idmac driver cosmetic clean-up\n  dmaengine: fail device registration if channel registration fails\n"
    },
    {
      "commit": "20bec8ab1458c24bed0d5492ee15d87807fc415a",
      "tree": "e5f910947dbe314b96a591e41e2cfb2d3322caad",
      "parents": [
        "18b34b9546dc192d978dda940673f40928d2e36e",
        "e7c8f5079ed9ec9e6eb1abe3defc5fb4ebfdf1cb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 11:10:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 11:10:33 2009 -0700"
      },
      "message": "Merge branch \u0027ext3-latency-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027ext3-latency-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext3: Add replace-on-rename hueristics for data\u003dwriteback mode\n  ext3: Add replace-on-truncate hueristics for data\u003dwriteback mode\n  ext3: Use WRITE_SYNC for commits which are caused by fsync()\n  block_write_full_page: Use synchronous writes for WBC_SYNC_ALL writebacks\n"
    },
    {
      "commit": "18b34b9546dc192d978dda940673f40928d2e36e",
      "tree": "ca396840ed95fc46cd360c68bf2cefe5ab4cbda8",
      "parents": [
        "ca1ee219c070eab755712d50638bbcd1f8630fc1",
        "d6bb69cfa88b8ac9f952de4fada5b216d5ba8830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 10:39:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 10:39:20 2009 -0700"
      },
      "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: (32 commits)\n  regulator: twl4030 VAUX3 supports 3.0V\n  regulator: Support disabling of unused regulators by machines\n  regulator: Don\u0027t increment use_count for boot_on regulators\n  twl4030-regulator: expose VPLL2\n  regulator: refcount fixes\n  regulator: Don\u0027t warn if we failed to get a regulator\n  regulator: Allow boot_on regulators to be disabled by clients\n  regulator: Implement list_voltage for WM835x LDOs and DCDCs\n  twl4030-regulator: list more VAUX4 voltages\n  regulator: Don\u0027t warn on omitted voltage constraints\n  regulator: Implement list_voltage() for WM8400 DCDCs and LDOs\n  MMC: regulator utilities\n  regulator: twl4030 voltage enumeration (v2)\n  regulator: twl4030 regulators\n  regulator: get_status() grows kerneldoc\n  regulator: enumerate voltages (v2)\n  regulator: Fix get_mode() for WM835x DCDCs\n  regulator: Allow regulators to set the initial operating mode\n  regulator: Suggest use of datasheet supply or pin names for consumers\n  regulator: email - update email address and regulator webpage.\n  ...\n"
    },
    {
      "commit": "ca1ee219c070eab755712d50638bbcd1f8630fc1",
      "tree": "c0c252a9095830aadc5dc9ffdd16d9167dd605c9",
      "parents": [
        "3cc50ac0dbda5100684e570247782330155d35e0",
        "afeeb7cebbd223ffee303fd8de4ba97458b13581"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 10:36:57 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 10:36:57 2009 -0700"
      },
      "message": "Merge git://git.infradead.org/iommu-2.6\n\n* git://git.infradead.org/iommu-2.6:\n  intel-iommu: Fix address wrap on 32-bit kernel.\n  intel-iommu: Enable DMAR on 32-bit kernel.\n  intel-iommu: fix PCI device detach from virtual machine\n  intel-iommu: VT-d page table to support snooping control bit\n  iommu: Add domain_has_cap iommu_ops\n  intel-iommu: Snooping control support\n\nFixed trivial conflicts in arch/x86/Kconfig and drivers/pci/intel-iommu.c\n"
    },
    {
      "commit": "3cc50ac0dbda5100684e570247782330155d35e0",
      "tree": "f4b8f22d1725ebe65d2fe658d292dabacd7ed564",
      "parents": [
        "d9b9be024a6628a01d8730d1fd0b5f25658a2794",
        "b797cac7487dee6bfddeb161631c1bbc54fa3cdb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 10:07:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 10:07:43 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-fscache\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-fscache: (41 commits)\n  NFS: Add mount options to enable local caching on NFS\n  NFS: Display local caching state\n  NFS: Store pages from an NFS inode into a local cache\n  NFS: Read pages from FS-Cache into an NFS inode\n  NFS: nfs_readpage_async() needs to be accessible as a fallback for local caching\n  NFS: Add read context retention for FS-Cache to call back with\n  NFS: FS-Cache page management\n  NFS: Add some new I/O counters for FS-Cache doing things for NFS\n  NFS: Invalidate FsCache page flags when cache removed\n  NFS: Use local disk inode cache\n  NFS: Define and create inode-level cache objects\n  NFS: Define and create superblock-level objects\n  NFS: Define and create server-level objects\n  NFS: Register NFS for caching and retrieve the top-level index\n  NFS: Permit local filesystem caching to be enabled for NFS\n  NFS: Add FS-Cache option bit and debug bit\n  NFS: Add comment banners to some NFS functions\n  FS-Cache: Make kAFS use FS-Cache\n  CacheFiles: A cache that backs onto a mounted filesystem\n  CacheFiles: Export things for CacheFiles\n  ...\n"
    },
    {
      "commit": "d9b9be024a6628a01d8730d1fd0b5f25658a2794",
      "tree": "9f8e606f975f6dff4213747e85fedaccd148eb60",
      "parents": [
        "9b59f0316bc556a1b63518f0b1224cf9be48467b",
        "99360b4c18f7675b50d283301d46d755affe75fd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 10:02:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 10:02:45 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm: (36 commits)\n  dm: set queue ordered mode\n  dm: move wait queue declaration\n  dm: merge pushback and deferred bio lists\n  dm: allow uninterruptible wait for pending io\n  dm: merge __flush_deferred_io into caller\n  dm: move bio_io_error into __split_and_process_bio\n  dm: rename __split_bio\n  dm: remove unnecessary struct dm_wq_req\n  dm: remove unnecessary work queue context field\n  dm: remove unnecessary work queue type field\n  dm: bio list add bio_list_add_head\n  dm snapshot: persistent fix dtr cleanup\n  dm snapshot: move status to exception store\n  dm snapshot: move ctr parsing to exception store\n  dm snapshot: use DMEMIT macro for status\n  dm snapshot: remove dm_snap header\n  dm snapshot: remove dm_snap header use\n  dm exception store: move cow pointer\n  dm exception store: move chunk_fields\n  dm exception store: move dm_target pointer\n  ...\n"
    },
    {
      "commit": "3688e07f83d81941c4a8b20e29602c6d0c883539",
      "tree": "d7169ef37071cc14225e7700a4f6c08981f3f5e4",
      "parents": [
        "c54c4dec61eec88de8260a00260fe89aa538f267"
      ],
      "author": {
        "name": "Kumar Gala",
        "email": "galak@kernel.crashing.org",
        "time": "Wed Apr 01 23:38:49 2009 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:48:29 2009 -0700"
      },
      "message": "Fix highmem PPC build failure\n\nCommit f4112de6b679d84bd9b9681c7504be7bdfb7c7d5 (\"mm: introduce\ndebug_kmap_atomic\") broke PPC builds with CONFIG_HIGHMEM\u003dy:\n\n   CC      init/main.o\n  In file included from include/linux/highmem.h:25,\n                   from include/linux/pagemap.h:11,\n                   from include/linux/mempolicy.h:63,\n                   from init/main.c:53:\n  arch/powerpc/include/asm/highmem.h: In function \u0027kmap_atomic_prot\u0027:\n  arch/powerpc/include/asm/highmem.h:98: error: implicit declaration of function \u0027debug_kmap_atomic\u0027\n  In file included from include/linux/pagemap.h:11,\n                   from include/linux/mempolicy.h:63,\n                   from init/main.c:53:\n  include/linux/highmem.h: At top level:\n  include/linux/highmem.h:196: warning: conflicting types for \u0027debug_kmap_atomic\u0027\n  include/linux/highmem.h:196: error: static declaration of \u0027debug_kmap_atomic\u0027 follows non-static declaration\n  include/asm/highmem.h:98: error: previous implicit declaration of \u0027debug_kmap_atomic\u0027 was here\n  make[1]: *** [init/main.o] Error 1\n  make: *** [init] Error 2\n\nSigned-off-by: Kumar Gala \u003cgalak@kernel.crashing.org\u003e\nAcked-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c54c4dec61eec88de8260a00260fe89aa538f267",
      "tree": "b515c760f6eba432f05625b417612550c755efe5",
      "parents": [
        "5de1ccbe51e89c51a2fe5ab333b7c9c2e7294aff",
        "0d44dc59b2b434b29aafeae581d06f81efac7c83"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:45:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:45:53 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:\n  crypto: ixp4xx - Fix handling of chained sg buffers\n  crypto: shash - Fix unaligned calculation with short length\n  hwrng: timeriomem - Use phys address rather than virt\n"
    },
    {
      "commit": "223cdea4c4b5af5181b2da00ac85711d1e0c737c",
      "tree": "dfe7226c70ddabbf2e2e63924ba636345278e79c",
      "parents": [
        "31e6e2dac575c9d21a6ec56ca52ae89086baa705",
        "c8f517c444e4f9f55b5b5ca202b8404691a35805"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:08:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:08:19 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (53 commits)\n  md/raid5 revise rules for when to update metadata during reshape\n  md/raid5: minor code cleanups in make_request.\n  md: remove CONFIG_MD_RAID_RESHAPE config option.\n  md/raid5: be more careful about write ordering when reshaping.\n  md: don\u0027t display meaningless values in sysfs files resync_start and sync_speed\n  md/raid5: allow layout and chunksize to be changed on active array.\n  md/raid5: reshape using largest of old and new chunk size\n  md/raid5: prepare for allowing reshape to change layout\n  md/raid5: prepare for allowing reshape to change chunksize.\n  md/raid5: clearly differentiate \u0027before\u0027 and \u0027after\u0027 stripes during reshape.\n  Documentation/md.txt update\n  md: allow number of drives in raid5 to be reduced\n  md/raid5: change reshape-progress measurement to cope with reshaping backwards.\n  md: add explicit method to signal the end of a reshape.\n  md/raid5: enhance raid5_size to work correctly with negative delta_disks\n  md/raid5: drop qd_idx from r6_state\n  md/raid6: move raid6 data processing to raid6_pq.ko\n  md: raid5 run(): Fix max_degraded for raid level 4.\n  md: \u0027array_size\u0027 sysfs attribute\n  md: centralize -\u003earray_sectors modifications\n  ...\n"
    },
    {
      "commit": "ea02259fdf47ca81ff3ca0c22906d989094fb8ff",
      "tree": "5d3672aa246e016f695bc62a861902a50de7b461",
      "parents": [
        "8fe74cf053de7ad2124a894996f84fa890a81093",
        "eae6c2b6414fc6673ac5415442fe463c01005366"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:02:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:02:32 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/linux-hdreg-h-cleanup\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bart/linux-hdreg-h-cleanup:\n  remove \u003clinux/ata.h\u003e include from \u003clinux/hdreg.h\u003e\n  include/linux/hdreg.h: remove unused defines\n  isd200: use ATA_* defines instead of *_STAT and *_ERR ones\n  include/linux/hdreg.h: cover WIN_* and friends with #ifndef/#endif __KERNEL__\n  aoe: WIN_* -\u003e ATA_CMD_*\n  isd200: WIN_* -\u003e ATA_CMD_*\n  include/linux/hdreg.h: cover struct hd_driveid with #ifndef/#endif __KERNEL__\n  xsysace: make it \u0027struct hd_driveid\u0027-free\n  ubd_kern: make it \u0027struct hd_driveid\u0027-free\n  isd200: make it \u0027struct hd_driveid\u0027-free\n"
    },
    {
      "commit": "f42b293d6d5259043a8944b556eeab427c695d57",
      "tree": "9427fb985f5426062c11755c47bbf4ba7606ee65",
      "parents": [
        "1fcdf534885b65e6d39780a5a89e9dfc5431cf68"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:44 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:44 2009 +0100"
      },
      "message": "NFS: nfs_readpage_async() needs to be accessible as a fallback for local caching\n\nnfs_readpage_async() needs to be non-static so that it can be used as a\nfallback for the local on-disk caching should an EIO crop up when reading the\ncache.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "6a51091d0775cdc4a923f2172c61925ad416aa32",
      "tree": "288fafe724eee5a0c67ff4c9bd437d35d3bbb9ab",
      "parents": [
        "d599064a1bca7bcbaabe54b94fa73ea86952cae3"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "message": "NFS: Add some new I/O counters for FS-Cache doing things for NFS\n\nAdd some new NFS I/O counters for FS-Cache doing things for NFS.  A new line is\nemitted into /proc/pid/mountstats if caching is enabled that looks like:\n\n\tfsc: \u003crok\u003e \u003crfl\u003e \u003cwok\u003e \u003cwfl\u003e \u003cunc\u003e\n\nWhere \u003crok\u003e is the number of pages read successfully from the cache, \u003crfl\u003e is\nthe number of failed page reads against the cache, \u003cwok\u003e is the number of\nsuccessful page writes to the cache, \u003cwfl\u003e is the number of failed page writes\nto the cache, and \u003cunc\u003e is the number of NFS pages that have been disconnected\nfrom the cache.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "ef79c097bbe9724e13937271b3457df560e00370",
      "tree": "a8671781cc0c9deb85fa76a8b4211c5e693b4343",
      "parents": [
        "10329a5d48f5abc14a37d30b706e330f8598297a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "message": "NFS: Use local disk inode cache\n\nBind data storage objects in the local cache to NFS inodes.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "08734048b380103f0412f58b84c2f76a2c8b599f",
      "tree": "34a65d40e33b12d36f5c82adb686bcdae6eab0fe",
      "parents": [
        "147272813e043fb44bd112527951da70c1e663de"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "message": "NFS: Define and create superblock-level objects\n\nDefine and create superblock-level cache index objects (as managed by\nnfs_server structs).\n\nEach superblock object is created in a server level index object and is itself\nan index into which inode-level objects are inserted.\n\nIdeally there would be one superblock-level object per server, and the former\nwould be folded into the latter; however, since the \"nosharecache\" option\nexists this isn\u0027t possible.\n\nThe superblock object key is a sequence consisting of:\n\n (1) Certain superblock s_flags.\n\n (2) Various connection parameters that serve to distinguish superblocks for\n     sget().\n\n (3) The volume FSID.\n\n (4) The security flavour.\n\n (5) The uniquifier length.\n\n (6) The uniquifier text.  This is normally an empty string, unless the fsc\u003dxyz\n     mount option was used to explicitly specify a uniquifier.\n\nThe key blob is of variable length, depending on the length of (6).\n\nThe superblock object is given no coherency data to carry in the auxiliary data\npermitted by the cache.  It is assumed that the superblock is always coherent.\n\nThis patch also adds uniquification handling such that two otherwise identical\nsuperblocks, at least one of which is marked \"nosharecache\", won\u0027t end up\ntrying to share the on-disk cache.  It will be possible to manually provide a\nuniquifier through a mount option with a later patch to avoid the error\notherwise produced.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "147272813e043fb44bd112527951da70c1e663de",
      "tree": "4b67df2bb809c7b661e7c6f4b1692ab8af41a996",
      "parents": [
        "8ec442ae4c6577ed181682e534d4eef524e30b3c"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "message": "NFS: Define and create server-level objects\n\nDefine and create server-level cache index objects (as managed by nfs_client\nstructs).\n\nEach server object is created in the NFS top-level index object and is itself\nan index into which superblock-level objects are inserted.\n\nIdeally there would be one superblock-level object per server, and the former\nwould be folded into the latter; however, since the \"nosharecache\" option\nexists this isn\u0027t possible.\n\nThe server object key is a sequence consisting of:\n\n (1) NFS version\n\n (2) Server address family (eg: AF_INET or AF_INET6)\n\n (3) Server port.\n\n (4) Server IP address.\n\nThe key blob is of variable length, depending on the length of (4).\n\nThe server object is given no coherency data to carry in the auxiliary data\npermitted by the cache.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "c6a6f19e22da0a3d74214ee010224c9a30a794c1",
      "tree": "e10e6bf056e9a7f276e98bd55d0d04b491844807",
      "parents": [
        "6b9b3514aa188183e74049853be43380ad49314f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "message": "NFS: Add FS-Cache option bit and debug bit\n\nAdd FS-Cache option bit to nfs_server struct.  This is set to indicate local\non-disk caching is enabled for a particular superblock.\n\nAlso add debug bit for local caching operations.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "385e1ca5f21c4680ad6a46a3aa2ea8af99e99c92",
      "tree": "7d887b59d943c5dd62c9604b7ea37fd2d650df71",
      "parents": [
        "b510882281d56873e1194021643b7c325336f84f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:39 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:39 2009 +0100"
      },
      "message": "CacheFiles: Permit the page lock state to be monitored\n\nAdd a function to install a monitor on the page lock waitqueue for a particular\npage, thus allowing the page being unlocked to be detected.\n\nThis is used by CacheFiles to detect read completion on a page in the backing\nfilesystem so that it can then copy the data to the waiting netfs page.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "b510882281d56873e1194021643b7c325336f84f",
      "tree": "86cd206b0d2b55dc355833ca238d46488161b64c",
      "parents": [
        "952efe7b7840e1c726ae88222245e4efe6bd88f3"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:39 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:39 2009 +0100"
      },
      "message": "FS-Cache: Implement data I/O part of netfs API\n\nImplement the data I/O part of the FS-Cache netfs API.  The documentation and\nAPI header file were added in a previous patch.\n\nThis patch implements the following functions for the netfs to call:\n\n (*) fscache_attr_changed().\n\n     Indicate that the object has changed its attributes.  The only attribute\n     currently recorded is the file size.  Only pages within the set file size\n     will be stored in the cache.\n\n     This operation is submitted for asynchronous processing, and will return\n     immediately.  It will return -ENOMEM if an out of memory error is\n     encountered, -ENOBUFS if the object is not actually cached, or 0 if the\n     operation is successfully queued.\n\n (*) fscache_read_or_alloc_page().\n (*) fscache_read_or_alloc_pages().\n\n     Request data be fetched from the disk, and allocate internal metadata to\n     track the netfs pages and reserve disk space for unknown pages.\n\n     These operations perform semi-asynchronous data reads.  Upon returning\n     they will indicate which pages they think can be retrieved from disk, and\n     will have set in progress attempts to retrieve those pages.\n\n     These will return, in order of preference, -ENOMEM on memory allocation\n     error, -ERESTARTSYS if a signal interrupted proceedings, -ENODATA if one\n     or more requested pages are not yet cached, -ENOBUFS if the object is not\n     actually cached or if there isn\u0027t space for future pages to be cached on\n     this object, or 0 if successful.\n\n     In the case of the multipage function, the pages for which reads are set\n     in progress will be removed from the list and the page count decreased\n     appropriately.\n\n     If any read operations should fail, the completion function will be given\n     an error, and will also be passed contextual information to allow the\n     netfs to fall back to querying the server for the absent pages.\n\n     For each successful read, the page completion function will also be\n     called.\n\n     Any pages subsequently tracked by the cache will have PG_fscache set upon\n     them on return.  fscache_uncache_page() must be called for such pages.\n\n     If supplied by the netfs, the mark_pages_cached() cookie op will be\n     invoked for any pages now tracked.\n\n (*) fscache_alloc_page().\n\n     Allocate internal metadata to track a netfs page and reserve disk space.\n\n     This will return -ENOMEM on memory allocation error, -ERESTARTSYS on\n     signal, -ENOBUFS if the object isn\u0027t cached, or there isn\u0027t enough space\n     in the cache, or 0 if successful.\n\n     Any pages subsequently tracked by the cache will have PG_fscache set upon\n     them on return.  fscache_uncache_page() must be called for such pages.\n\n     If supplied by the netfs, the mark_pages_cached() cookie op will be\n     invoked for any pages now tracked.\n\n (*) fscache_write_page().\n\n     Request data be stored to disk.  This may only be called on pages that\n     have been read or alloc\u0027d by the above three functions and have not yet\n     been uncached.\n\n     This will return -ENOMEM on memory allocation error, -ERESTARTSYS on\n     signal, -ENOBUFS if the object isn\u0027t cached, or there isn\u0027t immediately\n     enough space in the cache, or 0 if successful.\n\n     On a successful return, this operation will have queued the page for\n     asynchronous writing to the cache.  The page will be returned with\n     PG_fscache_write set until the write completes one way or another.  The\n     caller will not be notified if the write fails due to an I/O error.  If\n     that happens, the object will become available and all pending writes will\n     be aborted.\n\n     Note that the cache may batch up page writes, and so it may take a while\n     to get around to writing them out.\n\n     The caller must assume that until PG_fscache_write is cleared the page is\n     use by the cache.  Any changes made to the page may be reflected on disk.\n     The page may even be under DMA.\n\n (*) fscache_uncache_page().\n\n     Indicate that the cache should stop tracking a page previously read or\n     alloc\u0027d from the cache.  If the page was alloc\u0027d only, but unwritten, it\n     will not appear on disk.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "ccc4fc3d11e91477036d1f82bfa2d442f6ce77f0",
      "tree": "c3ead4b385f9efce6e2688832dfb76391e18345d",
      "parents": [
        "36c9559022850f919269564a74bf17fdabf4bb30"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:38 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:38 2009 +0100"
      },
      "message": "FS-Cache: Implement the cookie management part of the netfs API\n\nImplement the cookie management part of the FS-Cache netfs client API.  The\ndocumentation and API header file were added in a previous patch.\n\nThis patch implements the following three functions:\n\n (1) fscache_acquire_cookie().\n\n     Acquire a cookie to represent an object to the netfs.  If the object in\n     question is a non-index object, then that object and its parent indices\n     will be created on disk at this point if they don\u0027t already exist.  Index\n     creation is deferred because an index may reside in multiple caches.\n\n (2) fscache_relinquish_cookie().\n\n     Retire or release a cookie previously acquired.  At this point, the\n     object on disk may be destroyed.\n\n (3) fscache_update_cookie().\n\n     Update the in-cache representation of a cookie.  This is used to update\n     the auxiliary data for coherency management purposes.\n\nWith this patch it is possible to have a netfs instruct a cache backend to\nlook up, validate and create metadata on disk and to destroy it again.\nThe ability to actually store and retrieve data in the objects so created is\nadded in later patches.\n\nNote that these functions will never return an error.  _All_ errors are\nhandled internally to FS-Cache.\n\nThe worst that can happen is that fscache_acquire_cookie() may return a NULL\npointer - which is considered a negative cookie pointer and can be passed back\nto any function that takes a cookie without harm.  A negative cookie pointer\nmerely suppresses caching at that level.\n\nThe stub in linux/fscache.h will detect inline the negative cookie pointer and\nabort the operation as fast as possible.  This means that the compiler doesn\u0027t\nhave to set up for a call in that case.\n\nSee the documentation in Documentation/filesystems/caching/netfs-api.txt for\nmore information.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "726dd7ff10c217dd74329c94643dc8ebea27334b",
      "tree": "9bd5b011f945fca4f1b057f7e7750414b1fd9fbd",
      "parents": [
        "955d00917f0c094e0f2fb88df967e980ab66b8ca"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:38 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:38 2009 +0100"
      },
      "message": "FS-Cache: Add netfs registration\n\nAdd functions to register and unregister a network filesystem or other client\nof the FS-Cache service.  This allocates and releases the cookie representing\nthe top-level index for a netfs, and makes it available to the netfs.\n\nIf the FS-Cache facility is disabled, then the calls are optimised away at\ncompile time.\n\nNote that whilst this patch may appear to work with FS-Cache enabled and a\nnetfs attempting to use it, it will leak the cookie it allocates for the netfs\nas fscache_relinquish_cookie() is implemented in a later patch.  This will\ncause the slab code to emit a warning when the module is removed.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "0e04d4cefcf4d8fbbdb2c50e93ad541582933fd2",
      "tree": "97c4cda6a2c246660e6a5c718a9272375cdb259c",
      "parents": [
        "a6891645cf2ddd4778096848a864580e7258faba"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:37 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:37 2009 +0100"
      },
      "message": "FS-Cache: Add cache tag handling\n\nImplement two features of FS-Cache:\n\n (1) The ability to request and release cache tags - names by which a cache may\n     be known to a netfs, and thus selected for use.\n\n (2) An internal function by which a cache is selected by consulting the netfs,\n     if the netfs wishes to be consulted.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "7394daa8c61dfda4baa687f133748fa0b599b017",
      "tree": "32d2c55ed60596918ec62ce6ecca186337bf4660",
      "parents": [
        "06b3db1b9bccdc8c2c743122a89745279e5ecc46"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:37 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:37 2009 +0100"
      },
      "message": "FS-Cache: Add use of /proc and presentation of statistics\n\nMake FS-Cache create its /proc interface and present various statistical\ninformation through it.  Also provide the functions for updating this\ninformation.\n\nThese features are enabled by:\n\n\tCONFIG_FSCACHE_PROC\n\tCONFIG_FSCACHE_STATS\n\tCONFIG_FSCACHE_HISTOGRAM\n\nThe /proc directory for FS-Cache is also exported so that caching modules can\nadd their own statistics there too.\n\nThe FS-Cache module is loadable at this point, and the statistics files can be\nexamined by userspace:\n\n\tcat /proc/fs/fscache/stats\n\tcat /proc/fs/fscache/histogram\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "0dfc41d1efcc4180abfd32f68f0ade540e636ff6",
      "tree": "f066d08e2c33d2b475e55c5b18e4e4bff537ee75",
      "parents": [
        "2d6fff637037395cc946ef910a880b5fa67b5370"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:36 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:36 2009 +0100"
      },
      "message": "FS-Cache: Add the FS-Cache cache backend API and documentation\n\nAdd the API for a generic facility (FS-Cache) by which caches may declare them\nselves open for business, and may obtain work to be done from network\nfilesystems.  The header file is included by:\n\n\t#include \u003clinux/fscache-cache.h\u003e\n\nDocumentation for the API is also added to:\n\n\tDocumentation/filesystems/caching/backend-api.txt\n\nThis API is not usable without the implementation of the utility functions\nwhich will be added in further patches.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "2d6fff637037395cc946ef910a880b5fa67b5370",
      "tree": "a369011a976d5faf4fe45cf237503078cbbfb9b4",
      "parents": [
        "266cf658efcf6ac33541a46740f74f50c79d2b6b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:36 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:36 2009 +0100"
      },
      "message": "FS-Cache: Add the FS-Cache netfs API and documentation\n\nAdd the API for a generic facility (FS-Cache) by which filesystems (such as AFS\nor NFS) may call on local caching capabilities without having to know anything\nabout how the cache works, or even if there is a cache:\n\n\t+---------+\n\t|         |                        +--------------+\n\t|   NFS   |--+                     |              |\n\t|         |  |                 +--\u003e|   CacheFS    |\n\t+---------+  |   +----------+  |   |  /dev/hda5   |\n\t             |   |          |  |   +--------------+\n\t+---------+  +--\u003e|          |  |\n\t|         |      |          |--+\n\t|   AFS   |-----\u003e| FS-Cache |\n\t|         |      |          |--+\n\t+---------+  +--\u003e|          |  |\n\t             |   |          |  |   +--------------+\n\t+---------+  |   +----------+  |   |              |\n\t|         |  |                 +--\u003e|  CacheFiles  |\n\t|  ISOFS  |--+                     |  /var/cache  |\n\t|         |                        +--------------+\n\t+---------+\n\nGeneral documentation and documentation of the netfs specific API are provided\nin addition to the header files.\n\nAs this patch stands, it is possible to build a filesystem against the facility\nand attempt to use it.  All that will happen is that all requests will be\nimmediately denied as if no cache is present.\n\nFurther patches will implement the core of the facility.  The facility will\ntransfer requests from networking filesystems to appropriate caches if\npossible, or else gracefully deny them.\n\nIf this facility is disabled in the kernel configuration, then all its\noperations will trivially reduce to nothing during compilation.\n\nWHY NOT I_MAPPING?\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nI have added my own API to implement caching rather than using i_mapping to do\nthis for a number of reasons.  These have been discussed a lot on the LKML and\nCacheFS mailing lists, but to summarise the basics:\n\n (1) Most filesystems don\u0027t do hole reportage.  Holes in files are treated as\n     blocks of zeros and can\u0027t be distinguished otherwise, making it difficult\n     to distinguish blocks that have been read from the network and cached from\n     those that haven\u0027t.\n\n (2) The backing inode must be fully populated before being exposed to\n     userspace through the main inode because the VM/VFS goes directly to the\n     backing inode and does not interrogate the front inode\u0027s VM ops.\n\n     Therefore:\n\n     (a) The backing inode must fit entirely within the cache.\n\n     (b) All backed files currently open must fit entirely within the cache at\n     \t the same time.\n\n     (c) A working set of files in total larger than the cache may not be\n     \t cached.\n\n     (d) A file may not grow larger than the available space in the cache.\n\n     (e) A file that\u0027s open and cached, and remotely grows larger than the\n     \t cache is potentially stuffed.\n\n (3) Writes go to the backing filesystem, and can only be transferred to the\n     network when the file is closed.\n\n (4) There\u0027s no record of what changes have been made, so the whole file must\n     be written back.\n\n (5) The pages belong to the backing filesystem, and all metadata associated\n     with that page are relevant only to the backing filesystem, and not\n     anything stacked atop it.\n\nOVERVIEW\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nFS-Cache provides (or will provide) the following facilities:\n\n (1) Caches can be added / removed at any time, even whilst in use.\n\n (2) Adds a facility by which tags can be used to refer to caches, even if\n     they\u0027re not available yet.\n\n (3) More than one cache can be used at once.  Caches can be selected\n     explicitly by use of tags.\n\n (4) The netfs is provided with an interface that allows either party to\n     withdraw caching facilities from a file (required for (1)).\n\n (5) A netfs may annotate cache objects that belongs to it.  This permits the\n     storage of coherency maintenance data.\n\n (6) Cache objects will be pinnable and space reservations will be possible.\n\n (7) The interface to the netfs returns as few errors as possible, preferring\n     rather to let the netfs remain oblivious.\n\n (8) Cookies are used to represent indices, files and other objects to the\n     netfs.  The simplest cookie is just a NULL pointer - indicating nothing\n     cached there.\n\n (9) The netfs is allowed to propose - dynamically - any index hierarchy it\n     desires, though it must be aware that the index search function is\n     recursive, stack space is limited, and indices can only be children of\n     indices.\n\n(10) Indices can be used to group files together to reduce key size and to make\n     group invalidation easier.  The use of indices may make lookup quicker,\n     but that\u0027s cache dependent.\n\n(11) Data I/O is effectively done directly to and from the netfs\u0027s pages.  The\n     netfs indicates that page A is at index B of the data-file represented by\n     cookie C, and that it should be read or written.  The cache backend may or\n     may not start I/O on that page, but if it does, a netfs callback will be\n     invoked to indicate completion.  The I/O may be either synchronous or\n     asynchronous.\n\n(12) Cookies can be \"retired\" upon release.  At this point FS-Cache will mark\n     them as obsolete and the index hierarchy rooted at that point will get\n     recycled.\n\n(13) The netfs provides a \"match\" function for index searches.  In addition to\n     saying whether a match was made or not, this can also specify that an\n     entry should be updated or deleted.\n\nFS-Cache maintains a virtual index tree in which all indices, files, objects\nand pages are kept.  Bits of this tree may actually reside in one or more\ncaches.\n\n                                           FSDEF\n                                             |\n                        +------------------------------------+\n                        |                                    |\n                       NFS                                  AFS\n                        |                                    |\n           +--------------------------+                +-----------+\n           |                          |                |           |\n        homedir                     mirror          afs.org   redhat.com\n           |                          |                            |\n     +------------+           +---------------+              +----------+\n     |            |           |               |              |          |\n   00001        00002       00007           00125        vol00001   vol00002\n     |            |           |               |                         |\n +---+---+     +-----+      +---+      +------+------+            +-----+----+\n |   |   |     |     |      |   |      |      |      |            |     |    |\nPG0 PG1 PG2   PG0  XATTR   PG0 PG1   DIRENT DIRENT DIRENT        R/W   R/O  Bak\n                     |                                            |\n                    PG0                                       +-------+\n                                                              |       |\n                                                            00001   00003\n                                                              |\n                                                          +---+---+\n                                                          |   |   |\n                                                         PG0 PG1 PG2\n\nIn the example above, two netfs\u0027s can be seen to be backed: NFS and AFS.  These\nhave different index hierarchies:\n\n (*) The NFS primary index will probably contain per-server indices.  Each\n     server index is indexed by NFS file handles to get data file objects.\n     Each data file objects can have an array of pages, but may also have\n     further child objects, such as extended attributes and directory entries.\n     Extended attribute objects themselves have page-array contents.\n\n (*) The AFS primary index contains per-cell indices.  Each cell index contains\n     per-logical-volume indices.  Each of volume index contains up to three\n     indices for the read-write, read-only and backup mirrors of those volumes.\n     Each of these contains vnode data file objects, each of which contains an\n     array of pages.\n\nThe very top index is the FS-Cache master index in which individual netfs\u0027s\nhave entries.\n\nAny index object may reside in more than one cache, provided it only has index\nchildren.  Any index with non-index object children will be assumed to only\nreside in one cache.\n\nThe FS-Cache overview can be found in:\n\n\tDocumentation/filesystems/caching/fscache.txt\n\nThe netfs API to FS-Cache can be found in:\n\n\tDocumentation/filesystems/caching/netfs-api.txt\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "266cf658efcf6ac33541a46740f74f50c79d2b6b",
      "tree": "5c83b0879892d509e598dfd54be3ba3679ecd348",
      "parents": [
        "03fb3d2af96c2783c3a5bc03f3d984cf422f0e69"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:36 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:36 2009 +0100"
      },
      "message": "FS-Cache: Recruit a page flags for cache management\n\nRecruit a page flag to aid in cache management.  The following extra flag is\ndefined:\n\n (1) PG_fscache (PG_private_2)\n\n     The marked page is backed by a local cache and is pinning resources in the\n     cache driver.\n\nIf PG_fscache is set, then things that checked for PG_private will now also\ncheck for that.  This includes things like truncation and page invalidation.\nThe function page_has_private() had been added to make the checks for both\nPG_private and PG_private_2 at the same time.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "03fb3d2af96c2783c3a5bc03f3d984cf422f0e69",
      "tree": "6618f82f8be26ba2c7ac38d6e6e16befc8e1140f",
      "parents": [
        "8f0aa2f25b31ba27db84259141e52ee6ec0d2820"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:35 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:35 2009 +0100"
      },
      "message": "FS-Cache: Release page-\u003eprivate after failed readahead\n\nThe attached patch causes read_cache_pages() to release page-private data on a\npage for which add_to_page_cache() fails.  If the filler function fails, then\nthe problematic page is left attached to the pagecache (with appropriate flags\nset, one presumes) and the remaining to-be-attached pages are invalidated and\ndiscarded.  This permits pages with caching references associated with them to\nbe cleaned up.\n\nThe invalidatepage() address space op is called (indirectly) to do the honours.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    }
  ],
  "next": "8f0aa2f25b31ba27db84259141e52ee6ec0d2820"
}
