)]}'
{
  "log": [
    {
      "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": "45e36c1666aa6c8b0c538abcf984b336184d8c3f",
      "tree": "c1f1771d6b02ec210238081450b4a063847b3383",
      "parents": [
        "87fc94d54b639d8c39fc4a11db0e142f84096e13",
        "68b42d1b548be1840aff7122fdebeb804daf0fa3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:15:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:15:54 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (23 commits)\n  sh: sh7785lcr: Map whole PCI address space.\n  sh: Fix up DSP context save/restore.\n  sh: Fix up number of on-chip DMA channels on SH7091.\n  sh: update defconfigs.\n  sh: Kill off broken direct-mapped cache mode.\n  sh: Wire up ARCH_HAS_DEFAULT_IDLE for cpuidle.\n  sh: Add a command line option for disabling I/O trapping.\n  sh: Select ARCH_HIBERNATION_POSSIBLE.\n  sh: migor: Fix up CEU use flags.\n  input: migor_ts: add wakeup support\n  rtc: rtc-sh: use set_irq_wake()\n  input: sh_keysc: use enable/disable_irq_wake()\n  sh: intc: set_irq_wake() support\n  sh: intc: install enable, disable and shutdown callbacks\n  clocksource: sh_cmt: use remove_irq() and remove clockevent workaround\n  sh: ap325 and Migo-R use new sh_mobile_ceu_info flags\n  sh: Fix up -Wformat-security whining.\n  sh: ap325rxa: Add ov772x support, again.\n  sh: Sanitize asm/mmu.h for assembly use.\n  sh: Tidy up sh7786 pinmux table.\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": "5412b5399e095730008a14f2107331b2123733e4",
      "tree": "6b3a7aee35a2d7d97cef33a077e6c60a394f5298",
      "parents": [
        "e4c393fd551654179c46b65e4a70ea20d831c783",
        "337fff8b5ed0573ea106491c6de47bd7fe623500"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:26:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:26:36 2009 -0700"
      },
      "message": "Merge branch \u0027core/debugobjects\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core/debugobjects\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  debugobjects: delay free of internal objects\n  debugobjects: replace static objects when slab cache becomes available\n  debug_objects: add boot-parameter toggle to turn object debugging off again\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": "3b4dadf05d177289c279c50030c7c75e004952bb",
      "tree": "5ee1a21f5dd3d4682e7ed9f92ba97fa4a507f62f",
      "parents": [
        "59b17bf6ea06abed519dfc788fff1b6b9499d23f",
        "7e90560c50f754d65884e251e94c1efa2a4b5784"
      ],
      "author": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:50:46 2009 -0400"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:50:46 2009 -0400"
      },
      "message": "Merge branch \u0027acpi_enforce_resources\u0027 into release\n"
    },
    {
      "commit": "336d63b8a3cadc1c678f4b16d6105633c7f6af75",
      "tree": "d8d713eb39500139ec637c55cc38e62d863d1845",
      "parents": [
        "07290bed7968c0e08fb3efe193fb148f1fea5e08",
        "0e501834f8c2ba7de2a56e332d346dcf4ac0b593"
      ],
      "author": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:42:09 2009 -0400"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sun Apr 05 01:42:09 2009 -0400"
      },
      "message": "Merge branch \u0027thinkpad-acpi\u0027 into release\n"
    },
    {
      "commit": "4f0175dc13a57cb5d2abef44eb4394b0b964bdad",
      "tree": "8bd905c4a378dc4a5d6e51fe51b866da19399ac8",
      "parents": [
        "350e32907cf72ef82bbe7d72525fa2d9dcf64682"
      ],
      "author": {
        "name": "Carlos Corbacho",
        "email": "carlos@strangeworlds.co.uk",
        "time": "Sat Apr 04 09:33:39 2009 +0100"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sat Apr 04 12:36:31 2009 -0400"
      },
      "message": "acer-wmi: Update copyright notice \u0026 documentation\n\nExplicitly note in the documentation that the Acer Aspire One is not\nsupported.\n\nSigned-off-by: Carlos Corbacho \u003ccarlos@strangeworlds.co.uk\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "0e501834f8c2ba7de2a56e332d346dcf4ac0b593",
      "tree": "97aa4223015bbb43ffeced0812b243e42f8ba872",
      "parents": [
        "74a60c0f828016456fc635feae388ffd12bb3bb9"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Apr 04 04:25:53 2009 +0000"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sat Apr 04 03:14:53 2009 -0400"
      },
      "message": "thinkpad-acpi: rework brightness support\n\nRefactor and redesign the brightness control backend...\n\nIn order to fix bugzilla #11750...\n\nAdd a new brightness control mode: support direct NVRAM checkpointing\nof the backlight level (i.e. store directly to NVRAM without the need\nfor UCMS calls), and use that together with the EC-based control.\nDisallow UCMS+EC, thus avoiding races with the SMM firmware.\n\nSwitch the models that define HBRV (EC Brightness Value) in the DSDT\nto the new mode.  These are: T40-T43, R50-R52, R50e, R51e, X31-X41.\n\nChange the default for all other IBM ThinkPads to UCMS-only.  The\nLenovo models already default to UCMS-only.\n\nReported-by: Alexey Fisher \u003cbug-track@fisher-privat.net\u003e\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "74a60c0f828016456fc635feae388ffd12bb3bb9",
      "tree": "fe801c68171a2a69564a16e59c307fc2745db082",
      "parents": [
        "56e2c200945dafafb86169762eb1e88aed0ce69e"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Apr 04 04:25:52 2009 +0000"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sat Apr 04 03:14:53 2009 -0400"
      },
      "message": "thinkpad-acpi: enhanced debugging messages for the fan subdriver\n\nEnhance debugging messages for the fan subdriver.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "56e2c200945dafafb86169762eb1e88aed0ce69e",
      "tree": "83a89fd46c507655716f556bc9038c14ef1032e7",
      "parents": [
        "bee4cd9b9eaa8c72832e1ee7f4940604e94beb27"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Apr 04 04:25:51 2009 +0000"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sat Apr 04 03:14:53 2009 -0400"
      },
      "message": "thinkpad-acpi: enhanced debugging messages for the hotkey subdriver\n\nEnhance debugging messages for the hotkey subdriver.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "bee4cd9b9eaa8c72832e1ee7f4940604e94beb27",
      "tree": "55c18af3b6990ac5f6216a02d24d24ec34d890f7",
      "parents": [
        "a4d5effcc73749ee3ebbf578d162905e6fa4e07d"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Apr 04 04:25:50 2009 +0000"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sat Apr 04 03:14:53 2009 -0400"
      },
      "message": "thinkpad-acpi: enhanced debugging messages for rfkill subdrivers\n\nEnhance debugging messages for all rfkill subdrivers in thinkpad-acpi.\n\nAlso, log a warning if the deprecated sysfs attributes are in use.\nThese attributes are going to be removed sometime in 2010.\n\nThere is an user-visible side-effect: we now coalesce attempts to\nenable/disable bluetooth or WWAN in the procfs interface, instead of\nhammering the firmware with multiple requests.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "a4d5effcc73749ee3ebbf578d162905e6fa4e07d",
      "tree": "1160b3763004be227cfe3d6c15e4235a9ccf69b7",
      "parents": [
        "2586d5663d0a17d69383acf6110f16a979a07c4e"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Apr 04 04:25:49 2009 +0000"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sat Apr 04 03:14:52 2009 -0400"
      },
      "message": "thinkpad-acpi: restrict access to some firmware LEDs\n\nSome of the ThinkPad LEDs indicate critical conditions that can cause\ndata loss or cause hardware damage when ignored (e.g. force-ejecting\na powered up bay; ignoring a failing battery, or empty battery; force-\nundocking with the dock buses still active, etc).\n\nOn almost all ThinkPads, LED access is write-only, and the firmware\nusually does fire-and-forget signaling on them, so you effectively\nlose whatever message the firmware was trying to convey to the user\nwhen you override the LED state, without any chance to restore it.\n\nRestrict access to all LEDs that can convey important alarms, or that\ncould mislead the user into incorrectly operating the hardware.  This\nwill make the Lenovo engineers less unhappy about the whole issue.\n\nAllow users that really want it to still control all LEDs, it is the\nunaware user that we have to worry about.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "2586d5663d0a17d69383acf6110f16a979a07c4e",
      "tree": "5bfe1ef88ee03084175bb94c4c1079402fefbe7b",
      "parents": [
        "73a94d86a8625371f76de0ee12dc5bacd3ed42c0"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Apr 04 04:25:48 2009 +0000"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sat Apr 04 03:14:52 2009 -0400"
      },
      "message": "thinkpad-acpi: remove HKEY disable functionality\n\nThe HKEY disable functionality basically cripples the entire event\nmodel of the ThinkPad firmware and of the thinkpad-acpi driver.\nRemove this functionality from the driver.  HKEY must be enabled at\nall times while thinkpad-acpi is loaded, and disabled otherwise.\n\nFor sysfs, according to the sysfs ABI and the thinkpad-acpi sysfs\nrules of engagement, we will just remove the attributes.  This will be\ndone in two stages: disable their function now, after two kernel\nreleases, remove the attributes.\n\nFor procfs, we call WARN().  If nothing triggers it, I will simply\nremove the enable/disable commands entirely in the future along with\nthe sysfs attributes.\n\nI don\u0027t expect much, if any fallout from this.  There really isn\u0027t any\nreason to mess with hotkey_enable or with the enable/disable commands\nto /proc/acpi/ibm/hotkey, and this has been true for years...\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "73a94d86a8625371f76de0ee12dc5bacd3ed42c0",
      "tree": "db8def5a298edf3b70efefb4fd255da87ca0d2fd",
      "parents": [
        "7ff8d62f7f055aaffbeb493863136c1b876bbe2e"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Apr 04 04:25:47 2009 +0000"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sat Apr 04 03:14:52 2009 -0400"
      },
      "message": "thinkpad-acpi: add new debug helpers and warn of deprecated atts\n\nAdd a debug helper that discloses the TGID of the userspace task\nattempting to access the driver.  This is highly useful when dealing\nwith bug reports, since often the user has no idea that some userspace\napplication is accessing thinkpad-acpi...\n\nAlso add a helper to log warnings about sysfs attributes that are\ndeprecated.\n\nUse the new helpers to issue deprecation warnings for bluetooth_enable\nand wwan_enabled, that have been deprecated for a while, now.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "078ac19ed8f476a7c2d729712e15f5ab516ff491",
      "tree": "7ae8ffecc3405941087393d188eb5576e78e812e",
      "parents": [
        "257bc1cb3e29c8da62b9c9e0a4505011776c7040"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Apr 04 04:25:44 2009 +0000"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sat Apr 04 03:14:52 2009 -0400"
      },
      "message": "thinkpad-acpi: documentation cleanup\n\nSome cleanups to the documentation of the driver.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "04c860c188ebdcf396fd50751592fb5a9f51287a",
      "tree": "c29aa2acca5c944a725cacef356d131f37bb688a",
      "parents": [
        "5fba0925fd6b67d94181055b7222e3d934b4efee"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Fri Apr 03 14:50:52 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 15:27:19 2009 -0700"
      },
      "message": "LANANA: Change of management and resync\n\nBring the devices.txt back into some relationship with reality. Update the\ndocumentation a bit.\n\nSigned-off-by: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "b8523c40d57f5996a467f83825cb05583a5a7da4",
      "tree": "d345233b8e97d64995d60370eca78c5f3fdefa61",
      "parents": [
        "e333720166a432ea890dbd438b465fd0cee3be32"
      ],
      "author": {
        "name": "Evgeniy Polyakov",
        "email": "zbr@ioremap.net",
        "time": "Mon Feb 09 17:02:34 2009 +0300"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Apr 03 14:53:33 2009 -0700"
      },
      "message": "Staging: pohmelfs: documentation.\n\nThis patch includes POHMELFS design and implementation description.\nSeparate file includes mount options, default parameters and usage examples.\n\nSigned-off-by: Eveniy Polyakov \u003czbr@ioremap.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\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": "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": "9b59f0316bc556a1b63518f0b1224cf9be48467b",
      "tree": "d6ffccbe5d9ce5f55c1b2efaf02220c701d4420a",
      "parents": [
        "ac7c1a776dfe1a9c83ea7885f858f5f1a144d8af",
        "0d8fe329a80714e0f729ae48cba8d64cbe5701cb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.open-osd.org/linux-open-osd\n\n* \u0027for-linus\u0027 of git://git.open-osd.org/linux-open-osd:\n  fs: Add exofs to Kernel build\n  exofs: Documentation\n  exofs: export_operations\n  exofs: super_operations and file_system_type\n  exofs: dir_inode and directory operations\n  exofs: address_space_operations\n  exofs: symlink_inode and fast_symlink_inode operations\n  exofs: file and file_inode operations\n  exofs: Kbuild, Headers and osd utils\n"
    },
    {
      "commit": "03c3fa0a3bf48dcb024263a9ea41daecacbc6efa",
      "tree": "8fcd8410094e86cb9e58efd835e8e70b6b928788",
      "parents": [
        "3e850509e19b4b013bf6aee7c0d24d047c4b968f",
        "146bca72c7e6ba52de82a63b1fce7934dc103dbc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:50:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:50:39 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6:\n  udf: Don\u0027t write integrity descriptor too often\n  udf: Try anchor in block 256 first\n  udf: Some type fixes and cleanups\n  udf: use hardware sector size\n  udf: fix novrs mount option\n  udf: Fix oops when invalid character in filename occurs\n  udf: return f_fsid for statfs(2)\n  udf: Add checks to not underflow sector_t\n  udf: fix default mode and dmode options handling\n  udf: fix sparse warnings:\n  udf: unsigned last[i] cannot be less than 0\n  udf: implement mode and dmode mounting options\n  udf: reduce stack usage of udf_get_filename\n  udf: reduce stack usage of udf_load_pvoldesc\n  Fix the udf code not to pass structs on stack where possible.\n  Remove struct typedefs from fs/udf/ecma_167.h et al.\n"
    },
    {
      "commit": "3e850509e19b4b013bf6aee7c0d24d047c4b968f",
      "tree": "3775fea2ac9ff910a79611915ae873a86e9efd79",
      "parents": [
        "a0e0404fb06164100991cacf8e055f6b30f87cc9",
        "edd4070f5d943b35e3e1a2e5e95e4a2eebb11d53"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:50:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:50:14 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/rcu-doc-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/rcu-doc-2.6:\n  Doc: Fix spelling in RCU/rculist_nulls.txt.\n  Doc: Fix wrong API example usage of call_rcu().\n  Doc: Fix missing whitespaces in RCU documentation.\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": "31e6e2dac575c9d21a6ec56ca52ae89086baa705",
      "tree": "a83dc42a3e4ff2e49e532031ec3e86c402e4baa1",
      "parents": [
        "ea02259fdf47ca81ff3ca0c22906d989094fb8ff",
        "67a52bb90b515c2a96ec51a3571bcd70a2fadb50"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:05:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:05:40 2009 -0700"
      },
      "message": "Merge master.kernel.org:/home/rmk/linux-2.6-arm\n\n* master.kernel.org:/home/rmk/linux-2.6-arm:\n  [ARM] fix build-breaking 7a192ec commit\n  ARM: Add SMSC911X support to Overo platform (V2)\n  arm: update omap_ldp defconfig to use smsc911x\n  arm: update realview defconfigs to use smsc911x\n  arm: update pcm037 defconfig to use smsc911x\n  arm: convert omap ldp platform to use smsc911x\n  arm: convert realview platform to use smsc911x\n  arm: convert pcm037 platform to use smsc911x\n  [ARM] 5444/1: ARM: Realview: Fix event-device multiplicators in localtimer.c\n  [ARM] 5442/1: pxa/cm-x255: fix reverse RDY gpios in PCMCIA driver\n  [ARM] 5441/1: Use pr_err on error paths in at91 pm\n  [ARM] 5440/1: Fix VFP state corruption due to preemption during VFP exceptions\n  [ARM] 5439/1: Do not clear bit 10 of DFSR during abort handling on ARMv6\n  [ARM] 5437/1: Add documentation for \"nohlt\" kernel parameter\n  [ARM] 5436/1: ARM: OMAP: Fix compile for rx51\n  [ARM] arch_reset() now takes a second parameter\n  [ARM] Kirkwood: small L2 code cleanup\n  [ARM] Kirkwood: invalidate L2 cache before enabling it\n"
    },
    {
      "commit": "9ae326a69004dea8af2dae4fde58de27db700a8d",
      "tree": "3a1d88a6e297989bfbd17648b398c7aa5ef9bf30",
      "parents": [
        "800a964787faef3509d194fa33268628c3d1daa9"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:41 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:41 2009 +0100"
      },
      "message": "CacheFiles: A cache that backs onto a mounted filesystem\n\nAdd an FS-Cache cache-backend that permits a mounted filesystem to be used as a\nbacking store for the cache.\n\nCacheFiles uses a userspace daemon to do some of the cache management - such as\nreaping stale nodes and culling.  This is called cachefilesd and lives in\n/sbin.  The source for the daemon can be downloaded from:\n\n\thttp://people.redhat.com/~dhowells/cachefs/cachefilesd.c\n\nAnd an example configuration from:\n\n\thttp://people.redhat.com/~dhowells/cachefs/cachefilesd.conf\n\nThe filesystem and data integrity of the cache are only as good as those of the\nfilesystem providing the backing services.  Note that CacheFiles does not\nattempt to journal anything since the journalling interfaces of the various\nfilesystems are very specific in nature.\n\nCacheFiles creates a misc character device - \"/dev/cachefiles\" - that is used\nto communication with the daemon.  Only one thing may have this open at once,\nand whilst it is open, a cache is at least partially in existence.  The daemon\nopens this and sends commands down it to control the cache.\n\nCacheFiles is currently limited to a single cache.\n\nCacheFiles attempts to maintain at least a certain percentage of free space on\nthe filesystem, shrinking the cache by culling the objects it contains to make\nspace if necessary - see the \"Cache Culling\" section.  This means it can be\nplaced on the same medium as a live set of data, and will expand to make use of\nspare space and automatically contract when the set of data requires more\nspace.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nREQUIREMENTS\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe use of CacheFiles and its daemon requires the following features to be\navailable in the system and in the cache filesystem:\n\n\t- dnotify.\n\n\t- extended attributes (xattrs).\n\n\t- openat() and friends.\n\n\t- bmap() support on files in the filesystem (FIBMAP ioctl).\n\n\t- The use of bmap() to detect a partial page at the end of the file.\n\nIt is strongly recommended that the \"dir_index\" option is enabled on Ext3\nfilesystems being used as a cache.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nCONFIGURATION\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe cache is configured by a script in /etc/cachefilesd.conf.  These commands\nset up cache ready for use.  The following script commands are available:\n\n (*) brun \u003cN\u003e%\n (*) bcull \u003cN\u003e%\n (*) bstop \u003cN\u003e%\n (*) frun \u003cN\u003e%\n (*) fcull \u003cN\u003e%\n (*) fstop \u003cN\u003e%\n\n\tConfigure the culling limits.  Optional.  See the section on culling\n\tThe defaults are 7% (run), 5% (cull) and 1% (stop) respectively.\n\n\tThe commands beginning with a \u0027b\u0027 are file space (block) limits, those\n\tbeginning with an \u0027f\u0027 are file count limits.\n\n (*) dir \u003cpath\u003e\n\n\tSpecify the directory containing the root of the cache.  Mandatory.\n\n (*) tag \u003cname\u003e\n\n\tSpecify a tag to FS-Cache to use in distinguishing multiple caches.\n\tOptional.  The default is \"CacheFiles\".\n\n (*) debug \u003cmask\u003e\n\n\tSpecify a numeric bitmask to control debugging in the kernel module.\n\tOptional.  The default is zero (all off).  The following values can be\n\tOR\u0027d into the mask to collect various information:\n\n\t\t1\tTurn on trace of function entry (_enter() macros)\n\t\t2\tTurn on trace of function exit (_leave() macros)\n\t\t4\tTurn on trace of internal debug points (_debug())\n\n\tThis mask can also be set through sysfs, eg:\n\n\t\techo 5 \u003e/sys/modules/cachefiles/parameters/debug\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSTARTING THE CACHE\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe cache is started by running the daemon.  The daemon opens the cache device,\nconfigures the cache and tells it to begin caching.  At that point the cache\nbinds to fscache and the cache becomes live.\n\nThe daemon is run as follows:\n\n\t/sbin/cachefilesd [-d]* [-s] [-n] [-f \u003cconfigfile\u003e]\n\nThe flags are:\n\n (*) -d\n\n\tIncrease the debugging level.  This can be specified multiple times and\n\tis cumulative with itself.\n\n (*) -s\n\n\tSend messages to stderr instead of syslog.\n\n (*) -n\n\n\tDon\u0027t daemonise and go into background.\n\n (*) -f \u003cconfigfile\u003e\n\n\tUse an alternative configuration file rather than the default one.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nTHINGS TO AVOID\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nDo not mount other things within the cache as this will cause problems.  The\nkernel module contains its own very cut-down path walking facility that ignores\nmountpoints, but the daemon can\u0027t avoid them.\n\nDo not create, rename or unlink files and directories in the cache whilst the\ncache is active, as this may cause the state to become uncertain.\n\nRenaming files in the cache might make objects appear to be other objects (the\nfilename is part of the lookup key).\n\nDo not change or remove the extended attributes attached to cache files by the\ncache as this will cause the cache state management to get confused.\n\nDo not create files or directories in the cache, lest the cache get confused or\nserve incorrect data.\n\nDo not chmod files in the cache.  The module creates things with minimal\npermissions to prevent random users being able to access them directly.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nCACHE CULLING\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe cache may need culling occasionally to make space.  This involves\ndiscarding objects from the cache that have been used less recently than\nanything else.  Culling is based on the access time of data objects.  Empty\ndirectories are culled if not in use.\n\nCache culling is done on the basis of the percentage of blocks and the\npercentage of files available in the underlying filesystem.  There are six\n\"limits\":\n\n (*) brun\n (*) frun\n\n     If the amount of free space and the number of available files in the cache\n     rises above both these limits, then culling is turned off.\n\n (*) bcull\n (*) fcull\n\n     If the amount of available space or the number of available files in the\n     cache falls below either of these limits, then culling is started.\n\n (*) bstop\n (*) fstop\n\n     If the amount of available space or the number of available files in the\n     cache falls below either of these limits, then no further allocation of\n     disk space or files is permitted until culling has raised things above\n     these limits again.\n\nThese must be configured thusly:\n\n\t0 \u003c\u003d bstop \u003c bcull \u003c brun \u003c 100\n\t0 \u003c\u003d fstop \u003c fcull \u003c frun \u003c 100\n\nNote that these are percentages of available space and available files, and do\n_not_ appear as 100 minus the percentage displayed by the \"df\" program.\n\nThe userspace daemon scans the cache to build up a table of cullable objects.\nThese are then culled in least recently used order.  A new scan of the cache is\nstarted as soon as space is made in the table.  Objects will be skipped if\ntheir atimes have changed or if the kernel module says it is still using them.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nCACHE STRUCTURE\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe CacheFiles module will create two directories in the directory it was\ngiven:\n\n (*) cache/\n\n (*) graveyard/\n\nThe active cache objects all reside in the first directory.  The CacheFiles\nkernel module moves any retired or culled objects that it can\u0027t simply unlink\nto the graveyard from which the daemon will actually delete them.\n\nThe daemon uses dnotify to monitor the graveyard directory, and will delete\nanything that appears therein.\n\nThe module represents index objects as directories with the filename \"I...\" or\n\"J...\".  Note that the \"cache/\" directory is itself a special index.\n\nData objects are represented as files if they have no children, or directories\nif they do.  Their filenames all begin \"D...\" or \"E...\".  If represented as a\ndirectory, data objects will have a file in the directory called \"data\" that\nactually holds the data.\n\nSpecial objects are similar to data objects, except their filenames begin\n\"S...\" or \"T...\".\n\nIf an object has children, then it will be represented as a directory.\nImmediately in the representative directory are a collection of directories\nnamed for hash values of the child object keys with an \u0027@\u0027 prepended.  Into\nthis directory, if possible, will be placed the representations of the child\nobjects:\n\n\tINDEX     INDEX      INDEX                             DATA FILES\n\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\tcache/@4a/I03nfs/@30/Ji000000000000000--fHg8hi8400\n\tcache/@4a/I03nfs/@30/Ji000000000000000--fHg8hi8400/@75/Es0g000w...DB1ry\n\tcache/@4a/I03nfs/@30/Ji000000000000000--fHg8hi8400/@75/Es0g000w...N22ry\n\tcache/@4a/I03nfs/@30/Ji000000000000000--fHg8hi8400/@75/Es0g000w...FP1ry\n\nIf the key is so long that it exceeds NAME_MAX with the decorations added on to\nit, then it will be cut into pieces, the first few of which will be used to\nmake a nest of directories, and the last one of which will be the objects\ninside the last directory.  The names of the intermediate directories will have\n\u0027+\u0027 prepended:\n\n\tJ1223/@23/+xy...z/+kl...m/Epqr\n\nNote that keys are raw data, and not only may they exceed NAME_MAX in size,\nthey may also contain things like \u0027/\u0027 and NUL characters, and so they may not\nbe suitable for turning directly into a filename.\n\nTo handle this, CacheFiles will use a suitably printable filename directly and\n\"base-64\" encode ones that aren\u0027t directly suitable.  The two versions of\nobject filenames indicate the encoding:\n\n\tOBJECT TYPE\tPRINTABLE\tENCODED\n\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\tIndex\t\t\"I...\"\t\t\"J...\"\n\tData\t\t\"D...\"\t\t\"E...\"\n\tSpecial\t\t\"S...\"\t\t\"T...\"\n\nIntermediate directories are always \"@\" or \"+\" as appropriate.\n\nEach object in the cache has an extended attribute label that holds the object\ntype ID (required to distinguish special objects) and the auxiliary data from\nthe netfs.  The latter is used to detect stale objects in the cache and update\nor retire them.\n\nNote that CacheFiles will erase from the cache any file it doesn\u0027t recognise or\nany file of an incorrect type (such as a FIFO file or a device file).\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSECURITY MODEL AND SELINUX\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nCacheFiles is implemented to deal properly with the LSM security features of\nthe Linux kernel and the SELinux facility.\n\nOne of the problems that CacheFiles faces is that it is generally acting on\nbehalf of a process, and running in that process\u0027s context, and that includes a\nsecurity context that is not appropriate for accessing the cache - either\nbecause the files in the cache are inaccessible to that process, or because if\nthe process creates a file in the cache, that file may be inaccessible to other\nprocesses.\n\nThe way CacheFiles works is to temporarily change the security context (fsuid,\nfsgid and actor security label) that the process acts as - without changing the\nsecurity context of the process when it the target of an operation performed by\nsome other process (so signalling and suchlike still work correctly).\n\nWhen the CacheFiles module is asked to bind to its cache, it:\n\n (1) Finds the security label attached to the root cache directory and uses\n     that as the security label with which it will create files.  By default,\n     this is:\n\n\tcachefiles_var_t\n\n (2) Finds the security label of the process which issued the bind request\n     (presumed to be the cachefilesd daemon), which by default will be:\n\n\tcachefilesd_t\n\n     and asks LSM to supply a security ID as which it should act given the\n     daemon\u0027s label.  By default, this will be:\n\n\tcachefiles_kernel_t\n\n     SELinux transitions the daemon\u0027s security ID to the module\u0027s security ID\n     based on a rule of this form in the policy.\n\n\ttype_transition \u003cdaemon\u0027s-ID\u003e kernel_t : process \u003cmodule\u0027s-ID\u003e;\n\n     For instance:\n\n\ttype_transition cachefilesd_t kernel_t : process cachefiles_kernel_t;\n\nThe module\u0027s security ID gives it permission to create, move and remove files\nand directories in the cache, to find and access directories and files in the\ncache, to set and access extended attributes on cache objects, and to read and\nwrite files in the cache.\n\nThe daemon\u0027s security ID gives it only a very restricted set of permissions: it\nmay scan directories, stat files and erase files and directories.  It may\nnot read or write files in the cache, and so it is precluded from accessing the\ndata cached therein; nor is it permitted to create new files in the cache.\n\nThere are policy source files available in:\n\n\thttp://people.redhat.com/~dhowells/fscache/cachefilesd-0.8.tar.bz2\n\nand later versions.  In that tarball, see the files:\n\n\tcachefilesd.te\n\tcachefilesd.fc\n\tcachefilesd.if\n\nThey are built and installed directly by the RPM.\n\nIf a non-RPM based system is being used, then copy the above files to their own\ndirectory and run:\n\n\tmake -f /usr/share/selinux/devel/Makefile\n\tsemodule -i cachefilesd.pp\n\nYou will need checkpolicy and selinux-policy-devel installed prior to the\nbuild.\n\nBy default, the cache is located in /var/fscache, but if it is desirable that\nit should be elsewhere, than either the above policy files must be altered, or\nan auxiliary policy must be installed to label the alternate location of the\ncache.\n\nFor instructions on how to add an auxiliary policy to enable the cache to be\nlocated elsewhere when SELinux is in enforcing mode, please see:\n\n\t/usr/share/doc/cachefilesd-*/move-cache.txt\n\nWhen the cachefilesd rpm is installed; alternatively, the document can be found\nin the sources.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nA NOTE ON SECURITY\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nCacheFiles makes use of the split security in the task_struct.  It allocates\nits own task_security structure, and redirects current-\u003eact_as to point to it\nwhen it acts on behalf of another process, in that process\u0027s context.\n\nThe reason it does this is that it calls vfs_mkdir() and suchlike rather than\nbypassing security and calling inode ops directly.  Therefore the VFS and LSM\nmay deny the CacheFiles access to the cache data because under some\ncircumstances the caching code is running in the security context of whatever\nprocess issued the original syscall on the netfs.\n\nFurthermore, should CacheFiles create a file or directory, the security\nparameters with that object is created (UID, GID, security label) would be\nderived from that process that issued the system call, thus potentially\npreventing other processes from accessing the cache - including CacheFiles\u0027s\ncache management daemon (cachefilesd).\n\nWhat is required is to temporarily override the security of the process that\nissued the system call.  We can\u0027t, however, just do an in-place change of the\nsecurity data as that affects the process as an object, not just as a subject.\nThis means it may lose signals or ptrace events for example, and affects what\nthe process looks like in /proc.\n\nSo CacheFiles makes use of a logical split in the security between the\nobjective security (task-\u003esec) and the subjective security (task-\u003eact_as).  The\nobjective security holds the intrinsic security properties of a process and is\nnever overridden.  This is what appears in /proc, and is what is used when a\nprocess is the target of an operation by some other process (SIGKILL for\nexample).\n\nThe subjective security holds the active security properties of a process, and\nmay be overridden.  This is not seen externally, and is used whan a process\nacts upon another object, for example SIGKILLing another process or opening a\nfile.\n\nLSM hooks exist that allow SELinux (or Smack or whatever) to reject a request\nfor CacheFiles to run in a context of a specific security label, or to create\nfiles and directories with another security label.\n\nThis documentation is added by the patch to:\n\n\tDocumentation/filesystems/caching/cachefiles.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": "952efe7b7840e1c726ae88222245e4efe6bd88f3",
      "tree": "fed43da6709707d0eb51b8695b6b382a221e99bd",
      "parents": [
        "ccc4fc3d11e91477036d1f82bfa2d442f6ce77f0"
      ],
      "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: Add and document asynchronous operation handling\n\nAdd and document asynchronous operation handling for use by FS-Cache\u0027s data\nstorage and retrieval routines.\n\nThe following documentation is added to:\n\n\tDocumentation/filesystems/caching/operations.txt\n\n\t\t       \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\t\t       ASYNCHRONOUS OPERATIONS HANDLING\n\t\t       \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nOVERVIEW\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nFS-Cache has an asynchronous operations handling facility that it uses for its\ndata storage and retrieval routines.  Its operations are represented by\nfscache_operation structs, though these are usually embedded into some other\nstructure.\n\nThis facility is available to and expected to be be used by the cache backends,\nand FS-Cache will create operations and pass them off to the appropriate cache\nbackend for completion.\n\nTo make use of this facility, \u003clinux/fscache-cache.h\u003e should be #included.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nOPERATION RECORD INITIALISATION\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAn operation is recorded in an fscache_operation struct:\n\n\tstruct fscache_operation {\n\t\tunion {\n\t\t\tstruct work_struct fast_work;\n\t\t\tstruct slow_work slow_work;\n\t\t};\n\t\tunsigned long\t\tflags;\n\t\tfscache_operation_processor_t processor;\n\t\t...\n\t};\n\nSomeone wanting to issue an operation should allocate something with this\nstruct embedded in it.  They should initialise it by calling:\n\n\tvoid fscache_operation_init(struct fscache_operation *op,\n\t\t\t\t    fscache_operation_release_t release);\n\nwith the operation to be initialised and the release function to use.\n\nThe op-\u003eflags parameter should be set to indicate the CPU time provision and\nthe exclusivity (see the Parameters section).\n\nThe op-\u003efast_work, op-\u003eslow_work and op-\u003eprocessor flags should be set as\nappropriate for the CPU time provision (see the Parameters section).\n\nFSCACHE_OP_WAITING may be set in op-\u003eflags prior to each submission of the\noperation and waited for afterwards.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nPARAMETERS\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThere are a number of parameters that can be set in the operation record\u0027s flag\nparameter.  There are three options for the provision of CPU time in these\noperations:\n\n (1) The operation may be done synchronously (FSCACHE_OP_MYTHREAD).  A thread\n     may decide it wants to handle an operation itself without deferring it to\n     another thread.\n\n     This is, for example, used in read operations for calling readpages() on\n     the backing filesystem in CacheFiles.  Although readpages() does an\n     asynchronous data fetch, the determination of whether pages exist is done\n     synchronously - and the netfs does not proceed until this has been\n     determined.\n\n     If this option is to be used, FSCACHE_OP_WAITING must be set in op-\u003eflags\n     before submitting the operation, and the operating thread must wait for it\n     to be cleared before proceeding:\n\n\t\twait_on_bit(\u0026op-\u003eflags, FSCACHE_OP_WAITING,\n\t\t\t    fscache_wait_bit, TASK_UNINTERRUPTIBLE);\n\n (2) The operation may be fast asynchronous (FSCACHE_OP_FAST), in which case it\n     will be given to keventd to process.  Such an operation is not permitted\n     to sleep on I/O.\n\n     This is, for example, used by CacheFiles to copy data from a backing fs\n     page to a netfs page after the backing fs has read the page in.\n\n     If this option is used, op-\u003efast_work and op-\u003eprocessor must be\n     initialised before submitting the operation:\n\n\t\tINIT_WORK(\u0026op-\u003efast_work, do_some_work);\n\n (3) The operation may be slow asynchronous (FSCACHE_OP_SLOW), in which case it\n     will be given to the slow work facility to process.  Such an operation is\n     permitted to sleep on I/O.\n\n     This is, for example, used by FS-Cache to handle background writes of\n     pages that have just been fetched from a remote server.\n\n     If this option is used, op-\u003eslow_work and op-\u003eprocessor must be\n     initialised before submitting the operation:\n\n\t\tfscache_operation_init_slow(op, processor)\n\nFurthermore, operations may be one of two types:\n\n (1) Exclusive (FSCACHE_OP_EXCLUSIVE).  Operations of this type may not run in\n     conjunction with any other operation on the object being operated upon.\n\n     An example of this is the attribute change operation, in which the file\n     being written to may need truncation.\n\n (2) Shareable.  Operations of this type may be running simultaneously.  It\u0027s\n     up to the operation implementation to prevent interference between other\n     operations running at the same time.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nPROCEDURE\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nOperations are used through the following procedure:\n\n (1) The submitting thread must allocate the operation and initialise it\n     itself.  Normally this would be part of a more specific structure with the\n     generic op embedded within.\n\n (2) The submitting thread must then submit the operation for processing using\n     one of the following two functions:\n\n\tint fscache_submit_op(struct fscache_object *object,\n\t\t\t      struct fscache_operation *op);\n\n\tint fscache_submit_exclusive_op(struct fscache_object *object,\n\t\t\t\t\tstruct fscache_operation *op);\n\n     The first function should be used to submit non-exclusive ops and the\n     second to submit exclusive ones.  The caller must still set the\n     FSCACHE_OP_EXCLUSIVE flag.\n\n     If successful, both functions will assign the operation to the specified\n     object and return 0.  -ENOBUFS will be returned if the object specified is\n     permanently unavailable.\n\n     The operation manager will defer operations on an object that is still\n     undergoing lookup or creation.  The operation will also be deferred if an\n     operation of conflicting exclusivity is in progress on the object.\n\n     If the operation is asynchronous, the manager will retain a reference to\n     it, so the caller should put their reference to it by passing it to:\n\n\tvoid fscache_put_operation(struct fscache_operation *op);\n\n (3) If the submitting thread wants to do the work itself, and has marked the\n     operation with FSCACHE_OP_MYTHREAD, then it should monitor\n     FSCACHE_OP_WAITING as described above and check the state of the object if\n     necessary (the object might have died whilst the thread was waiting).\n\n     When it has finished doing its processing, it should call\n     fscache_put_operation() on it.\n\n (4) The operation holds an effective lock upon the object, preventing other\n     exclusive ops conflicting until it is released.  The operation can be\n     enqueued for further immediate asynchronous processing by adjusting the\n     CPU time provisioning option if necessary, eg:\n\n\top-\u003eflags \u0026\u003d ~FSCACHE_OP_TYPE;\n\top-\u003eflags |\u003d ~FSCACHE_OP_FAST;\n\n     and calling:\n\n\tvoid fscache_enqueue_operation(struct fscache_operation *op)\n\n     This can be used to allow other things to have use of the worker thread\n     pools.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nASYNCHRONOUS CALLBACK\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nWhen used in asynchronous mode, the worker thread pool will invoke the\nprocessor method with a pointer to the operation.  This should then get at the\ncontainer struct by using container_of():\n\n\tstatic void fscache_write_op(struct fscache_operation *_op)\n\t{\n\t\tstruct fscache_storage *op \u003d\n\t\t\tcontainer_of(_op, struct fscache_storage, op);\n\t...\n\t}\n\nThe caller holds a reference on the operation, and will invoke\nfscache_put_operation() when the processor function returns.  The processor\nfunction is at liberty to call fscache_enqueue_operation() or to take extra\nreferences.\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": "36c9559022850f919269564a74bf17fdabf4bb30",
      "tree": "f163afcf8f8a9eb1a5d63fd6198fcb3e29564493",
      "parents": [
        "2868cbea72dc89ae0eb17693596b1dedaafff1c5"
      ],
      "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: Object management state machine\n\nImplement the cache object management state machine.\n\nThe following documentation is added to illuminate the working of this state\nmachine.  It will also be added as:\n\n\tDocumentation/filesystems/caching/object.txt\n\n\t     \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\t     IN-KERNEL CACHE OBJECT REPRESENTATION AND MANAGEMENT\n\t     \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nREPRESENTATION\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nFS-Cache maintains an in-kernel representation of each object that a netfs is\ncurrently interested in.  Such objects are represented by the fscache_cookie\nstruct and are referred to as cookies.\n\nFS-Cache also maintains a separate in-kernel representation of the objects that\na cache backend is currently actively caching.  Such objects are represented by\nthe fscache_object struct.  The cache backends allocate these upon request, and\nare expected to embed them in their own representations.  These are referred to\nas objects.\n\nThere is a 1:N relationship between cookies and objects.  A cookie may be\nrepresented by multiple objects - an index may exist in more than one cache -\nor even by no objects (it may not be cached).\n\nFurthermore, both cookies and objects are hierarchical.  The two hierarchies\ncorrespond, but the cookies tree is a superset of the union of the object trees\nof multiple caches:\n\n\t    NETFS INDEX TREE               :      CACHE 1     :      CACHE 2\n\t                                   :                  :\n\t                                   :   +-----------+  :\n\t                          +-----------\u003e|  IObject  |  :\n\t      +-----------+       |        :   +-----------+  :\n\t      |  ICookie  |-------+        :         |        :\n\t      +-----------+       |        :         |        :   +-----------+\n\t            |             +------------------------------\u003e|  IObject  |\n\t            |                      :         |        :   +-----------+\n\t            |                      :         V        :         |\n\t            |                      :   +-----------+  :         |\n\t            V             +-----------\u003e|  IObject  |  :         |\n\t      +-----------+       |        :   +-----------+  :         |\n\t      |  ICookie  |-------+        :         |        :         V\n\t      +-----------+       |        :         |        :   +-----------+\n\t            |             +------------------------------\u003e|  IObject  |\n\t      +-----+-----+                :         |        :   +-----------+\n\t      |           |                :         |        :         |\n\t      V           |                :         V        :         |\n\t+-----------+     |                :   +-----------+  :         |\n\t|  ICookie  |-------------------------\u003e|  IObject  |  :         |\n\t+-----------+     |                :   +-----------+  :         |\n\t      |           V                :         |        :         V\n\t      |     +-----------+          :         |        :   +-----------+\n\t      |     |  ICookie  |--------------------------------\u003e|  IObject  |\n\t      |     +-----------+          :         |        :   +-----------+\n\t      V           |                :         V        :         |\n\t+-----------+     |                :   +-----------+  :         |\n\t|  DCookie  |-------------------------\u003e|  DObject  |  :         |\n\t+-----------+     |                :   +-----------+  :         |\n\t                  |                :                  :         |\n\t          +-------+-------+        :                  :         |\n\t          |               |        :                  :         |\n\t          V               V        :                  :         V\n\t    +-----------+   +-----------+  :                  :   +-----------+\n\t    |  DCookie  |   |  DCookie  |------------------------\u003e|  DObject  |\n\t    +-----------+   +-----------+  :                  :   +-----------+\n\t                                   :                  :\n\nIn the above illustration, ICookie and IObject represent indices and DCookie\nand DObject represent data storage objects.  Indices may have representation in\nmultiple caches, but currently, non-index objects may not.  Objects of any type\nmay also be entirely unrepresented.\n\nAs far as the netfs API goes, the netfs is only actually permitted to see\npointers to the cookies.  The cookies themselves and any objects attached to\nthose cookies are hidden from it.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nOBJECT MANAGEMENT STATE MACHINE\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nWithin FS-Cache, each active object is managed by its own individual state\nmachine.  The state for an object is kept in the fscache_object struct, in\nobject-\u003estate.  A cookie may point to a set of objects that are in different\nstates.\n\nEach state has an action associated with it that is invoked when the machine\nwakes up in that state.  There are four logical sets of states:\n\n (1) Preparation: states that wait for the parent objects to become ready.  The\n     representations are hierarchical, and it is expected that an object must\n     be created or accessed with respect to its parent object.\n\n (2) Initialisation: states that perform lookups in the cache and validate\n     what\u0027s found and that create on disk any missing metadata.\n\n (3) Normal running: states that allow netfs operations on objects to proceed\n     and that update the state of objects.\n\n (4) Termination: states that detach objects from their netfs cookies, that\n     delete objects from disk, that handle disk and system errors and that free\n     up in-memory resources.\n\nIn most cases, transitioning between states is in response to signalled events.\nWhen a state has finished processing, it will usually set the mask of events in\nwhich it is interested (object-\u003eevent_mask) and relinquish the worker thread.\nThen when an event is raised (by calling fscache_raise_event()), if the event\nis not masked, the object will be queued for processing (by calling\nfscache_enqueue_object()).\n\nPROVISION OF CPU TIME\n---------------------\n\nThe work to be done by the various states is given CPU time by the threads of\nthe slow work facility (see Documentation/slow-work.txt).  This is used in\npreference to the workqueue facility because:\n\n (1) Threads may be completely occupied for very long periods of time by a\n     particular work item.  These state actions may be doing sequences of\n     synchronous, journalled disk accesses (lookup, mkdir, create, setxattr,\n     getxattr, truncate, unlink, rmdir, rename).\n\n (2) Threads may do little actual work, but may rather spend a lot of time\n     sleeping on I/O.  This means that single-threaded and 1-per-CPU-threaded\n     workqueues don\u0027t necessarily have the right numbers of threads.\n\nLOCKING SIMPLIFICATION\n----------------------\n\nBecause only one worker thread may be operating on any particular object\u0027s\nstate machine at once, this simplifies the locking, particularly with respect\nto disconnecting the netfs\u0027s representation of a cache object (fscache_cookie)\nfrom the cache backend\u0027s representation (fscache_object) - which may be\nrequested from either end.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nTHE SET OF STATES\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe object state machine has a set of states that it can be in.  There are\npreparation states in which the object sets itself up and waits for its parent\nobject to transit to a state that allows access to its children:\n\n (1) State FSCACHE_OBJECT_INIT.\n\n     Initialise the object and wait for the parent object to become active.  In\n     the cache, it is expected that it will not be possible to look an object\n     up from the parent object, until that parent object itself has been looked\n     up.\n\nThere are initialisation states in which the object sets itself up and accesses\ndisk for the object metadata:\n\n (2) State FSCACHE_OBJECT_LOOKING_UP.\n\n     Look up the object on disk, using the parent as a starting point.\n     FS-Cache expects the cache backend to probe the cache to see whether this\n     object is represented there, and if it is, to see if it\u0027s valid (coherency\n     management).\n\n     The cache should call fscache_object_lookup_negative() to indicate lookup\n     failure for whatever reason, and should call fscache_obtained_object() to\n     indicate success.\n\n     At the completion of lookup, FS-Cache will let the netfs go ahead with\n     read operations, no matter whether the file is yet cached.  If not yet\n     cached, read operations will be immediately rejected with ENODATA until\n     the first known page is uncached - as to that point there can be no data\n     to be read out of the cache for that file that isn\u0027t currently also held\n     in the pagecache.\n\n (3) State FSCACHE_OBJECT_CREATING.\n\n     Create an object on disk, using the parent as a starting point.  This\n     happens if the lookup failed to find the object, or if the object\u0027s\n     coherency data indicated what\u0027s on disk is out of date.  In this state,\n     FS-Cache expects the cache to create\n\n     The cache should call fscache_obtained_object() if creation completes\n     successfully, fscache_object_lookup_negative() otherwise.\n\n     At the completion of creation, FS-Cache will start processing write\n     operations the netfs has queued for an object.  If creation failed, the\n     write ops will be transparently discarded, and nothing recorded in the\n     cache.\n\nThere are some normal running states in which the object spends its time\nservicing netfs requests:\n\n (4) State FSCACHE_OBJECT_AVAILABLE.\n\n     A transient state in which pending operations are started, child objects\n     are permitted to advance from FSCACHE_OBJECT_INIT state, and temporary\n     lookup data is freed.\n\n (5) State FSCACHE_OBJECT_ACTIVE.\n\n     The normal running state.  In this state, requests the netfs makes will be\n     passed on to the cache.\n\n (6) State FSCACHE_OBJECT_UPDATING.\n\n     The state machine comes here to update the object in the cache from the\n     netfs\u0027s records.  This involves updating the auxiliary data that is used\n     to maintain coherency.\n\nAnd there are terminal states in which an object cleans itself up, deallocates\nmemory and potentially deletes stuff from disk:\n\n (7) State FSCACHE_OBJECT_LC_DYING.\n\n     The object comes here if it is dying because of a lookup or creation\n     error.  This would be due to a disk error or system error of some sort.\n     Temporary data is cleaned up, and the parent is released.\n\n (8) State FSCACHE_OBJECT_DYING.\n\n     The object comes here if it is dying due to an error, because its parent\n     cookie has been relinquished by the netfs or because the cache is being\n     withdrawn.\n\n     Any child objects waiting on this one are given CPU time so that they too\n     can destroy themselves.  This object waits for all its children to go away\n     before advancing to the next state.\n\n (9) State FSCACHE_OBJECT_ABORT_INIT.\n\n     The object comes to this state if it was waiting on its parent in\n     FSCACHE_OBJECT_INIT, but its parent died.  The object will destroy itself\n     so that the parent may proceed from the FSCACHE_OBJECT_DYING state.\n\n(10) State FSCACHE_OBJECT_RELEASING.\n(11) State FSCACHE_OBJECT_RECYCLING.\n\n     The object comes to one of these two states when dying once it is rid of\n     all its children, if it is dying because the netfs relinquished its\n     cookie.  In the first state, the cached data is expected to persist, and\n     in the second it will be deleted.\n\n(12) State FSCACHE_OBJECT_WITHDRAWING.\n\n     The object transits to this state if the cache decides it wants to\n     withdraw the object from service, perhaps to make space, but also due to\n     error or just because the whole cache is being withdrawn.\n\n(13) State FSCACHE_OBJECT_DEAD.\n\n     The object transits to this state when the in-memory object record is\n     ready to be deleted.  The object processor shouldn\u0027t ever see an object in\n     this state.\n\nTHE SET OF EVENTS\n-----------------\n\nThere are a number of events that can be raised to an object state machine:\n\n (*) FSCACHE_OBJECT_EV_UPDATE\n\n     The netfs requested that an object be updated.  The state machine will ask\n     the cache backend to update the object, and the cache backend will ask the\n     netfs for details of the change through its cookie definition ops.\n\n (*) FSCACHE_OBJECT_EV_CLEARED\n\n     This is signalled in two circumstances:\n\n     (a) when an object\u0027s last child object is dropped and\n\n     (b) when the last operation outstanding on an object is completed.\n\n     This is used to proceed from the dying state.\n\n (*) FSCACHE_OBJECT_EV_ERROR\n\n     This is signalled when an I/O error occurs during the processing of some\n     object.\n\n (*) FSCACHE_OBJECT_EV_RELEASE\n (*) FSCACHE_OBJECT_EV_RETIRE\n\n     These are signalled when the netfs relinquishes a cookie it was using.\n     The event selected depends on whether the netfs asks for the backing\n     object to be retired (deleted) or retained.\n\n (*) FSCACHE_OBJECT_EV_WITHDRAW\n\n     This is signalled when the cache backend wants to withdraw an object.\n     This means that the object will have to be detached from the netfs\u0027s\n     cookie.\n\nBecause the withdrawing releasing/retiring events are all handled by the object\nstate machine, it doesn\u0027t matter if there\u0027s a collision with both ends trying\nto sever the connection at the same time.  The state machine can just pick\nwhich one it wants to honour, and that effects the other.\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": "8f0aa2f25b31ba27db84259141e52ee6ec0d2820",
      "tree": "f2935c02ac8508dacd125bb1c8bb6f4879fe778e",
      "parents": [
        "12e22c5e4bc08ab4b05ac079fe40d9891c5e81a0"
      ],
      "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": "Document the slow work thread pool\n\nDocument the slow work thread pool.\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": "ef8a97bbc92ec07e3a07a81cc011dc549f8c7a23",
      "tree": "82a95f16d9236bc35a4cfd42ba8cab61981efda8",
      "parents": [
        "4f032ac4122a77dbabf7a24b2739b2790448180f",
        "6c8ad3b07f7d9efdc41396db6da0aed906922701"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:05:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:05:30 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (54 commits)\n  glge: remove unused #include \u003cversion.h\u003e\n  dnet: remove unused #include \u003cversion.h\u003e\n  tcp: miscounts due to tcp_fragment pcount reset\n  tcp: add helper for counter tweaking due mid-wq change\n  hso: fix for the \u0027invalid frame length\u0027 messages\n  hso: fix for crash when unplugging the device\n  fsl_pq_mdio: Fix compile failure\n  fsl_pq_mdio: Revive UCC MDIO support\n  ucc_geth: Pass proper device to DMA routines, otherwise oops happens\n  i.MX31: Fixing cs89x0 network building to i.MX31ADS\n  tc35815: Fix build error if NAPI enabled\n  hso: add Vendor/Product ID\u0027s for new devices\n  ucc_geth: Remove unused header\n  gianfar: Remove unused header\n  kaweth: Fix locking to be SMP-safe\n  net: allow multiple dev per napi with GRO\n  r8169: reset IntrStatus after chip reset\n  ixgbe: Fix potential memory leak/driver panic issue while setting up Tx \u0026 Rx ring parameters\n  ixgbe: fix ethtool -A|a behavior\n  ixgbe: Patch to fix driver panic while freeing up tx \u0026 rx resources\n  ...\n"
    },
    {
      "commit": "0b7f569e45bb6be142d87017030669a6a7d327a1",
      "tree": "8df7877b95c093ebf4cb4e1006cea16f75fc79b7",
      "parents": [
        "81d39c20f5ee2437d71709beb82597e2a38efbbc"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Apr 02 16:57:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:55 2009 -0700"
      },
      "message": "memcg: fix OOM killer under memcg\n\nThis patch tries to fix OOM Killer problems caused by hierarchy.\nNow, memcg itself has OOM KILL function (in oom_kill.c) and tries to\nkill a task in memcg.\n\nBut, when hierarchy is used, it\u0027s broken and correct task cannot\nbe killed. For example, in following cgroup\n\n\t/groupA/\thierarchy\u003d1, limit\u003d1G,\n\t\t01\tnolimit\n\t\t02\tnolimit\nAll tasks\u0027 memory usage under /groupA, /groupA/01, groupA/02 is limited to\ngroupA\u0027s 1Gbytes but OOM Killer just kills tasks in groupA.\n\nThis patch provides makes the bad process be selected from all tasks\nunder hierarchy. BTW, currently, oom_jiffies is updated against groupA\nin above case. oom_jiffies of tree should be updated.\n\nTo see how oom_jiffies is used, please check mem_cgroup_oom_called()\ncallers.\n\n[akpm@linux-foundation.org: build fix]\n[akpm@linux-foundation.org: const fix]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b6719ec1ad54e47e40633b19703f2c1254708842",
      "tree": "3db0fe0ec0a92a006562de9b012d2a89ddce19eb",
      "parents": [
        "66bdc9cfc77ba89a9ee6c82d28375b646ab4bb1d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Apr 02 16:57:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:54 2009 -0700"
      },
      "message": "cgroups: more documentation for remount and release_agent\n\nThis won\u0027t remove cpuacct from the mounted hierachy:\n # mount -t cgroup -o cpu,cpuacct xxx /mnt\n # mount -o remount,cpu /mnt\n\nBecause for this usage mount(8) will append the new options to the original\noptions.\n\nAnd this will get you right:\n # mount [-t cgroup] -o remount,cpu xxx /mnt\n\nAlso document how to specify or change release_agent.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReviewd-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec64f51545fffbc4cb968f0cea56341a4b07e85a",
      "tree": "575d890a6759d81f3324fa2a22ca6ab14a41eefc",
      "parents": [
        "38460b48d06440de46b34cb778bd6c4855030754"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Apr 02 16:57:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:54 2009 -0700"
      },
      "message": "cgroup: fix frequent -EBUSY at rmdir\n\nIn following situation, with memory subsystem,\n\n\t/groupA use_hierarchy\u003d\u003d1\n\t\t/01 some tasks\n\t\t/02 some tasks\n\t\t/03 some tasks\n\t\t/04 empty\n\nWhen tasks under 01/02/03 hit limit on /groupA, hierarchical reclaim\nis triggered and the kernel walks tree under groupA. In this case,\nrmdir /groupA/04 fails with -EBUSY frequently because of temporal\nrefcnt from the kernel.\n\nIn general. cgroup can be rmdir\u0027d if there are no children groups and\nno tasks. Frequent fails of rmdir() is not useful to users.\n(And the reason for -EBUSY is unknown to users.....in most cases)\n\nThis patch tries to modify above behavior, by\n\t- retries if css_refcnt is got by someone.\n\t- add \"return value\" to pre_destroy() and allows subsystem to\n\t  say \"we\u0027re really busy!\"\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "45dad7bd9d9b65a30d6e790b111f6f2d8f746d22",
      "tree": "ab00afe099eb226d5f365124ee591b2518ebe0f0",
      "parents": [
        "760df93ecdd59fc1c213a491b5adee79f53606da"
      ],
      "author": {
        "name": "Li Xiaodong",
        "email": "lixd@cn.fujitsu.com",
        "time": "Thu Apr 02 16:57:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:53 2009 -0700"
      },
      "message": "documentation: fix unix_dgram_qlen description\n\nPrevious description about system parameter in /proc/sys/net/unix/ is\nwrong (or missed).  Simply add a new description about unix_dgram_qlen\naccording to latest kernel.\n\nSigned-off-by: Li Xiaodong \u003clixd@cn.fujitsu.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "760df93ecdd59fc1c213a491b5adee79f53606da",
      "tree": "305a4e0fae43549eb24a3ebcf9bcc15a16ef2138",
      "parents": [
        "70eed8d06601ca3810a0e56035eae6496d57856b"
      ],
      "author": {
        "name": "Shen Feng",
        "email": "shen@cn.fujitsu.com",
        "time": "Thu Apr 02 16:57:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:53 2009 -0700"
      },
      "message": "documentation: update Documentation/filesystem/proc.txt and Documentation/sysctls\n\nNow /proc/sys is described in many places and much information is\nredundant.  This patch updates the proc.txt and move the /proc/sys\ndesciption out to the files in Documentation/sysctls.\n\nDetails are:\n\nmerge\n-  2.1  /proc/sys/fs - File system data\n-  2.11 /proc/sys/fs/mqueue - POSIX message queues filesystem\n-  2.17 /proc/sys/fs/epoll - Configuration options for the epoll interface\nwith Documentation/sysctls/fs.txt.\n\nremove\n-  2.2  /proc/sys/fs/binfmt_misc - Miscellaneous binary formats\nsince it\u0027s not better then the Documentation/binfmt_misc.txt.\n\nmerge\n-  2.3  /proc/sys/kernel - general kernel parameters\nwith Documentation/sysctls/kernel.txt\n\nremove\n-  2.5  /proc/sys/dev - Device specific parameters\nsince it\u0027s obsolete the sysfs is used now.\n\nremove\n-  2.6  /proc/sys/sunrpc - Remote procedure calls\nsince it\u0027s not better then the Documentation/sysctls/sunrpc.txt\n\nmove\n-  2.7  /proc/sys/net - Networking stuff\n-  2.9  Appletalk\n-  2.10 IPX\nto newly created Documentation/sysctls/net.txt.\n\nremove\n-  2.8  /proc/sys/net/ipv4 - IPV4 settings\nsince it\u0027s not better then the Documentation/networking/ip-sysctl.txt.\n\nadd\n- Chapter 3 Per-Process Parameters\nto descibe /proc/\u003cpid\u003e/xxx parameters.\n\nSigned-off-by: Shen Feng \u003cshen@cn.fujitsu.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "70eed8d06601ca3810a0e56035eae6496d57856b",
      "tree": "0451b872264c1c71bb9275caffaf4844232b440f",
      "parents": [
        "880fe76ee6f38eda82e9f3de9a7a206dfd1bab9d"
      ],
      "author": {
        "name": "Henrik Austad",
        "email": "henrik@austad.us",
        "time": "Thu Apr 02 16:57:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:53 2009 -0700"
      },
      "message": "documentation: ignore byproducts from latex\n\nWhen using \u0027make pdfdocs\u0027, auto-generated files should be ignored\n\nSigned-off-by: Henrik Austad \u003chenrik@austad.us\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a0cecffeb52363a57257bbbbd58f4c4537a75bb",
      "tree": "ee7f754d49a2f2ad75b72ec59e90e6fa2c0753eb",
      "parents": [
        "926b663ce8215ba448960e1ff6e58b67a2c3b99b"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Thu Apr 02 16:57:06 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:51 2009 -0700"
      },
      "message": "gpio: gpio_{request,free}() now required (feature removal)\n\nWe want to phase out the GPIO \"autorequest\" mechanism in gpiolib and\nrequire all callers to use gpio_request().\n\n - Update feature-removal-schedule\n - Update the documentation now\n - Convert the relevant pr_warning() in gpiolib to a WARN()\n   so folk using this mechanism get a noisy stack dump\n\nSome drivers and board init code will probably need to change.\nImplementations not using gpiolib will still be fine; they are already\nrequired to implement gpio_{request,free}() stubs.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7e90560c50f754d65884e251e94c1efa2a4b5784",
      "tree": "97ae68b0ae4edaebf3de66716759fc09a97deff6",
      "parents": [
        "8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84"
      ],
      "author": {
        "name": "Luca Tettamanti",
        "email": "kronos.it@gmail.com",
        "time": "Mon Mar 30 00:01:27 2009 +0200"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Thu Apr 02 18:57:46 2009 -0400"
      },
      "message": "ACPI: acpi_enforce_resource\u003dstrict by default\n\nEnforce strict resource checking - disallowing access by native\ndrivers to IO ports and memory regions claimed by ACPI firmware.\n\nThe patch is mainly aimed to block native hwmon drivers from touching\nmonitoring chips that ACPI thinks it own.\n\nIf this causes a regression, boot with \"acpi_enforce_resources\u003dlax\"\nwhich was the previous default.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12376\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12541\n\nSigned-off-by: Luca Tettamanti \u003ckronos.it@gmail.com\u003e\nAcked-by: Pavel Machek \u003cpavel@suse.cz\u003e\nAcked-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "cd02938a828f4b2098a074afb7454f106f2e8df5",
      "tree": "7b543fd6aa82a62dc3a9614c26f89daca83e77d5",
      "parents": [
        "9d681f3a1b27fdfc17ea251cf8d5f627dab34670",
        "172ef275444efa12d834fb9d1b1acdac92db47f7"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk@dyn-67.arm.linux.org.uk",
        "time": "Thu Apr 02 23:22:11 2009 +0100"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Thu Apr 02 23:22:11 2009 +0100"
      },
      "message": "Merge branch \u0027smsc911x-armplatforms\u0027 of git://github.com/steveglen/linux-2.6\n"
    },
    {
      "commit": "7ac9bcd5da59dd96eb1153d3fc04c3471fa5c09d",
      "tree": "e9c5470783e9ec098fb7a056d89872c9e225f5c3",
      "parents": [
        "530f1a5e3e93a038a457faf716975ed19f82831d"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Sun Nov 16 20:52:19 2008 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:50 2009 +0200"
      },
      "message": "udf: implement mode and dmode mounting options\n\n\"dmode\" allows overriding permissions of directories and\n\"mode\" allows overriding permissions of files.\n\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "edd4070f5d943b35e3e1a2e5e95e4a2eebb11d53",
      "tree": "c945fbb71586a458611fce5c2ac10097e557a4d7",
      "parents": [
        "3943ac5d99ec024f97442e5f3def1034bb0b1bb0"
      ],
      "author": {
        "name": "Jesper Dangaard Brouer",
        "email": "hawk@comx.dk",
        "time": "Tue Mar 31 09:36:48 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 02 01:33:51 2009 -0700"
      },
      "message": "Doc: Fix spelling in RCU/rculist_nulls.txt.\n\nDoc: Fix spelling in RCU/rculist_nulls.txt.\n\nTrival spelling fixes in RCU/rculist_nulls.txt.\n\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n\nSigned-off-by: Jesper Dangaard Brouer \u003chawk@comx.dk\u003e\nTested-by: Jarek Poplawski \u003cjarkao2@gmail.com;-\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3943ac5d99ec024f97442e5f3def1034bb0b1bb0",
      "tree": "d3167de5bbe5d566f58f951381f2cbcde28cde90",
      "parents": [
        "9ba30d74446dd0629d797ecd038379725d351bc6"
      ],
      "author": {
        "name": "Jesper Dangaard Brouer",
        "email": "hawk@comx.dk",
        "time": "Sun Mar 29 23:03:01 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 02 01:33:50 2009 -0700"
      },
      "message": "Doc: Fix wrong API example usage of call_rcu().\n\nAt some point the API of call_rcu() changed from three parameters\nto two parameters, correct the documentation.\n\nOne confusing thing in RCU/listRCU.txt, which is NOT fixed in this patch,\nis that no reason or explaination is given for using call_rcu() instead of\nthe normal synchronize_rcu() call.\n\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n\nSigned-off-by: Jesper Dangaard Brouer \u003chawk@comx.dk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9ba30d74446dd0629d797ecd038379725d351bc6",
      "tree": "9164955780ed732fe9e426f73df10550fedefe8c",
      "parents": [
        "833bb3046b6cb320e775ea2160ddca87d53260d5"
      ],
      "author": {
        "name": "Jesper Dangaard Brouer",
        "email": "hawk@comx.dk",
        "time": "Sun Mar 29 23:02:56 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 02 01:33:50 2009 -0700"
      },
      "message": "Doc: Fix missing whitespaces in RCU documentation.\n\nTrivial fix while reading through the RCU docs.\n\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n\nSigned-off-by: Jesper Dangaard Brouer \u003chawk@comx.dk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5adfb64bdd4eee07e0677cbad12a2f80fecc6715",
      "tree": "9d188748764841ed15d54a11c16aefaadb408670",
      "parents": [
        "7e765cb4a07356e4f01cc57959c3c798a586f749"
      ],
      "author": {
        "name": "Ramkrishna Vepa",
        "email": "ram.vepa@neterion.com",
        "time": "Wed Apr 01 18:14:23 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 02 00:33:39 2009 -0700"
      },
      "message": "Neterion: Driver help file\n\n- vxge driver help text file.\n\n- No change from previous submission.\n\n- Changes in previous submissions -\n  Removed the performance tuning section with instructions to disable\n  time stamps and change sysctl settings - Reported by Dave Miller\n  General clean up.\n - Removed tx/rx_pause, exec_mode, tx_steering_type, rx_steering_type, gro,\n   intr_type, rx \u0026 tx max_indicate_pkts and exec_mode loadable parameters. The\n   driver default settings work well in most if not all cases. Another patch\n   to configure these parameters with ethtool will be released in the future -\n   Reported by Stephen Hemminger.\n- Incorporated following fixes based on comments from Ben Hutchings\n        Removed references to earlier kernel versions.\n        Removed sections that are similar for all drivers -\n                Load/Unload\n                Identifying the adapter/interface\n                Boot time configuration\n        Removed loadable parameter -\n                NAPI - Napi is always enabled.\n                rx_steering_type \u0026 ring_blocks - The driver default settings\n                work well in most if not all cases. Another patch to configure\n                these parameters with ethtool will be released in the future.\n        Removed ethtool support section - No need to duplicate ethtool\n                docs here.\n        Removed Known Issue on SUSE 9 - Doesn\u0027t apply when using a\n                current kernel.\n        Removed Common Problems section - These don\u0027t apply to in-tree modules.\n        Removed Available Downloads section - Not sure this belongs in-tree.\n        Removed Copyright information - This notice doesn\u0027t belong in\n                the kernel.\n\nSigned-off-by: Sivakumar Subramani \u003csivakumar.subramani@neterion.com\u003e\nSigned-off-by: Rastapur Santosh \u003csantosh.rastapur@neterion.com\u003e\nSigned-off-by: Ramkrishna Vepa \u003cram.vepa@neterion.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eeee7853c4ffaf5b9eb58f39708e3c78f66cee15",
      "tree": "55506c48a8e841573f1d869cd6e0fbfc6e8443e1",
      "parents": [
        "8dafc34616282c1fd79d42a4353ee5322767d720"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Apr 02 12:31:16 2009 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Apr 02 12:31:16 2009 +0900"
      },
      "message": "sh: Add a command line option for disabling I/O trapping.\n\nThis adds a \u0027noiotrap\u0027 kernel command line option to permit disabling of\nI/O trapping. This is mostly useful for running on emulators where the\nphysical device limitations are not an issue.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "8302294f43250dc337108c51882a6007f2b1e2e0",
      "tree": "85acd4440799c46a372df9cad170fa0c21e59096",
      "parents": [
        "4fe70410d9a219dabb47328effccae7e7f2a6e26",
        "2e572895bf3203e881356a4039ab0fa428ed2639"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 01 21:54:19 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 02 00:49:02 2009 +0200"
      },
      "message": "Merge branch \u0027tracing/core-v2\u0027 into tracing-for-linus\n\nConflicts:\n\tinclude/linux/slub_def.h\n\tlib/Kconfig.debug\n\tmm/slob.c\n\tmm/slub.c\n"
    },
    {
      "commit": "01a24d2b9309676ec2e7069cd19f5b1c4a1505e0",
      "tree": "455f6b02b37b1b8b9c2008243bdedc2d61e2a6f2",
      "parents": [
        "ad19d8d90c7a84c35f4e27e95d41a049efdbdf17"
      ],
      "author": {
        "name": "Paulius Zaleckas",
        "email": "paulius.zaleckas@teltonika.lt",
        "time": "Tue Mar 31 13:55:44 2009 +0100"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Wed Apr 01 22:15:37 2009 +0100"
      },
      "message": "[ARM] 5437/1: Add documentation for \"nohlt\" kernel parameter\n\nAs per discussion in:\nhttp://marc.info/?l\u003dlinux-arm-kernel\u0026m\u003d123633652517391\u0026w\u003d2\n\nSigned-off-by: Paulius Zaleckas \u003cpaulius.zaleckas@teltonika.lt\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n"
    },
    {
      "commit": "395d73413c5656c6d7706ae91dcb441f9b7e3074",
      "tree": "7fadabe996f70d7918583fa2312d4fad19397fcb",
      "parents": [
        "c226fd659fa7b6a7b038df5ae6856a68514bacde",
        "06705bff9114531a997a7d0c2520bea0f2927410"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:57:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:57:49 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (33 commits)\n  ext4: Regularize mount options\n  ext4: fix locking typo in mballoc which could cause soft lockup hangs\n  ext4: fix typo which causes a memory leak on error path\n  jbd2: Update locking coments\n  ext4: Rename pa_linear to pa_type\n  ext4: add checks of block references for non-extent inodes\n  ext4: Check for an valid i_mode when reading the inode from disk\n  ext4: Use WRITE_SYNC for commits which are caused by fsync()\n  ext4: Add auto_da_alloc mount option\n  ext4: Use struct flex_groups to calculate get_orlov_stats()\n  ext4: Use atomic_t\u0027s in struct flex_groups\n  ext4: remove /proc tuning knobs\n  ext4: Add sysfs support\n  ext4: Track lifetime disk writes\n  ext4: Fix discard of inode prealloc space with delayed allocation.\n  ext4: Automatically allocate delay allocated blocks on rename\n  ext4: Automatically allocate delay allocated blocks on close\n  ext4: add EXT4_IOC_ALLOC_DA_BLKS ioctl\n  ext4: Simplify delalloc code by removing mpage_da_writepages()\n  ext4: Save stack space by removing fake buffer heads\n  ...\n"
    },
    {
      "commit": "e76e5b2c663ac74ae6a542ac20795c625e36a5cd",
      "tree": "2e7271be1f3a26832f4b121839fc4044fbbf27a6",
      "parents": [
        "32527bc0e4b4fa7711ad1c923cf64ae72a7ffd9d",
        "eeafda70bf2807544e96fa4e52b2433cd470ff46"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 09:47:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 09:47:12 2009 -0700"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6\n\n* \u0027linux-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: (88 commits)\n  PCI: fix HT MSI mapping fix\n  PCI: don\u0027t enable too much HT MSI mapping\n  x86/PCI: make pci\u003dlastbus\u003d255 work when acpi is on\n  PCI: save and restore PCIe 2.0 registers\n  PCI: update fakephp for bus_id removal\n  PCI: fix kernel oops on bridge removal\n  PCI: fix conflict between SR-IOV and config space sizing\n  powerpc/PCI: include pci.h in powerpc MSI implementation\n  PCI Hotplug: schedule fakephp for feature removal\n  PCI Hotplug: rename legacy_fakephp to fakephp\n  PCI Hotplug: restore fakephp interface with complete reimplementation\n  PCI: Introduce /sys/bus/pci/devices/.../rescan\n  PCI: Introduce /sys/bus/pci/devices/.../remove\n  PCI: Introduce /sys/bus/pci/rescan\n  PCI: Introduce pci_rescan_bus()\n  PCI: do not enable bridges more than once\n  PCI: do not initialize bridges more than once\n  PCI: always scan child buses\n  PCI: pci_scan_slot() returns newly found devices\n  PCI: don\u0027t scan existing devices\n  ...\n\nFix trivial append-only conflict in Documentation/feature-removal-schedule.txt\n"
    },
    {
      "commit": "ddb53d48da5b0e691f35e703ac29118747f86c99",
      "tree": "bdf0f4a6f3e74a87e5b2ccb9530f708eed6258d2",
      "parents": [
        "ec549a0fdc32171b26677f1ef0b5309faa743362"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:33 2009 -0700"
      },
      "message": "fbdev: remove cyblafb driver\n\nA tridentfb driver has all the functionality of the cyblafb driver without\nthe bugs of the latter.\n\nChanges to the tridentfb driver:\n\n- FBINFO_READS_FAST added to the tridentfb.  The cyblafb used a blitter\n  for scrolling which is faster than color expansion on Cyberblade\n  chipsets.  The blitter is slower on a discrete Blade3D core.  Use the\n  blitter for scrolling in the tridentfb only for integrated Blade3D\n  cores.  Now, scrolling speed is about equal for the tridentfb and the\n  cyblafb.\n\n- a copyright notice addition is done on request of Jani Monoses (the\n  first author of the tridentfb).\n\nTested on AGP Blade3D card and PCChips\nM787CLR motherboard: VIA C3 cpu +\nVT8601 north  bridge (aka Cyberblade/i1).\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nCc: \"Jani Monoses\" \u003cjani@ubuntu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3f1c6ebf57b815ad709e89291e446935fee78f75",
      "tree": "f80e2cc24cf7cab1fc4b33c6f32de125073e57b0",
      "parents": [
        "35b4b3c0c1265f1a7342574be393c157601401f0"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Tue Mar 31 15:24:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "powerpc: add mmc-spi-slot bindings\n\nThe bindings describes a case where MMC/SD/SDIO slot directly connected to\na SPI bus.  Such setups are widely used on embedded PowerPC boards.\n\nThe patch also adds the mmc-spi-slot entry to the OpenFirmware modalias\ntable.\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Kumar Gala \u003cgalak@gate.crashing.org\u003e\nCc: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72f5de92e199f96cfcea125aefc76c138d8c553c",
      "tree": "ef24990f791801283f520b5f96a4ea1e592bf37b",
      "parents": [
        "061603275814544842e7df77d1157eff18565997"
      ],
      "author": {
        "name": "Ira Snyder",
        "email": "iws@ovro.caltech.edu",
        "time": "Tue Mar 31 15:24:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:21 2009 -0700"
      },
      "message": "hwmon: Add LTC4215 driver\n\nAdd Linux support for the Linear Technology LTC4215 Hot Swap controller\nI2C monitoring interface.\n\nI have tested the driver with my board, and it appears to work fine.  With\nthe power supplies disabled, it reads 11.93V input, 1.93V output, no\ncurrent and no power.  With the supplies enabled, it reads 11.93V input,\n11.98V output, no current, no power.  I\u0027m not drawing any current at the\nmoment, so this is reasonable.  The value in the sense register never\nreads anything except 0, so I expect to get zero from the current and\npower calculations.\n\nI didn\u0027t attempt to support changing any of the chip\u0027s settings or\nenabling the FET.  I\u0027m not sure even how to do that and still fit within\nthe hwmon framework.  :)\n\nSigned-off-by: Ira W. Snyder \u003ciws@ovro.caltech.edu\u003e\nCc: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: \"Mark M. Hoffman\" \u003cmhoffman@lightlink.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b872903c5d66bccdf4306a35e3e94d4da8555d3",
      "tree": "5af8d1d6831238c51d9a206042c14815a221cd52",
      "parents": [
        "4b19449db074eec86ae31a96d3cdca4aa7f138ab"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@ucw.cz",
        "time": "Tue Mar 31 15:24:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:21 2009 -0700"
      },
      "message": "hp_accel: small documentation updates\n\nFix english in Documentation, add \"how to test\" description.\n\nSigned-off-by: Pavel Machek \u003cpavel@suse.cz\u003e\nCc: Eric Piel \u003ceric.piel@tremplin-utc.net\u003e\nCc: Vladimir Botka \u003cvbotka@suse.cz\u003e\nCc: \u003cQuoc.Pham@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3cdbbeebb77348176bd6a03fd86e11bc281c529e",
      "tree": "079d84c58cdb0e6f4d43eee69d42d26d5a48af35",
      "parents": [
        "891f7d73ea30f925596b90bcf21020bfc5d90f3f"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Tue Mar 31 15:23:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "drivers/misc/isl29003.c: driver for the ISL29003 ambient light sensor\n\nAdd a driver for Intersil\u0027s ISL29003 ambient light sensor device plus some\ndocumentation.  Inspired by tsl2550.c, a driver for a similar device.\n\nIt is put in drivers/misc for now until the industrial I/O framework gets\nmerged.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nAcked-by: Jonathan Cameron \u003cjic23@cam.ac.uk\u003e\nCc: Jean Delvare \u003ckhali@linux-fr.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2d7543851849a6923680cdd7e1047ed1a84a1c5",
      "tree": "bf3038819d4be83a1d1e64d7b95bbb3d9d908544",
      "parents": [
        "55a63998b8967615a15e2211ba0ff3a84a565824"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Mar 31 15:23:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "filesystem freeze: allow SysRq emergency thaw to thaw frozen filesystems\n\nNow that the filesystem freeze operation has been elevated to the VFS, and\nis just an ioctl away, some sort of safety net for unintentionally frozen\nroot filesystems may be in order.\n\nThe timeout thaw originally proposed did not get merged, but perhaps\nsomething like this would be useful in emergencies.\n\nFor example, freeze /path/to/mountpoint may freeze your root filesystem if\nyou forgot that you had that unmounted.\n\nI chose \u0027j\u0027 as the last remaining character other than \u0027h\u0027 which is sort\nof reserved for help (because help is generated on any unknown character).\n\nI\u0027ve tested this on a non-root fs with multiple (nested) freezers, as well\nas on a system rendered unresponsive due to a frozen root fs.\n\n[randy.dunlap@oracle.com: emergency thaw only if CONFIG_BLOCK enabled]\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Takashi Sato \u003ct-sato@yk.jp.nec.com\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2ec175c39f62949438354f603f4aa170846aabb",
      "tree": "f2c9bf1bec2deabe2d3a5092405b027637b6ead3",
      "parents": [
        "c2fdf3a9b2d52842808a8e551b53b55dd9b45030"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 31 15:23:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: page_mkwrite change prototype to match fault\n\nChange the page_mkwrite prototype to take a struct vm_fault, and return\nVM_FAULT_xxx flags.  There should be no functional change.\n\nThis makes it possible to return much more detailed error information to\nthe VM (and also can provide more information eg.  virtual_address to the\ndriver, which might be important in some special cases).\n\nThis is required for a subsequent fix.  And will also make it easier to\nmerge page_mkwrite() with fault() in future.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nCc: Felix Blyakher \u003cfelixb@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2584e517320bd48dc8d20e38a2621a2dbe58fade",
      "tree": "3b94b6c4cc10ab16ab106464e8d32e2e77ad8634",
      "parents": [
        "8a0bdec194c21c8fdef840989d0d7b742bb5d4bc"
      ],
      "author": {
        "name": "Ravikiran G Thirumalai",
        "email": "kiran@scalex86.org",
        "time": "Tue Mar 31 15:21:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:12 2009 -0700"
      },
      "message": "mm: reintroduce and deprecate rlimit based access for SHM_HUGETLB\n\nAllow non root users with sufficient mlock rlimits to be able to allocate\nhugetlb backed shm for now.  Deprecate this though.  This is being\ndeprecated because the mlock based rlimit checks for SHM_HUGETLB is not\nconsistent with mmap based huge page allocations.\n\nSigned-off-by: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nReviewed-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "214c8adb87b880690b103e86baffc46f8288fa62",
      "tree": "aa5dde33abcb844b0da36a50aa386fddcb788759",
      "parents": [
        "8cf74b3936f5c65975b68333727f0540ec8350f4"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Tue Oct 28 17:22:01 2008 +0200"
      },
      "committer": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Tue Mar 31 19:44:38 2009 +0300"
      },
      "message": "exofs: Documentation\n\nAdded some documentation in exofs.txt, as well as a BUGS file.\n\nFor further reading, operation instructions, example scripts\nand up to date infomation and code please see:\nhttp://open-osd.org\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\n"
    },
    {
      "commit": "853116a10544206b6b2cf42ebc9d78fba2668888",
      "tree": "bc233aa343638575b36e300e863ce3d477374f57",
      "parents": [
        "93e14baa4494607efe81608725f591e3ba31e3c1"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Wed Jan 14 23:03:17 2009 -0800"
      },
      "committer": {
        "name": "Liam Girdwood",
        "email": "lrg@slimlogic.co.uk",
        "time": "Tue Mar 31 09:56:20 2009 +0100"
      },
      "message": "regulator: add get_status()\n\nBased on previous LKML discussions:\n\n * Update docs for regulator sysfs class attributes to highlight\n   the fact that all current attributes are intended to be control\n   inputs, including notably \"state\" and \"opmode\" which previously\n   implied otherwise.\n\n * Define a new regulator driver get_status() method, which is the\n   first method reporting regulator outputs instead of inputs.\n   It can report on/off and error status; or instead of simply\n   \"on\", report the actual operating mode.\n\nFor the moment, this is a sysfs-only interface, not accessible to\nregulator clients.  Such clients can use the current notification\ninterfaces to detect errors, if the regulator reports them.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Liam Girdwood \u003clrg@slimlogic.co.uk\u003e\n"
    },
    {
      "commit": "11373542344bdc35be1e6e68b0baadd1b6f7acbb",
      "tree": "655d730a9d512b2ed7077be32c4422f40b3ea5ad",
      "parents": [
        "ec32a2bd35bd6b933a5db6542c48210ce069a376"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:18:37 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:18:37 2009 +1100"
      },
      "message": "Documentation/md.txt update\n\nUpdate md.txt to reflect recent changes in a number of sysfs\nattributes.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "db6f204019380c788f1de06ee937bdbccd60e5c0",
      "tree": "f8ca32ab6932a21797dbc5aa77688ea017959da0",
      "parents": [
        "3c6fae67d026d57f64eb3da9c0d0e76983e39ae3",
        "d1881d3192a3d3e8dc4f255b03187f4c36cb0617"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 17:57:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 17:57:39 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest-and-virtio\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest-and-virtio:\n  lguest: barrier me harder\n  lguest: use bool instead of int\n  lguest: use KVM hypercalls\n  lguest: wire up pte_update/pte_update_defer\n  lguest: fix spurious BUG_ON() on invalid guest stack.\n  virtio: more neatening of virtio_ring macros.\n  virtio: fix BAD_RING, START_US and END_USE macros\n"
    },
    {
      "commit": "3c6fae67d026d57f64eb3da9c0d0e76983e39ae3",
      "tree": "a11f2ff6d99b382fff02a643f6b6b204efb9c40e",
      "parents": [
        "c4e1aa67ed9e4e542a064bc271ddbf152b677e91",
        "de15f093e666ccd542f6f7a0e3e917166a07ab44"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 17:54:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 17:54:32 2009 -0700"
      },
      "message": "Merge branch \u0027hwmon-for-linus\u0027 of git://jdelvare.pck.nerim.net/jdelvare-2.6\n\n* \u0027hwmon-for-linus\u0027 of git://jdelvare.pck.nerim.net/jdelvare-2.6:\n  hwmon: (fschmd) Add support for the FSC Hades IC\n  hwmon: (fschmd) Add support for the FSC Syleus IC\n  i2c-i801: Instantiate FSC hardware montioring chips\n  dmi: Let dmi_walk() users pass private data\n  hwmon: Define a standard interface for chassis intrusion detection\n  Move the pcf8591 driver to hwmon\n  hwmon: (w83627ehf) Only expose in6 or temp3 on the W83667HG\n  hwmon: (w83627ehf) Add support for W83667HG\n  hwmon: (w83627ehf) Invert fan pin variables logic\n  hwmon: (hdaps) Fix Thinkpad X41 axis inversion\n  hwmon: (hdaps) Allow inversion of separate axis\n  hwmon: (ds1621) Clean up documentation\n  hwmon: (ds1621) Avoid unneeded register access\n  hwmon: (ds1621) Clean up register access\n  hwmon: (ds1621) Reorder code statements\n"
    },
    {
      "commit": "c4e1aa67ed9e4e542a064bc271ddbf152b677e91",
      "tree": "2a2ca00bed0fc22b4eb83db092c9178868d8f76b",
      "parents": [
        "cf2f7d7c90279cdbc12429de278f3d27ac2050ae",
        "2f8501815256af8498904e68bd0984b1afffd6f8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 17:17:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 17:17:35 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: (33 commits)\n  lockdep: fix deadlock in lockdep_trace_alloc\n  lockdep: annotate reclaim context (__GFP_NOFS), fix SLOB\n  lockdep: annotate reclaim context (__GFP_NOFS), fix\n  lockdep: build fix for !PROVE_LOCKING\n  lockstat: warn about disabled lock debugging\n  lockdep: use stringify.h\n  lockdep: simplify check_prev_add_irq()\n  lockdep: get_user_chars() redo\n  lockdep: simplify get_user_chars()\n  lockdep: add comments to mark_lock_irq()\n  lockdep: remove macro usage from mark_held_locks()\n  lockdep: fully reduce mark_lock_irq()\n  lockdep: merge the !_READ mark_lock_irq() helpers\n  lockdep: merge the _READ mark_lock_irq() helpers\n  lockdep: simplify mark_lock_irq() helpers #3\n  lockdep: further simplify mark_lock_irq() helpers\n  lockdep: simplify the mark_lock_irq() helpers\n  lockdep: split up mark_lock_irq()\n  lockdep: generate usage strings\n  lockdep: generate the state bit definitions\n  ...\n"
    },
    {
      "commit": "cf2f7d7c90279cdbc12429de278f3d27ac2050ae",
      "tree": "c84bb54712f566e6497ccadd1ae9f42b4baf0c63",
      "parents": [
        "53d8f67082c9b86699dd88b7f9e667e245193f21",
        "a9caa3de249a6c43bc9c6aec87881f09276677e3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 16:06:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 16:06:04 2009 -0700"
      },
      "message": "Merge branch \u0027proc-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc\n\n* \u0027proc-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc:\n  Revert \"proc: revert /proc/uptime to -\u003eread_proc hook\"\n  proc 2/2: remove struct proc_dir_entry::owner\n  proc 1/2: do PDE usecounting even for -\u003eread_proc, -\u003ewrite_proc\n  proc: fix sparse warnings in pagemap_read()\n  proc: move fs/proc/inode-alloc.txt comment into a source file\n"
    },
    {
      "commit": "99b76233803beab302123d243eea9e41149804f3",
      "tree": "398178210fe66845ccd6fa4258ba762a87e023ad",
      "parents": [
        "3dec7f59c370c7b58184d63293c3dc984d475840"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Mar 25 22:48:06 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:44 2009 +0400"
      },
      "message": "proc 2/2: remove struct proc_dir_entry::owner\n\nSetting -\u003eowner as done currently (pde-\u003eowner \u003d THIS_MODULE) is racy\nas correctly noted at bug #12454. Someone can lookup entry with NULL\n-\u003eowner, thus not pinning enything, and release it later resulting\nin module refcount underflow.\n\nWe can keep -\u003eowner and supply it at registration time like -\u003eproc_fops\nand -\u003edata.\n\nBut this leaves -\u003eowner as easy-manipulative field (just one C assignment)\nand somebody will forget to unpin previous/pin current module when\nswitching -\u003eowner. -\u003eproc_fops is declared as \"const\" which should give\nsome thoughts.\n\n-\u003eread_proc/-\u003ewrite_proc were just fixed to not require -\u003eowner for\nprotection.\n\nrmmod\u0027ed directories will be empty and return \".\" and \"..\" -- no harm.\nAnd directories with tricky enough readdir and lookup shouldn\u0027t be modular.\nWe definitely don\u0027t want such modular code.\n\nRemoving -\u003eowner will also make PDE smaller.\n\nSo, let\u0027s nuke it.\n\nKudos to Jeff Layton for reminding about this, let\u0027s say, oversight.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12454\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "712b0006bf3a9ed0b14a56c3291975e582127766",
      "tree": "aff33e947673137ae21734321e1f036600297223",
      "parents": [
        "e1c502482853f84606928f5a2f2eb6da1993cda1",
        "b0d44c0dbbd52effb731b1c0af9afd56215c48de"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 13:41:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 13:41:00 2009 -0700"
      },
      "message": "Merge branch \u0027iommu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027iommu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (60 commits)\n  dma-debug: make memory range checks more consistent\n  dma-debug: warn of unmapping an invalid dma address\n  dma-debug: fix dma_debug_add_bus() definition for !CONFIG_DMA_API_DEBUG\n  dma-debug/x86: register pci bus for dma-debug leak detection\n  dma-debug: add a check dma memory leaks\n  dma-debug: add checks for kernel text and rodata\n  dma-debug: print stacktrace of mapping path on unmap error\n  dma-debug: Documentation update\n  dma-debug: x86 architecture bindings\n  dma-debug: add function to dump dma mappings\n  dma-debug: add checks for sync_single_sg_*\n  dma-debug: add checks for sync_single_range_*\n  dma-debug: add checks for sync_single_*\n  dma-debug: add checking for [alloc|free]_coherent\n  dma-debug: add add checking for map/unmap_sg\n  dma-debug: add checking for map/unmap_page/single\n  dma-debug: add core checking functions\n  dma-debug: add debugfs interface\n  dma-debug: add kernel command line parameters\n  dma-debug: add initialization code\n  ...\n\nFix trivial conflicts due to whitespace changes in arch/x86/kernel/pci-nommu.c\n"
    },
    {
      "commit": "ec19920944246b4686c7772a58507a20c361dc9d",
      "tree": "9fbeb5dab591826f819dd869d50a70d1a1b64f9f",
      "parents": [
        "fb4504fe84b09cbf49fda19e6630a1003d79656a"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Mar 30 21:46:44 2009 +0200"
      },
      "committer": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Mar 30 21:46:44 2009 +0200"
      },
      "message": "hwmon: Define a standard interface for chassis intrusion detection\n\nDefine a standard interface for the chassis intrusion detection feature\nsome hardware monitoring chips have. Some drivers have custom sysfs\nentries for it, but a standard interface would allow integration with\nuser-space (namely libsensors.)\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nAcked-by: Hans de Goede \u003cj.w.r.degoede@hhs.nl\u003e\nAcked-by: Matt Roberds \u003cmattroberds@cox.net\u003e\n"
    },
    {
      "commit": "fb4504fe84b09cbf49fda19e6630a1003d79656a",
      "tree": "d2e623b65fb91f18a02b3435f5a25e8b36572815",
      "parents": [
        "a157d06d4d70318a0818552095071d7430dd5d34"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Mar 30 21:46:43 2009 +0200"
      },
      "committer": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Mar 30 21:46:43 2009 +0200"
      },
      "message": "Move the pcf8591 driver to hwmon\n\nDirectory drivers/i2c/chips is going away, so drivers there must find\nnew homes. For the pcf8591 driver, the best choice seems to be the\nhwmon subsystem. While the Philips PCF8591 device isn\u0027t a typical\nhardware monitoring chip, its DAC interface is compatible with the\nhwmon one, so it fits somewhat.\n\nIf a better subsystem is ever created for ADC/DAC chips, the driver\ncould be moved there.\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: Aurelien Jarno \u003caurelien@aurel32.net\u003e\n"
    },
    {
      "commit": "237c8d2f54ff12bd4fea1a9d18a94ae5810271d3",
      "tree": "f93114b8b4c24a59151353cdfb63dd52fa055f9b",
      "parents": [
        "1704b26ee3fd89c76724cbea238e951dc019faca"
      ],
      "author": {
        "name": "Gong Jun",
        "email": "JGong@nuvoton.com",
        "time": "Mon Mar 30 21:46:42 2009 +0200"
      },
      "committer": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Mar 30 21:46:42 2009 +0200"
      },
      "message": "hwmon: (w83627ehf) Add support for W83667HG\n\nAdd initial support for the Nuvoton W83667HG chip to the w83627ehf\ndriver. It has been tested on ASUS P5QL PRO by Gong Jun.\n\nAt the moment there is still a usability issue which is that only in6\nor temp3 can be present on the W83667HG, so the driver shouldn\u0027t\nexpose both. This will be addressed later.\n\nSigned-off-by: Gong Jun \u003cJGong@nuvoton.com\u003e\nAcked-by: David Hubbard \u003cdavid.c.hubbard@gmail.com\u003e\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\n"
    },
    {
      "commit": "25f3311acc3405dd0dace3571a41f450e6cc6a65",
      "tree": "12488d1cafb7ec8140156b73175476e74897ccaa",
      "parents": [
        "e4879e28abd67b894fb9d2db0afd08f1945670ba"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Mar 30 21:46:41 2009 +0200"
      },
      "committer": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Mar 30 21:46:41 2009 +0200"
      },
      "message": "hwmon: (ds1621) Clean up documentation\n\n* The alarms sysfs file is deprecated, and individual alarm files are\n  self-explanatory.\n* The driver doesn\u0027t implement high-reslution temperature readings so\n  don\u0027t document that.\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: Aurelien Jarno \u003caurelien@aurel32.net\u003e\n"
    },
    {
      "commit": "019abbc87025a030fd25008612afd4eff8a375f7",
      "tree": "6d745dedcf90ceff8f5b7b996a17f666b7c574e3",
      "parents": [
        "2d25ee36c84d5b2d6be8bfaf80256ecad69a06ca",
        "5a3c8fe7353f78b73b9636353c6f7b881f19ebea"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 11:38:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 11:38:31 2009 -0700"
      },
      "message": "Merge branch \u0027x86-stage-3-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-stage-3-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (190 commits)\n  Revert \"cpuacct: reduce one NULL check in fast-path\"\n  Revert \"x86: don\u0027t compile vsmp_64 for 32bit\"\n  x86: Correct behaviour of irq affinity\n  x86: early_ioremap_init(), use __fix_to_virt(), because we are sure it\u0027s safe\n  x86: use default_cpu_mask_to_apicid for 64bit\n  x86: fix set_extra_move_desc calling\n  x86, PAT, PCI: Change vma prot in pci_mmap to reflect inherited prot\n  x86/dmi: fix dmi_alloc() section mismatches\n  x86: e820 fix various signedness issues in setup.c and e820.c\n  x86: apic/io_apic.c define msi_ir_chip and ir_ioapic_chip all the time\n  x86: irq.c keep CONFIG_X86_LOCAL_APIC interrupts together\n  x86: irq.c use same path for show_interrupts\n  x86: cpu/cpu.h cleanup\n  x86: Fix a couple of sparse warnings in arch/x86/kernel/apic/io_apic.c\n  Revert \"x86: create a non-zero sized bm_pte only when needed\"\n  x86: pci-nommu.c cleanup\n  x86: io_delay.c cleanup\n  x86: rtc.c cleanup\n  x86: i8253 cleanup\n  x86: kdebugfs.c cleanup\n  ...\n"
    },
    {
      "commit": "ebc8eca169be0283d5a7ab54c4411dd59cfb0f27",
      "tree": "831f6d577da3469e3154bf29409281c640bb67df",
      "parents": [
        "25c1a411e8a0a709abe3449866125dc290711ea8",
        "9ff9a26b786c35ee8d2a66222924a807ec851a9f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 10:23:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 10:23:53 2009 -0700"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc\n\n* \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (180 commits)\n  powerpc: clean up ssi.txt, add definition for fsl,ssi-asynchronous\n  powerpc/85xx: Add support for the \"socrates\" board (MPC8544).\n  powerpc: Fix bugs introduced by sysfs changes\n  powerpc: Sanitize stack pointer in signal handling code\n  powerpc: Add write barrier before enabling DTL flags\n  powerpc/83xx: Update ranges in gianfar node to match other dts\n  powerpc/86xx: Move gianfar mdio nodes under the ethernet nodes\n  powerpc/85xx: Move gianfar mdio nodes under the ethernet nodes\n  powerpc/83xx: Move gianfar mdio nodes under the ethernet nodes\n  powerpc/83xx: Add power management support for MPC837x boards\n  powerpc/mm: Introduce early_init_mmu() on 64-bit\n  powerpc/mm: Add option for non-atomic PTE updates to ppc64\n  powerpc/mm: Fix printk type warning in mmu_context_nohash\n  powerpc/mm: Rename arch/powerpc/kernel/mmap.c to mmap_64.c\n  powerpc/mm: Merge various PTE bits and accessors definitions\n  powerpc/mm: Tweak PTE bit combination definitions\n  powerpc/cell: Fix iommu exception reporting\n  powerpc/mm: e300c2/c3/c4 TLB errata workaround\n  powerpc/mm: Used free register to save a few cycles in SW TLB miss handling\n  powerpc/mm: Remove unused register usage in SW TLB miss handling\n  ...\n"
    },
    {
      "commit": "aeecea26234011c3fbf65ffa7d9c9525b486acab",
      "tree": "dcf6adbe2a8c25ed2ee9ceba490ddc4cea0a7561",
      "parents": [
        "7ddfda9aa6a735c2b883b8cf677099bce27bf708"
      ],
      "author": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Thu Mar 26 12:07:36 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:41 2009 -0300"
      },
      "message": "V4L/DVB (11225): v4lgrab: fix compilation warnings\n\nDocumentation/video4linux/v4lgrab.c: In function ‘main’:\nDocumentation/video4linux/v4lgrab.c:193: warning: ‘src_depth’ is used uninitialized in this function\nDocumentation/video4linux/v4lgrab.c:108: warning: ‘b’ may be used uninitialized in this function\nDocumentation/video4linux/v4lgrab.c:108: warning: ‘g’ may be used uninitialized in this function\nDocumentation/video4linux/v4lgrab.c:108: warning: ‘r’ may be used uninitialized in this function\n\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "7ddfda9aa6a735c2b883b8cf677099bce27bf708",
      "tree": "47a5972c5ffc36d2e18a8eee7b48dde08f8283ee",
      "parents": [
        "d99819d3f769baeb994d0e59f539c24d3c4ef504"
      ],
      "author": {
        "name": "Jean-Francois Moine",
        "email": "moinejf@free.fr",
        "time": "Thu Mar 26 05:13:40 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:41 2009 -0300"
      },
      "message": "V4L/DVB (11223): gspca - doc: Add the 15b8:6001 webcam to the Documentation.\n\nSigned-off-by: Jean-Francois Moine \u003cmoinejf@free.fr\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "f65a95bbf4f23dd83596e7c2dd78f4e1cc268c4f",
      "tree": "a619f981ea3a217d3bca50c0a20622d6b40ad3a6",
      "parents": [
        "5297e6f7e9818a43228f6b4131c4630f08075093"
      ],
      "author": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 23 12:35:03 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:31 2009 -0300"
      },
      "message": "V4L/DVB (11138): get_dvb_firmware: add support for downloading the cx2584x firmware for pvrusb2\n\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "5297e6f7e9818a43228f6b4131c4630f08075093",
      "tree": "1575126c13066eaf309b115d5c882632badfa4ec",
      "parents": [
        "b888c5dadb4ae409964bd7b9bedfac507ab10972"
      ],
      "author": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 23 11:46:19 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:31 2009 -0300"
      },
      "message": "V4L/DVB (11137): get_dvb_firmware: add cx23885 firmwares\n\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "b888c5dadb4ae409964bd7b9bedfac507ab10972",
      "tree": "d22795921db56c6a73d0962a8efc9045e4e105a9",
      "parents": [
        "1398ae1fe6048d49397dccaa4bc1a4101eecf643"
      ],
      "author": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 23 10:57:15 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:31 2009 -0300"
      },
      "message": "V4L/DVB (11136): get_dvb_firmware: Add download code for cx18 firmwares\n\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "dceaddb978a7fcd2efbdf6775a509529757327c3",
      "tree": "b86f67ed676a1737db79aff997b8df1a95bbd27e",
      "parents": [
        "acc5d851b824c78df430537b6a2fc5951bec5daa"
      ],
      "author": {
        "name": "Alan McIvor",
        "email": "alan.mcivor@reveal.co.nz",
        "time": "Thu Mar 12 21:43:34 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:31 2009 -0300"
      },
      "message": "V4L/DVB (11124): Add support for ProVideo PV-183 to bttv\n\nAdd support for ProVideo PV-183 to bttv\n\nThis patch adds support for the ProVideo PV-183 card to the bttv\ndevice driver. The PV-183 is a PCI card with 8 BT878 devices plus a Hint\nCorp HiNT HB4 PCI-PCI Bridge. Each BT878 has two composite input channels\navailable. There are no tuners on this card.\n\nSigned-off-by: Alan McIvor \u003calan.mcivor@reveal.co.nz\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "06e9509ff3484578c111bbc6f9e0e97c086a1131",
      "tree": "7b565168481cc768d1befbaae96af12e1405b3db",
      "parents": [
        "2ce949ec661efe1e9747ae1419932a4b6fb1e24b"
      ],
      "author": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Thu Mar 19 12:10:00 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:29 2009 -0300"
      },
      "message": "V4L/DVB (11108): get_dvb_firmware: Add option to download firmware for cx231xx\n\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "15965f063d6d42bd451415923c4cccbdb4a61bdd",
      "tree": "36abd9569a7c869c96adbf4151497c8cbd9bb312",
      "parents": [
        "33470423aba5da982dc944658da232942824f2d5"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hverkuil@xs4all.nl",
        "time": "Sat Mar 14 15:06:08 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:23 2009 -0300"
      },
      "message": "V4L/DVB (11051): v4l-dvb: replace remaining references to the old mailinglist.\n\nSigned-off-by: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "ae6cfaace120f4330715b56265ce0e4a710e1276",
      "tree": "ed01c11218132e92ce8fe4872fe26c572c3c8842",
      "parents": [
        "6273fda6e32e2cd9a478545d0cbc15ac497b1f4b"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hverkuil@xs4all.nl",
        "time": "Sat Mar 14 08:28:45 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:22 2009 -0300"
      },
      "message": "V4L/DVB (11044): v4l2-device: add v4l2_device_disconnect\n\nCall v4l2_device_disconnect when the parent of a hotpluggable device\ndisconnects. This ensures that you do not have a pointer to a device that\nis no longer present.\n\nSigned-off-by: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "71cb2764fcc51bd9e1b95be5b0f2da6f026634c7",
      "tree": "cad0450231d5b4e7db071396ea5a33dabd3e314e",
      "parents": [
        "c98afbfc20355dd04a7b817b232e06a4c3e73bac"
      ],
      "author": {
        "name": "Jean-Francois Moine",
        "email": "moinejf@free.fr",
        "time": "Tue Mar 03 05:33:41 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:22 2009 -0300"
      },
      "message": "V4L/DVB (11039): gspca - most jpeg subdrivers: Change the JPEG header creation.\n\nSigned-off-by: Jean-Francois Moine \u003cmoinejf@free.fr\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "98ec633972a70cf71d71bc8762804f0af4792d08",
      "tree": "8f924a6d5804b56a24a58a1e60ea69d53996ece7",
      "parents": [
        "005759613b95264fba9138010f112bc138c857c2"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hverkuil@xs4all.nl",
        "time": "Sun Mar 08 17:02:10 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:20 2009 -0300"
      },
      "message": "V4L/DVB (11021): v4l2-device: add a notify callback.\n\nAdd a notify callback to v4l2_device to let sub-devices notify their\nparent of special events.\n\nSigned-off-by: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "005759613b95264fba9138010f112bc138c857c2",
      "tree": "43fa1d5a9035c51ab822906b5114885ac35707df",
      "parents": [
        "afd96668d8491f762e35c16ce65781da820a67fa"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hverkuil@xs4all.nl",
        "time": "Fri Mar 13 10:03:04 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:20 2009 -0300"
      },
      "message": "V4L/DVB (10988): v4l2-dev: use parent field if the v4l2_device has no parent set.\n\nNormally the parent device of v4l2_device is used as the video device\nnode\u0027s parent. But if it was not set, then use the parent field in the\nvideo_device struct.\n\nThis is needed in the cx88 driver, which has one core v4l2_device but\ncreates multiple pci devices (one each for raw and mpeg video).\n\nSo you cannot associate the core v4l2_device with a particular PCI device,\nbut you can do that for each video_device.\n\nSigned-off-by: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "2c79252326421dd49c059aceec0880d2cf15b17a",
      "tree": "843430d8471a54dbe04a6363f7d2e30060ed7499",
      "parents": [
        "5e585ef15b3633e1b0c022aa14bc88587827acd3"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hverkuil@xs4all.nl",
        "time": "Thu Mar 12 18:34:19 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:19 2009 -0300"
      },
      "message": "V4L/DVB (10980): doc: improve the v4l2-framework documentation.\n\nEmphasize the need to call i2c_set_adapdata and clarify the use of the\nchipid in v4l2_i2c_new_(probed_)device().\n\nSigned-off-by: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "70101a2785598f1a743c1e0fb65264c55bf5a29f",
      "tree": "043fa173cb83eda02b3fc09f1e76b9c0d626cc94",
      "parents": [
        "a27e4fd321cdfe5b333efb41589c1008c705e312"
      ],
      "author": {
        "name": "Stephan Wienczny",
        "email": "Stephan@wienczny.de",
        "time": "Tue Mar 10 19:08:06 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:18 2009 -0300"
      },
      "message": "V4L/DVB (10949): Add support for Terratec Cinergy HT PCI MKII\n\nThis patch adds support for Terratec Cinergy HT PCI MKII with card id 79.\nIts more or less a copy of Pinnacle Hybrid PCTV.\nThanks to k1ngf1sher on forum.ubuntuusers.de for the idea to copy that card.\n\nSigned-off-by: Stephan Wienczny \u003cstephan@wienczny.de\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "76ecf4599e55fd16bdb333a737c6243105c916e6",
      "tree": "9a58cc899886d45c9ab14c51f7670303bb163736",
      "parents": [
        "569b7ec73abf576f9a9e4070d213aadf2cce73cb"
      ],
      "author": {
        "name": "Robert Millan",
        "email": "rmh@aybabtu.com",
        "time": "Wed Mar 11 08:18:53 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:17 2009 -0300"
      },
      "message": "V4L/DVB (10944): Conceptronic CTVFMI2 PCI Id\n\nMy BTTV_BOARD_CONCEPTRONIC_CTVFMI2 card wasn\u0027t auto-detected, here\u0027s a patch\nthat adds its PCI id.\n\nlspci -nnv output:\n\n05:06.0 Multimedia video controller [0400]: Brooktree Corporation Bt878 Video Capture [109e:036e] (rev 11)\n05:06.1 Multimedia controller [0480]: Brooktree Corporation Bt878 Audio Capture [109e:0878] (rev 11)\n\nPress \u003cbreak\u003e within 3 seconds if this is wrong.\n\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "4dbf46a0485a5b0704e1c4b55a173128fbaedec9",
      "tree": "b169d15df798fb6f8b1f7d4c92d0e760969cd75d",
      "parents": [
        "1159b7f19f324db0c61d1277987374865690ec06"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Tue Mar 10 23:28:17 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:16 2009 -0300"
      },
      "message": "V4L/DVB (10931): zoran: Drop the lock_norm module parameter\n\nThe lock_norm module parameter doesn\u0027t look terribly useful. If you\ndon\u0027t want to change the norm, just don\u0027t change it. As a matter of\nfact, no other v4l driver has such a parameter.\n\nCc: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nSigned-off-by: Trent Piepho \u003cxyzzy@speakeasy.org\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "3abdedd8a4e3b1a0ad164c67929b3e798c85cd11",
      "tree": "db85d0b13d1e09142f3121f8a80375794ac6a59b",
      "parents": [
        "cae78ed599c348999a318ace0fcc3ff0277c8fa4"
      ],
      "author": {
        "name": "Michael Krufky",
        "email": "mkrufky@linuxtv.org",
        "time": "Mon Jan 19 01:10:49 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:16 2009 -0300"
      },
      "message": "V4L/DVB (10926): saa7134: enable digital tv support for Hauppauge WinTV-HVR1120\n\nSigned-off-by: Michael Krufky \u003cmkrufky@linuxtv.org\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "e8944282a76f94bcf84ae3b7a91328bd03835ea1",
      "tree": "d093b4a84c1e1a8e3fd8df65cad9f9235e0746ff",
      "parents": [
        "1d578540a949802eebe8655c7ef9566c85966e32"
      ],
      "author": {
        "name": "Michael Krufky",
        "email": "mkrufky@linuxtv.org",
        "time": "Tue Mar 10 17:02:07 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:16 2009 -0300"
      },
      "message": "V4L/DVB (10923): saa7134: fix typo in product name\n\nreplace occurances of \"HVR1150\" with \"HVR1120\" - this was a typo.\n\nSigned-off-by: Michael Krufky \u003cmkrufky@linuxtv.org\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "cf5193c74009e33428daefbf74f4770733c8ee36",
      "tree": "b0bd9705cdd8a1092c1ef26490a65cd74fb701ef",
      "parents": [
        "7e0a16f6118a297dd467c1e5a0908429fcdf56af"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hverkuil@xs4all.nl",
        "time": "Fri Mar 06 09:29:09 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:15 2009 -0300"
      },
      "message": "V4L/DVB (10909): tvmixer: remove last remaining references to this deleted module.\n\nSigned-off-by: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "42d12f5aa105af08bc0ed0580e32156a1a325c6b",
      "tree": "2062e3e1484b56e1712cb77b37aa059ffbf0074e",
      "parents": [
        "1f5b5cf600ba860ba684e349e63d46438ba05cdf"
      ],
      "author": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Tue Mar 10 05:02:28 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:15 2009 -0300"
      },
      "message": "V4L/DVB (10870a): remove all references for video_decoder.h\n\nchangeset 04934e44e3784a1b969582e2d59afcec278470c6 removed the last implementation\nthat were still using the V4L1 obsoleted header.\nNow, video_decoder.h is not used anymore by any driver.\n\nLet\u0027s remove it and all references for it in Kernel.\n\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "f9996c95623d63de6f5957512976137bbac729f0",
      "tree": "a0f9ba7ce669d11f036eb75c1ed5b9c7db7dc5a4",
      "parents": [
        "adcc4b3e75c5f0293806766bcc5ed0bb62d5cda0"
      ],
      "author": {
        "name": "Michael Krufky",
        "email": "mkrufky@linuxtv.org",
        "time": "Sat Feb 28 17:45:17 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:12 2009 -0300"
      },
      "message": "V4L/DVB (10877): saa7134: add analog support for Hauppauge HVR1110r3 boards\n\nSigned-off-by: Michael Krufky \u003cmkrufky@linuxtv.org\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "0c5db425519487d06a5a14eb369268f4a2b32677",
      "tree": "7bfd4cf01ba99a541eea266be28314e22482c810",
      "parents": [
        "f1735bb2a583b53ffdabe23ba8b22350e2d5e597"
      ],
      "author": {
        "name": "Bruno Christo",
        "email": "brunochristo@gmail.com",
        "time": "Mon Mar 02 22:38:59 2009 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Mar 30 12:43:07 2009 -0300"
      },
      "message": "V4L/DVB (10827): Add support for GeoVision GV-800(S)\n\nI have a GeoVision GV-800(S) card, it has 4 CONEXANT BT878A chips.\nIt has 16 video inputs and 4 audio inputs, and it is almost identical\nto the GV-800, as seen on http://bttv-gallery.de .\nThe only difference appears to be the analog mux, it has a CD22M3494\nin place of the MT8816AP. The card has a blue PCB, as seen in this\npicture: http://www.gsbr.com.br/imagem/kits/GeoVision%20GV%20800.jpg .\n\nThis card wasn\u0027t originally supported, and it was detected as\nUNKNOWN/GENERIC. The video inputs weren\u0027t working, so I tried\n\"forcing\" a few cards like the GeoVision GV-600, but there was still\nno video. So I made a patch to support this card, based on the Kodicom\n4400r.\n\nThe GV-800(S) is identified as follows:\n\n...\n02:00.0 Multimedia video controller: Brooktree Corporation Bt878 Video\nCapture (rev 11)\n02:00.1 Multimedia controller: Brooktree Corporation Bt878 Audio\nCapture (rev 11)\n02:04.0 Multimedia video controller: Brooktree Corporation Bt878 Video\nCapture (rev 11)\n02:04.1 Multimedia controller: Brooktree Corporation Bt878 Audio\nCapture (rev 11)\n02:08.0 Multimedia video controller: Brooktree Corporation Bt878 Video\nCapture (rev 11)\n02:08.1 Multimedia controller: Brooktree Corporation Bt878 Audio\nCapture (rev 11)\n02:0c.0 Multimedia video controller: Brooktree Corporation Bt878 Video\nCapture (rev 11)\n02:0c.1 Multimedia controller: Brooktree Corporation Bt878 Audio\nCapture (rev 11)\n\n...\n02:00.0 0400: 109e:036e (rev 11)\n       Subsystem: 800a:763d\n       Flags: bus master, medium devsel, latency 32, IRQ 10\n       Memory at cdfff000 (32-bit, prefetchable) [size\u003d4K]\n       Capabilities: [44] Vital Product Data \u003c?\u003e\n       Capabilities: [4c] Power Management version 2\n       Kernel modules: bttv\n\n02:00.1 0480: 109e:0878 (rev 11)\n       Subsystem: 800a:763d\n       Flags: bus master, medium devsel, latency 32, IRQ 10\n       Memory at cdffe000 (32-bit, prefetchable) [size\u003d4K]\n       Capabilities: [44] Vital Product Data \u003c?\u003e\n       Capabilities: [4c] Power Management version 2\n\n02:04.0 0400: 109e:036e (rev 11)\n       Subsystem: 800b:763d\n       Flags: bus master, medium devsel, latency 32, IRQ 10\n       Memory at cdffd000 (32-bit, prefetchable) [size\u003d4K]\n       Capabilities: [44] Vital Product Data \u003c?\u003e\n       Capabilities: [4c] Power Management version 2\n       Kernel modules: bttv\n\n02:04.1 0480: 109e:0878 (rev 11)\n       Subsystem: 800b:763d\n       Flags: bus master, medium devsel, latency 32, IRQ 10\n       Memory at cdffc000 (32-bit, prefetchable) [size\u003d4K]\n       Capabilities: [44] Vital Product Data \u003c?\u003e\n       Capabilities: [4c] Power Management version 2\n\n02:08.0 0400: 109e:036e (rev 11)\n       Subsystem: 800c:763d\n       Flags: bus master, medium devsel, latency 32, IRQ 10\n       Memory at cdffb000 (32-bit, prefetchable) [size\u003d4K]\n       Capabilities: [44] Vital Product Data \u003c?\u003e\n       Capabilities: [4c] Power Management version 2\n       Kernel modules: bttv\n\n02:08.1 0480: 109e:0878 (rev 11)\n       Subsystem: 800c:763d\n       Flags: bus master, medium devsel, latency 32, IRQ 10\n       Memory at cdffa000 (32-bit, prefetchable) [size\u003d4K]\n       Capabilities: [44] Vital Product Data \u003c?\u003e\n       Capabilities: [4c] Power Management version 2\n\n02:0c.0 0400: 109e:036e (rev 11)\n       Subsystem: 800d:763d\n       Flags: bus master, medium devsel, latency 32, IRQ 10\n       Memory at cdff9000 (32-bit, prefetchable) [size\u003d4K]\n       Capabilities: [44] Vital Product Data \u003c?\u003e\n       Capabilities: [4c] Power Management version 2\n       Kernel modules: bttv\n\n02:0c.1 0480: 109e:0878 (rev 11)\n       Subsystem: 800d:763d\n       Flags: bus master, medium devsel, latency 32, IRQ 10\n       Memory at cdff8000 (32-bit, prefetchable) [size\u003d4K]\n       Capabilities: [44] Vital Product Data \u003c?\u003e\n       Capabilities: [4c] Power Management version 2\n\nAs you can see, the GV-800(S) card is almost identical to the GV-800\non bttv-gallery, so this patch might also work for that card. If not,\nonly a few changes should be required on the gv800s_write() function.\n\nAfter this patch, the video inputs work correctly on linux 2.6.24 and\n2.6.27 using the software \u0027motion\u0027. The input order may seem a little\nodd, but it\u0027s the order the original software/driver uses, and I decided\nto keep that order to get the most out of the card.\n\nI tried to get the audio working with the snd-bt87x module, but I only\nget noise from every audio input, even after selecting a different mux\nwith alsamixer. Also, after trying to play sound from those sources, I\nrandomly get a RISC error about an invalid RISC opcode, and then that\noutput stops working. I also can\u0027t change the sampling rate when\nrecording. Any pointers to adding audio support are welcome.\n\nSigned-off-by: Bruno Christo \u003cbchristo@inf.ufsm.br\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    }
  ],
  "next": "5a23b0762c9095e137ce9a559cc7c37b2f8fd083"
}
