)]}'
{
  "log": [
    {
      "commit": "6e80133f7f247f313da1638af4ce30f2bac303cc",
      "tree": "318afcc1c1c434135849cef50e3d89be505ad011",
      "parents": [
        "e3a41d7b99e7f97d9a50bec2a8f4eb237ce1d504",
        "4fa9f4ede88b4e2ff135b6e5717499d734508c62"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 30 13:33:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 30 13:33:48 2009 -0800"
      },
      "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: (31 commits)\n  FS-Cache: Provide nop fscache_stat_d() if CONFIG_FSCACHE_STATS\u003dn\n  SLOW_WORK: Fix GFS2 to #include \u003clinux/module.h\u003e before using THIS_MODULE\n  SLOW_WORK: Fix CIFS to pass THIS_MODULE to slow_work_register_user()\n  CacheFiles: Don\u0027t log lookup/create failing with ENOBUFS\n  CacheFiles: Catch an overly long wait for an old active object\n  CacheFiles: Better showing of debugging information in active object problems\n  CacheFiles: Mark parent directory locks as I_MUTEX_PARENT to keep lockdep happy\n  CacheFiles: Handle truncate unlocking the page we\u0027re reading\n  CacheFiles: Don\u0027t write a full page if there\u0027s only a partial page to cache\n  FS-Cache: Actually requeue an object when requested\n  FS-Cache: Start processing an object\u0027s operations on that object\u0027s death\n  FS-Cache: Make sure FSCACHE_COOKIE_LOOKING_UP cleared on lookup failure\n  FS-Cache: Add a retirement stat counter\n  FS-Cache: Handle pages pending storage that get evicted under OOM conditions\n  FS-Cache: Handle read request vs lookup, creation or other cache failure\n  FS-Cache: Don\u0027t delete pending pages from the page-store tracking tree\n  FS-Cache: Fix lock misorder in fscache_write_op()\n  FS-Cache: The object-available state can\u0027t rely on the cookie to be available\n  FS-Cache: Permit cache retrieval ops to be interrupted in the initial wait phase\n  FS-Cache: Use radix tree preload correctly in tracking of pages to be stored\n  ...\n"
    },
    {
      "commit": "931ed94430e36b9bea3904572424116092ba5663",
      "tree": "6ac8895f63ec90fdc2baddbd42bdc31da72e1e41",
      "parents": [
        "648f4e3e50c4793d9dbf9a09afa193631f76fa26",
        "7aee47b0bb9f93baecdbea205e878fe0f155f7da"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 19 20:29:05 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 19 20:29:05 2009 -0800"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2\n\n* \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2:\n  ocfs2: Trivial cleanup of jbd compatibility layer removal\n  ocfs2: Refresh documentation\n  ocfs2: return f_fsid info in ocfs2_statfs()\n  ocfs2: duplicate inline data properly during reflink.\n  ocfs2: Move ocfs2_complete_reflink to the right place.\n  ocfs2: Return -EINVAL when a device is not ocfs2.\n"
    },
    {
      "commit": "fee096deb4f33897937b974cb2c5168bab7935be",
      "tree": "c86e5ed5b3435ff0f0266f343b19f8cc7be63340",
      "parents": [
        "d0e27b7808dc667f3015be0b6888f6d680e222c8"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:12:05 2009 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:12:05 2009 +0000"
      },
      "message": "CacheFiles: Catch an overly long wait for an old active object\n\nCatch an overly long wait for an old, dying active object when we want to\nreplace it with a new one.  The probability is that all the slow-work threads\nare hogged, and the delete can\u0027t get a look in.\n\nWhat we do instead is:\n\n (1) if there\u0027s nothing in the slow work queue, we sleep until either the dying\n     object has finished dying or there is something in the slow work queue\n     behind which we can queue our object.\n\n (2) if there is something in the slow work queue, we return ETIMEDOUT to\n     fscache_lookup_object(), which then puts us back on the slow work queue,\n     presumably behind the deletion that we\u0027re blocked by.  We are then\n     deferred for a while until we work our way back through the queue -\n     without blocking a slow-work thread unnecessarily.\n\nA backtrace similar to the following may appear in the log without this patch:\n\n\tINFO: task kslowd004:5711 blocked for more than 120 seconds.\n\t\"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\n\tkslowd004     D 0000000000000000     0  5711      2 0x00000080\n\t ffff88000340bb80 0000000000000046 ffff88002550d000 0000000000000000\n\t ffff88002550d000 0000000000000007 ffff88000340bfd8 ffff88002550d2a8\n\t 000000000000ddf0 00000000000118c0 00000000000118c0 ffff88002550d2a8\n\tCall Trace:\n\t [\u003cffffffff81058e21\u003e] ? trace_hardirqs_on+0xd/0xf\n\t [\u003cffffffffa011c4d8\u003e] ? cachefiles_wait_bit+0x0/0xd [cachefiles]\n\t [\u003cffffffffa011c4e1\u003e] cachefiles_wait_bit+0x9/0xd [cachefiles]\n\t [\u003cffffffff81353153\u003e] __wait_on_bit+0x43/0x76\n\t [\u003cffffffff8111ae39\u003e] ? ext3_xattr_get+0x1ec/0x270\n\t [\u003cffffffff813531ef\u003e] out_of_line_wait_on_bit+0x69/0x74\n\t [\u003cffffffffa011c4d8\u003e] ? cachefiles_wait_bit+0x0/0xd [cachefiles]\n\t [\u003cffffffff8104c125\u003e] ? wake_bit_function+0x0/0x2e\n\t [\u003cffffffffa011bc79\u003e] cachefiles_mark_object_active+0x203/0x23b [cachefiles]\n\t [\u003cffffffffa011c209\u003e] cachefiles_walk_to_object+0x558/0x827 [cachefiles]\n\t [\u003cffffffffa011a429\u003e] cachefiles_lookup_object+0xac/0x12a [cachefiles]\n\t [\u003cffffffffa00aa1e9\u003e] fscache_lookup_object+0x1c7/0x214 [fscache]\n\t [\u003cffffffffa00aafc5\u003e] fscache_object_state_machine+0xa5/0x52d [fscache]\n\t [\u003cffffffffa00ab4ac\u003e] fscache_object_slow_work_execute+0x5f/0xa0 [fscache]\n\t [\u003cffffffff81082093\u003e] slow_work_execute+0x18f/0x2d1\n\t [\u003cffffffff8108239a\u003e] slow_work_thread+0x1c5/0x308\n\t [\u003cffffffff8104c0f1\u003e] ? autoremove_wake_function+0x0/0x34\n\t [\u003cffffffff810821d5\u003e] ? slow_work_thread+0x0/0x308\n\t [\u003cffffffff8104be91\u003e] kthread+0x7a/0x82\n\t [\u003cffffffff8100beda\u003e] child_rip+0xa/0x20\n\t [\u003cffffffff8100b87c\u003e] ? restore_args+0x0/0x30\n\t [\u003cffffffff8104be17\u003e] ? kthread+0x0/0x82\n\t [\u003cffffffff8100bed0\u003e] ? child_rip+0x0/0x20\n\t1 lock held by kslowd004/5711:\n\t #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#7/1){+.+.+.}, at: [\u003cffffffffa011be64\u003e] cachefiles_walk_to_object+0x1b3/0x827 [cachefiles]\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "60d543ca724be155c2b6166e36a00c80b21bd810",
      "tree": "90ec6edd77ddb7666dbf7069aa2e001f155cea49",
      "parents": [
        "d461d26dde901b0523c46b0317e7fccf574a3933"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:45 2009 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:45 2009 +0000"
      },
      "message": "FS-Cache: Start processing an object\u0027s operations on that object\u0027s death\n\nStart processing an object\u0027s operations when that object moves into the DYING\nstate as the object cannot be destroyed until all its outstanding operations\nhave completed.\n\nFurthermore, make sure that read and allocation operations handle being woken\nup on a dead object.  Such events are recorded in the Allocs.abt and\nRetrvls.abt statistics as viewable through /proc/fs/fscache/stats.\n\nThe code for waiting for object activation for the read and allocation\noperations is also extracted into its own function as it is much the same in\nall cases, differing only in the stats incremented.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "201a15428bd54f83eccec8b7c64a04b8f9431204",
      "tree": "326fcce64ce96657253fd141a3f4a767ac95418a",
      "parents": [
        "e3d4d28b1c8cc7c26536a50b43d86ccd39878550"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:35 2009 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:35 2009 +0000"
      },
      "message": "FS-Cache: Handle pages pending storage that get evicted under OOM conditions\n\nHandle netfs pages that the vmscan algorithm wants to evict from the pagecache\nunder OOM conditions, but that are waiting for write to the cache.  Under these\nconditions, vmscan calls the releasepage() function of the netfs, asking if a\npage can be discarded.\n\nThe problem is typified by the following trace of a stuck process:\n\n\tkslowd005     D 0000000000000000     0  4253      2 0x00000080\n\t ffff88001b14f370 0000000000000046 ffff880020d0d000 0000000000000007\n\t 0000000000000006 0000000000000001 ffff88001b14ffd8 ffff880020d0d2a8\n\t 000000000000ddf0 00000000000118c0 00000000000118c0 ffff880020d0d2a8\n\tCall Trace:\n\t [\u003cffffffffa00782d8\u003e] __fscache_wait_on_page_write+0x8b/0xa7 [fscache]\n\t [\u003cffffffff8104c0f1\u003e] ? autoremove_wake_function+0x0/0x34\n\t [\u003cffffffffa0078240\u003e] ? __fscache_check_page_write+0x63/0x70 [fscache]\n\t [\u003cffffffffa00b671d\u003e] nfs_fscache_release_page+0x4e/0xc4 [nfs]\n\t [\u003cffffffffa00927f0\u003e] nfs_release_page+0x3c/0x41 [nfs]\n\t [\u003cffffffff810885d3\u003e] try_to_release_page+0x32/0x3b\n\t [\u003cffffffff81093203\u003e] shrink_page_list+0x316/0x4ac\n\t [\u003cffffffff8109372b\u003e] shrink_inactive_list+0x392/0x67c\n\t [\u003cffffffff813532fa\u003e] ? __mutex_unlock_slowpath+0x100/0x10b\n\t [\u003cffffffff81058df0\u003e] ? trace_hardirqs_on_caller+0x10c/0x130\n\t [\u003cffffffff8135330e\u003e] ? mutex_unlock+0x9/0xb\n\t [\u003cffffffff81093aa2\u003e] shrink_list+0x8d/0x8f\n\t [\u003cffffffff81093d1c\u003e] shrink_zone+0x278/0x33c\n\t [\u003cffffffff81052d6c\u003e] ? ktime_get_ts+0xad/0xba\n\t [\u003cffffffff81094b13\u003e] try_to_free_pages+0x22e/0x392\n\t [\u003cffffffff81091e24\u003e] ? isolate_pages_global+0x0/0x212\n\t [\u003cffffffff8108e743\u003e] __alloc_pages_nodemask+0x3dc/0x5cf\n\t [\u003cffffffff81089529\u003e] grab_cache_page_write_begin+0x65/0xaa\n\t [\u003cffffffff8110f8c0\u003e] ext3_write_begin+0x78/0x1eb\n\t [\u003cffffffff81089ec5\u003e] generic_file_buffered_write+0x109/0x28c\n\t [\u003cffffffff8103cb69\u003e] ? current_fs_time+0x22/0x29\n\t [\u003cffffffff8108a509\u003e] __generic_file_aio_write+0x350/0x385\n\t [\u003cffffffff8108a588\u003e] ? generic_file_aio_write+0x4a/0xae\n\t [\u003cffffffff8108a59e\u003e] generic_file_aio_write+0x60/0xae\n\t [\u003cffffffff810b2e82\u003e] do_sync_write+0xe3/0x120\n\t [\u003cffffffff8104c0f1\u003e] ? autoremove_wake_function+0x0/0x34\n\t [\u003cffffffff810b18e1\u003e] ? __dentry_open+0x1a5/0x2b8\n\t [\u003cffffffff810b1a76\u003e] ? dentry_open+0x82/0x89\n\t [\u003cffffffffa00e693c\u003e] cachefiles_write_page+0x298/0x335 [cachefiles]\n\t [\u003cffffffffa0077147\u003e] fscache_write_op+0x178/0x2c2 [fscache]\n\t [\u003cffffffffa0075656\u003e] fscache_op_execute+0x7a/0xd1 [fscache]\n\t [\u003cffffffff81082093\u003e] slow_work_execute+0x18f/0x2d1\n\t [\u003cffffffff8108239a\u003e] slow_work_thread+0x1c5/0x308\n\t [\u003cffffffff8104c0f1\u003e] ? autoremove_wake_function+0x0/0x34\n\t [\u003cffffffff810821d5\u003e] ? slow_work_thread+0x0/0x308\n\t [\u003cffffffff8104be91\u003e] kthread+0x7a/0x82\n\t [\u003cffffffff8100beda\u003e] child_rip+0xa/0x20\n\t [\u003cffffffff8100b87c\u003e] ? restore_args+0x0/0x30\n\t [\u003cffffffff8102ef83\u003e] ? tg_shares_up+0x171/0x227\n\t [\u003cffffffff8104be17\u003e] ? kthread+0x0/0x82\n\t [\u003cffffffff8100bed0\u003e] ? child_rip+0x0/0x20\n\nIn the above backtrace, the following is happening:\n\n (1) A page storage operation is being executed by a slow-work thread\n     (fscache_write_op()).\n\n (2) FS-Cache farms the operation out to the cache to perform\n     (cachefiles_write_page()).\n\n (3) CacheFiles is then calling Ext3 to perform the actual write, using Ext3\u0027s\n     standard write (do_sync_write()) under KERNEL_DS directly from the netfs\n     page.\n\n (4) However, for Ext3 to perform the write, it must allocate some memory, in\n     particular, it must allocate at least one page cache page into which it\n     can copy the data from the netfs page.\n\n (5) Under OOM conditions, the memory allocator can\u0027t immediately come up with\n     a page, so it uses vmscan to find something to discard\n     (try_to_free_pages()).\n\n (6) vmscan finds a clean netfs page it might be able to discard (possibly the\n     one it\u0027s trying to write out).\n\n (7) The netfs is called to throw the page away (nfs_release_page()) - but it\u0027s\n     called with __GFP_WAIT, so the netfs decides to wait for the store to\n     complete (__fscache_wait_on_page_write()).\n\n (8) This blocks a slow-work processing thread - possibly against itself.\n\nThe system ends up stuck because it can\u0027t write out any netfs pages to the\ncache without allocating more memory.\n\nTo avoid this, we make FS-Cache cancel some writes that aren\u0027t in the middle of\nactually being performed.  This means that some data won\u0027t make it into the\ncache this time.  To support this, a new FS-Cache function is added\nfscache_maybe_release_page() that replaces what the netfs releasepage()\nfunctions used to do with respect to the cache.\n\nThe decisions fscache_maybe_release_page() makes are counted and displayed\nthrough /proc/fs/fscache/stats on a line labelled \"VmScan\".  There are four\ncounters provided: \"nos\u003dN\" - pages that weren\u0027t pending storage; \"gon\u003dN\" -\npages that were pending storage when we first looked, but weren\u0027t by the time\nwe got the object lock; \"bsy\u003dN\" - pages that we ignored as they were actively\nbeing written when we looked; and \"can\u003dN\" - pages that we cancelled the storage\nof.\n\nWhat I\u0027d really like to do is alter the behaviour of the cancellation\nheuristics, depending on how necessary it is to expel pages.  If there are\nplenty of other pages that aren\u0027t waiting to be written to the cache that\ncould be ejected first, then it would be nice to hold up on immediate\ncancellation of cache writes - but I don\u0027t see a way of doing that.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "e3d4d28b1c8cc7c26536a50b43d86ccd39878550",
      "tree": "23f6dacd5ffdf6c6d01c411517855a41405381b9",
      "parents": [
        "285e728b0ac55b53a673114096168d6f74930167"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:32 2009 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:32 2009 +0000"
      },
      "message": "FS-Cache: Handle read request vs lookup, creation or other cache failure\n\nFS-Cache doesn\u0027t correctly handle the netfs requesting a read from the cache\non an object that failed or was withdrawn by the cache.  A trace similar to\nthe following might be seen:\n\n\tCacheFiles: Lookup failed error -105\n\t[exe   ] unexpected submission OP165afe [OBJ6cac OBJECT_LC_DYING]\n\t[exe   ] objstate\u003dOBJECT_LC_DYING [OBJECT_LC_DYING]\n\t[exe   ] objflags\u003d0\n\t[exe   ] objevent\u003d9 [fffffffffffffffb]\n\t[exe   ] ops\u003d0 inp\u003d0 exc\u003d0\n\tPid: 6970, comm: exe Not tainted 2.6.32-rc6-cachefs #50\n\tCall Trace:\n\t [\u003cffffffffa0076477\u003e] fscache_submit_op+0x3ff/0x45a [fscache]\n\t [\u003cffffffffa0077997\u003e] __fscache_read_or_alloc_pages+0x187/0x3c4 [fscache]\n\t [\u003cffffffffa00b6480\u003e] ? nfs_readpage_from_fscache_complete+0x0/0x66 [nfs]\n\t [\u003cffffffffa00b6388\u003e] __nfs_readpages_from_fscache+0x7e/0x176 [nfs]\n\t [\u003cffffffff8108e483\u003e] ? __alloc_pages_nodemask+0x11c/0x5cf\n\t [\u003cffffffffa009d796\u003e] nfs_readpages+0x114/0x1d7 [nfs]\n\t [\u003cffffffff81090314\u003e] __do_page_cache_readahead+0x15f/0x1ec\n\t [\u003cffffffff81090228\u003e] ? __do_page_cache_readahead+0x73/0x1ec\n\t [\u003cffffffff810903bd\u003e] ra_submit+0x1c/0x20\n\t [\u003cffffffff810906bb\u003e] ondemand_readahead+0x227/0x23a\n\t [\u003cffffffff81090762\u003e] page_cache_sync_readahead+0x17/0x19\n\t [\u003cffffffff8108a99e\u003e] generic_file_aio_read+0x236/0x5a0\n\t [\u003cffffffffa00937bd\u003e] nfs_file_read+0xe4/0xf3 [nfs]\n\t [\u003cffffffff810b2fa2\u003e] do_sync_read+0xe3/0x120\n\t [\u003cffffffff81354cc3\u003e] ? _spin_unlock_irq+0x2b/0x31\n\t [\u003cffffffff8104c0f1\u003e] ? autoremove_wake_function+0x0/0x34\n\t [\u003cffffffff811848e5\u003e] ? selinux_file_permission+0x5d/0x10f\n\t [\u003cffffffff81352bdb\u003e] ? thread_return+0x3e/0x101\n\t [\u003cffffffff8117d7b0\u003e] ? security_file_permission+0x11/0x13\n\t [\u003cffffffff810b3b06\u003e] vfs_read+0xaa/0x16f\n\t [\u003cffffffff81058df0\u003e] ? trace_hardirqs_on_caller+0x10c/0x130\n\t [\u003cffffffff810b3c84\u003e] sys_read+0x45/0x6c\n\t [\u003cffffffff8100ae2b\u003e] system_call_fastpath+0x16/0x1b\n\nThe object state might also be OBJECT_DYING or OBJECT_WITHDRAWING.\n\nThis should be handled by simply rejecting the new operation with ENOBUFS.\nThere\u0027s no need to log an error for it.  Events of this type now appear in the\nstats file under Ops:rej.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "1bccf513ac49d44604ba1cddcc29f5886e70f1b6",
      "tree": "096ba75a3d02018c5f6e1857aaf1d41471733850",
      "parents": [
        "6897e3df8fc37bd4a58bbcdef8306da7fc175584"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:25 2009 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:25 2009 +0000"
      },
      "message": "FS-Cache: Fix lock misorder in fscache_write_op()\n\nFS-Cache has two structs internally for keeping track of the internal state of\na cached file: the fscache_cookie struct, which represents the netfs\u0027s state,\nand fscache_object struct, which represents the cache\u0027s state.  Each has a\npointer that points to the other (when both are in existence), and each has a\nspinlock for pointer maintenance.\n\nSince netfs operations approach these structures from the cookie side, they get\nthe cookie lock first, then the object lock.  Cache operations, on the other\nhand, approach from the object side, and get the object lock first.  It is not\nthen permitted for a cache operation to get the cookie lock whilst it is\nholding the object lock lest deadlock occur; instead, it must do one of two\nthings:\n\n (1) increment the cookie usage counter, drop the object lock and then get both\n     locks in order, or\n\n (2) simply hold the object lock as certain parts of the cookie may not be\n     altered whilst the object lock is held.\n\nIt is also not permitted to follow either pointer without holding the lock at\nthe end you start with.  To break the pointers between the cookie and the\nobject, both locks must be held.\n\nfscache_write_op(), however, violates the locking rules: It attempts to get the\ncookie lock without (a) checking that the cookie pointer is a valid pointer,\nand (b) holding the object lock to protect the cookie pointer whilst it follows\nit.  This is so that it can access the pending page store tree without\ninterference from __fscache_write_page().\n\nThis is fixed by splitting the cookie lock, such that the page store tracking\ntree is protected by its own lock, and checking that the cookie pointer is\nnon-NULL before we attempt to follow it whilst holding the object lock.\n\nThe new lock is subordinate to both the cookie lock and the object lock, and so\nshould be taken after those.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "5753c441889253e4323eee85f791a1d64cf08196",
      "tree": "55a0de053d0593d96e99710f978277df668412d1",
      "parents": [
        "b34df792b4e9e311db47fad27949095d0629c197"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:19 2009 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:19 2009 +0000"
      },
      "message": "FS-Cache: Permit cache retrieval ops to be interrupted in the initial wait phase\n\nPermit the operations to retrieve data from the cache or to allocate space in\nthe cache for future writes to be interrupted whilst they\u0027re waiting for\npermission for the operation to proceed.  Typically this wait occurs whilst the\ncache object is being looked up on disk in the background.\n\nIf an interruption occurs, and the operation has not yet been given the\ngo-ahead to run, the operation is dequeued and cancelled, and control returns\nto the read operation of the netfs routine with none of the requested pages\nhaving been read or in any way marked as known by the cache.\n\nThis means that the initial wait is done interruptibly rather than\nuninterruptibly.\n\nIn addition, extra stats values are made available to show the number of ops\ncancelled and the number of cache space allocations interrupted.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "52bd75fdb135d6133d878ae60c6e7e3f4ebc1cfc",
      "tree": "4fad4fa37ce533c520a4575e5b7df90e19c6a666",
      "parents": [
        "4fbf4291aa15926cd4fdca0ffe9122e89d0459db"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:08 2009 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:08 2009 +0000"
      },
      "message": "FS-Cache: Add counters for entry/exit to/from cache operation functions\n\nCount entries to and exits from cache operation table functions.  Maintain\nthese as a single counter that\u0027s added to or removed from as appropriate.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "4fbf4291aa15926cd4fdca0ffe9122e89d0459db",
      "tree": "ec2195c39ef8117acea598af4a5c20c77f67aa0b",
      "parents": [
        "440f0affe247e9990c8f8778f1861da4fd7d5e50"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:04 2009 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Nov 19 18:11:04 2009 +0000"
      },
      "message": "FS-Cache: Allow the current state of all objects to be dumped\n\nAllow the current state of all fscache objects to be dumped by doing:\n\n\tcat /proc/fs/fscache/objects\n\nBy default, all objects and all fields will be shown.  This can be restricted\nby adding a suitable key to one of the caller\u0027s keyrings (such as the session\nkeyring):\n\n\tkeyctl add user fscache:objlist \"\u003crestrictions\u003e\" @s\n\nThe \u003crestrictions\u003e are:\n\n\tK\tShow hexdump of object key (don\u0027t show if not given)\n\tA\tShow hexdump of object aux data (don\u0027t show if not given)\n\nAnd paired restrictions:\n\n\tC\tShow objects that have a cookie\n\tc\tShow objects that don\u0027t have a cookie\n\tB\tShow objects that are busy\n\tb\tShow objects that aren\u0027t busy\n\tW\tShow objects that have pending writes\n\tw\tShow objects that don\u0027t have pending writes\n\tR\tShow objects that have outstanding reads\n\tr\tShow objects that don\u0027t have outstanding reads\n\tS\tShow objects that have slow work queued\n\ts\tShow objects that don\u0027t have slow work queued\n\nIf neither side of a restriction pair is given, then both are implied.  For\nexample:\n\n\tkeyctl add user fscache:objlist KB @s\n\nshows objects that are busy, and lists their object keys, but does not dump\ntheir auxiliary data.  It also implies \"CcWwRrSs\", but as \u0027B\u0027 is given, \u0027b\u0027 is\nnot implied.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "7ab8f5244d6a8695688a91c8a3f6d3f40356ff97",
      "tree": "cdfe242ccccce95d4c75ed32282c6aeaab120b26",
      "parents": [
        "837711f862bb71ac263837a0f0714dd8cc4ef7ea"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Mon Nov 02 13:38:10 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Nov 13 15:45:01 2009 -0800"
      },
      "message": "ocfs2: Refresh documentation\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d4da6c9ccf648f3f1cb5bf9d981a62c253d30e28",
      "tree": "709f8bdc50a3a1d47632047eb3670b4a4a6ff045",
      "parents": [
        "c35102c3e15f90fe604523a2fbffd9dc158b455a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 02 10:15:27 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 02 10:15:27 2009 -0800"
      },
      "message": "Revert \"ext4: Remove journal_checksum mount option and enable it by default\"\n\nThis reverts commit d0646f7b636d067d715fab52a2ba9c6f0f46b0d7, as\nrequested by Eric Sandeen.\n\nIt can basically cause an ext4 filesystem to miss recovery (and thus get\nmounted with errors) if the journal checksum does not match.\n\nQuoth Eric:\n\n   \"My hand-wavy hunch about what is happening is that we\u0027re finding a\n    bad checksum on the last partially-written transaction, which is\n    not surprising, but if we have a wrapped log and we\u0027re doing the\n    initial scan for head/tail, and we abort scanning on that bad\n    checksum, then we are essentially running an unrecovered filesystem.\n\n    But that\u0027s hand-wavy and I need to go look at the code.\n\n    We lived without journal checksums on by default until now, and at\n    this point they\u0027re doing more harm than good, so we should revert\n    the default-changing commit until we can fix it and do some good\n    power-fail testing with the fixes in place.\"\n\nSee\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d14354\n\nfor all the gory details.\n\nRequested-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Theodore Tso \u003ctytso@mit.edu\u003e\nCc: Alexey Fisher \u003cbug-track@fisher-privat.net\u003e\nCc: Maxim Levitsky \u003cmaximlevitsky@gmail.com\u003e\nCc: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Mathias Burén \u003cmathias.buren@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6dbce5218298c0c77a740b3ffe97cb8c304e1710",
      "tree": "488ddde8139ee69b04b2033b78b700a9deb192b0",
      "parents": [
        "96ec2e0a719fd61791dd2b0dd01325c5d20e1233"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Sep 17 17:37:12 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Oct 13 00:06:43 2009 +0200"
      },
      "message": "ext3: Update documentation about ext3 quota mount options\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "9f44fdc5188bc1a0bbcc3453d57f01e49ba868d9",
      "tree": "a636c14f741e662814fe95bf35f22659411f1733",
      "parents": [
        "4c8f1cb266cba4d1052f524d04df839d8f732ace",
        "c1fccc0696bcaff6008c11865091f5ec4b0937ab"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 30 09:32:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 30 09:32:30 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  ext4: Fix time encoding with extra epoch bits\n  ext4: Add a stub for mpage_da_data in the trace header\n  jbd2: Use tracepoints for history file\n  ext4: Use tracepoints for mb_history trace file\n  ext4, jbd2: Drop unneeded printks at mount and unmount time\n  ext4: Handle nested ext4_journal_start/stop calls without a journal\n  ext4: Make sure ext4_dirty_inode() updates the inode in no journal mode\n  ext4: Avoid updating the inode table bh twice in no journal mode\n  ext4: EXT4_IOC_MOVE_EXT: Check for different original and donor inodes first\n  ext4: async direct IO for holes and fallocate support\n  ext4: Use end_io callback to avoid direct I/O fallback to buffered I/O\n  ext4: Split uninitialized extents for direct I/O\n  ext4: release reserved quota when block reservation for delalloc retry\n  ext4: Adjust ext4_da_writepages() to write out larger contiguous chunks\n  ext4: Fix hueristic which avoids group preallocation for closed files\n  ext4: Use ext4_msg() for ext4_da_writepage() errors\n  ext4: Update documentation about quota mount options\n"
    },
    {
      "commit": "4c8f1cb266cba4d1052f524d04df839d8f732ace",
      "tree": "4bf2e6bcc56dcce2c919bca969f6626c8f18b7e6",
      "parents": [
        "9c1fe834c1bd7725b411055c66886b64c928083d",
        "ed248b290da7297c9b9a3ff180f5eee4db016224"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 30 09:31:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 30 09:31:14 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: Check s_dirt in fat_sync_fs()\n  vfat: change the default from shortname\u003dlower to shortname\u003dmixed\n  fat/nls: Fix handling of utf8 invalid char\n"
    },
    {
      "commit": "296c355cd6443d89fa251885a8d78778fe111dc4",
      "tree": "5cf7c8b115617dc3829a16a5969894d37b73173c",
      "parents": [
        "90576c0b9a0b5323fc4bd7f23f49be0d234f36d1"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 00:32:42 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 00:32:42 2009 -0400"
      },
      "message": "ext4: Use tracepoints for mb_history trace file\n\nThe /proc/fs/ext4/\u003cdev\u003e/mb_history was maintained manually, and had a\nnumber of problems: it required a largish amount of memory to be\nallocated for each ext4 filesystem, and the s_mb_history_lock\nintroduced a CPU contention problem.  \n\nBy ripping out the mb_history code and replacing it with ftrace\ntracepoints, and we get more functionality: timestamps, event\nfiltering, the ability to correlate mballoc history with other ext4\ntracepoints, etc.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8365388827663bd6fb773e3623ed9023c0f82b1d",
      "tree": "e8f0166c3c17501c33375f9b1b70e702f7bbd65d",
      "parents": [
        "6d7f18f6ea3a13af95bdf507fc54d42b165e1712"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Sep 29 15:59:34 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 15:59:34 2009 -0400"
      },
      "message": "ext4: Update documentation about quota mount options\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "db16826367fefcb0ddb93d76b66adc52eb4e6339",
      "tree": "626224c1eb1eb79c522714591f208b4fdbdcd9d4",
      "parents": [
        "cd6045138ed1bb5d8773e940d51c34318eef3ef2",
        "465fdd97cbe16ef8727221857e96ef62dd352017"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)\n  HWPOISON: Enable error_remove_page on btrfs\n  HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs\n  HWPOISON: Add madvise() based injector for hardware poisoned pages v4\n  HWPOISON: Enable error_remove_page for NFS\n  HWPOISON: Enable .remove_error_page for migration aware file systems\n  HWPOISON: The high level memory error handler in the VM v7\n  HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process\n  HWPOISON: shmem: call set_page_dirty() with locked page\n  HWPOISON: Define a new error_remove_page address space op for async truncation\n  HWPOISON: Add invalidate_inode_page\n  HWPOISON: Refactor truncate to allow direct truncating of page v2\n  HWPOISON: check and isolate corrupted free pages v2\n  HWPOISON: Handle hardware poisoned pages in try_to_unmap\n  HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n  HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2\n  HWPOISON: Add poison check to page fault handling\n  HWPOISON: Add basic support for poisoned pages in fault handler v3\n  HWPOISON: Add new SIGBUS error codes for hardware poison signals\n  HWPOISON: Add support for poison swap entries v2\n  HWPOISON: Export some rmap vma locking to outside world\n  ...\n"
    },
    {
      "commit": "16c01b20ae0572d5a1fe8059f1b4c09f79b73cbf",
      "tree": "922001d18936f99a9d9f12fc62aa1bb692f7e023",
      "parents": [
        "0288b95b432b88f9daf895b526f64beeaca9ac73"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Wed Sep 23 15:56:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:57 2009 -0700"
      },
      "message": "doc/filesystems: more mount cleanups\n\nDocumentation/filesystems/sharedsubtree.txt needs updating because the\nmount command in util-linux package is well aware of shared subtree\nfeatures now.  The patch also fixes two typos in sharedsubtree.txt.\n\nSigned-off-by: Peng Tao \u003cbergwolf@gmail.com\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0288b95b432b88f9daf895b526f64beeaca9ac73",
      "tree": "c101445baa2776f33a9a7c0688c263eba31c7bce",
      "parents": [
        "57f1f0874f426a9bdfc5cd3f886113dd5cd17834"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Sep 23 15:56:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:57 2009 -0700"
      },
      "message": "doc/filesystems: remove smount program\n\nmount(8) handles shared subtrees just fine, so remove the smount program\nfrom Documentation/filesystems/sharedsubtree.txt.\n\nFix annoying \"Lets\" -\u003e \"Let\u0027s\".\nInsert space between \u0027#\u0027 prompt and \"mount\" command.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f4edeeb3937d5f9953b5722f1cca9573d5ffe8a0",
      "tree": "573e88cb99da1b8fe926e0b5615c9e8d7dc4084e",
      "parents": [
        "60e78d2c993e58d890596d951fff77d5965adcd6"
      ],
      "author": {
        "name": "Abhishek Kulkarni",
        "email": "adkulkar@umail.iu.edu",
        "time": "Tue Sep 22 11:34:04 2009 -0500"
      },
      "committer": {
        "name": "Eric Van Hensbergen",
        "email": "ericvh@strongmad.austin.ibm.com",
        "time": "Wed Sep 23 13:03:46 2009 -0500"
      },
      "message": "9p: Update documentation to add fscache related bits\n\nUpdate the documentation to describe FS-Cache related\ncaching parameters. This patch also updates the pointers\nto 9p-related papers and adds pointer to the Wiki.\n\nSigned-off-by: Abhishek Kulkarni \u003cadkulkar@umail.iu.edu\u003e\nSigned-off-by: Eric Van Hensbergen \u003cericvh@gmail.com\u003e\n\n\n"
    },
    {
      "commit": "1b83df308f69a5a3cc59be03bd7fb23e4bcebd8e",
      "tree": "8963dfcb1333dcfd1d08c243750a0699ce61c4fa",
      "parents": [
        "c5df59136a55fe08c21d39321679cbb008479edf"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Tue Sep 22 16:45:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:42 2009 -0700"
      },
      "message": "ncpfs: remove dead URL from documentation\n\nNoticed-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Petr Vandrovec \u003cvandrove@vc.cvut.cz\u003e\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@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": "d899bf7b55f503ba7d3d07ed27c3a37e270fa7db",
      "tree": "32a5ee7816b2f0cb3261dcca8102b9cafe9251bd",
      "parents": [
        "cba8aafe1e07dfc8bae5ba78be8e02883bd34d31"
      ],
      "author": {
        "name": "Stefani Seibold",
        "email": "stefani@seibold.net",
        "time": "Tue Sep 22 16:45:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:41 2009 -0700"
      },
      "message": "procfs: provide stack information for threads\n\nA patch to give a better overview of the userland application stack usage,\nespecially for embedded linux.\n\nCurrently you are only able to dump the main process/thread stack usage\nwhich is showed in /proc/pid/status by the \"VmStk\" Value.  But you get no\ninformation about the consumed stack memory of the the threads.\n\nThere is an enhancement in the /proc/\u003cpid\u003e/{task/*,}/*maps and which marks\nthe vm mapping where the thread stack pointer reside with \"[thread stack\nxxxxxxxx]\".  xxxxxxxx is the maximum size of stack.  This is a value\ninformation, because libpthread doesn\u0027t set the start of the stack to the\ntop of the mapped area, depending of the pthread usage.\n\nA sample output of /proc/\u003cpid\u003e/task/\u003ctid\u003e/maps looks like:\n\n08048000-08049000 r-xp 00000000 03:00 8312       /opt/z\n08049000-0804a000 rw-p 00001000 03:00 8312       /opt/z\n0804a000-0806b000 rw-p 00000000 00:00 0          [heap]\na7d12000-a7d13000 ---p 00000000 00:00 0\na7d13000-a7f13000 rw-p 00000000 00:00 0          [thread stack: 001ff4b4]\na7f13000-a7f14000 ---p 00000000 00:00 0\na7f14000-a7f36000 rw-p 00000000 00:00 0\na7f36000-a8069000 r-xp 00000000 03:00 4222       /lib/libc.so.6\na8069000-a806b000 r--p 00133000 03:00 4222       /lib/libc.so.6\na806b000-a806c000 rw-p 00135000 03:00 4222       /lib/libc.so.6\na806c000-a806f000 rw-p 00000000 00:00 0\na806f000-a8083000 r-xp 00000000 03:00 14462      /lib/libpthread.so.0\na8083000-a8084000 r--p 00013000 03:00 14462      /lib/libpthread.so.0\na8084000-a8085000 rw-p 00014000 03:00 14462      /lib/libpthread.so.0\na8085000-a8088000 rw-p 00000000 00:00 0\na8088000-a80a4000 r-xp 00000000 03:00 8317       /lib/ld-linux.so.2\na80a4000-a80a5000 r--p 0001b000 03:00 8317       /lib/ld-linux.so.2\na80a5000-a80a6000 rw-p 0001c000 03:00 8317       /lib/ld-linux.so.2\nafaf5000-afb0a000 rw-p 00000000 00:00 0          [stack]\nffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]\n\nAlso there is a new entry \"stack usage\" in /proc/\u003cpid\u003e/{task/*,}/status\nwhich will you give the current stack usage in kb.\n\nA sample output of /proc/self/status looks like:\n\nName:\tcat\nState:\tR (running)\nTgid:\t507\nPid:\t507\n.\n.\n.\nCapBnd:\tfffffffffffffeff\nvoluntary_ctxt_switches:\t0\nnonvoluntary_ctxt_switches:\t0\nStack usage:\t12 kB\n\nI also fixed stack base address in /proc/\u003cpid\u003e/{task/*,}/stat to the base\naddress of the associated thread stack and not the one of the main\nprocess.  This makes more sense.\n\n[akpm@linux-foundation.org: fs/proc/array.c now needs walk_page_range()]\nSigned-off-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.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": "a87e84b5cdfacf11af4e8a85c4bca9793658536f",
      "tree": "f8e3cb2d339d8ed0e987d55f725e501730cdc81d",
      "parents": [
        "342ff1a1b558ebbdb8cbd55ab6a63eca8b2473ca",
        "3c394ddaa7ea4205f933fd9b481166b2669368a9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:54:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:54:33 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.32\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.32\u0027 of git://linux-nfs.org/~bfields/linux: (68 commits)\n  nfsd4: nfsv4 clients should cross mountpoints\n  nfsd: revise 4.1 status documentation\n  sunrpc/cache: avoid variable over-loading in cache_defer_req\n  sunrpc/cache: use list_del_init for the list_head entries in cache_deferred_req\n  nfsd: return success for non-NFS4 nfs4_state_start\n  nfsd41: Refactor create_client()\n  nfsd41: modify nfsd4.1 backchannel to use new xprt class\n  nfsd41: Backchannel: Implement cb_recall over NFSv4.1\n  nfsd41: Backchannel: cb_sequence callback\n  nfsd41: Backchannel: Setup sequence information\n  nfsd41: Backchannel: Server backchannel RPC wait queue\n  nfsd41: Backchannel: Add sequence arguments to callback RPC arguments\n  nfsd41: Backchannel: callback infrastructure\n  nfsd4: use common rpc_cred for all callbacks\n  nfsd4: allow nfs4 state startup to fail\n  SUNRPC: Defer the auth_gss upcall when the RPC call is asynchronous\n  nfsd4: fix null dereference creating nfsv4 callback client\n  nfsd4: fix whitespace in NFSPROC4_CLNT_CB_NULL definition\n  nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel\n  sunrpc/cache: simplify cache_fresh_locked and cache_fresh_unlocked.\n  ...\n"
    },
    {
      "commit": "342ff1a1b558ebbdb8cbd55ab6a63eca8b2473ca",
      "tree": "1f967f283dade6e03897169bb29513354f49f910",
      "parents": [
        "50223e486cabdcf7e540e519da1f26bab3084e5d",
        "24ed7a97464db44592495f98cff8bcee02f92bc2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:51:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:51:45 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: (34 commits)\n  trivial: fix typo in aic7xxx comment\n  trivial: fix comment typo in drivers/ata/pata_hpt37x.c\n  trivial: typo in kernel-parameters.txt\n  trivial: fix typo in tracing documentation\n  trivial: add __init/__exit macros in drivers/gpio/bt8xxgpio.c\n  trivial: add __init macro/ fix of __exit macro location in ipmi_poweroff.c\n  trivial: remove unnecessary semicolons\n  trivial: Fix duplicated word \"options\" in comment\n  trivial: kbuild: remove extraneous blank line after declaration of usage()\n  trivial: improve help text for mm debug config options\n  trivial: doc: hpfall: accept disk device to unload as argument\n  trivial: doc: hpfall: reduce risk that hpfall can do harm\n  trivial: SubmittingPatches: Fix reference to renumbered step\n  trivial: fix typos \"man[ae]g?ment\" -\u003e \"management\"\n  trivial: media/video/cx88: add __init/__exit macros to cx88 drivers\n  trivial: fix typo in CONFIG_DEBUG_FS in gcov doc\n  trivial: fix missing printk space in amd_k7_smp_check\n  trivial: fix typo s/ketymap/keymap/ in comment\n  trivial: fix typo \"to to\" in multiple files\n  trivial: fix typos in comments s/DGBU/DBGU/\n  ...\n"
    },
    {
      "commit": "495789a51a91cb8c015d8d77fecbac1caf20b186",
      "tree": "ac2a71ed40ed84f5673326aa6bf7f278b54d989a",
      "parents": [
        "28b83c5193e7ab951e402252278f2cc79dc4d298"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:03:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "oom: make oom_score to per-process value\n\noom-killer kills a process, not task.  Then oom_score should be calculated\nas per-process too.  it makes consistency more and makes speed up\nselect_bad_process().\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\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": "398499d5f3613c47f2143b8c54a04efb5d7a6da9",
      "tree": "0b337ca1d0e20caa2295c159d5c0deadf362e4a0",
      "parents": [
        "7103ad323b1ae32bedc3267402117e2f8b45e48d"
      ],
      "author": {
        "name": "Moussa A. Ba",
        "email": "moussa.a.ba@gmail.com",
        "time": "Mon Sep 21 17:02:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:33 2009 -0700"
      },
      "message": "pagemap clear_refs: modify to specify anon or mapped vma clearing\n\nThe patch makes the clear_refs more versatile in adding the option to\nselect anonymous pages or file backed pages for clearing.  This addition\nhas a measurable impact on user space application performance as it\ndecreases the number of pagewalks in scenarios where one is only\ninterested in a specific type of page (anonymous or file mapped).\n\nThe patch adds anonymous and file backed filters to the clear_refs interface.\n\necho 1 \u003e /proc/PID/clear_refs resets the bits on all pages\necho 2 \u003e /proc/PID/clear_refs resets the bits on anonymous pages only\necho 3 \u003e /proc/PID/clear_refs resets the bits on file backed pages only\n\nAny other value is ignored\n\nSigned-off-by: Moussa A. Ba \u003cmoussa.a.ba@gmail.com\u003e\nSigned-off-by: Jared E. Hulbert \u003cjaredeh@gmail.com\u003e\nAcked-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": "c574358e8b48adf646f9d5ef70dc76c5d4ad9387",
      "tree": "1c83f7fe3831c59ba0ceca9b384ec990fcf60e5a",
      "parents": [
        "580be0837a7a59b207c3d5c661d044d8dd0a6a30"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Sep 21 17:01:06 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "proc: document `guest\u0027 column in /proc/stat\n\nWe added a new column in cpuX lines of /proc/stat, to show the amount of\ntime spent by a cpu servicing a guest, without updating\nDocumentation/filesystems/proc.txt\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@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": "285a0f00c27a02f1223a198c88de2130e9bab059",
      "tree": "32b3e2a5048fd1390cd82cd17852be78bd986cd4",
      "parents": [
        "cd68c374ea9ce202ae7c6346777d10078e243d49"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Sep 20 17:01:33 2009 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 21 11:13:45 2009 -0400"
      },
      "message": "nfsd: revise 4.1 status documentation\n\nSome small updates, a caveat about the minorversion control interface,\nand an attempt to put missing features in context.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "411c94038594b2a3fd123d09bdec3fe2500e383d",
      "tree": "44b991786c7f4806b1b88f40439945b3835b6292",
      "parents": [
        "786d8ca341a30296264bc6cebac52d37b0851647"
      ],
      "author": {
        "name": "Anand Gadiyar",
        "email": "gadiyar@ti.com",
        "time": "Tue Jul 07 15:24:23 2009 +0530"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Sep 21 15:14:54 2009 +0200"
      },
      "message": "trivial: fix typo \"for for\" in multiple files\n\ntrivial: fix typo \"for for\" in multiple files\n\nSigned-off-by: Anand Gadiyar \u003cgadiyar@ti.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "1358870deaf11a752a84fbd89201749aa62498e8",
      "tree": "7d17f77086d862ade1c12bd7defd8ea24d73040b",
      "parents": [
        "0a80e9867db154966b2a771042e10452ac110e1e"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Sep 18 12:22:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 18 12:22:29 2009 -0400"
      },
      "message": "ext4: Update documentation about quota mount options\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "257187362123f15d9d1e09918cf87cebbea4e786",
      "tree": "92b768ad3f2afeda13a2acadc6d5766090ebcc60",
      "parents": [
        "83f786680aec8d030184f7ced1a0a3dd8ac81764"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:13 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:13 2009 +0200"
      },
      "message": "HWPOISON: Define a new error_remove_page address space op for async truncation\n\nTruncating metadata pages is not safe right now before\nwe haven\u0027t audited all file systems.\n\nTo enable truncation only for data address space define\na new address_space callback error_remove_page.\n\nThis is used for memory_failure.c memory error handling.\n\nThis can be then set to truncate_inode_page()\n\nThis patch just defines the new operation and adds documentation.\n\nCallers and users come in followon patches.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "a9bbd210a44102cc50b30a5f3d111dbf5f2f9cd4",
      "tree": "27bf5c64fbda8ed7796de52d495982fc30a56c8b",
      "parents": [
        "2ca7d674d7ab2220707b2ada0b690c0e7c95e7ac",
        "6c19efb46aacf2c5043ad210b888ee58ffb848c0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 17:52:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 17:52:32 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 flex_array library.\n  Doc: seq_file.txt fix wrong dd command example.\n"
    },
    {
      "commit": "33f1de69312432baecb997a570b7d77c4d02d1ed",
      "tree": "24e9e7487ec3b892e120409aa2ac1b1263794373",
      "parents": [
        "041d6d0be82bed7e0b87181dba5d10b8ab14afd9",
        "86d006365610fe6cda243d89b67d5047dca44656"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 14:35:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 14:35:56 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw\n\n* \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw:\n  GFS2: Whitespace fixes\n  GFS2: Remove unused sysfs file\n  GFS2: Be extra careful about deallocating inodes\n  GFS2: Remove no_formal_ino generating code\n  GFS2: Rename eattr.[ch] as xattr.[ch]\n  GFS2: Clean up of extended attribute support\n  GFS2: Add explanation of extended attr on-disk format\n  GFS2: Add \"-o errors\u003dpanic|withdraw\" mount options\n  GFS2: jumping to wrong label?\n  GFS2: free disk inode which is deleted by remote node -V2\n  GFS2: Add a document explaining GFS2\u0027s uevents\n  GFS2: Add sysfs link to device\n  GFS2: Replace assertion with proper error handling\n  GFS2: Improve error handling in inode allocation\n  GFS2: Add some more info to uevents\n  GFS2: Add online uevent to GFS2\n"
    },
    {
      "commit": "ab3bbaa8b257845e248e9a01d12a69ca245f4197",
      "tree": "f3054be9bd612194826ed6969d01346d329c3306",
      "parents": [
        "332a3392188e0ad966543c87b8da2b9d246f301d",
        "2ecda72b49a0849ce41e7fa1fa974a245b9119f8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 11 14:59:37 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 11 14:59:37 2009 -0400"
      },
      "message": "Merge branch \u0027nfs-for-2.6.32\u0027\n"
    },
    {
      "commit": "e8188807b7cd14e0a001946005f0c58f9dd9dfe6",
      "tree": "2fd9f54a83fad07288ac0637ac9493fe138d5858",
      "parents": [
        "74fca6a42863ffacaf7ba6f1936a9f228950f657"
      ],
      "author": {
        "name": "Jesper Dangaard Brouer",
        "email": "hawk@comx.dk",
        "time": "Tue May 26 15:18:52 2009 +0200"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Thu Sep 10 14:33:35 2009 -0600"
      },
      "message": "Doc: seq_file.txt fix wrong dd command example.\n\nSmall error in the \"dd\" command example, \"out\u003d\" should be \"of\u003d\".\n\nSigned-off-by: Jesper Dangaard Brouer \u003chawk@comx.dk\u003e\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\n"
    },
    {
      "commit": "d0646f7b636d067d715fab52a2ba9c6f0f46b0d7",
      "tree": "f7b3ae9510e8c789651d99fee0c22867e6ccba94",
      "parents": [
        "a3710fd1ee8cd542c5de63cf2c39f8912031f867"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 05 12:50:43 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 05 12:50:43 2009 -0400"
      },
      "message": "ext4: Remove journal_checksum mount option and enable it by default\n\nThere\u0027s no real cost for the journal checksum feature, and we should\nmake sure it is enabled all the time.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "cf481442f2e086316ed8a1b3046f00ad23632ac4",
      "tree": "2edd0fb64549dfb6388e39d86e8965908dfcb925",
      "parents": [
        "788d908f2879a17e5f80924f3da2e23f1034482d",
        "7815f4be4026b6c5027058102ae67a4b9feffa5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 27 12:24:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 27 12:24:08 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:\n  9p: update documentation pointers\n  9p: remove unnecessary v9fses-\u003eoptions which duplicates the mount string\n  net/9p: insulate the client against an invalid error code sent by a 9p server\n  9p: Add missing cast for the error return value in v9fs_get_inode\n  9p: Remove redundant inode uid/gid assignment\n  9p: Fix possible regressions when -\u003eget_sb fails.\n  9p: Fix v9fs show_options\n  9p: Fix possible memleak in v9fs_inode_from fid.\n  9p: minor comment fixes\n  9p: Fix possible inode leak in v9fs_get_inode.\n  9p: Check for error in return value of v9fs_fid_add\n"
    },
    {
      "commit": "e571cbf1a4f8d8b6cfd4898df718dae84c75a8e1",
      "tree": "0fc9da9692a1e63cff03053fc87cc807fab5e266",
      "parents": [
        "96c61cbd0f30496bfa57ed80f7131a57aea3e4de"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 19 18:12:27 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 19 18:22:15 2009 -0400"
      },
      "message": "NFS: Add a dns resolver for use with NFSv4 referrals and migration\n\nThe NFSv4 and NFSv4.1 protocols both allow for the redirection of a client\nfrom one server to another in order to support filesystem migration and\nreplication. For full protocol support, we need to add the ability to\nconvert a DNS host name into an IP address that we can feed to the RPC\nclient.\n\nWe\u0027ll reuse the sunrpc cache, now that it has been converted to work with\nrpc_pipefs.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0dc9aa845c20ed1f46c85f229591b811dffc4b3b",
      "tree": "8101ad58e6b263356bbf0879c79155af99ed6ddb",
      "parents": [
        "cad2c8fd9b3afceced08838c87c520e6da417a65"
      ],
      "author": {
        "name": "Anton Blanchard",
        "email": "anton@samba.org",
        "time": "Wed Aug 19 16:10:16 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 19 10:40:13 2009 -0700"
      },
      "message": "AFS: Documentation updates\n\nFix some issues with the AFS documentation, found when testing AFS on ppc64:\n\n- Update AFS features: reading/writing, local caching\n- Typo in kafs sysfs debug file\n- Use modprobe instead of insmod in example\n- Update IPs for grand.central.org\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0753ba01e126020bf0f8150934903b48935b697d",
      "tree": "fbfd7e2d0abbe724a8c5e0e17fb9af522ed2e097",
      "parents": [
        "89a4eb4b66e8f4d395e14a14d262dac4d6ca52f0"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Aug 18 14:11:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 18 16:31:13 2009 -0700"
      },
      "message": "mm: revert \"oom: move oom_adj value\"\n\nThe commit 2ff05b2b (oom: move oom_adj value) moveed the oom_adj value to\nthe mm_struct.  It was a very good first step for sanitize OOM.\n\nHowever Paul Menage reported the commit makes regression to his job\nscheduler.  Current OOM logic can kill OOM_DISABLED process.\n\nWhy? His program has the code of similar to the following.\n\n\t...\n\tset_oom_adj(OOM_DISABLE); /* The job scheduler never killed by oom */\n\t...\n\tif (vfork() \u003d\u003d 0) {\n\t\tset_oom_adj(0); /* Invoked child can be killed */\n\t\texecve(\"foo-bar-cmd\");\n\t}\n\t....\n\nvfork() parent and child are shared the same mm_struct.  then above\nset_oom_adj(0) doesn\u0027t only change oom_adj for vfork() child, it\u0027s also\nchange oom_adj for vfork() parent.  Then, vfork() parent (job scheduler)\nlost OOM immune and it was killed.\n\nActually, fork-setting-exec idiom is very frequently used in userland program.\nWe must not break this assumption.\n\nThen, this patch revert commit 2ff05b2b and related commit.\n\nReverted commit list\n---------------------\n- commit 2ff05b2b4e (oom: move oom_adj value from task_struct to mm_struct)\n- commit 4d8b9135c3 (oom: avoid unnecessary mm locking and scanning for OOM_DISABLE)\n- commit 8123681022 (oom: only oom kill exiting tasks with attached memory)\n- commit 933b787b57 (mm: copy over oom_adj value at fork time)\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7815f4be4026b6c5027058102ae67a4b9feffa5f",
      "tree": "97fd44665e806c79d1cd18226422d76c83efe619",
      "parents": [
        "4b53e4b500779230aedd5355940aeaaed0b5353b"
      ],
      "author": {
        "name": "Eric Van Hensbergen",
        "email": "ericvh@gmail.com",
        "time": "Mon Aug 17 16:49:44 2009 -0500"
      },
      "committer": {
        "name": "Eric Van Hensbergen",
        "email": "ericvh@gmail.com",
        "time": "Mon Aug 17 16:49:44 2009 -0500"
      },
      "message": "9p: update documentation pointers\n\nSigned-off-by: Eric Van Hensbergen \u003cericvh@gmail.com\u003e\n"
    },
    {
      "commit": "0aa87445842036f88b53db7f377ad8376bd94ab8",
      "tree": "d1a8f3bce8197c5047f61793c0c950dfc22feba2",
      "parents": [
        "31e54b01f3f00b595aac02e887960e5dcc575844"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Aug 14 15:24:46 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 17 11:11:41 2009 +0100"
      },
      "message": "GFS2: Add a document explaining GFS2\u0027s uevents\n\nThis will be essential reading for anybody who wants to\nunderstand how GFS2 interacts with the userland gfs_controld,\nand the details of recovery.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\n"
    },
    {
      "commit": "955234755ce4a2c33cfc558912aa8f2148cc1fc6",
      "tree": "bf9e870da7ebcf5e9459e4109fc81cb21246441f",
      "parents": [
        "67638e4043083cdc6f10386a75fef87ba46eecb3"
      ],
      "author": {
        "name": "Paul Wise",
        "email": "pabs3@bonedaddy.net",
        "time": "Sat Aug 01 21:30:31 2009 +0900"
      },
      "committer": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Sat Aug 01 21:35:25 2009 +0900"
      },
      "message": "vfat: change the default from shortname\u003dlower to shortname\u003dmixed\n\nBecause, with \"shortname\u003dlower\", copying one FAT filesystem tree to\nanother FAT filesystem tree using Linux results in semantically\ndifferent filesystems. (E.g.: Filenames which were once \"all\nuppercase\" are now \"all lowercase\").\n\nSo, this changes the default of \"shortname\u003dlower\" to \"shortname\u003dmixed\".\n\nSigned-off-by: Paul Wise \u003cpabs3@bonedaddy.net\u003e\n[change fat_show_options()]\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\n"
    },
    {
      "commit": "a39ea210ec8c8f6ed381f8dafbe755c57b8f30c3",
      "tree": "1d86ea15f3a1eda5fa050e59324b98773f8ba0a8",
      "parents": [
        "79f0313bfc67aa13abb931e8c12a1411f0161a68"
      ],
      "author": {
        "name": "Lucian Adrian Grijincu",
        "email": "lgrijincu@ixiacom.com",
        "time": "Mon Jul 27 09:06:42 2009 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jul 28 13:45:23 2009 -0700"
      },
      "message": "driver core: documentation: make it clear that sysfs is optional\n\nThe original text suggested that sysfs is mandatory and always\ncompiled in the kernel.\n\nSigned-off-by: Lucian Adrian Grijincu \u003clgrijincu@ixiacom.com\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "7e325d3a6b117c7288bfc0755410e9d9d2b71326",
      "tree": "37a59f2c771c31559118987d2ee91e870274ec8b",
      "parents": [
        "f6cc746bbb3b8a8ceb8514a7906ba582607a8cf7"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 19 20:22:37 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:15:25 2009 -0400"
      },
      "message": "update Documentation/filesystems/Locking\n\nThe rules for locking in many superblock operations has changed\nsignificantly, so update the documentation for it.  Also correct some\nolder updates and ommissions.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "1db4b2d221f14b9715c717dbd9a476469a687080"
}
