)]}'
{
  "log": [
    {
      "commit": "7e0338c0de18c50f09aea1fbef45110cf7d64a3c",
      "tree": "30a935c1f6eee7125a9fbb802a33292b1f7268fa",
      "parents": [
        "df36b439c5fedefe013d4449cb6a50d15e2f4d70",
        "47fcb03fefee2501e79176932a4184fc24d6f8ec"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 22 12:55:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 22 12:55:50 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://fieldses.org/git/linux-nfsd\n\n* \u0027for-2.6.31\u0027 of git://fieldses.org/git/linux-nfsd: (60 commits)\n  SUNRPC: Fix the TCP server\u0027s send buffer accounting\n  nfsd41: Backchannel: minorversion support for the back channel\n  nfsd41: Backchannel: cleanup nfs4.0 callback encode routines\n  nfsd41: Remove ip address collision detection case\n  nfsd: optimise the starting of zero threads when none are running.\n  nfsd: don\u0027t take nfsd_mutex twice when setting number of threads.\n  nfsd41: sanity check client drc maxreqs\n  nfsd41: move channel attributes from nfsd4_session to a nfsd4_channel_attr struct\n  NFS: kill off complicated macro \u0027PROC\u0027\n  sunrpc: potential memory leak in function rdma_read_xdr\n  nfsd: minor nfsd_vfs_write cleanup\n  nfsd: Pull write-gathering code out of nfsd_vfs_write\n  nfsd: track last inode only in use_wgather case\n  sunrpc: align cache_clean work\u0027s timer\n  nfsd: Use write gathering only with NFSv2\n  NFSv4: kill off complicated macro \u0027PROC\u0027\n  NFSv4: do exact check about attribute specified\n  knfsd: remove unreported filehandle stats counters\n  knfsd: fix reply cache memory corruption\n  knfsd: reply cache cleanups\n  ...\n"
    },
    {
      "commit": "0732f87761dbe417cb6e084b712d07e879e876ef",
      "tree": "afed6ca0368fd3e121fd4f43b11e32aa1e5139c0",
      "parents": [
        "15fc204afc6feb915c400159546f646eca8ba1d9",
        "536fc240e7147858255bdb08e7a999a3351a9fb4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 14:07:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 14:07:46 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:\n  jbd2: clean up jbd2_journal_try_to_free_buffers()\n  ext4: Don\u0027t update ctime for non-extent-mapped inodes\n  ext4: Fix up whitespace issues in fs/ext4/inode.c\n  ext4: Fix 64-bit block type problem on 32-bit platforms\n  ext4: teach the inode allocator to use a goal inode number\n  ext4: Use a hash of the topdir directory name for the Orlov parent group\n  ext4: document the \"abort\" mount option\n  ext4: move the abort flag from s_mount_opts to s_mount_flags\n  ext4: update the s_last_mounted field in the superblock\n  ext4: change s_mount_opt to be an unsigned int\n  ext4: online defrag -- Add EXT4_IOC_MOVE_EXT ioctl\n  ext4: avoid unnecessary spinlock in critical POSIX ACL path\n  ext3: avoid unnecessary spinlock in critical POSIX ACL path\n  ext4: convert instrumentation from markers to tracepoints\n  jbd2: convert instrumentation from markers to tracepoints\n"
    },
    {
      "commit": "52b680c81238ea14693ab893d5d32a4d1c0a987d",
      "tree": "9c3ec57c06faf001b60529d088c189f4bcb77fac",
      "parents": [
        "ef43618a47179b41e7203a624f2c7445e7da488c"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jun 17 16:26:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:45 2009 -0700"
      },
      "message": "isofs: let mode and dmode mount options override rock ridge mode setting\n\nSo far, permissions set via \u0027mode\u0027 and/or \u0027dmode\u0027 mount options were\neffective only if the medium had no rock ridge extensions (or was mounted\nwithout them).  Add \u0027overriderockmode\u0027 mount option to indicate that these\noptions should override permissions set in rock ridge extensions.  Maybe\nthis should be default but the current behavior is there since mount\noptions were created so I think we should not change how they behave.\n\nCc: \u003cHans-Joachim.Baader@cjt.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ce05b2a9db1d86635a906f14427deff97eeb6183",
      "tree": "ea10251badb6b44bd4b136190a0d27138b974189",
      "parents": [
        "39fe7557b4d6ab82bafaa7b92b98b806afe6ad0d"
      ],
      "author": {
        "name": "Michael Shields",
        "email": "mshields@google.com",
        "time": "Wed Jun 17 16:26:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:44 2009 -0700"
      },
      "message": "Doc fix: ext2 can only have 32,000 subdirs, not 32,768\n\next2.txt says that dirs can have 32,768 subdirs, but the actual value of\nEXT2_LINK_MAX is 32000.\n\next3 is the same, but the doc does not mention it.  One of ext4\u0027s features\nis to \"fix 32000 subdirectory limit\".\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "349888ee7b2c1ffb44c806adf6f4289ca4a6fd42",
      "tree": "841552b3ed0c3140be1904c82ffc0149f32491b1",
      "parents": [
        "2f6d311080c36e30a5fa87adca550dc6b51dbfdc"
      ],
      "author": {
        "name": "Stefani Seibold",
        "email": "stefani@seibold.net",
        "time": "Wed Jun 17 16:26:01 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:41 2009 -0700"
      },
      "message": "proc.txt: update kernel filesystem/proc.txt documentation\n\nAn update for the \"Process-Specific Subdirectories\" section to reflect the\nchanges till kernel 2.6.30.\n\nSigned-off-by: Stefani Seibold \u003cstefani@seibold.net\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": "d3d64df21d3d0de675a0d3ffa7c10514f3644b30",
      "tree": "7ea3c79d8adb2c0282327f9ce63208978857eb07",
      "parents": [
        "9d9b8fb0e5ebf4b0398e579f6061d4451fea3242"
      ],
      "author": {
        "name": "Keika Kobayashi",
        "email": "kobayashi.kk@ncos.nec.co.jp",
        "time": "Wed Jun 17 16:25:55 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:41 2009 -0700"
      },
      "message": "proc: export statistics for softirq to /proc\n\nExport statistics for softirq in /proc/softirqs and /proc/stat.\n\n1. /proc/softirqs\nImplement /proc/softirqs which shows the number of softirq\nfor each CPU like /proc/interrupts.\n\n2. /proc/stat\nAdd the \"softirq\" line to /proc/stat.\nThis line shows the number of softirq for all cpu.\nThe first column is the total of all softirqs and\neach subsequent column is the total for particular softirq.\n\n[kosaki.motohiro@jp.fujitsu.com: remove redundant for_each_possible_cpu() loop]\nSigned-off-by: Keika Kobayashi \u003ckobayashi.kk@ncos.nec.co.jp\u003e\nReviewed-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "feb72ce827b939d5228664c92c2dfed7753cae46",
      "tree": "de2d78ee45d9e0df234e98eea67ebc3a21525d8f",
      "parents": [
        "65795efbd380a832ae508b04dba8f8e53f0b84d9",
        "5ac3455a843d2ca77333c954eea83aa4514c8199"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 17 08:46:57 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 17 08:46:57 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  get rid of BKL in fs/sysv\n  get rid of BKL in fs/minix\n  get rid of BKL in fs/efs\n  befs -\u003epust_super() doesn\u0027t need BKL\n  Cleanup of adfs headers\n  9P doesn\u0027t need BKL in -\u003eumount_begin()\n  fuse doesn\u0027t need BKL in -\u003eumount_begin()\n  No instance of -\u003ebmap() needs BKL\n  remove unlock_kernel() left accidentally\n  ext4: avoid unnecessary spinlock in critical POSIX ACL path\n  ext3: avoid unnecessary spinlock in critical POSIX ACL path\n"
    },
    {
      "commit": "fe36adf47eb1f7f4972559efa30ce3d2d3f977f2",
      "tree": "27acbe8377f0d4a0f192daa8943c5289ac3d503d",
      "parents": [
        "b0895513f499b8f786d292ce48589ca210ca1d6e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 16 13:35:01 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 17 00:36:35 2009 -0400"
      },
      "message": "No instance of -\u003ebmap() needs BKL\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "517d08699b250021303f9a7cf0d758b6dc0748ed",
      "tree": "5e5b0134c3fffb78fe9d8b1641a64ff28fdd7bbc",
      "parents": [
        "8eeee4e2f04fc551f50c9d9847da2d73d7d33728",
        "a34601c5d84134055782ee031d58d82f5440e918"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:50:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:50:13 2009 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027\n\n* akpm: (182 commits)\n  fbdev: bf54x-lq043fb: use kzalloc over kmalloc/memset\n  fbdev: *bfin*: fix __dev{init,exit} markings\n  fbdev: *bfin*: drop unnecessary calls to memset\n  fbdev: bfin-t350mcqb-fb: drop unused local variables\n  fbdev: blackfin has __raw I/O accessors, so use them in fb.h\n  fbdev: s1d13xxxfb: add accelerated bitblt functions\n  tcx: use standard fields for framebuffer physical address and length\n  fbdev: add support for handoff from firmware to hw framebuffers\n  intelfb: fix a bug when changing video timing\n  fbdev: use framebuffer_release() for freeing fb_info structures\n  radeon: P2G2CLK_ALWAYS_ONb tested twice, should 2nd be P2G2CLK_DAC_ALWAYS_ONb?\n  s3c-fb: CPUFREQ frequency scaling support\n  s3c-fb: fix resource releasing on error during probing\n  carminefb: fix possible access beyond end of carmine_modedb[]\n  acornfb: remove fb_mmap function\n  mb862xxfb: use CONFIG_OF instead of CONFIG_PPC_OF\n  mb862xxfb: restrict compliation of platform driver to PPC\n  Samsung SoC Framebuffer driver: add Alpha Channel support\n  atmel-lcdc: fix pixclock upper bound detection\n  offb: use framebuffer_alloc() to allocate fb_info struct\n  ...\n\nManually fix up conflicts due to kmemcheck in mm/slab.c\n"
    },
    {
      "commit": "2ff05b2b4eac2e63d345fc731ea151a060247f53",
      "tree": "1840bc2d3b381eca5d39869499339b0fcc6eabbf",
      "parents": [
        "c9e444103b5e7a5a3519f9913f59767f92e33baf"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jun 16 15:32:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:43 2009 -0700"
      },
      "message": "oom: move oom_adj value from task_struct to mm_struct\n\nThe per-task oom_adj value is a characteristic of its mm more than the\ntask itself since it\u0027s not possible to oom kill any thread that shares the\nmm.  If a task were to be killed while attached to an mm that could not be\nfreed because another thread were set to OOM_DISABLE, it would have\nneedlessly been terminated since there is no potential for future memory\nfreeing.\n\nThis patch moves oomkilladj (now more appropriately named oom_adj) from\nstruct task_struct to struct mm_struct.  This requires task_lock() on a\ntask to check its oom_adj value to protect against exec, but it\u0027s already\nnecessary to take the lock when dereferencing the mm to find the total VM\nsize for the badness heuristic.\n\nThis fixes a livelock if the oom killer chooses a task and another thread\nsharing the same memory has an oom_adj value of OOM_DISABLE.  This occurs\nbecause oom_kill_task() repeatedly returns 1 and refuses to kill the\nchosen task while select_bad_process() will repeatedly choose the same\ntask during the next retry.\n\nTaking task_lock() in select_bad_process() to check for OOM_DISABLE and in\noom_kill_task() to check for threads sharing the same memory will be\nremoved in the next patch in this series where it will no longer be\nnecessary.\n\nWriting to /proc/pid/oom_adj for a kthread will now return -EINVAL since\nthese threads are immune from oom killing already.  They simply report an\noom_adj value of OOM_DISABLE.\n\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: 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": "23059a0df5fad3d83b9a21fc2696a39148f49617",
      "tree": "c23275fb1d4f6b4990d38c01344770c2d10f8e71",
      "parents": [
        "4858704da75ba84ce21e6d4b3b974e8b8594c9f2",
        "21bea495943f9532f16e819066b340762124f5dd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 11:29:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 11:29:44 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6:\n  fat: split fat_generic_ioctl\n  FAT: add \u0027errors\u0027 mount option\n"
    },
    {
      "commit": "7eef4091a653c243a87e5375c54504cc03bec4d8",
      "tree": "f65b77f830b2c8f7d014512badfef5df0d591ee9",
      "parents": [
        "0a93a47f042c459f0f46942c3a920e3c81878031",
        "07a2039b8eb0af4ff464efd3dfd95de5c02648c6"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Jun 15 18:08:07 2009 -0700"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Jun 15 18:08:07 2009 -0700"
      },
      "message": "Merge commit \u0027v2.6.30\u0027 into for-2.6.31\n"
    },
    {
      "commit": "9c7cb99a8202452d3e0440a5505c5c6d262771d9",
      "tree": "56d2fe83150f7bea3446b28bfa3094066c5f26b5",
      "parents": [
        "0a8eba9b7f7aa3ad0305627c99ad4d6deedd871d",
        "c3a7abf06ce719a51139e62a034590be99abbc2c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:13:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:13:49 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2: (22 commits)\n  nilfs2: support contiguous lookup of blocks\n  nilfs2: add sync_page method to page caches of meta data\n  nilfs2: use device\u0027s backing_dev_info for btree node caches\n  nilfs2: return EBUSY against delete request on snapshot\n  nilfs2: modify list of unsupported features in caveats\n  nilfs2: enable sync_page method\n  nilfs2: set bio unplug flag for the last bio in segment\n  nilfs2: allow future expansion of metadata read out via get info ioctl\n  NILFS2: Pagecache usage optimization on NILFS2\n  nilfs2: remove nilfs_btree_operations from btree mapping\n  nilfs2: remove nilfs_direct_operations from direct mapping\n  nilfs2: remove bmap pointer operations\n  nilfs2: remove useless b_low and b_high fields from nilfs_bmap struct\n  nilfs2: remove pointless NULL check of bpop_commit_alloc_ptr function\n  nilfs2: move get block functions in bmap.c into btree codes\n  nilfs2: remove nilfs_bmap_delete_block\n  nilfs2: remove nilfs_bmap_put_block\n  nilfs2: remove header file for segment list operations\n  nilfs2: eliminate removal list of segments\n  nilfs2: add sufile function that can modify multiple segment usages\n  ...\n"
    },
    {
      "commit": "489f7ab6c18cdd64a2d444e056d60a0e722f4ad7",
      "tree": "2c7ed6a0042dc15c91ece08c5a3866f610ddca6d",
      "parents": [
        "b322b7816908487c08b89b72f838174c37d8c836",
        "82d27b2b2f3a80ffa7759a49b9cba39e47df476e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jun 14 13:46:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jun 14 13:46:25 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: (31 commits)\n  trivial: remove the trivial patch monkey\u0027s name from SubmittingPatches\n  trivial: Fix a typo in comment of addrconf_dad_start()\n  trivial: usb: fix missing space typo in doc\n  trivial: pci hotplug: adding __init/__exit macros to sgi_hotplug\n  trivial: Remove the hyphen from git commands\n  trivial: fix ETIMEOUT -\u003e ETIMEDOUT typos\n  trivial: Kconfig: .ko is normally not included in module names\n  trivial: SubmittingPatches: fix typo\n  trivial: Documentation/dell_rbu.txt: fix typos\n  trivial: Fix Pavel\u0027s address in MAINTAINERS\n  trivial: ftrace:fix description of trace directory\n  trivial: unnecessary (void*) cast removal in sound/oss/msnd.c\n  trivial: input/misc: Fix typo in Kconfig\n  trivial: fix grammo in bus_for_each_dev() kerneldoc\n  trivial: rbtree.txt: fix rb_entry() parameters in sample code\n  trivial: spelling fix in ppc code comments\n  trivial: fix typo in bio_alloc kernel doc\n  trivial: Documentation/rbtree.txt: cleanup kerneldoc of rbtree.txt\n  trivial: Miscellaneous documentation typo fixes\n  trivial: fix typo milisecond/millisecond for documentation and source comments.\n  ...\n"
    },
    {
      "commit": "1904187a694713b80d74186fe058377b067cc195",
      "tree": "88ead633c1bdc4f6bf5590b178f73a0dadbfe547",
      "parents": [
        "32f44d62e463f66307513e90c09b4ceeac13cc22",
        "f89d7eaf6c34828070f407d0e04b73127f176ec5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 13 13:08:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 13 13:08:34 2009 -0700"
      },
      "message": "Merge branch \u0027docs-next\u0027 of git://git.lwn.net/linux-2.6\n\n* \u0027docs-next\u0027 of git://git.lwn.net/linux-2.6:\n  Document the debugfs API\n  Documentation: Add \"how to write a good patch summary\" to SubmittingPatches\n  SubmittingPatches: fix typo\n  docs: Encourage better changelogs in the development process document\n  Document Reported-by in SubmittingPatches\n"
    },
    {
      "commit": "8a8a2050c844d9de224ff591e91bda3f77bd6eda",
      "tree": "39aa31e7061526c197f62cae2f80bbd888fad070",
      "parents": [
        "4ab2f15b7f709c3626a7eed075a7225b4c775c7e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:08:59 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:08:59 2009 -0400"
      },
      "message": "ext4: document the \"abort\" mount option\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "19f594600110377ec4037fdf7fb93a25ec516212",
      "tree": "bf88707b65f0138b754d896300976e474098a50d",
      "parents": [
        "19af5cdb7c79ff5ec96a99893ffb7f894f4a3dc1"
      ],
      "author": {
        "name": "Matt LaPlante",
        "email": "kernel1@cyberdogtech.com",
        "time": "Mon Apr 27 15:06:31 2009 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Jun 12 18:01:47 2009 +0200"
      },
      "message": "trivial: Miscellaneous documentation typo fixes\n\nFix various typos in documentation txts.\n\nSigned-off-by: Matt LaPlante \u003ckernel1@cyberdogtech.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "0a33f80a8373eca7f4bea3961d1346c3815fa5ed",
      "tree": "16b0c0364340416f1e27bebdd4042ffe0e6fef8f",
      "parents": [
        "c29f5ec022451546be1e0b24c330a0368e63e4a7",
        "003dec8913d6bebb4ecc989ec04a235cf38f5ea9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:36:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:36:12 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (25 commits)\n  GFS2: Merge gfs2_get_sb into gfs2_get_sb_meta\n  GFS2: Fix cache coherency between truncate and O_DIRECT read\n  GFS2: Fix locking issue mounting gfs2meta fs\n  GFS2: Remove unused variable\n  GFS2: smbd proccess hangs with flock() call.\n  GFS2: Remove args subdir from gfs2 sysfs files\n  GFS2: Remove lockstruct subdir from gfs2 sysfs files\n  GFS2: Move gfs2_unlink_ok into ops_inode.c\n  GFS2: Move gfs2_readlinki into ops_inode.c\n  GFS2: Move gfs2_rmdiri into ops_inode.c\n  GFS2: Merge mount.c and ops_super.c into super.c\n  GFS2: Clean up some file names\n  GFS2: Be more aggressive in reclaiming unlinked inodes\n  GFS2: Add a rgrp bitmap full flag\n  GFS2: Improve resource group error handling\n  GFS2: Don\u0027t warn when delete inode fails on ro filesystem\n  GFS2: Update docs\n  GFS2: Umount recovery race fix\n  GFS2: Remove a couple of unused sysfs entries\n  GFS2: Add commit\u003d mount option\n  ...\n"
    },
    {
      "commit": "fb6e7113ae3ba6c7d0de77c6ccbcfa659899ff0f",
      "tree": "442fbb9b6e30546fde4659180e9aa1cecd658f73",
      "parents": [
        "e85dc1d5295779d2e6d973b7ed524d6bd3825a3f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat May 30 11:27:17 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:11 2009 +0900"
      },
      "message": "nilfs2: modify list of unsupported features in caveats\n\nThis clarifies missing features of nilfs as a regular filesystem.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "f89d7eaf6c34828070f407d0e04b73127f176ec5",
      "tree": "c4635afb9af5ed67688a49645d7c9b6dd5bf5f6f",
      "parents": [
        "2ae19acaa50a09c1099956efb895c0aca74ab050"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Thu Jun 04 16:35:25 2009 -0600"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Sat Jun 06 10:28:14 2009 -0600"
      },
      "message": "Document the debugfs API\n\nThis is an updated document covering the internal API for the debugfs\nfilesystem.  Thanks to Shen Feng for suggesting that I put this text here\nand noting that the old LWN version was rather out of date.\n\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nReported-by: Shen Feng \u003cshen@cn.fujitsu.com\u003e\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\n"
    },
    {
      "commit": "85c7859190c4197a7c34066db14c25903c401187",
      "tree": "9cf54e894f52eb1edfd35daeff66bfb5697b8360",
      "parents": [
        "9fa7eb283c5cdc2b0f4a8cfe6387ed82e5e9a3d3"
      ],
      "author": {
        "name": "Denis Karpov",
        "email": "ext-denis.2.karpov@nokia.com",
        "time": "Thu Jun 04 02:34:22 2009 +0900"
      },
      "committer": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Thu Jun 04 02:34:51 2009 +0900"
      },
      "message": "FAT: add \u0027errors\u0027 mount option\n\nOn severe errors FAT remounts itself in read-only mode. Allow to\nspecify FAT fs desired behavior through \u0027errors\u0027 mount option:\npanic, continue or remount read-only.\n\n`mount -t [fat|vfat] -o errors\u003d[panic,remount-ro,continue] \\\n\t\u003cbdev\u003e \u003cmount point\u003e`\n\nThis is analog to ext2 fs \u0027errors\u0027 mount option.\n\nSigned-off-by: Denis Karpov \u003cext-denis.2.karpov@nokia.com\u003e\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\n"
    },
    {
      "commit": "98f32602d42951e61a059685f842aa7d778ffab0",
      "tree": "283a357f417f2ddf99a783dddeac8257e9342de3",
      "parents": [
        "ecca1c5e3a55d1581be9aa9144642c67de70e33b"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Thu May 21 20:33:58 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 21 13:14:32 2009 -0700"
      },
      "message": "hugh: update email address\n\nMy old address will shut down in a few days time: remove it from the tree,\nand add a tmpfs (shmem filesystem) maintainer entry with the new address.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e9ccb73ab57ada469602506496c42e5b4468ac3e",
      "tree": "3fe274b76ca7a259e131512443cabb14930c4e5c",
      "parents": [
        "fe64d517df0970a68417184a12fcd4ba0589cc28"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 19 10:23:23 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 19 10:23:23 2009 +0100"
      },
      "message": "GFS2: Update docs\n\nUpdate a few things which were out of date, and fix a typo.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b827e496c893de0c0f142abfaeb8730a2fd6b37f",
      "tree": "a86aecd5d811f9306b9662ceb5a5a45091b62b97",
      "parents": [
        "a5fc1abe438b87a9d128beebc377f78e2681a76d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Apr 30 15:08:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 02 15:36:09 2009 -0700"
      },
      "message": "mm: close page_mkwrite races\n\nChange page_mkwrite to allow implementations to return with the page\nlocked, and also change it\u0027s callers (in page fault paths) to hold the\nlock until the page is marked dirty.  This allows the filesystem to have\nfull control of page dirtying events coming from the VM.\n\nRather than simply hold the page locked over the page_mkwrite call, we\ncall page_mkwrite with the page unlocked and allow callers to return with\nit locked, so filesystems can avoid LOR conditions with page lock.\n\nThe problem with the current scheme is this: a filesystem that wants to\nassociate some metadata with a page as long as the page is dirty, will\nperform this manipulation in its -\u003epage_mkwrite.  It currently then must\nreturn with the page unlocked and may not hold any other locks (according\nto existing page_mkwrite convention).\n\nIn this window, the VM could write out the page, clearing page-dirty.  The\nfilesystem has no good way to detect that a dirty pte is about to be\nattached, so it will happily write out the page, at which point, the\nfilesystem may manipulate the metadata to reflect that the page is no\nlonger dirty.\n\nIt is not always possible to perform the required metadata manipulation in\n-\u003eset_page_dirty, because that function cannot block or fail.  The\nfilesystem may need to allocate some data structure, for example.\n\nAnd the VM cannot mark the pte dirty before page_mkwrite, because\npage_mkwrite is allowed to fail, so we must not allow any window where the\npage could be written to if page_mkwrite does fail.\n\nThis solution of holding the page locked over the 3 critical operations\n(page_mkwrite, setting the pte dirty, and finally setting the page dirty)\ncloses out races nicely, preventing page cleaning for writeout being\ninitiated in that window.  This provides the filesystem with a strong\nsynchronisation against the VM here.\n\n- Sage needs this race closed for ceph filesystem.\n- Trond for NFS (http://bugzilla.kernel.org/show_bug.cgi?id\u003d12913).\n- I need it for fsblock.\n- I suspect other filesystems may need it too (eg. btrfs).\n- I have converted buffer.c to the new locking. Even simple block allocation\n  under dirty pages might be susceptible to i_size changing under partial page\n  at the end of file (we also have a buffer.c-side problem here, but it cannot\n  be fixed properly without this patch).\n- Other filesystems (eg. NFS, maybe btrfs) will need to change their\n  page_mkwrite functions themselves.\n\n[ This also moves page_mkwrite another step closer to fault, which should\n  eventually allow page_mkwrite to be moved into -\u003efault, and thus avoiding a\n  filesystem calldown and page lock/unlock cycle in __do_fault. ]\n\n[akpm@linux-foundation.org: fix derefs of NULL -\u003emapping]\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Valdis Kletnieks \u003cValdis.Kletnieks@vt.edu\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ba170c2bb77713e999ac6fb9ffe6ddd99d2f25a",
      "tree": "00c389049336dbc438b80b12b1200e46b9cc184a",
      "parents": [
        "78155ed75f470710f2aecb3e75e3d97107ba8374"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Tue Apr 07 21:45:37 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Apr 28 12:54:45 2009 -0400"
      },
      "message": "update Documentation/filesystems/00-INDEX with new nfsd related docs.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nCc: James Lentini \u003cjlentini@netapp.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "91ac033d8377552d3654501a105ab55bf546940e",
      "tree": "b3757b6b5f2180edb94049971850f76355abaa19",
      "parents": [
        "e5b89542ea18020961882228c26db3ba87f6e608"
      ],
      "author": {
        "name": "Marc Dionne",
        "email": "marc.c.dionne@gmail.com",
        "time": "Thu Apr 23 11:21:55 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 24 13:28:30 2009 -0700"
      },
      "message": "CacheFiles: Fix the documentation to use the correct credential pointer names\n\nAdjust the CacheFiles documentation to use the correct names of the credential\npointers in task_struct.\n\nThe documentation was using names from the old versions of the credentials\npatches.\n\nSigned-off-by: Marc Dionne \u003cmarc.c.dionne@gmail.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "66672fefaa91802fec51c3fe0cc55bc9baea5a2d",
      "tree": "881ff54bfb1cb2de02181382475465389147913f",
      "parents": [
        "2f9092e1020246168b1309b35e085ecd7ff9ff72"
      ],
      "author": {
        "name": "Adrian McMenamin",
        "email": "adrian@mcmen.demon.co.uk",
        "time": "Mon Apr 20 18:38:28 2009 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 20 23:01:16 2009 -0400"
      },
      "message": "Documentation/filesystems: remove out of date reference to BKL being held\n\nDocumentation/filesystems/vfs.txt incorrectly states that the kernel is\nlocked during the call to statfs (Documentation/filesystems/Locking\ncorrectly says it is not). This patch removes the offending sentence.\n\nremove reference to BKL being held in statfs\n\nSigned-off-by: Adrian McMenamin \u003cadrian@mcmen.demon.co.uk\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e0ca87391694dfacd01465d5c01c579c3b8b63e0",
      "tree": "7d295aa23034586fd7374b3e614e0844d39f351e",
      "parents": [
        "f2739de19176009b14475207d5418cd79e7f0ba3"
      ],
      "author": {
        "name": "Evgeniy Polyakov",
        "email": "zbr@ioremap.net",
        "time": "Fri Mar 27 15:04:29 2009 +0300"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Apr 17 11:06:30 2009 -0700"
      },
      "message": "Staging: Pohmelfs: Added IO permissions and priorities.\n\nSigned-off-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "458c5b0822a669d170fdb7bb16c9145f652ebe06",
      "tree": "f2c53998492306a8aaf6d20ded229b69cba17348",
      "parents": [
        "e62687468588f47c32256e3c8c36157c40111b6e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: clean up sketch file\n\nThe sketch file is a file to mark checkpoints with user data.  It was\nexperimentally introduced in the original implementation, and now\nobsolete.  The file was handled differently with regular files; the file\nsize got truncated when a checkpoint was created.\n\nThis stops the special treatment and will treat it as a regular file.\nMost users are not affected because mkfs.nilfs2 no longer makes this file.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.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": "962281a7ab3aeb97eed004b8f0bdb0979cf35347",
      "tree": "600628383553d807f4151d93a21d5cfd70389de3",
      "parents": [
        "2c5510d4e84988ea95f86488d1e23244284bc1ed"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:12 2009 -0700"
      },
      "message": "nilfs2: add document\n\nThis adds a document describing the features, mount options, userland\ntools, usage, disk format, and related URLs for the nilfs2 file system.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.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": "a63856252d2112e7c452696037a86ceb12f47f80",
      "tree": "b1ad03fe441349069f80e58de425b3f72af9e5b7",
      "parents": [
        "b24241a09208874d5d770bee30791daae41ad762",
        "04826f43d4f0a4d56423eb8abb9f2ec9987df5b5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:25:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:25:56 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.30\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.30\u0027 of git://linux-nfs.org/~bfields/linux: (81 commits)\n  nfsd41: define nfsd4_set_statp as noop for !CONFIG_NFSD_V4\n  nfsd41: define NFSD_DRC_SIZE_SHIFT in set_max_drc\n  nfsd41: Documentation/filesystems/nfs41-server.txt\n  nfsd41: CREATE_EXCLUSIVE4_1\n  nfsd41: SUPPATTR_EXCLCREAT attribute\n  nfsd41: support for 3-word long attribute bitmask\n  nfsd: dynamically skip encoded fattr bitmap in _nfsd4_verify\n  nfsd41: pass writable attrs mask to nfsd4_decode_fattr\n  nfsd41: provide support for minor version 1 at rpc level\n  nfsd41: control nfsv4.1 svc via /proc/fs/nfsd/versions\n  nfsd41: add OPEN4_SHARE_ACCESS_WANT nfs4_stateid bmap\n  nfsd41: access_valid\n  nfsd41: clientid handling\n  nfsd41: check encode size for sessions maxresponse cached\n  nfsd41: stateid handling\n  nfsd: pass nfsd4_compound_state* to nfs4_preprocess_{state,seq}id_op\n  nfsd41: destroy_session operation\n  nfsd41: non-page DRC for solo sequence responses\n  nfsd41: Add a create session replay cache\n  nfsd41: create_session operation\n  ...\n"
    },
    {
      "commit": "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": "3ef1728898f0285c13aa6901f412b52835e23578",
      "tree": "ffd9074e03bf9bd933f9fba48b5a5051e32861a2",
      "parents": [
        "79fb54abd285b442e1f30f851902f3ddf58e7704"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Fri Apr 03 08:29:20 2009 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 03 17:41:24 2009 -0700"
      },
      "message": "nfsd41: Documentation/filesystems/nfs41-server.txt\n\nInitial nfs41 server write up describing the status of the linux\nserver implementation.\n\n[nfsd41: document unenforced nfs41 compound ordering rules.]\n[get rid of CONFIG_NFSD_V4_1]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "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": "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": "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": "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": "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": "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": "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": "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": "e3375ac767b847127df57d186a26abf83d055982",
      "tree": "492f248c4e6819a883a3eb2e96cec407895b83c9",
      "parents": [
        "0d34fb8e93ceba7b6dad0062dbb4a0813bacd75b"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@suse.cz",
        "time": "Sat Jan 10 00:47:21 2009 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 30 15:21:56 2009 +0200"
      },
      "message": "trivial: document ext3 semantics of \u0027ro\u0027 option a bit better\n\next3 has quite unexpected semantics or \"ro\" and defaults are\nnot what they are documented to be, due to mkfs override.\n\nSigned-off-by: Pavel Machek \u003cpavel@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "06705bff9114531a997a7d0c2520bea0f2927410",
      "tree": "f7bef499cd491c8171db45da5b02c168655d4236",
      "parents": [
        "e7c9e3e99adf6c49c5d593a51375916acc039d1e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 28 10:59:57 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 28 10:59:57 2009 -0400"
      },
      "message": "ext4: Regularize mount options\n\nAdd support for using the mount options \"barrier\" and \"nobarrier\", and\n\"auto_da_alloc\" and \"noauto_da_alloc\", which is more consistent than\n\"barrier\u003d\u003c0|1\u003e\" or \"auto_da_alloc\u003d\u003c0|1\u003e\".  Most other ext3/ext4 mount\noptions use the foo/nofoo naming convention.  We allow the old forms\nof these mount options for backwards compatibility.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b5cbc369db39d9080f4932db8607aea1e1654d4d",
      "tree": "439327c3fa2fc0ee6e4171e0025f7378f51fd289",
      "parents": [
        "abd91ee979f785b7377216532620d98ab4e3e5af"
      ],
      "author": {
        "name": "Greg Banks",
        "email": "gnb@sgi.com",
        "time": "Thu Mar 26 17:45:27 2009 +1100"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Mar 27 19:24:27 2009 -0400"
      },
      "message": "Document /proc/fs/nfsd/pool_stats\n\nDocument the format and semantics of the /proc/fs/nfsd/pool_stats file.\n\nSigned-off-by: Greg Banks \u003cgnb@sgi.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "8e9d2089723d08d51e66c5eea49253d76e27941e",
      "tree": "cf15609d5eeb0c1f3a39231d8ce793d3c8ad0ed0",
      "parents": [
        "ba1eb95cf3cc666769afe42eaa15a3a34ae82f94",
        "60aa49243d09afc873f082567d2e3c16634ced84"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 16:14:02 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 16:14:02 2009 -0700"
      },
      "message": "Merge branch \u0027bkl-removal\u0027 of git://git.lwn.net/linux-2.6\n\n* \u0027bkl-removal\u0027 of git://git.lwn.net/linux-2.6:\n  Rationalize fasync return values\n  Move FASYNC bit handling to f_op-\u003efasync()\n  Use f_lock to protect f_flags\n  Rename struct file-\u003ef_ep_lock\n"
    },
    {
      "commit": "1db4b2d221f14b9715c717dbd9a476469a687080",
      "tree": "5a91fe08298340676b23959224e14267c6ea2d65",
      "parents": [
        "d56ffd38a93841a07c839a375049a56b51e9567c"
      ],
      "author": {
        "name": "Jody McIntyre",
        "email": "scjody@sun.com",
        "time": "Mon Mar 23 13:13:34 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 23 14:21:26 2009 -0700"
      },
      "message": "trivial: fix orphan dates in ext2 documentation\n\nRevert the change to the orphan dates of Windows 95, DOS, compression.\nAdd a new orphan date for OS/2.\n\nSigned-off-by: Jody McIntyre \u003cscjody@sun.com\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d56ffd38a93841a07c839a375049a56b51e9567c",
      "tree": "ac668709aa6f973de26e993f21adcf98626bed46",
      "parents": [
        "12a37b5e2c93f6550b82490c3de6d4eedc509c39",
        "61fa9dcf9329cb92c220f7b656410fbe5e72f933"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 23 09:25:58 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 23 09:25:58 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: (32 commits)\n  ucc_geth: Fix oops when using fixed-link support\n  dm9000: locking bugfix\n  net: update dnet.c for bus_id removal\n  dnet: DNET should depend on HAS_IOMEM\n  dca: add missing copyright/license headers\n  nl80211: Check that function pointer !\u003d NULL before using it\n  sungem: missing net_device_ops\n  be2net: fix to restore vlan ids into BE2 during a IF DOWN-\u003eUP cycle\n  be2net: replenish when posting to rx-queue is starved in out of mem conditions\n  bas_gigaset: correctly allocate USB interrupt transfer buffer\n  smsc911x: reset last known duplex and carrier on open\n  sh_eth: Fix mistake of the address of SH7763\n  sh_eth: Change handling of IRQ\n  netns: oops in ip[6]_frag_reasm incrementing stats\n  net: kfree(napi-\u003eskb) \u003d\u003e kfree_skb\n  net: fix sctp breakage\n  ipv6: fix display of local and remote sit endpoints\n  net: Document /proc/sys/net/core/netdev_budget\n  tulip: fix crash on iface up with shirq debug\n  virtio_net: Make virtio_net support carrier detection\n  ...\n"
    },
    {
      "commit": "77c27c7b49d69d45ccb94e481653f024f1ac6650",
      "tree": "8f2e7a6f3971e3630ad1d219bee1c673597158fe",
      "parents": [
        "705b1aaa823e800490f157cd9366ad8cff385f5f"
      ],
      "author": {
        "name": "Alex Chiang",
        "email": "achiang@hp.com",
        "time": "Fri Mar 20 14:56:36 2009 -0600"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Fri Mar 20 14:58:48 2009 -0700"
      },
      "message": "PCI: Introduce /sys/bus/pci/devices/.../remove\n\nThis patch adds an attribute named \"remove\" to a PCI device\u0027s sysfs\ndirectory.  Writing a non-zero value to this attribute will remove the PCI\ndevice and any children of it.\n\nTrent Piepho wrote the original implementation and documentation.\n\nThanks to Vegard Nossum for testing under kmemcheck and finding locking\nissues with the sysfs interface.\n\nCc: Trent Piepho \u003cxyzzy@speakeasy.org\u003e\nTested-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Alex Chiang \u003cachiang@hp.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "e9c6a586f5335938b11be0a2554af58a2860e4ef",
      "tree": "056515e9973c0b312983edbb63cfaadd64a129b9",
      "parents": [
        "69145635d4db0a0382885b14634aa5b721f3aa1a"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Wed Mar 18 18:51:06 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 18 18:51:06 2009 -0700"
      },
      "message": "net: Document /proc/sys/net/core/netdev_budget\n\nThe NAPI poll parameter netdev_budget is not documented in\nkernel-docs. Since it may have a substantial effect on at least some\nnetwork loads, it should be.\n\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e \nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "76398425bb06b07cc3a3b1ce169c67dc9d6874ed",
      "tree": "e6e1800edda88b5592617a950daacf2199587a33",
      "parents": [
        "db1dd4d376134eba0e08af523b61cc566a4ea1cd"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Sun Feb 01 14:26:59 2009 -0700"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Mon Mar 16 08:32:27 2009 -0600"
      },
      "message": "Move FASYNC bit handling to f_op-\u003efasync()\n\nRemoving the BKL from FASYNC handling ran into the challenge of keeping the\nsetting of the FASYNC bit in filp-\u003ef_flags atomic with regard to calls to\nthe underlying fasync() function.  Andi Kleen suggested moving the handling\nof that bit into fasync(); this patch does exactly that.  As a result, we\nhave a couple of internal API changes: fasync() must now manage the FASYNC\nbit, and it will be called without the BKL held.\n\nAs it happens, every fasync() implementation in the kernel with one\nexception calls fasync_helper().  So, if we make fasync_helper() set the\nFASYNC bit, we can avoid making any changes to the other fasync()\nfunctions - as long as those functions, themselves, have proper locking.\nMost fasync() implementations do nothing but call fasync_helper() - which\nhas its own lock - so they are easily verified as correct.  The BKL had\nalready been pushed down into the rest.\n\nThe networking code has its own version of fasync_helper(), so that code\nhas been augmented with explicit FASYNC bit handling.\n\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\n"
    },
    {
      "commit": "ab03eca8d4754ef2ba9821d581975b10b8f317e7",
      "tree": "102e8bfaeb4f59054dbc39b5bb7f117315a50606",
      "parents": [
        "8be3e1f1cabaf85486a1c68873299cfade8ef243"
      ],
      "author": {
        "name": "Jody McIntyre",
        "email": "scjody@sun.com",
        "time": "Thu Mar 12 17:39:23 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:24:25 2009 -0700"
      },
      "message": "trivial: fix bad links in the ext2 and ext3 documentation\n\nTrivial patch to fix bad links in the ext2 and ext3 documentation.\n\nSigned-off-by: Jody McIntyre \u003cscjody@sun.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "edf2e2811efa9304ebe14f778d33b764cfd58b7a",
      "tree": "997f3cf5484621ea8a0bb8a74e1b561998435e5d",
      "parents": [
        "118e1ef6fabfc023126e6075f6ac0fc729cb5285"
      ],
      "author": {
        "name": "Phillip Lougher",
        "email": "phillip@lougher.demon.co.uk",
        "time": "Thu Mar 05 00:40:13 2009 +0000"
      },
      "committer": {
        "name": "Phillip Lougher",
        "email": "phillip@lougher.demon.co.uk",
        "time": "Thu Mar 05 00:40:13 2009 +0000"
      },
      "message": "Squashfs: fix documentation typo, Cramfs filesystem limit is 256 MiB\n\nSigned-off-by: Phillip Lougher \u003cphillip@lougher.demon.co.uk\u003e\n"
    },
    {
      "commit": "b713a5ec55bf73c833f9883cdd761b20ee61a1ab",
      "tree": "77bbc689f442cad3ce8ca21d7b2c7cea2738d519",
      "parents": [
        "3197ebdb130473a92760100cbfe0d7e671838f48"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 31 09:11:14 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 31 09:11:14 2009 -0400"
      },
      "message": "ext4: remove /proc tuning knobs\n\nRemove tuning knobs in /proc/fs/ext4/\u003cdev/* since they have been\nreplaced by knobs in sysfs at /sys/fs/ext4/\u003cdev\u003e/*.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "722bde6875bfb49a0c84e5601eb82dd7ac02d27c",
      "tree": "03c51a876ba9f4f3e0a796f30b0bd86f632de45d",
      "parents": [
        "7a262f7c69163cd4811f2f838faef5c5b18439c9"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 00:51:57 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 00:51:57 2009 -0500"
      },
      "message": "ext4: Add fine print for the 32000 subdirectory limit\n\nSome poeple are reading the ext4 feature list too literally and create\ndubious test cases involving very long filenames and 1k blocksize and\nthen complain when they run into an htree-imposed limit.  So add fine\nprint to the \"fix 32000 subdirectory limit\" ext4 feature.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f8a1af6bbc63218cabce742a7a291ac7c08bbd00",
      "tree": "4d0e13844c5eca2731374b668211c29059d6af14",
      "parents": [
        "245127dbe9ea1e5a93aae0d3ede09992f1e99f53"
      ],
      "author": {
        "name": "Mike Murphy",
        "email": "mamurph@cs.clemson.edu",
        "time": "Sun Feb 22 01:19:23 2009 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 22 09:28:15 2009 -0800"
      },
      "message": "PATCH [2/2] Documentation/filesystems/sysfs.txt: fix descriptions of device attributes\n\nFix descriptions of device attributes to be consistent with the actual\nimplementations in include/linux/device.h\n\nSigned-off-by: Mike Murphy \u003cmamurph[at]cs.clemson.edu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "97c44836cdec1ea713a15d84098a1a908157e68f",
      "tree": "bc544c64ed8eeb3feb2f0b210ae7db04a40e1bae",
      "parents": [
        "3419c75e15f82c3ab09bd944fddbde72c9e4b3ea"
      ],
      "author": {
        "name": "Timothy S. Nelson",
        "email": "wayland@wayland.id.au",
        "time": "Fri Jan 30 06:12:47 2009 +1100"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Feb 04 16:58:41 2009 -0800"
      },
      "message": "PCI: return error on failure to read PCI ROMs\n\nThis patch makes the ROM reading code return an error to user space if\nthe size of the ROM read is equal to 0.\n\nThe patch also emits a warnings if the contents of the ROM are invalid,\nand documents the effects of the \"enable\" file on ROM reading.\n\nSigned-off-by: Timothy S. Nelson \u003cwayland@wayland.id.au\u003e\nAcked-by: Alex Villacis-Lasso \u003ca_villacis@palosanto.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "f96c08e8c5935d80bb9fd48c61b5bfa00878519e",
      "tree": "f0e34c84ce69a9e076c23299c94f0fd583a568e0",
      "parents": [
        "7420b73dc05ae1faa36b49774210a13d29349c53",
        "27ad27993313312a4ad0047d0a944c425cd511a5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 03 16:52:44 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 03 16:52:44 2009 -0800"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6:\n  UBIFS: remove fast unmounting\n  UBIFS: return sensible error codes\n  UBIFS: remount ro fixes\n  UBIFS: spelling fix \u0027date\u0027 -\u003e \u0027data\u0027\n  UBIFS: sync wbufs after syncing inodes and pages\n  UBIFS: fix LPT out-of-space bug (again)\n  UBIFS: fix no_chk_data_crc\n  UBIFS: fix assertions\n  UBIFS: ensure orphan area head is initialized\n  UBIFS: always clean up GC LEB space\n  UBIFS: add re-mount debugging checks\n  UBIFS: fix LEB list freeing\n  UBIFS: simplify locking\n  UBIFS: document dark_wm and dead_wm better\n  UBIFS: do not treat all data as short term\n  UBIFS: constify operations\n  UBIFS: do not commit twice\n"
    },
    {
      "commit": "9e9e3cbc62da43c66e894d5a61fa08b427e25202",
      "tree": "5dafdeb919c99a014e694745c2dfe4c46ca6f69e",
      "parents": [
        "dc19835df6c47ff676ad6c98722d5e529db5d74c"
      ],
      "author": {
        "name": "Evgeniy Polyakov",
        "email": "zbr@ioremap.net",
        "time": "Thu Jan 29 14:25:09 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 29 18:04:43 2009 -0800"
      },
      "message": "mm: OOM documentation update\n\nSigned-off-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\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": "27ad27993313312a4ad0047d0a944c425cd511a5",
      "tree": "e80043a796d012e60ba7ed17c38cc13e5a56f888",
      "parents": [
        "a2b9df3ff691db8e5e521dccd231a8098bbf7416"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Jan 29 16:34:30 2009 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Jan 29 16:34:30 2009 +0200"
      },
      "message": "UBIFS: remove fast unmounting\n\nThis UBIFS feature has never worked properly, and it was a mistake\nto add it because we simply have no use-cases. So, lets still accept\nthe fast_unmount mount option, but ignore it. This does not change\nmuch, because UBIFS commit in sync_fs anyway, and sync_fs is called\nwhile unmounting.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "096abd77038a2ff74efd194d074eadcde80fb97d",
      "tree": "5a97ec3a99aeff6286b9dc3fce390fab7eb306d7",
      "parents": [
        "5ee810072175042775e39bdd3eaaa68884c27805"
      ],
      "author": {
        "name": "James Lentini",
        "email": "jlentini@netapp.com",
        "time": "Thu Jan 08 13:13:26 2009 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@pig.fieldses.org",
        "time": "Tue Jan 27 17:20:14 2009 -0500"
      },
      "message": "update port number in NFS/RDMA documentation\n\nUpdate the NFS/RDMA documentation to use the new port number assigned\nby IANA.\n\nSigned-off-by: James Lentini \u003cjlentini@netapp.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "db0fb1848a645b0b1b033765f3a5244e7afd2e3c",
      "tree": "cf6b63e52fad2fa626e2a08251815f07626682dd",
      "parents": [
        "b5db0e38653bfada34a92f360b4111566ede3842"
      ],
      "author": {
        "name": "Peter W Morreale",
        "email": "pmorreale@novell.com",
        "time": "Thu Jan 15 13:50:42 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 15 16:39:35 2009 -0800"
      },
      "message": "Update of Documentation: vm.txt and proc.txt\n\nUpdate Documentation/sysctl/vm.txt and Documentation/filesystems/proc.txt.\n More specifically, the section on /proc/sys/vm in\nDocumentation/filesystems/proc.txt was removed and a link to\nDocumentation/sysctl/vm.txt added.\n\nMost of the verbiage from proc.txt was simply moved in vm.txt, with new\naddtional text for \"swappiness\" and \"stat_interval\".\n\nSigned-off-by: Peter W Morreale \u003cpmorreale@novell.com\u003e\nAcked-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": "c4be0c1dc4cdc37b175579be1460f15ac6495e9a",
      "tree": "716ea88318211ed27cadcebda0fd85c1f8246edb",
      "parents": [
        "69347a236b22c3962ea812511495e502dedfd50c"
      ],
      "author": {
        "name": "Takashi Sato",
        "email": "t-sato@yk.jp.nec.com",
        "time": "Fri Jan 09 16:40:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 09 16:54:42 2009 -0800"
      },
      "message": "filesystem freeze: add error handling of write_super_lockfs/unlockfs\n\nCurrently, ext3 in mainline Linux doesn\u0027t have the freeze feature which\nsuspends write requests.  So, we cannot take a backup which keeps the\nfilesystem\u0027s consistency with the storage device\u0027s features (snapshot and\nreplication) while it is mounted.\n\nIn many case, a commercial filesystem (e.g.  VxFS) has the freeze feature\nand it would be used to get the consistent backup.\n\nIf Linux\u0027s standard filesystem ext3 has the freeze feature, we can do it\nwithout a commercial filesystem.\n\nSo I have implemented the ioctls of the freeze feature.\nI think we can take the consistent backup with the following steps.\n1. Freeze the filesystem with the freeze ioctl.\n2. Separate the replication volume or create the snapshot\n   with the storage device\u0027s feature.\n3. Unfreeze the filesystem with the unfreeze ioctl.\n4. Take the backup from the separated replication volume\n   or the snapshot.\n\nThis patch:\n\nVFS:\nChanged the type of write_super_lockfs and unlockfs from \"void\"\nto \"int\" so that they can return an error.\nRename write_super_lockfs and unlockfs of the super block operation\nfreeze_fs and unfreeze_fs to avoid a confusion.\n\next3, ext4, xfs, gfs2, jfs:\nChanged the type of write_super_lockfs and unlockfs from \"void\"\nto \"int\" so that write_super_lockfs returns an error if needed,\nand unlockfs always returns 0.\n\nreiserfs:\nChanged the type of write_super_lockfs and unlockfs from \"void\"\nto \"int\" so that they always return 0 (success) to keep a current behavior.\n\nSigned-off-by: Takashi Sato \u003ct-sato@yk.jp.nec.com\u003e\nSigned-off-by: Masayuki Hamaguchi \u003cm-hamaguchi@ys.jp.nec.com\u003e\nCc: \u003cxfs-masters@oss.sgi.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31aeb6c815549948571eec988ad9728c27d7a68d",
      "tree": "e155438be253924ebb1b792182e406947369b3eb",
      "parents": [
        "c40f6f8bbc4cbd2902671aacd587400ddca62627",
        "fc55584175589b70f4c30cb594f09f4bd6ad5d40"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 09 15:18:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 09 15:18:49 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus:\n  MAINTAINERS: squashfs entry\n  Squashfs: documentation\n  Squashfs: initrd support\n  Squashfs: Kconfig entry\n  Squashfs: Makefiles\n  Squashfs: header files\n  Squashfs: block operations\n  Squashfs: cache operations\n  Squashfs: uid/gid lookup operations\n  Squashfs: fragment block operations\n  Squashfs: export operations\n  Squashfs: super block operations\n  Squashfs: symlink operations\n  Squashfs: regular file operations\n  Squashfs: directory readdir operations\n  Squashfs: directory lookup operations\n  Squashfs: inode operations\n"
    },
    {
      "commit": "73d59314e6ed268d6f322ae1bdd723b23fa5a4ed",
      "tree": "ec7159b13dfd57739ed840e88a436d8d6f4eee5f",
      "parents": [
        "6ddaab20c32af03d68de00e7c97ae8d9820e4dab",
        "e293e97e363e419d8a3628a927321e3f75206a0b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 09 13:01:38 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 09 13:01:38 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (864 commits)\n  Btrfs: explicitly mark the tree log root for writeback\n  Btrfs: Drop the hardware crc32c asm code\n  Btrfs: Add Documentation/filesystem/btrfs.txt, remove old COPYING\n  Btrfs: kmap_atomic(KM_USER0) is safe for btrfs_readpage_end_io_hook\n  Btrfs: Don\u0027t use kmap_atomic(..., KM_IRQ0) during checksum verifies\n  Btrfs: tree logging checksum fixes\n  Btrfs: don\u0027t change file extent\u0027s ram_bytes in btrfs_drop_extents\n  Btrfs: Use btrfs_join_transaction to avoid deadlocks during snapshot creation\n  Btrfs: drop remaining LINUX_KERNEL_VERSION checks and compat code\n  Btrfs: drop EXPORT symbols from extent_io.c\n  Btrfs: Fix checkpatch.pl warnings\n  Btrfs: Fix free block discard calls down to the block layer\n  Btrfs: avoid orphan inode caused by log replay\n  Btrfs: avoid potential super block corruption\n  Btrfs: do not call kfree if kmalloc failed in btrfs_sysfs_add_super\n  Btrfs: fix a memory leak in btrfs_get_sb\n  Btrfs: Fix typo in clear_state_cb\n  Btrfs: Fix memset length in btrfs_file_write\n  Btrfs: update directory\u0027s size when creating subvol/snapshot\n  Btrfs: add permission checks to the ioctls\n  ...\n"
    },
    {
      "commit": "2150edc6c5cf00f7adb54538b9ea2a3e9cedca3f",
      "tree": "f72a0d85e66f500b4cead348a231e3d3b9f357bc",
      "parents": [
        "cd764695b67386a81964f68e9c66efd9f13f4d29",
        "4b905671d2ea09fd48fed72c581df17e40823f39"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (57 commits)\n  jbd2: Fix oops in jbd2_journal_init_inode() on corrupted fs\n  ext4: Remove \"extents\" mount option\n  block: Add Kconfig help which notes that ext4 needs CONFIG_LBD\n  ext4: Make printk\u0027s consistently prefixed with \"EXT4-fs: \"\n  ext4: Add sanity checks for the superblock before mounting the filesystem\n  ext4: Add mount option to set kjournald\u0027s I/O priority\n  jbd2: Submit writes to the journal using WRITE_SYNC\n  jbd2: Add pid and journal device name to the \"kjournald2 starting\" message\n  ext4: Add markers for better debuggability\n  ext4: Remove code to create the journal inode\n  ext4: provide function to release metadata pages under memory pressure\n  ext3: provide function to release metadata pages under memory pressure\n  add releasepage hooks to block devices which can be used by file systems\n  ext4: Fix s_dirty_blocks_counter if block allocation failed with nodelalloc\n  ext4: Init the complete page while building buddy cache\n  ext4: Don\u0027t allow new groups to be added during block allocation\n  ext4: mark the blocks/inode bitmap beyond end of group as used\n  ext4: Use new buffer_head flag to check uninit group bitmaps initialization\n  ext4: Fix the race between read_inode_bitmap() and ext4_new_inode()\n  ext4: code cleanup\n  ...\n"
    },
    {
      "commit": "a0c9f240a992c4c2b6ac40324ece27475cf3b71a",
      "tree": "e42e5231d0e551b1b1f726c06c2ca27c510efb7a",
      "parents": [
        "5bb47b9ff3d16d40f8d45380b373497a545fa280",
        "230e40fbda242544389a5428a2efac568178ddfe"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 12:01:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 12:01:06 2009 -0800"
      },
      "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  proc: remove write-only variable in proc_pident_lookup()\n  proc: fix sparse warning\n  proc: add /proc/*/stack\n  proc: remove \u0027##\u0027 usage\n  proc: remove useless WARN_ONs\n  proc: stop using BKL\n"
    },
    {
      "commit": "709ac06a148a33493d3e2f9391bb746b067d96d6",
      "tree": "844a1228e7e4a980beb2754235297bfb0119452e",
      "parents": [
        "9ab86c8e01c3f298dba0cbf2502c635b7f6fc6f9"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Jan 07 09:54:24 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 07 09:54:24 2009 -0500"
      },
      "message": "Btrfs: Add Documentation/filesystem/btrfs.txt, remove old COPYING\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5f820f648c92a5ecc771a96b3c29aa6e90013bba",
      "tree": "0445b45fa33072d37b32c6ef592a4d0c102e05cc",
      "parents": [
        "67ec7d3ab779ad9001ef57a6b4cfdf80ac9f9acc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Jan 06 14:40:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:12 2009 -0800"
      },
      "message": "poll: allow f_op-\u003epoll to sleep\n\nf_op-\u003epoll is the only vfs operation which is not allowed to sleep.  It\u0027s\nbecause poll and select implementation used task state to synchronize\nagainst wake ups, which doesn\u0027t have to be the case anymore as wait/wake\ninterface can now use custom wake up functions.  The non-sleep restriction\ncan be a bit tricky because -\u003epoll is not called from an atomic context\nand the result of accidentally sleeping in -\u003epoll only shows up as\ntemporary busy looping when the timing is right or rather wrong.\n\nThis patch converts poll/select to use custom wake up function and use\nseparate triggered variable to synchronize against wake up events.  The\nonly added overhead is an extra function call during wake up and\nnegligible.\n\nThis patch removes the one non-sleep exception from vfs locking rules and\nis beneficial to userland filesystem implementations like FUSE, 9p or\npeculiar fs like spufs as it\u0027s very difficult for those to implement\nnon-sleeping poll method.\n\nWhile at it, make the following cosmetic changes to make poll.h and\nselect.c checkpatch friendly.\n\n* s/type * symbol/type *symbol/\t\t   : three places in poll.h\n* remove blank line before EXPORT_SYMBOL() : two places in select.c\n\nOleg: spotted missing barrier in poll_schedule_timeout()\nDavide: spotted missing write barrier in pollwake()\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Eric Van Hensbergen \u003cericvh@gmail.com\u003e\nCc: Ron Minnich \u003crminnich@sandia.gov\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Brad Boyer \u003cflar@allandria.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2da02997e08d3efe8174c7a47696e6f7cbe69ba9",
      "tree": "2e52d9346c52dda83dc8cc9626cbe302e026ad9a",
      "parents": [
        "364aeb2849789b51bf4b9af2ddd02fee7285c54e"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jan 06 14:39:31 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:03 2009 -0800"
      },
      "message": "mm: add dirty_background_bytes and dirty_bytes sysctls\n\nThis change introduces two new sysctls to /proc/sys/vm:\ndirty_background_bytes and dirty_bytes.\n\ndirty_background_bytes is the counterpart to dirty_background_ratio and\ndirty_bytes is the counterpart to dirty_ratio.\n\nWith growing memory capacities of individual machines, it\u0027s no longer\nsufficient to specify dirty thresholds as a percentage of the amount of\ndirtyable memory over the entire system.\n\ndirty_background_bytes and dirty_bytes specify quantities of memory, in\nbytes, that represent the dirty limits for the entire system.  If either\nof these values is set, its value represents the amount of dirty memory\nthat is needed to commence either background or direct writeback.\n\nWhen a `bytes\u0027 or `ratio\u0027 file is written, its counterpart becomes a\nfunction of the written value.  For example, if dirty_bytes is written to\nbe 8096, 8K of memory is required to commence direct writeback.\ndirty_ratio is then functionally equivalent to 8K / the amount of\ndirtyable memory:\n\n\tdirtyable_memory \u003d free pages + mapped pages + file cache\n\n\tdirty_background_bytes \u003d dirty_background_ratio * dirtyable_memory\n\t\t-or-\n\tdirty_background_ratio \u003d dirty_background_bytes / dirtyable_memory\n\n\t\tAND\n\n\tdirty_bytes \u003d dirty_ratio * dirtyable_memory\n\t\t-or-\n\tdirty_ratio \u003d dirty_bytes / dirtyable_memory\n\nOnly one of dirty_background_bytes and dirty_background_ratio may be\nspecified at a time, and only one of dirty_bytes and dirty_ratio may be\nspecified.  When one sysctl is written, the other appears as 0 when read.\n\nThe `bytes\u0027 files operate on a page size granularity since dirty limits\nare compared with ZVC values, which are in page units.\n\nPrior to this change, the minimum dirty_ratio was 5 as implemented by\nget_dirty_limits() although /proc/sys/vm/dirty_ratio would show any user\nwritten value between 0 and 100.  This restriction is maintained, but\ndirty_bytes has a lower limit of only one page.\n\nAlso prior to this change, the dirty_background_ratio could not equal or\nexceed dirty_ratio.  This restriction is maintained in addition to\nrestricting dirty_background_bytes.  If either background threshold equals\nor exceeds that of the dirty threshold, it is implicitly set to half the\ndirty threshold.\n\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Andrea Righi \u003crighi.andrea@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83982b6f47201c4c7767210d24d7d8c99567a0b3",
      "tree": "f1c19b1c6b5a34dd0c5de7519b78414b7a9267ee",
      "parents": [
        "4d783b093cd4f3e2738527365979cbd1c5101065"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 14:53:16 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 14:53:16 2009 -0500"
      },
      "message": "ext4: Remove \"extents\" mount option\n\nThis mount option is largely superfluous, and in fact the way it was\nimplemented was buggy; if a filesystem which did not have the extents\nfeature flag was mounted -o extents, the filesystem would attempt to\ncreate and use extents-based file even though the extents feature flag\nwas not eabled.  The simplest thing to do is to nuke the mount option\nentirely.  It\u0027s not all that useful to force the non-creation of new\nextent-based files if the filesystem can support it.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b3881f74b31b7d47d0f1c4d89ac3e7f0b9c05e3e",
      "tree": "131190b7ec627fd2ef2ecc818a7b9c17b83ccd63",
      "parents": [
        "40a1984d22294ab202f616e432bb8d3481897675"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:46:26 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:46:26 2009 -0500"
      },
      "message": "ext4: Add mount option to set kjournald\u0027s I/O priority\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a68979b857283daf4acc405e476dcc8812a3ff2b",
      "tree": "6bbf9d235e1ae38f4263f92d4075df6913befc8a",
      "parents": [
        "89c38bd0ade3c567707ed8fce088b253b0369c50"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:52 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:52 2009 -0800"
      },
      "message": "ocfs2: add mount option and Kconfig option for acl\n\nThis patch adds the Kconfig option \"CONFIG_OCFS2_FS_POSIX_ACL\"\nand mount options \"acl\" to enable acls in Ocfs2.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "2ec220e27f5040aec1e88901c1b6ea3d135787ad",
      "tree": "06ed111c8e331d47927d9b46386f4063b74ec419",
      "parents": [
        "631f9c1868b970197747c80fc5168ad7d9fd5d53"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Mon Nov 10 11:26:08 2008 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Jan 05 12:27:44 2009 +0300"
      },
      "message": "proc: add /proc/*/stack\n\n/proc/*/stack adds the ability to query a task\u0027s stack trace. It is more\nuseful than /proc/*/wchan as it provides full stack trace instead of single\ndepth. Example output:\n\n\t$ cat /proc/self/stack\n\t[\u003cc010a271\u003e] save_stack_trace_tsk+0x17/0x35\n\t[\u003cc01827b4\u003e] proc_pid_stack+0x4a/0x76\n\t[\u003cc018312d\u003e] proc_single_show+0x4a/0x5e\n\t[\u003cc016bdec\u003e] seq_read+0xf3/0x29f\n\t[\u003cc015a004\u003e] vfs_read+0x6d/0x91\n\t[\u003cc015a0c1\u003e] sys_read+0x3b/0x60\n\t[\u003cc0102eda\u003e] syscall_call+0x7/0xb\n\t[\u003cffffffff\u003e] 0xffffffff\n\n[add save_stack_trace_tsk() on mips, ACK Ralf --adobriyan]\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "9eb425c046f4129f1dafce7c04e949652e69fb01",
      "tree": "37a8d4a1187556c69880ac0cc58dae383b67fb1f",
      "parents": [
        "b8fed87d3265d21d6f90e34934d93f70cb1e5cc1"
      ],
      "author": {
        "name": "Phillip Lougher",
        "email": "phillip@lougher.demon.co.uk",
        "time": "Mon Jan 05 08:46:29 2009 +0000"
      },
      "committer": {
        "name": "Phillip Lougher",
        "email": "phillip@lougher.demon.co.uk",
        "time": "Mon Jan 05 08:46:29 2009 +0000"
      },
      "message": "Squashfs: documentation\n\nSigned-off-by: Phillip Lougher \u003cphillip@lougher.demon.co.uk\u003e\n"
    },
    {
      "commit": "c31910672376dfb8d020e32afa7249763bcd924a",
      "tree": "3f2b95a1d4a4da76d85d5bf32534fa3d15a82eac",
      "parents": [
        "c39a7f84d7845aa95d1c7c168f38215aedcc13c2"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 11:14:25 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 11:14:25 2009 -0500"
      },
      "message": "ext4: Remove code to create the journal inode\n\nThis code has been obsolete in quite some time, since the supported\nmethod for adding a journal inode is to use tune2fs (or to creating\nnew filesystem with a journal via mke2fs or mkfs.ext4).\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8e3bda0863c1578ddf47a015eac7dc6efb1ef48b",
      "tree": "b3257fc9b005352a7c3536097123de97f43748a2",
      "parents": [
        "574c3fdae3890e60f8bc59e8107686944ba1e446",
        "8e5033adc78ff4fbeab7052134e7af1f6ff04187"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 02 15:57:47 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 02 15:57:47 2009 -0800"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6: (33 commits)\n  UBIFS: add more useful debugging prints\n  UBIFS: print debugging messages properly\n  UBIFS: fix numerous spelling mistakes\n  UBIFS: allow mounting when short of space\n  UBIFS: fix writing uncompressed files\n  UBIFS: fix checkpatch.pl warnings\n  UBIFS: fix sparse warnings\n  UBIFS: simplify make_free_space\n  UBIFS: do not lie about used blocks\n  UBIFS: restore budg_uncommitted_idx\n  UBIFS: always commit on unmount\n  UBIFS: use ubi_sync\n  UBIFS: always commit in sync_fs\n  UBIFS: fix file-system synchronization\n  UBIFS: fix constants initialization\n  UBIFS: avoid unnecessary calculations\n  UBIFS: re-calculate min_idx_size after the commit\n  UBIFS: use nicer 64-bit math\n  UBIFS: fix available blocks count\n  UBIFS: various comment improvements and fixes\n  ...\n"
    },
    {
      "commit": "784c4d8b1b1e66f8c45e8b889613f4982f525b2b",
      "tree": "860ce436c24138d2cd2d92088ed0b10d343126c6",
      "parents": [
        "2a1b2dc0c83bbfc24d72cafd5e69810a149b44e4"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Fri Jan 02 13:42:34 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 02 10:19:36 2009 -0800"
      },
      "message": "Document usage of multiple-instances of devpts\n\nChangelog [v2]:\n\t- Add note indicating strict isolation is not possible unless all\n\t  mounts of devpts use the \u0027newinstance\u0027 mount option.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6badd79bd002788aaec27b50a74ab69ef65ab8ee",
      "tree": "2a47bf53a7fe2316d98cca71f0b7d01d5024a5ea",
      "parents": [
        "b6b3fdead251d432f32f2cfce2a893ab8a658110"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Dec 26 00:57:40 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:43 2008 -0500"
      },
      "message": "kill -\u003edir_notify()\n\nRemove the hopelessly misguided -\u003edir_notify().  The only instance (cifs)\nhas been broken by design from the very beginning; the objects it creates\nare never destroyed, keep references to struct file they can outlive, nothing\nthat could possibly evict them exists on close(2) path *and* no locking\nwhatsoever is done to prevent races with close(), should the previous, er,\ndeficiencies someday be dealt with.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fd659fd6275d3426d7967da1f0e3638bbbd2fedb",
      "tree": "0c499f1c63a18d1dd8e70b278ad59c00262f21a8",
      "parents": [
        "1239f26c05899f1f3c541b41e719c59d58038786"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Dec 10 09:35:45 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:42 2008 -0500"
      },
      "message": "fix f_count description in Documentation/filesystems/files.txt\n\nDocumentation/filesystems/files.txt was not updated when\nf_count became an atomic_long_t.\natomic_long_inc_not_zero() is now used instead of atomic_inc_not_zero()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "be42c4c433c2c0d3f1583c08908fead00d36d222",
      "tree": "4553430fa44429b1127a4ef8649380b3bce4f9eb",
      "parents": [
        "dc711ca35f9d95a1eec02118e0c298b5e3068315"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Mon Dec 01 14:34:58 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:40 2008 -0500"
      },
      "message": "correct wrong function name of d_put in kernel document and source comment\n\nno function named d_put(), it should be dput().\n\nImpact: fix document and comment, no functionality changed\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fuijtsu.com\u003e\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "80736d41f895bc472b2433a1c27fa6d4afe6ca35",
      "tree": "5f2f75f644d9a042a9132cd12692e6af7eced73c",
      "parents": [
        "57a450e95932f7798677885b8a01443aca72fdc7"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Dec 30 17:44:02 2008 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Dec 31 14:13:25 2008 +0200"
      },
      "message": "UBIFS: fix numerous spelling mistakes\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "0a8c5395f90f06d128247844b2515c8bf3f2826b",
      "tree": "d95382dcdfa303b99d480c01763d6cb6767fdaca",
      "parents": [
        "25051158bbed127e8672b43396c71c5eb610e5f1",
        "3c92ec8ae91ecf59d88c798301833d7cf83f2179"
      ],
      "author": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@redback.melbourne.sgi.com",
        "time": "Mon Dec 29 16:47:18 2008 +1100"
      },
      "committer": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@redback.melbourne.sgi.com",
        "time": "Mon Dec 29 16:47:18 2008 +1100"
      },
      "message": "[XFS] Fix merge failures\n\nMerge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n\nConflicts:\n\n\tfs/xfs/linux-2.6/xfs_cred.h\n\tfs/xfs/linux-2.6/xfs_globals.h\n\tfs/xfs/linux-2.6/xfs_ioctl.c\n\tfs/xfs/xfs_vnodeops.h\n\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\n"
    },
    {
      "commit": "fa623d1b0222adbe8f822e53c08003b9679a410c",
      "tree": "261a320f3fbf88fab8a3203419ca4d71bdf49152",
      "parents": [
        "3d44cc3e01ee1b40317f79ed54324e25c4f848df",
        "1ccedb7cdba6886939dd8b4c8f965a826f696e56",
        "34945ede31071ac7d72270cc6c1893323f392b3f",
        "d4377974062122d6d9be0bbd8a910a0954714194",
        "c415b3dce30dfb41234e118662e8720f47343a4f",
        "beeb4195cbc80b7489631361b7ed38b7518af433",
        "f269b07e862c395d6981ab2c05d6bc34b0249e90",
        "4e42ebd57b2e727b28bf5f6068e95cd19b0e807b",
        "e1286f2c686f5976e0424bb6195ece25e7a17607",
        "878719e831d9e076961aa15d4049a57a6668c67a",
        "fd28a5b58dddf5cb5df162ae5c8797a63171c31d",
        "adf77bac052bb5bf0722b2ce2af9fefc5b2d2a71",
        "8f2466f45f75e3cbe3aa2b69d33fd9d6e343b9cc",
        "93093d099e5dd0c258fd530c12668e828c20df41",
        "bb5574608a8375026510b4f983ffbb06ece33fe2",
        "f34a10bd9f8cc95ebdc69a079db195636b2e22e0",
        "b6fd6f26733e864fba2ea3eb1d716e23d2e66f3a",
        "30604bb410b53efa9c93ee8f03d7aa7494094faa",
        "5b9a0e14eb4bf40a7cb780af4723560e06753f2d",
        "67bac792cd0c05b4b6e0393c32605b028b8dd533",
        "7a9787e1eba95a166265e6a260cf30af04ef0a99",
        "f4166c54bfe04f64603974058e44fbd7cfef0ccc",
        "69b88afa8d114a43a3c0431722b79e31d9920692",
        "8daa19051e1c7369c89ace7b18e74fe1f55dfa29",
        "3e1e9002aa8b32bd4c95ac6c8fad376b7a8127fb",
        "8403295e0fa460f6240e2d781e25dc29189f33c7",
        "4db646b1af8fdcf01d690d29eeae44cd937edb0d",
        "205516c12dbba003c26b42cfb41e598631300106",
        "c8182f0016fb65a721c4fbe487909a2d56178135",
        "ecbf29cdb3990c83d90d0c4187c89fb2ce423367"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 23 16:27:23 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 23 16:27:23 2008 +0100"
      },
      "message": "Merge branches \u0027x86/apic\u0027, \u0027x86/cleanups\u0027, \u0027x86/cpufeature\u0027, \u0027x86/crashdump\u0027, \u0027x86/debug\u0027, \u0027x86/defconfig\u0027, \u0027x86/detect-hyper\u0027, \u0027x86/doc\u0027, \u0027x86/dumpstack\u0027, \u0027x86/early-printk\u0027, \u0027x86/fpu\u0027, \u0027x86/idle\u0027, \u0027x86/io\u0027, \u0027x86/memory-corruption-check\u0027, \u0027x86/microcode\u0027, \u0027x86/mm\u0027, \u0027x86/mtrr\u0027, \u0027x86/nmi-watchdog\u0027, \u0027x86/pat2\u0027, \u0027x86/pci-ioapic-boot-irq-quirks\u0027, \u0027x86/ptrace\u0027, \u0027x86/quirks\u0027, \u0027x86/reboot\u0027, \u0027x86/setup-memory\u0027, \u0027x86/signal\u0027, \u0027x86/sparse-fixes\u0027, \u0027x86/time\u0027, \u0027x86/uv\u0027 and \u0027x86/xen\u0027 into x86/core\n"
    },
    {
      "commit": "14d676f56fad26fd3c31eeff5d4ef8ea4a163571",
      "tree": "5e740c5931daecf44a6e74c230f2deb291290f4b",
      "parents": [
        "797eaed40e1df4a3b9ece6894a71ce2b568bca38",
        "feaf3848a813a106f163013af6fcf6c4bfec92d9"
      ],
      "author": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@redback.melbourne.sgi.com",
        "time": "Fri Dec 05 15:27:43 2008 +1100"
      },
      "committer": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@redback.melbourne.sgi.com",
        "time": "Fri Dec 05 15:27:43 2008 +1100"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n"
    },
    {
      "commit": "553dea4dd531562688ba01c641c7f8fc7abaaf8c",
      "tree": "823d2cb0b8684e7975ca3193a9fec2a53e3995b1",
      "parents": [
        "a1dc080c27ec8ea7ca1c8a9b499362a71ebff792"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sat Nov 01 14:57:49 2008 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Dec 03 13:14:05 2008 +0200"
      },
      "message": "UBIFS: introduce compression mount options\n\nIt is very handy to be able to change default UBIFS compressor\nvia mount options. Introduce -o compr\u003d\u003cname\u003e mount option support.\nCurrently only \"none\", \"lzo\" and \"zlib\" compressors are supported.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "7ef9964e6d1b911b78709f144000aacadd0ebc21",
      "tree": "30667d0a2f8e53973ff48d2c02df48bbc6fe74aa",
      "parents": [
        "b7d271df873c5121a4ca1c70dea126b5920ec2f1"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Mon Dec 01 13:13:55 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 01 19:55:24 2008 -0800"
      },
      "message": "epoll: introduce resource usage limits\n\nIt has been thought that the per-user file descriptors limit would also\nlimit the resources that a normal user can request via the epoll\ninterface.  Vegard Nossum reported a very simple program (a modified\nversion attached) that can make a normal user to request a pretty large\namount of kernel memory, well within the its maximum number of fds.  To\nsolve such problem, default limits are now imposed, and /proc based\nconfiguration has been introduced.  A new directory has been created,\nnamed /proc/sys/fs/epoll/ and inside there, there are two configuration\npoints:\n\n  max_user_instances \u003d Maximum number of devices - per user\n\n  max_user_watches   \u003d Maximum number of \"watched\" fds - per user\n\nThe current default for \"max_user_watches\" limits the memory used by epoll\nto store \"watches\", to 1/32 of the amount of the low RAM.  As example, a\n256MB 32bit machine, will have \"max_user_watches\" set to roughly 90000.\nThat should be enough to not break existing heavy epoll users.  The\ndefault value for \"max_user_instances\" is set to 128, that should be\nenough too.\n\nThis also changes the userspace, because a new error code can now come out\nfrom EPOLL_CTL_ADD (-ENOSPC).  The EMFILE from epoll_create() was already\nlisted, so that should be ok.\n\n[akpm@linux-foundation.org: use get_current_user()]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@gmail.com\u003e\nReported-by: Vegard Nossum \u003cvegardno@ifi.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2eee69b814854095ed835a6eb64b8efc220cd6a",
      "tree": "22dda4073f5f4742bd9e680fcec07cd03ec25dcf",
      "parents": [
        "07f9eebcdfaeefc8f807fa1bcce1d7c3ae6661b1"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Nov 18 15:08:42 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Dec 01 14:46:49 2008 -0800"
      },
      "message": "ocfs2: Small documentation update\n\nRemove some features from the \"not-supported\" list that are actually\nsupported now.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1838e39214ee3e390f9c8150ea7454103b72ef83",
      "tree": "7532902b40424c3da10c4a655db833998bd500b2",
      "parents": [
        "42182c7850cdfbfdcf5f8763908a7a66b5ce9041"
      ],
      "author": {
        "name": "frans",
        "email": "fransmeulenbroeks@gmail.com",
        "time": "Sat Nov 22 15:39:06 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 11:40:56 2008 -0800"
      },
      "message": "Trivial Documentation/filesystems/ramfs-rootfs-initramfs.txt fix\n\nA very minor patch on ramfs-rootfs-initramfs.txt: update the location\nwhere CONFIG_INITRAMFS_SOURCE lives in menuconfig\n\nSigned-off-by: Frans Meulenbroeks \u003cfransmeulenbroeks@gmail.com\u003e\nAcked-by: Rob Landley \u003crob@landley.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5a20aa2657063cbf3b47fc700603180de4bb554",
      "tree": "9419fb851cda53a7f1fd67a3697bdf8550df19e4",
      "parents": [
        "cc09c0dc57de7f7d2ed89d480b5653e5f6a32f2c",
        "ed313489badef16d700f5a3be50e8fd8f8294bc8"
      ],
      "author": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@redback.melbourne.sgi.com",
        "time": "Fri Nov 28 15:23:52 2008 +1100"
      },
      "committer": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@redback.melbourne.sgi.com",
        "time": "Fri Nov 28 15:23:52 2008 +1100"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n"
    },
    {
      "commit": "084c304980f05833bc8a91b856af7dc7a7bb7d60",
      "tree": "31190625fec53827679dc35b828f67c546c88d57",
      "parents": [
        "b67ad18b06701b77ca8bfe9bb760c5c9e765e3cf"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Wed Nov 12 13:26:56 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:17:17 2008 -0800"
      },
      "message": "DOC: update xip method info\n\nxip documentation updated:\n- change \"get_xip_page\" to \"get_xip_mem\";\n- explain changed function parameters\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Carsten Otte \u003ccotte@de.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": "dcd7b4e5c0649b1d2219399529b20de1df517e55",
      "tree": "ef00739e48ddda0a30061d62a7348ed4b0c9aeeb",
      "parents": [
        "75fa67706cce5272bcfc51ed646f2da21f3bdb6e",
        "91b777125175077fb74025608dba87f100586c62"
      ],
      "author": {
        "name": "Niv Sardi",
        "email": "xaiki@debian.org",
        "time": "Fri Nov 07 15:07:12 2008 +1100"
      },
      "committer": {
        "name": "Niv Sardi",
        "email": "xaiki@debian.org",
        "time": "Fri Nov 07 15:07:12 2008 +1100"
      },
      "message": "Merge branch \u0027master\u0027 of git://oss.sgi.com:8090/xfs/linux-2.6\n"
    }
  ],
  "next": "dfc209c0064efef5590f608056a48b61a5cac09c"
}
