)]}'
{
  "log": [
    {
      "commit": "880fe76ee6f38eda82e9f3de9a7a206dfd1bab9d",
      "tree": "b5f5d085e73bdf352a9878e622d151f98bac6607",
      "parents": [
        "695f6ae0dcea3dd83bfbb9634ff067f780649ba8"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Thu Apr 02 16:57:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:53 2009 -0700"
      },
      "message": "hppfs: hppfs_read_file() may return -ERROR\n\nhppfs_read_file() may return (ssize_t) -ENOMEM, or -EFAULT.  When stored\nin size_t \u0027count\u0027, these errors will not be noticed, a large value will be\nadded to *ppos.\n\nSigned-off-by: Roel Kluin \u003croel.kluin@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": "695f6ae0dcea3dd83bfbb9634ff067f780649ba8",
      "tree": "0c97d92bfdc0791d0456faad6ef93b88e5739247",
      "parents": [
        "de18f3b2d68c1f3481839be760a5ff93f6a9a5e5"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 16:57:17 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "ext3: avoid false EIO errors\n\nSometimes block_write_begin() can map buffers in a page but later we\nfail to copy data into those buffers (because the source page has been\npaged out in the mean time).  We then end up with !uptodate mapped\nbuffers.  To add a bit more to the confusion, block_write_end() does\nnot commit any data (and thus does not any mark buffers as uptodate) if\nwe didn\u0027t succeed with copying all the data.\n\nCommit f4fc66a894546bdc88a775d0e83ad20a65210bcb (ext3: convert to new\naops) missed these cases and thus we were inserting non-uptodate\nbuffers to transaction\u0027s list which confuses JBD code and it reports IO\nerrors, aborts a transaction and generally makes users afraid about\ntheir data ;-P.\n\nThis patch fixes the problem by reorganizing ext3_..._write_end() code\nto first call block_write_end() to mark buffers with valid data\nuptodate and after that we file only uptodate buffers to transaction\u0027s\nlists.\n\nWe also fix a problem where we could leave blocks allocated beyond i_size\n(i_disksize in fact) because of failed write. We now add inode to orphan\nlist when write fails (to be safe in case we crash) and then truncate blocks\nbeyond i_size in a separate transaction.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "de18f3b2d68c1f3481839be760a5ff93f6a9a5e5",
      "tree": "75b4b389baed2c56b1fc94948d1ab42e08ddcdfe",
      "parents": [
        "45f902178022439795a21e14f886b8ccb49a75d2"
      ],
      "author": {
        "name": "Bryan Donlan",
        "email": "bdonlan@gmail.com",
        "time": "Thu Apr 02 16:57:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "ext3: return -EIO not -ESTALE on directory traversal through deleted inode\n\next3_iget() returns -ESTALE if invoked on a deleted inode, in order to\nreport errors to NFS properly.  However, in ext[234]_lookup(), this\n-ESTALE can be propagated to userspace if the filesystem is corrupted such\nthat a directory entry references a deleted inode.  This leads to a\nmisleading error message - \"Stale NFS file handle\" - and confusion on the\npart of the admin.\n\nThe bug can be easily reproduced by creating a new filesystem, making a\nlink to an unused inode using debugfs, then mounting and attempting to ls\n-l said link.\n\nThis patch thus changes ext3_lookup to return -EIO if it receives -ESTALE\nfrom ext3_iget(), as ext3 does for other filesystem metadata corruption;\nand also invokes the appropriate ext*_error functions when this case is\ndetected.\n\nSigned-off-by: Bryan Donlan \u003cbdonlan@gmail.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "45f902178022439795a21e14f886b8ccb49a75d2",
      "tree": "addf5725b2cd80be4a140a70499cc07f86635a23",
      "parents": [
        "ecca9af0a98fdacfcdc73979d08481d7b27ff986"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Thu Apr 02 16:57:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "ext3: use unsigned instead of int for type of blocksize in fs/ext3/namei.c\n\nUse unsigned instead of int for the parameter which carries a blocksize.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ecca9af0a98fdacfcdc73979d08481d7b27ff986",
      "tree": "41aa40eedd27799b2fa021138173c1adcabe89a5",
      "parents": [
        "039fd8ce6258e01ec29f1637f9bf1868dd877c55"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 16:57:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "jbd: fix oops in jbd_journal_init_inode() on corrupted fs\n\nOn 32-bit system with CONFIG_LBD getblk can fail because provided block\nnumber is too big. Make JBD gracefully handle that.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003cdmaciejak@fortinet.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "039fd8ce6258e01ec29f1637f9bf1868dd877c55",
      "tree": "dcc90b006655eecad1d0cd82850feef2398976fa",
      "parents": [
        "b277c884f7856ce0791b1e72079023a86767981b"
      ],
      "author": {
        "name": "Cyrus Massoumi",
        "email": "cyrusm@gmx.net",
        "time": "Thu Apr 02 16:57:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "ext3: remove the BKL in ext3/ioctl.c\n\nReformat ext3/ioctl.c to make it look more like ext4/ioctl.c and remove\nthe BKL around ext3_ioctl().\n\nSigned-off-by: Cyrus Massoumi \u003ccyrusm@gmx.net\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nAcked-by: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "97f76d3d197f201ac8a8a3ced5b8fef81568e50e",
      "tree": "8264f920a1f1a83e9cb0247ffe9390a7b6332852",
      "parents": [
        "9a896c9a48ac6704c0ce8ee081b836644d0afe40"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Thu Apr 02 16:56:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:49 2009 -0700"
      },
      "message": "vfs: check bh-\u003eb_blocknr only if BH_Mapped is set\n\nCheck bh-\u003eb_blocknr only if BH_Mapped is set.\n\nakpm: I doubt if b_blocknr is ever uninitialised here, but it could\nconceivably cause a problem if we\u0027re doing a lookup for block zero.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d2caa3c549c74d6476e2c29e13bd4d0e7d21c7fe",
      "tree": "8bdaf6ababcd789ced0f441fd9503ee8e033d242",
      "parents": [
        "846c151a4de188bb8f7043097518dab2ff5b5c2c"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Apr 02 16:56:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:48 2009 -0700"
      },
      "message": "writeback: guard against jiffies wraparound on inode-\u003edirtied_when checks (try #3)\n\nThe dirtied_when value on an inode is supposed to represent the first time\nthat an inode has one of its pages dirtied.  This value is in units of\njiffies.  It\u0027s used in several places in the writeback code to determine\nwhen to write out an inode.\n\nThe problem is that these checks assume that dirtied_when is updated\nperiodically.  If an inode is continuously being used for I/O it can be\npersistently marked as dirty and will continue to age.  Once the time\ncompared to is greater than or equal to half the maximum of the jiffies\ntype, the logic of the time_*() macros inverts and the opposite of what is\nneeded is returned.  On 32-bit architectures that\u0027s just under 25 days\n(assuming HZ \u003d\u003d 1000).\n\nAs the least-recently dirtied inode, it\u0027ll end up being the first one that\npdflush will try to write out.  sync_sb_inodes does this check:\n\n\t/* Was this inode dirtied after sync_sb_inodes was called? */\n \tif (time_after(inode-\u003edirtied_when, start))\n \t\tbreak;\n\n...but now dirtied_when appears to be in the future.  sync_sb_inodes bails\nout without attempting to write any dirty inodes.  When this occurs,\npdflush will stop writing out inodes for this superblock.  Nothing can\nunwedge it until jiffies moves out of the problematic window.\n\nThis patch fixes this problem by changing the checks against dirtied_when\nto also check whether it appears to be in the future.  If it does, then we\nconsider the value to be far in the past.\n\nThis should shrink the problematic window of time to such a small period\n(30s) as not to matter.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Jens Axboe \u003cjens.axboe@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": "b6fac63cc1f52ec27f29fe6c6c8494a2ffac33fd",
      "tree": "78b4da8231fb80ea05fffc65c4647957b5a858fb",
      "parents": [
        "33e5d76979cf01e3834814fe0aea569d1d602c1a"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Thu Apr 02 16:56:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:48 2009 -0700"
      },
      "message": "vfs: skip I_CLEAR state inodes\n\nclear_inode() will switch inode state from I_FREEING to I_CLEAR, and do so\n_outside_ of inode_lock.  So any I_FREEING testing is incomplete without a\ncoupled testing of I_CLEAR.\n\nSo add I_CLEAR tests to drop_pagecache_sb(), generic_sync_sb_inodes() and\nadd_dquot_ref().\n\nMasayoshi MIZUMA discovered the bug in drop_pagecache_sb() and Jan Kara\nreminds fixing the other two cases.\n\nMasayoshi MIZUMA has a nice panic flow:\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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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            [process A]               |        [process B]\n |                                    |\n |    prune_icache()                  | drop_pagecache()\n |      spin_lock(\u0026inode_lock)        |   drop_pagecache_sb()\n |      inode-\u003ei_state |\u003d I_FREEING;  |       |\n |      spin_unlock(\u0026inode_lock)      |       V\n |          |                         |     spin_lock(\u0026inode_lock)\n |          V                         |         |\n |      dispose_list()                |         |\n |        list_del()                  |         |\n |        clear_inode()               |         |\n |          inode-\u003ei_state \u003d I_CLEAR  |         |\n |            |                       |         V\n |            |                       |      if (inode-\u003ei_state \u0026 (I_FREEING|I_WILL_FREE))\n |            |                       |              continue;           \u003c\u003d\u003d\u003d\u003d NOT MATCH\n |            |                       |\n |            |                       | (DANGER from here on! Accessing disposing inode!)\n |            |                       |\n |            |                       |      __iget()\n |            |                       |        list_move() \u003c\u003d\u003d\u003d\u003d\u003d PANIC on poisoned list !!\n V            V                       |\n(time)\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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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\nReported-by: Masayoshi MIZUMA \u003cm.mizuma@jp.fujitsu.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\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": "33e5d76979cf01e3834814fe0aea569d1d602c1a",
      "tree": "58a03e5da59db203245da10db144a4f6f61a83ba",
      "parents": [
        "5482415a5ecc0cd791a5d885cc3db8281401078f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Apr 02 16:56:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:48 2009 -0700"
      },
      "message": "nommu: fix a number of issues with the per-MM VMA patch\n\nFix a number of issues with the per-MM VMA patch:\n\n (1) Make mmap_pages_allocated an atomic_long_t, just in case this is used on\n     a NOMMU system with more than 2G pages.  Makes no difference on a 32-bit\n     system.\n\n (2) Report vma-\u003evm_pgoff * PAGE_SIZE as a 64-bit value, not a 32-bit value,\n     lest it overflow.\n\n (3) Move the allocation of the vm_area_struct slab back for fork.c.\n\n (4) Use KMEM_CACHE() for both vm_area_struct and vm_region slabs.\n\n (5) Use BUG_ON() rather than if () BUG().\n\n (6) Make the default validate_nommu_regions() a static inline rather than a\n     #define.\n\n (7) Make free_page_series()\u0027s objection to pages with a refcount !\u003d 1 more\n     informative.\n\n (8) Adjust the __put_nommu_region() banner comment to indicate that the\n     semaphore must be held for writing.\n\n (9) Limit the number of warnings about munmaps of non-mmapped regions.\n\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4fe70410d9a219dabb47328effccae7e7f2a6e26",
      "tree": "7f36d6cd27333fa28447f06ce37a6fecceb42955",
      "parents": [
        "395d73413c5656c6d7706ae91dcb441f9b7e3074",
        "cc85906110e26fe8537c3bdbc08a74ae8110030b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:58:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:58:42 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027for-linus\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (58 commits)\n  SUNRPC: Ensure IPV6_V6ONLY is set on the socket before binding to a port\n  NSM: Fix unaligned accesses in nsm_init_private()\n  NFS: Simplify logic to compare socket addresses in client.c\n  NFS: Start PF_INET6 callback listener only if IPv6 support is available\n  lockd: Start PF_INET6 listener only if IPv6 support is available\n  SUNRPC: Remove CONFIG_SUNRPC_REGISTER_V4\n  SUNRPC: rpcb_register() should handle errors silently\n  SUNRPC: Simplify kernel RPC service registration\n  SUNRPC: Simplify svc_unregister()\n  SUNRPC: Allow callers to pass rpcb_v4_register a NULL address\n  SUNRPC: rpcbind actually interprets r_owner string\n  SUNRPC: Clean up address type casts in rpcb_v4_register()\n  SUNRPC: Don\u0027t return EPROTONOSUPPORT in svc_register()\u0027s helpers\n  SUNRPC: Use IPv4 loopback for registering AF_INET6 kernel RPC services\n  SUNRPC: Set IPV6ONLY flag on PF_INET6 RPC listener sockets\n  NFS: Revert creation of IPv6 listeners for lockd and NFSv4 callbacks\n  SUNRPC: Remove @family argument from svc_create() and svc_create_pooled()\n  SUNRPC: Change svc_create_xprt() to take a @family argument\n  SUNRPC: svc_setup_socket() gets protocol family from socket\n  SUNRPC: Pass a family argument to svc_register()\n  ...\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": "cc85906110e26fe8537c3bdbc08a74ae8110030b",
      "tree": "891813098ede3dba4d5ff3b83b1f7b491367ad2f",
      "parents": [
        "c09bca786ff941ed17c5f381c4eca5b106808c51",
        "c69da774b28e01e062e0a3aba7509f2dcfd2a11a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:28:15 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:28:15 2009 -0400"
      },
      "message": "Merge branch \u0027devel\u0027 into for-linus\n"
    },
    {
      "commit": "ad5b365c1266b0c9e8e254a3c1cc4ef66bf33cba",
      "tree": "b7f9bf04da9f08057db4f5e1a88a4b38511e200e",
      "parents": [
        "3c8c45dfab78a1919f6f8a3ea46998c487eb7e12"
      ],
      "author": {
        "name": "Mans Rullgard",
        "email": "mans@mansr.com",
        "time": "Sat Mar 28 19:55:20 2009 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:24:14 2009 -0400"
      },
      "message": "NSM: Fix unaligned accesses in nsm_init_private()\n\nThis fixes unaligned accesses in nsm_init_private() when\ncreating nlm_reboot keys.\n\nSigned-off-by: Mans Rullgard \u003cmans@mansr.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c226fd659fa7b6a7b038df5ae6856a68514bacde",
      "tree": "a695689d4d8cdd927400747b94250521eb863686",
      "parents": [
        "c09bca786ff941ed17c5f381c4eca5b106808c51",
        "d57e62b89796f751c9422801cbcd407a9f8dcdc4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:20:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:20:44 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: try to free metadata pages when we free btree blocks\n  Btrfs: add extra flushing for renames and truncates\n  Btrfs: make sure btrfs_update_delayed_ref doesn\u0027t increase ref_mod\n  Btrfs: optimize fsyncs on old files\n  Btrfs: tree logging unlink/rename fixes\n  Btrfs: Make sure i_nlink doesn\u0027t hit zero too soon during log replay\n  Btrfs: limit balancing work while flushing delayed refs\n  Btrfs: readahead checksums during btrfs_finish_ordered_io\n  Btrfs: leave btree locks spinning more often\n  Btrfs: Only let very young transactions grow during commit\n  Btrfs: Check for a blocking lock before taking the spin\n  Btrfs: reduce stack in cow_file_range\n  Btrfs: reduce stalls during transaction commit\n  Btrfs: process the delayed reference queue in clusters\n  Btrfs: try to cleanup delayed refs while freeing extents\n  Btrfs: reduce stack usage in some crucial tree balancing functions\n  Btrfs: do extent allocation and reference count updates in the background\n  Btrfs: don\u0027t preallocate metadata blocks during btrfs_search_slot\n"
    },
    {
      "commit": "8f63aaa8b9239475fc580d4450f1141496655305",
      "tree": "eca8552ab842a7a2eecea104e5842f7bccadf09b",
      "parents": [
        "56fcef75117a153f298b3fe54af31053f53997dd"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Mar 31 15:24:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "autofs4: fix lookup deadlock\n\nA deadlock can occur when user space uses a signal (autofs version 4 uses\nSIGCHLD for this) to effect expire completion.\n\nThe order of events is:\n\nExpire process completes, but before being able to send SIGCHLD to it\u0027s parent\n...\n\nAnother process walks onto a different mount point and drops the directory\ninode semaphore prior to sending the request to the daemon as it must ...\n\nA third process does an lstat on on the expired mount point causing it to wait\non expire completion (unfortunately) holding the directory semaphore.\n\nThe mount request then arrives at the daemon which does an lstat and,\ndeadlock.\n\nFor some time I was concerned about releasing the directory semaphore around\nthe expire wait in autofs4_lookup as well as for the mount call back.  I\nfinally realized that the last round of changes in this function made the\nexpiring dentry and the lookup dentry separate and distinct so the check and\npossible wait can be done anywhere prior to the mount call back.  This patch\nmoves the check to just before the mount call back and inside the directory\ninode mutex release.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56fcef75117a153f298b3fe54af31053f53997dd",
      "tree": "56b7a86c811e5f83c232b0f21c5fcf894795fd42",
      "parents": [
        "00fcf2cb6f6bb421851c3ba062c0a36760ea6e53"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Mar 31 15:24:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "autofs4: cleanup expire code duplication\n\nA significant portion of the autofs_dev_ioctl_expire() and\nautofs4_expire_multi() functions is duplicated code.  This patch cleans that\nup.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Jeff Moyer \u003cjmoyer@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": "00fcf2cb6f6bb421851c3ba062c0a36760ea6e53",
      "tree": "741afc144a87af1aa7915d812924da7d7418611f",
      "parents": [
        "e2801806de1c9c1d03b7d1bfcb2e01dd4d389e80"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Mar 31 15:24:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "ecryptfs: use kzfree()\n\nUse kzfree() instead of memset() + kfree().\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3b1b1cbf002e65a3cabd479e68b5f35886a26db",
      "tree": "20286cf60de629dc00eaff4cd712347f9d9a2278",
      "parents": [
        "bb233fdfc7b7cefe45bfa2e8d1b24e79c60a48e5"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Mar 31 15:24:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:22 2009 -0700"
      },
      "message": "ramfs: add support for \"mode\u003d\" mount option\n\nAddresses http://bugzilla.kernel.org/show_bug.cgi?id\u003d12843\n\n\"I use ramfs instead of tmpfs for /tmp because I don\u0027t use swap on my\nlaptop.  Some apps need 1777 mode for /tmp directory, but ramfs does not\nsupport \u0027mode\u003d\u0027 mount option.\"\n\nReported-by: Avan Anishchuk \u003cmatimatik@gmail.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "395108880efff4a4ffa1ffa554477f7f5ba6a031",
      "tree": "7d5797145d54b6cd8752eb2a6b1fd934336a005f",
      "parents": [
        "2dfa4eeab0fc7e8633974f2770945311b31eedf6"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll keyed wakeups: make eventfd use keyed wakeups\n\nIntroduce keyed event wakeups inside the eventfd code.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2dfa4eeab0fc7e8633974f2770945311b31eedf6",
      "tree": "de372dc3955bb8ab2dec1b50f4292f367fa4e22f",
      "parents": [
        "37e5540b3c9d838eb20f2ca8ea2eb8072271e403"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll keyed wakeups: teach epoll about hints coming with the wakeup key\n\nUse the events hint now sent by some devices, to avoid unnecessary wakeups\nfor events that are of no interest for the caller.  This code handles both\ndevices that are sending keyed events, and the ones that are not (and\nevent the ones that sometimes send events, and sometimes don\u0027t).\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bcd0b235bf3808dec5115c381cd55568f63b85f0",
      "tree": "d73c4aa83dcd5321d2c48e070020576098b9705e",
      "parents": [
        "4f0989dbfa8d18dd17c32120aac1eb3e906a62a2"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "eventfd: improve support for semaphore-like behavior\n\nPeople started using eventfd in a semaphore-like way where before they\nwere using pipes.\n\nThat is, counter-based resource access.  Where a \"wait()\" returns\nimmediately by decrementing the counter by one, if counter is greater than\nzero.  Otherwise will wait.  And where a \"post(count)\" will add count to\nthe counter releasing the appropriate amount of waiters.  If eventfd the\n\"post\" (write) part is fine, while the \"wait\" (read) does not dequeue 1,\nbut the whole counter value.\n\nThe problem with eventfd is that a read() on the fd returns and wipes the\nwhole counter, making the use of it as semaphore a little bit more\ncumbersome.  You can do a read() followed by a write() of COUNTER-1, but\nIMO it\u0027s pretty easy and cheap to make this work w/out extra steps.  This\npatch introduces a new eventfd flag that tells eventfd to only dequeue 1\nfrom the counter, allowing simple read/write to make it behave like a\nsemaphore.  Simple test here:\n\nhttp://www.xmailserver.org/eventfd-sem.c\n\nTo be back-compatible with earlier kernels, userspace applications should\nprobe for the availability of this feature via\n\n#ifdef EFD_SEMAPHORE\n\tfd \u003d eventfd2 (CNT, EFD_SEMAPHORE);\n\tif (fd \u003d\u003d -1 \u0026\u0026 errno \u003d\u003d EINVAL)\n\t\t\u003cfallback\u003e\n#else\n\t\t\u003cfallback\u003e\n#endif\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nTested-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f0989dbfa8d18dd17c32120aac1eb3e906a62a2",
      "tree": "8b81c45c23ff2a598ed67c5732dfb0ca69693aa0",
      "parents": [
        "e057e15ff66a620eda4c407486cbb8f8fbb7d878"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll: use real type instead of void *\n\neventpoll.c uses void * in one place for no obvious reason; change it to\nuse the real type instead.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e057e15ff66a620eda4c407486cbb8f8fbb7d878",
      "tree": "aa9e15c13ce5882ca0f0b442eec71d99fec8a4ff",
      "parents": [
        "d1bc90dd5d037079f96b3327f943eb6ae8ef7491"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: clean up ep_modify\n\nep_modify() doesn\u0027t need to set event.data from within the ep-\u003elock\nspinlock as the comment suggests.  The only place event.data is used is\nep_send_events_proc(), and this is protected by ep-\u003emtx instead of\nep-\u003elock.  Also update the comment for mutex_lock() at the top of\nep_scan_ready_list(), which mentions epoll_ctl(EPOLL_CTL_DEL) but not\nepoll_ctl(EPOLL_CTL_MOD).\n\nep_modify() can also use spin_lock_irq() instead of spin_lock_irqsave().\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1bc90dd5d037079f96b3327f943eb6ae8ef7491",
      "tree": "0380bd32cee23815b214d81a12b618140c544799",
      "parents": [
        "d0305882825784e74f68a56eee6c3a812a99f235"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remove unnecessary xchg\n\nxchg in ep_unregister_pollwait() is unnecessary because it is protected by\neither epmutex or ep-\u003emtx (the same protection as ep_remove()).\n\nIf xchg was necessary, it would be insufficient to protect against\nproblems: if multiple concurrent calls to ep_unregister_pollwait() were\npossible then a second caller that returns without doing anything because\nnwait \u003d\u003d 0 could return before the waitqueues are removed by the first\ncaller, which looks like it could lead to problematic races with\nep_poll_callback().\n\nSo remove xchg and add comments about the locking.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0305882825784e74f68a56eee6c3a812a99f235",
      "tree": "a4dcfea753279e1f8f4e7cc8256a8f5c195341ce",
      "parents": [
        "abff55cee1039b5a3b96f7a5eb6e65b9f247a274"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remember the event if epoll_wait returns -EFAULT\n\nIf epoll_wait returns -EFAULT, the event that was being returned when the\nfault was encountered will be forgotten.  This is not a big deal since\nEFAULT will happen only if a buggy userspace program passes in a bad\naddress, in which case what happens later usually doesn\u0027t matter.\nHowever, it is easy to remember the event for later, and this patch makes\na simple change to do that.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "abff55cee1039b5a3b96f7a5eb6e65b9f247a274",
      "tree": "dfbcc71256c2129d2e0ee3e077461103338b9591",
      "parents": [
        "bb57c3edcd2fc51d95914c39448f36e43af9d6af"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: don\u0027t use current in irq context\n\nep_call_nested() (formerly ep_poll_safewake()) uses \"current\" (without\ndereferencing it) to detect callback recursion, but it may be called from\nirq context where the use of current is generally discouraged.  It would\nbe better to use get_cpu() and put_cpu() to detect the callback recursion.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb57c3edcd2fc51d95914c39448f36e43af9d6af",
      "tree": "8d38edcdc5ef1f2694c3607829952f04ce266292",
      "parents": [
        "296e236e96dddef351a1809c0d414bcddfcf3800"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remove debugging code\n\nRemove debugging code from epoll.  There\u0027s no need for it to be included\ninto mainline code.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "296e236e96dddef351a1809c0d414bcddfcf3800",
      "tree": "279d6eb3f0114a49897cd4bbc0eaf43fffd46c6e",
      "parents": [
        "5071f97ec6d74f006072de0ce89b67c8792fe5a1"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: fix epoll\u0027s own poll (update)\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Pavel Pisa \u003cpisa@cmp.felk.cvut.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5071f97ec6d74f006072de0ce89b67c8792fe5a1",
      "tree": "cb20ebd79c6c146c73d321b4558f8176a0cf06c9",
      "parents": [
        "3cdbbeebb77348176bd6a03fd86e11bc281c529e"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "epoll: fix epoll\u0027s own poll\n\nFix a bug inside the epoll\u0027s f_op-\u003epoll() code, that returns POLLIN even\nthough there are no actual ready monitored fds.  The bug shows up if you\nadd an epoll fd inside another fd container (poll, select, epoll).\n\nThe problem is that callback-based wake ups used by epoll does not carry\n(patches will follow, to fix this) any information about the events that\nactually happened.  So the callback code, since it can\u0027t call the file*\n-\u003epoll() inside the callback, chains the file* into a ready-list.\n\nSo, suppose you added an fd with EPOLLOUT only, and some data shows up on\nthe fd, the file* mapped by the fd will be added into the ready-list (via\nwakeup callback).  During normal epoll_wait() use, this condition is\nsorted out at the time we\u0027re actually able to call the file*\u0027s\nf_op-\u003epoll().\n\nInside the old epoll\u0027s f_op-\u003epoll() though, only a quick check\n!list_empty(ready-list) was performed, and this could have led to\nreporting POLLIN even though no ready fds would show up at a following\nepoll_wait().  In order to correctly report the ready status for an epoll\nfd, the ready-list must be checked to see if any really available fd+event\nwould be ready in a following epoll_wait().\n\nOperation (calling f_op-\u003epoll() from inside f_op-\u003epoll()) that, like wake\nups, must be handled with care because of the fact that epoll fds can be\nadded to other epoll fds.\n\nTest code:\n\n/*\n *  epoll_test by Davide Libenzi (Simple code to test epoll internals)\n *  Copyright (C) 2008  Davide Libenzi\n *\n *  This program is free software; you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation; either version 2 of the License, or\n *  (at your option) any later version.\n *\n *  This program is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with this program; if not, write to the Free Software\n *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n *  Davide Libenzi \u003cdavidel@xmailserver.org\u003e\n *\n */\n\n#include \u003csys/types.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003csignal.h\u003e\n#include \u003climits.h\u003e\n#include \u003cpoll.h\u003e\n#include \u003csys/epoll.h\u003e\n#include \u003csys/wait.h\u003e\n\n#define EPWAIT_TIMEO\t(1 * 1000)\n#ifndef POLLRDHUP\n#define POLLRDHUP 0x2000\n#endif\n\n#define EPOLL_MAX_CHAIN\t100L\n\n#define EPOLL_TF_LOOP (1 \u003c\u003c 0)\n\nstruct epoll_test_cfg {\n\tlong size;\n\tlong flags;\n};\n\nstatic int xepoll_create(int n) {\n\tint epfd;\n\n\tif ((epfd \u003d epoll_create(n)) \u003d\u003d -1) {\n\t\tperror(\"epoll_create\");\n\t\texit(2);\n\t}\n\n\treturn epfd;\n}\n\nstatic void xepoll_ctl(int epfd, int cmd, int fd, struct epoll_event *evt) {\n\tif (epoll_ctl(epfd, cmd, fd, evt) \u003c 0) {\n\t\tperror(\"epoll_ctl\");\n\t\texit(3);\n\t}\n}\n\nstatic void xpipe(int *fds) {\n\tif (pipe(fds)) {\n\t\tperror(\"pipe\");\n\t\texit(4);\n\t}\n}\n\nstatic pid_t xfork(void) {\n\tpid_t pid;\n\n\tif ((pid \u003d fork()) \u003d\u003d (pid_t) -1) {\n\t\tperror(\"pipe\");\n\t\texit(5);\n\t}\n\n\treturn pid;\n}\n\nstatic int run_forked_proc(int (*proc)(void *), void *data) {\n\tint status;\n\tpid_t pid;\n\n\tif ((pid \u003d xfork()) \u003d\u003d 0)\n\t\texit((*proc)(data));\n\tif (waitpid(pid, \u0026status, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn WIFEXITED(status) ? WEXITSTATUS(status): -2;\n}\n\nstatic int check_events(int fd, int timeo) {\n\tstruct pollfd pfd;\n\n\tfprintf(stdout, \"Checking events for fd %d\\n\", fd);\n\tmemset(\u0026pfd, 0, sizeof(pfd));\n\tpfd.fd \u003d fd;\n\tpfd.events \u003d POLLIN | POLLOUT;\n\tif (poll(\u0026pfd, 1, timeo) \u003c 0) {\n\t\tperror(\"poll()\");\n\t\treturn 0;\n\t}\n\tif (pfd.revents \u0026 POLLIN)\n\t\tfprintf(stdout, \"\\tPOLLIN\\n\");\n\tif (pfd.revents \u0026 POLLOUT)\n\t\tfprintf(stdout, \"\\tPOLLOUT\\n\");\n\tif (pfd.revents \u0026 POLLERR)\n\t\tfprintf(stdout, \"\\tPOLLERR\\n\");\n\tif (pfd.revents \u0026 POLLHUP)\n\t\tfprintf(stdout, \"\\tPOLLHUP\\n\");\n\tif (pfd.revents \u0026 POLLRDHUP)\n\t\tfprintf(stdout, \"\\tPOLLRDHUP\\n\");\n\n\treturn pfd.revents;\n}\n\nstatic int epoll_test_tty(void *data) {\n\tint epfd, ifd \u003d fileno(stdin), res;\n\tstruct epoll_event evt;\n\n\tif (check_events(ifd, 0) !\u003d POLLOUT) {\n\t\tfprintf(stderr, \"Something is cooking on STDIN (%d)\\n\", ifd);\n\t\treturn 1;\n\t}\n\tepfd \u003d xepoll_create(1);\n\tfprintf(stdout, \"Created epoll fd (%d)\\n\", epfd);\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\txepoll_ctl(epfd, EPOLL_CTL_ADD, ifd, \u0026evt);\n\tif (check_events(epfd, 0) \u0026 POLLIN) {\n\t\tres \u003d epoll_wait(epfd, \u0026evt, 1, 0);\n\t\tif (res \u003d\u003d 0) {\n\t\t\tfprintf(stderr, \"Epoll fd (%d) is ready when it shouldn\u0027t!\\n\",\n\t\t\t\tepfd);\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\nstatic int epoll_wakeup_chain(void *data) {\n\tstruct epoll_test_cfg *tcfg \u003d data;\n\tint i, res, epfd, bfd, nfd, pfds[2];\n\tpid_t pid;\n\tstruct epoll_event evt;\n\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\n\tepfd \u003d bfd \u003d xepoll_create(1);\n\n\tfor (i \u003d 0; i \u003c tcfg-\u003esize; i++) {\n\t\tnfd \u003d xepoll_create(1);\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, nfd, \u0026evt);\n\t\tbfd \u003d nfd;\n\t}\n\txpipe(pfds);\n\tif (tcfg-\u003eflags \u0026 EPOLL_TF_LOOP)\n\t{\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, epfd, \u0026evt);\n\t\t/*\n\t\t * If we\u0027re testing for loop, we want that the wakeup\n\t\t * triggered by the write to the pipe done in the child\n\t\t * process, triggers a fake event. So we add the pipe\n\t\t * read size with EPOLLOUT events. This will trigger\n\t\t * an addition to the ready-list, but no real events\n\t\t * will be there. The the epoll kernel code will proceed\n\t\t * in calling f_op-\u003epoll() of the epfd, triggering the\n\t\t * loop we want to test.\n\t\t */\n\t\tevt.events \u003d EPOLLOUT;\n\t}\n\txepoll_ctl(bfd, EPOLL_CTL_ADD, pfds[0], \u0026evt);\n\n\t/*\n\t * The pipe write must come after the poll(2) call inside\n\t * check_events(). This tests the nested wakeup code in\n\t * fs/eventpoll.c:ep_poll_safewake()\n\t * By having the check_events() (hence poll(2)) happens first,\n\t * we have poll wait queue filled up, and the write(2) in the\n\t * child will trigger the wakeup chain.\n\t */\n\tif ((pid \u003d xfork()) \u003d\u003d 0) {\n\t\tsleep(1);\n\t\twrite(pfds[1], \"w\", 1);\n\t\texit(0);\n\t}\n\n\tres \u003d check_events(epfd, 2000) \u0026 POLLIN;\n\n\tif (waitpid(pid, NULL, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn res;\n}\n\nstatic int epoll_poll_chain(void *data) {\n\tstruct epoll_test_cfg *tcfg \u003d data;\n\tint i, res, epfd, bfd, nfd, pfds[2];\n\tpid_t pid;\n\tstruct epoll_event evt;\n\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\n\tepfd \u003d bfd \u003d xepoll_create(1);\n\n\tfor (i \u003d 0; i \u003c tcfg-\u003esize; i++) {\n\t\tnfd \u003d xepoll_create(1);\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, nfd, \u0026evt);\n\t\tbfd \u003d nfd;\n\t}\n\txpipe(pfds);\n\tif (tcfg-\u003eflags \u0026 EPOLL_TF_LOOP)\n\t{\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, epfd, \u0026evt);\n\t\t/*\n\t\t * If we\u0027re testing for loop, we want that the wakeup\n\t\t * triggered by the write to the pipe done in the child\n\t\t * process, triggers a fake event. So we add the pipe\n\t\t * read size with EPOLLOUT events. This will trigger\n\t\t * an addition to the ready-list, but no real events\n\t\t * will be there. The the epoll kernel code will proceed\n\t\t * in calling f_op-\u003epoll() of the epfd, triggering the\n\t\t * loop we want to test.\n\t\t */\n\t\tevt.events \u003d EPOLLOUT;\n\t}\n\txepoll_ctl(bfd, EPOLL_CTL_ADD, pfds[0], \u0026evt);\n\n\t/*\n\t * The pipe write mush come before the poll(2) call inside\n\t * check_events(). This tests the nested f_op-\u003epoll calls code in\n\t * fs/eventpoll.c:ep_eventpoll_poll()\n\t * By having the pipe write(2) happen first, we make the kernel\n\t * epoll code to load the ready lists, and the following poll(2)\n\t * done inside check_events() will test nested poll code in\n\t * ep_eventpoll_poll().\n\t */\n\tif ((pid \u003d xfork()) \u003d\u003d 0) {\n\t\twrite(pfds[1], \"w\", 1);\n\t\texit(0);\n\t}\n\tsleep(1);\n\tres \u003d check_events(epfd, 1000) \u0026 POLLIN;\n\n\tif (waitpid(pid, NULL, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn res;\n}\n\nint main(int ac, char **av) {\n\tint error;\n\tstruct epoll_test_cfg tcfg;\n\n\tfprintf(stdout, \"\\n********** Testing TTY events\\n\");\n\terror \u003d run_forked_proc(epoll_test_tty, NULL);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing short wakeup chain\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d POLLIN ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d EPOLL_MAX_CHAIN;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing long wakeup chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing short poll chain\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d POLLIN ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d EPOLL_MAX_CHAIN;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing long poll chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d EPOLL_TF_LOOP;\n\tfprintf(stdout, \"\\n********** Testing loopy wakeup chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d EPOLL_TF_LOOP;\n\tfprintf(stdout, \"\\n********** Testing loopy poll chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\treturn 0;\n}\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Pavel Pisa \u003cpisa@cmp.felk.cvut.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "63cd885426872254e82dac2d9e13ea4f720c21dc",
      "tree": "addd6687abbbcd428c179260737fc97b25b7aa64",
      "parents": [
        "311d07611e8b354cc1ee6546e4c574c01111adc8"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Tue Mar 31 15:23:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "ntfs: remove private wrapper of endian helpers\n\nThe base versions handle constant folding now and are shorter than these\nprivate wrappers, use them directly.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2d7543851849a6923680cdd7e1047ed1a84a1c5",
      "tree": "bf3038819d4be83a1d1e64d7b95bbb3d9d908544",
      "parents": [
        "55a63998b8967615a15e2211ba0ff3a84a565824"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Mar 31 15:23:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "filesystem freeze: allow SysRq emergency thaw to thaw frozen filesystems\n\nNow that the filesystem freeze operation has been elevated to the VFS, and\nis just an ioctl away, some sort of safety net for unintentionally frozen\nroot filesystems may be in order.\n\nThe timeout thaw originally proposed did not get merged, but perhaps\nsomething like this would be useful in emergencies.\n\nFor example, freeze /path/to/mountpoint may freeze your root filesystem if\nyou forgot that you had that unmounted.\n\nI chose \u0027j\u0027 as the last remaining character other than \u0027h\u0027 which is sort\nof reserved for help (because help is generated on any unknown character).\n\nI\u0027ve tested this on a non-root fs with multiple (nested) freezers, as well\nas on a system rendered unresponsive due to a frozen root fs.\n\n[randy.dunlap@oracle.com: emergency thaw only if CONFIG_BLOCK enabled]\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Takashi Sato \u003ct-sato@yk.jp.nec.com\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "327c0e968645f2601a43f5ea7c19c7b3a5fa0a34",
      "tree": "acc6789c120a6d5000ceebf51e690d14c6cfcacb",
      "parents": [
        "2678958e1225f350806d90f211a3b475f64aee80"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Mar 31 15:23:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "vmscan: fix it to take care of nodemask\n\ntry_to_free_pages() is used for the direct reclaim of up to\nSWAP_CLUSTER_MAX pages when watermarks are low.  The caller to\nalloc_pages_nodemask() can specify a nodemask of nodes that are allowed to\nbe used but this is not passed to try_to_free_pages().  This can lead to\nunnecessary reclaim of pages that are unusable by the caller and int the\nworst case lead to allocation failure as progress was not been make where\nit is needed.\n\nThis patch passes the nodemask used for alloc_pages_nodemask() to\ntry_to_free_pages().\n\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@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": "2678958e1225f350806d90f211a3b475f64aee80",
      "tree": "d4aeb116c78f31f96ffb0760e36b95424e7f9494",
      "parents": [
        "88c3bd707c2552bcef93cc3724647903aece159d"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Mar 31 15:23:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "ramfs-nommu: use generic lru cache\n\nInstead of open-coding the lru-list-add pagevec batching when expanding a\nfile mapping from zero, defer to the appropriate page cache function that\nalso takes care of adding the page to the lru list.\n\nThis is cleaner, saves code and reduces the stack footprint by 16 words\nworth of pagevec.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.com\u003e\nCc: MinChan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "851a039cc547b33b8139fe6d7c2bbfb158e2724e",
      "tree": "0deabfe04b648d7542de8dd36dcd384d03fe09f6",
      "parents": [
        "56a76f8275c379ed73c8a43cfa1dfa2f5e9cfa19"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 31 15:23:24 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: fix sysfs\n\nFix warnings and return values in sysfs bin_page_mkwrite(), fixing\nfs/sysfs/bin.c: In function `bin_page_mkwrite\u0027:\nfs/sysfs/bin.c:250: warning: passing argument 2 of `bb-\u003evm_ops-\u003epage_mkwrite\u0027 from incompatible pointer type\nfs/sysfs/bin.c: At top level:\nfs/sysfs/bin.c:280: warning: initialization from incompatible pointer type\n\nExpects to have my [PATCH next] sysfs: fix some bin_vm_ops errors\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56a76f8275c379ed73c8a43cfa1dfa2f5e9cfa19",
      "tree": "cbeaa82516c4818f72535b6ebe48a607cef88af4",
      "parents": [
        "c2ec175c39f62949438354f603f4aa170846aabb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 31 15:23:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "fs: fix page_mkwrite error cases in core code and btrfs\n\npage_mkwrite is called with neither the page lock nor the ptl held.  This\nmeans a page can be concurrently truncated or invalidated out from\nunderneath it.  Callers are supposed to prevent truncate races themselves,\nhowever previously the only thing they can do in case they hit one is to\nraise a SIGBUS.  A sigbus is wrong for the case that the page has been\ninvalidated or truncated within i_size (eg.  hole punched).  Callers may\nalso have to perform memory allocations in this path, where again, SIGBUS\nwould be wrong.\n\nThe previous patch (\"mm: page_mkwrite change prototype to match fault\")\nmade it possible to properly specify errors.  Convert the generic buffer.c\ncode and btrfs to return sane error values (in the case of page removed\nfrom pagecache, VM_FAULT_NOPAGE will cause the fault handler to exit\nwithout doing anything, and the fault will be retried properly).\n\nThis fixes core code, and converts btrfs as a template/example.  All other\nfilesystems defining their own page_mkwrite should be fixed in a similar\nmanner.\n\nAcked-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2ec175c39f62949438354f603f4aa170846aabb",
      "tree": "f2c9bf1bec2deabe2d3a5092405b027637b6ead3",
      "parents": [
        "c2fdf3a9b2d52842808a8e551b53b55dd9b45030"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 31 15:23:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: page_mkwrite change prototype to match fault\n\nChange the page_mkwrite prototype to take a struct vm_fault, and return\nVM_FAULT_xxx flags.  There should be no functional change.\n\nThis makes it possible to return much more detailed error information to\nthe VM (and also can provide more information eg.  virtual_address to the\ndriver, which might be important in some special cases).\n\nThis is required for a subsequent fix.  And will also make it easier to\nmerge page_mkwrite() with fault() in future.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nCc: Felix Blyakher \u003cfelixb@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2584e517320bd48dc8d20e38a2621a2dbe58fade",
      "tree": "3b94b6c4cc10ab16ab106464e8d32e2e77ad8634",
      "parents": [
        "8a0bdec194c21c8fdef840989d0d7b742bb5d4bc"
      ],
      "author": {
        "name": "Ravikiran G Thirumalai",
        "email": "kiran@scalex86.org",
        "time": "Tue Mar 31 15:21:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:12 2009 -0700"
      },
      "message": "mm: reintroduce and deprecate rlimit based access for SHM_HUGETLB\n\nAllow non root users with sufficient mlock rlimits to be able to allocate\nhugetlb backed shm for now.  Deprecate this though.  This is being\ndeprecated because the mlock based rlimit checks for SHM_HUGETLB is not\nconsistent with mmap based huge page allocations.\n\nSigned-off-by: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nReviewed-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a0bdec194c21c8fdef840989d0d7b742bb5d4bc",
      "tree": "0185e4cfa29f18a2f7b9d297e049a1de5314d0ec",
      "parents": [
        "e3a7cca1ef4c1af9b0acef9bd66eff6582a737b5"
      ],
      "author": {
        "name": "Ravikiran G Thirumalai",
        "email": "kiran@scalex86.org",
        "time": "Tue Mar 31 15:19:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:12 2009 -0700"
      },
      "message": "mm: fix SHM_HUGETLB to work with users in hugetlb_shm_group\n\nFix hugetlb subsystem so that non root users belonging to\nhugetlb_shm_group can actually allocate hugetlb backed shm.\n\nCurrently non root users cannot even map one large page using SHM_HUGETLB\nwhen they belong to the gid in /proc/sys/vm/hugetlb_shm_group.  This is\nbecause allocation size is verified against RLIMIT_MEMLOCK resource limit\neven if the user belongs to hugetlb_shm_group.\n\nThis patch\n1. Fixes hugetlb subsystem so that users with CAP_IPC_LOCK and users\n   belonging to hugetlb_shm_group don\u0027t need to be restricted with\n   RLIMIT_MEMLOCK resource limits\n2. This patch also disables mlock based rlimit checking (which will\n   be reinstated and marked deprecated in a subsequent patch).\n\nSigned-off-by: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nReviewed-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e3a7cca1ef4c1af9b0acef9bd66eff6582a737b5",
      "tree": "717097ec82ce0de55e44b2fe3e35fa041e5169b2",
      "parents": [
        "bd2f6199cf9af472aeefa1b642c9f504f19e6008"
      ],
      "author": {
        "name": "Edward Shishkin",
        "email": "edward.shishkin@gmail.com",
        "time": "Tue Mar 31 15:19:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:12 2009 -0700"
      },
      "message": "vfs: add/use account_page_dirtied()\n\nAdd a helper function account_page_dirtied().  Use that from two\ncallsites.  reiser4 adds a function which adds a third callsite.\n\nSigned-off-by: Edward Shishkin\u003cedward.shishkin@gmail.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f043a81ebe84be3576667f04fdda481609e3816",
      "tree": "c54a9ac4a1dc79bd5f2f7ec3ead5aa48802ff7a3",
      "parents": [
        "140716934f67a9b28c3f7032c07c20c746d97a31"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 15:19:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:10 2009 -0700"
      },
      "message": "proc tty: remove struct tty_operations::read_proc\n\nstruct tty_operations::proc_fops took it\u0027s place and there is one less\ncreate_proc_read_entry() user now!\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ae149b6bec64a09373ba20fce75f8aa6b14b78fd",
      "tree": "5e2f1fdfc223b76ab798c87fd25bcff8d5f92eeb",
      "parents": [
        "15f7176eb1cccec0a332541285ee752b935c1c85"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 15:19:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:08 2009 -0700"
      },
      "message": "proc tty: add struct tty_operations::proc_fops\n\nUsed for gradual switch of TTY drivers from using -\u003eread_proc which helps\nwith gradual switch from -\u003eread_proc for the whole tree.\n\nAs side effect, fix possible race condition when -\u003edata initialized after\nPDE is hooked into proc tree.\n\n-\u003eproc_fops takes precedence over -\u003eread_proc.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d57e62b89796f751c9422801cbcd407a9f8dcdc4",
      "tree": "353960256ddf5f92aa391a2ea570bea1d2d11fa8",
      "parents": [
        "5a3f23d515a2ebf0c750db80579ca57b28cbce6d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 31 13:47:50 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 31 14:27:58 2009 -0400"
      },
      "message": "Btrfs: try to free metadata pages when we free btree blocks\n\nCOW means we cycle though blocks fairly quickly, and once we\nfree an extent on disk, it doesn\u0027t make much sense to keep the pages around.\n\nThis commit tries to immediately free the page when we free the extent,\nwhich lowers our memory footprint significantly.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5a3f23d515a2ebf0c750db80579ca57b28cbce6d",
      "tree": "e0ffb43dd35f1c3def9a74ec7a6f4470902c9761",
      "parents": [
        "1a81af4d1d9c60d4313309f937a1fc5567205a87"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 31 13:27:11 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 31 14:27:58 2009 -0400"
      },
      "message": "Btrfs: add extra flushing for renames and truncates\n\nRenames and truncates are both common ways to replace old data with new\ndata.  The filesystem can make an effort to make sure the new data is\non disk before actually replacing the old data.\n\nThis is especially important for rename, which many application use as\nthough it were atomic for both the data and the metadata involved.  The\ncurrent btrfs code will happily replace a file that is fully on disk\nwith one that was just created and still has pending IO.\n\nIf we crash after transaction commit but before the IO is done, we\u0027ll end\nup replacing a good file with a zero length file.  The solution used\nhere is to create a list of inodes that need special ordering and force\nthem to disk before the commit is done.  This is similar to the\next3 style data\u003dordering, except it is only done on selected files.\n\nBtrfs is able to get away with this because it does not wait on commits\nvery often, even for fsync (which use a sub-commit).\n\nFor renames, we order the file when it wasn\u0027t already\non disk and when it is replacing an existing file.  Larger files\nare sent to filemap_flush right away (before the transaction handle is\nopened).\n\nFor truncates, we order if the file goes from non-zero size down to\nzero size.  This is a little different, because at the time of the\ntruncate the file has no dirty bytes to order.  But, we flag the inode\nso that it is added to the ordered list on close (via release method).  We\nalso immediately add it to the ordered list of the current transaction\nso that we can try to flush down any writes the application sneaks in\nbefore commit.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d17abcd5417d84cfa8a225160481203a37dc81d4",
      "tree": "74ce2c425c5c6550acec90bc92c8a3f735f0d257",
      "parents": [
        "db6f204019380c788f1de06ee937bdbccd60e5c0",
        "bb75efddeaca89f8a67fd82cdcbaaf436cf17ca9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 18:00:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 18:00:26 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask:\n  oprofile: Thou shalt not call __exit functions from __init functions\n  cpumask: remove the now-obsoleted pcibus_to_cpumask(): generic\n  cpumask: remove cpumask_t from core\n  cpumask: convert rcutorture.c\n  cpumask: use new cpumask_ functions in core code.\n  cpumask: remove references to struct irqaction\u0027s mask field.\n  cpumask: use mm_cpumask() wrapper: kernel/fork.c\n  cpumask: use set_cpu_active in init/main.c\n  cpumask: remove node_to_first_cpu\n  cpumask: fix seq_bitmap_*() functions.\n  cpumask: remove dangerous CPU_MASK_ALL_PTR, \u0026CPU_MASK_ALL\n"
    },
    {
      "commit": "cf2f7d7c90279cdbc12429de278f3d27ac2050ae",
      "tree": "c84bb54712f566e6497ccadd1ae9f42b4baf0c63",
      "parents": [
        "53d8f67082c9b86699dd88b7f9e667e245193f21",
        "a9caa3de249a6c43bc9c6aec87881f09276677e3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 16:06:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 16:06:04 2009 -0700"
      },
      "message": "Merge branch \u0027proc-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc\n\n* \u0027proc-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc:\n  Revert \"proc: revert /proc/uptime to -\u003eread_proc hook\"\n  proc 2/2: remove struct proc_dir_entry::owner\n  proc 1/2: do PDE usecounting even for -\u003eread_proc, -\u003ewrite_proc\n  proc: fix sparse warnings in pagemap_read()\n  proc: move fs/proc/inode-alloc.txt comment into a source file\n"
    },
    {
      "commit": "3a355cc61d41bc31cc23a57247df63dba80a6018",
      "tree": "cf39d0b861fa8a33b748a95f3c86bbb33d9c2dac",
      "parents": [
        "77e465867080c2d1e0c410e96dcdcd51e8584a6f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 16:49:58 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 14:28:58 2009 -0700"
      },
      "message": "reiserfs: xattr_create is unused with xattrs disabled\n\nThis patch ifdefs xattr_create when xattrs aren\u0027t enabled.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a9caa3de249a6c43bc9c6aec87881f09276677e3",
      "tree": "900831b12af9b3cd4743d4ae5ed5a457f8125edb",
      "parents": [
        "99b76233803beab302123d243eea9e41149804f3"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Feb 20 17:07:22 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:58 2009 +0400"
      },
      "message": "Revert \"proc: revert /proc/uptime to -\u003eread_proc hook\"\n\nThis reverts commit 6c87df37dcb9c6c33923707fa5191e0a65874d60.\n\nproc files implemented through seq_file do pread(2) now.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "99b76233803beab302123d243eea9e41149804f3",
      "tree": "398178210fe66845ccd6fa4258ba762a87e023ad",
      "parents": [
        "3dec7f59c370c7b58184d63293c3dc984d475840"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Mar 25 22:48:06 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:44 2009 +0400"
      },
      "message": "proc 2/2: remove struct proc_dir_entry::owner\n\nSetting -\u003eowner as done currently (pde-\u003eowner \u003d THIS_MODULE) is racy\nas correctly noted at bug #12454. Someone can lookup entry with NULL\n-\u003eowner, thus not pinning enything, and release it later resulting\nin module refcount underflow.\n\nWe can keep -\u003eowner and supply it at registration time like -\u003eproc_fops\nand -\u003edata.\n\nBut this leaves -\u003eowner as easy-manipulative field (just one C assignment)\nand somebody will forget to unpin previous/pin current module when\nswitching -\u003eowner. -\u003eproc_fops is declared as \"const\" which should give\nsome thoughts.\n\n-\u003eread_proc/-\u003ewrite_proc were just fixed to not require -\u003eowner for\nprotection.\n\nrmmod\u0027ed directories will be empty and return \".\" and \"..\" -- no harm.\nAnd directories with tricky enough readdir and lookup shouldn\u0027t be modular.\nWe definitely don\u0027t want such modular code.\n\nRemoving -\u003eowner will also make PDE smaller.\n\nSo, let\u0027s nuke it.\n\nKudos to Jeff Layton for reminding about this, let\u0027s say, oversight.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12454\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "3dec7f59c370c7b58184d63293c3dc984d475840",
      "tree": "54df7ab53c1f625179e2b69c78b782b5a867363e",
      "parents": [
        "09729a9919fdaf137995b0f19cbd401e22229cac"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Feb 20 17:04:33 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:27 2009 +0400"
      },
      "message": "proc 1/2: do PDE usecounting even for -\u003eread_proc, -\u003ewrite_proc\n\nstruct proc_dir_entry::owner is going to be removed. Now it\u0027s only necessary\nto protect PDEs which are using -\u003eread_proc, -\u003ewrite_proc hooks.\n\nHowever, -\u003eowner assignments are racy and make it very easy for someone to switch\n-\u003eowner on live PDE (as some subsystems do) without fixing refcounts and so on.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12454\n\nSo, -\u003eowner is on death row.\n\nProxy file operations exist already (proc_file_operations), just bump usecount\nwhen necessary.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "09729a9919fdaf137995b0f19cbd401e22229cac",
      "tree": "54b187f7fade4f4669f37935f019b6f8c23b5df4",
      "parents": [
        "1681bc30f272dd2fe347b90468791b05c7044f03"
      ],
      "author": {
        "name": "Milind Arun Choudhary",
        "email": "milindchoudhary@gmail.com",
        "time": "Fri Feb 20 16:56:45 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:22 2009 +0400"
      },
      "message": "proc: fix sparse warnings in pagemap_read()\n\nfs/proc/task_mmu.c:696:12: warning: cast removes address space of expression\nfs/proc/task_mmu.c:696:9: warning: incorrect type in assignment (different address spaces)\nfs/proc/task_mmu.c:696:9:    expected unsigned long long [noderef] [usertype] \u003casn:1\u003e*out\nfs/proc/task_mmu.c:696:9:    got unsigned long long [usertype] *\u003cnoident\u003e\nfs/proc/task_mmu.c:697:12: warning: cast removes address space of expression\nfs/proc/task_mmu.c:697:9: warning: incorrect type in assignment (different address spaces)\nfs/proc/task_mmu.c:697:9:    expected unsigned long long [noderef] [usertype] \u003casn:1\u003e*end\nfs/proc/task_mmu.c:697:9:    got unsigned long long [usertype] *\u003cnoident\u003e\nfs/proc/task_mmu.c:723:12: warning: cast removes address space of expression\nfs/proc/task_mmu.c:723:26: error: subtraction of different types can\u0027t work (different address spaces)\nfs/proc/task_mmu.c:725:24: error: subtraction of different types can\u0027t work (different address spaces)\n\nSigned-off-by: Milind Arun Choudhary \u003cmilindchoudhary@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "1681bc30f272dd2fe347b90468791b05c7044f03",
      "tree": "72a37dcde9c2536594d3eab4deca8997d34d39d5",
      "parents": [
        "e1c502482853f84606928f5a2f2eb6da1993cda1"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue Jan 13 13:53:48 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:13:12 2009 +0400"
      },
      "message": "proc: move fs/proc/inode-alloc.txt comment into a source file\n\nso that people will realize that it exists and can update it as needed.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "e1c502482853f84606928f5a2f2eb6da1993cda1",
      "tree": "ca296007164906342a195bdf3a5305277e6af5da",
      "parents": [
        "019abbc87025a030fd25008612afd4eff8a375f7",
        "ee93961be1faddf9e9a638bc519145c20f0cfeba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:29:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:33:01 2009 -0700"
      },
      "message": "Merge branch \u0027reiserfs-updates\u0027 from Jeff Mahoney\n\n* reiserfs-updates: (35 commits)\n  reiserfs: rename [cn]_* variables\n  reiserfs: rename p_._ variables\n  reiserfs: rename p_s_tb to tb\n  reiserfs: rename p_s_inode to inode\n  reiserfs: rename p_s_bh to bh\n  reiserfs: rename p_s_sb to sb\n  reiserfs: strip trailing whitespace\n  reiserfs: cleanup path functions\n  reiserfs: factor out buffer_info initialization\n  reiserfs: add atomic addition of selinux attributes during inode creation\n  reiserfs: use generic readdir for operations across all xattrs\n  reiserfs: journaled xattrs\n  reiserfs: use generic xattr handlers\n  reiserfs: remove i_has_xattr_dir\n  reiserfs: make per-inode xattr locking more fine grained\n  reiserfs: eliminate per-super xattr lock\n  reiserfs: simplify xattr internal file lookups/opens\n  reiserfs: Clean up xattrs when REISERFS_FS_XATTR is unset\n  reiserfs: remove IS_PRIVATE helpers\n  reiserfs: remove link detection code\n  ...\n\nFixed up conflicts manually due to:\n - quota name cleanups vs variable naming changes:\n\tfs/reiserfs/inode.c\n\tfs/reiserfs/namei.c\n\tfs/reiserfs/stree.c\n        fs/reiserfs/xattr.c\n - exported include header cleanups\n\tinclude/linux/reiserfs_fs.h\n"
    },
    {
      "commit": "ee93961be1faddf9e9a638bc519145c20f0cfeba",
      "tree": "9c62f05dca9ea72c2b419a7f1f9d5874b587e5ab",
      "parents": [
        "d68caa9530a8ba54f97002e02bf6a0ad2462b8c0"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:50 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:40 2009 -0700"
      },
      "message": "reiserfs: rename [cn]_* variables\n\nThis patch renames n_, c_, etc variables to something more sane.  This\nis the sixth in a series of patches to rip out some of the awful\nvariable naming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d68caa9530a8ba54f97002e02bf6a0ad2462b8c0",
      "tree": "39a2b877483270253f95f3678a4559e9bd5524e8",
      "parents": [
        "a063ae17925cafabe55ebe1957ca0e8c480bd132"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:49 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:40 2009 -0700"
      },
      "message": "reiserfs: rename p_._ variables\n\nThis patch is a simple s/p_._//g to the reiserfs code.  This is the\nfifth in a series of patches to rip out some of the awful variable\nnaming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a063ae17925cafabe55ebe1957ca0e8c480bd132",
      "tree": "85d8797ec51124d33398a15a5a8d5a6b81e3a36f",
      "parents": [
        "995c762ea486b48c9777522071fbf132dea96807"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:48 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:40 2009 -0700"
      },
      "message": "reiserfs: rename p_s_tb to tb\n\nThis patch is a simple s/p_s_tb/tb/g to the reiserfs code.  This is the\nfourth in a series of patches to rip out some of the awful variable\nnaming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "995c762ea486b48c9777522071fbf132dea96807",
      "tree": "d6d82ca71ca67a98687762b83ce2858eb8dc624f",
      "parents": [
        "ad31a4fc0386e8590c51ca4b8f1ae1d8b8b2ac5e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:47 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: rename p_s_inode to inode\n\nThis patch is a simple s/p_s_inode/inode/g to the reiserfs code.  This\nis the third in a series of patches to rip out some of the awful\nvariable naming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ad31a4fc0386e8590c51ca4b8f1ae1d8b8b2ac5e",
      "tree": "636010f3ba98e15245f04ade1a74a730e40abf57",
      "parents": [
        "a9dd364358fbdc68faee5d20c2d648c320dc3cf0"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:46 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: rename p_s_bh to bh\n\nThis patch is a simple s/p_s_bh/bh/g to the reiserfs code.  This is the\nsecond in a series of patches to rip out some of the awful variable\nnaming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a9dd364358fbdc68faee5d20c2d648c320dc3cf0",
      "tree": "effcf61e5e198083faff82dc1e0bd6071639fca8",
      "parents": [
        "0222e6571c332563a48d4cf5487b67feabe60b5e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:45 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: rename p_s_sb to sb\n\nThis patch is a simple s/p_s_sb/sb/g to the reiserfs code.  This is the\nfirst in a series of patches to rip out some of the awful variable\nnaming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0222e6571c332563a48d4cf5487b67feabe60b5e",
      "tree": "44829ca0a4b1343edec08d4f70696cb0d3218975",
      "parents": [
        "3cd6dbe6feb9b32347e6c6f25a27f0cde9d50418"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:44 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: strip trailing whitespace\n\nThis patch strips trailing whitespace from the reiserfs code.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3cd6dbe6feb9b32347e6c6f25a27f0cde9d50418",
      "tree": "613a4aaa00bc830b69a97ff2cb3558dc163f957d",
      "parents": [
        "fba4ebb5f0f84a6f9989e9591741ddff946de320"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:43 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: cleanup path functions\n\nThis patch cleans up some redundancies in the reiserfs tree path code.\n\ndecrement_bcount() is essentially the same function as brelse(), so we use\nthat instead.\n\ndecrement_counters_in_path() is exactly the same function as pathrelse(), so\nwe kill that and use pathrelse() instead.\n\nThere\u0027s also a bit of cleanup that makes the code a bit more readable.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fba4ebb5f0f84a6f9989e9591741ddff946de320",
      "tree": "7d140b781292f00a70a98f0f938fc2ac6f0896c0",
      "parents": [
        "57fe60df62410f949da094d06ced1dda9575b69c"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:42 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: factor out buffer_info initialization\n\nThis is the first in a series of patches to make balance_leaf() not\nquite so insane.\n\nThis patch factors out the open coded initializations of buffer_info\nstructures and defines a few initializers for the 4 cases they\u0027re used.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "57fe60df62410f949da094d06ced1dda9575b69c",
      "tree": "f3ba5db112cd7d2a8865d16bece28c38a766145c",
      "parents": [
        "a41f1a4715f26f7bc4d047d0bc7710145c8e69c7"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:41 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: add atomic addition of selinux attributes during inode creation\n\nSome time ago, some changes were made to make security inode attributes\nbe atomically written during inode creation.  ReiserFS fell behind in\nthis area, but with the reworking of the xattr code, it\u0027s now fairly\neasy to add.\n\nThe following patch adds the ability for security attributes to be added\nautomatically during inode creation.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a41f1a4715f26f7bc4d047d0bc7710145c8e69c7",
      "tree": "8b5d94368e774ec490619593300e8b3f4b7c5cb1",
      "parents": [
        "0ab2621ebd9a28bf7a524ecd50d492a10579dfcc"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:40 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: use generic readdir for operations across all xattrs\n\nThe current reiserfs xattr implementation open codes reiserfs_readdir\nand frees the path before calling the filldir function.  Typically, the\nfilldir function is something that modifies the file system, such as a\nchown or an inode deletion that also require reading of an inode\nassociated with each direntry.  Since the file system is modified, the\npath retained becomes invalid for the next run.  In addition, it runs\nbackwards in attempt to minimize activity.\n\nThis is clearly suboptimal from a code cleanliness perspective as well\nas performance-wise.\n\nThis patch implements a generic reiserfs_for_each_xattr that uses the\ngeneric readdir and a specific filldir routine that simply populates an\narray of dentries and then performs a specific operation on them.  When\nall files have been operated on, it then calls the operation on the\ndirectory itself.\n\nThe result is a noticable code reduction and better performance.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ab2621ebd9a28bf7a524ecd50d492a10579dfcc",
      "tree": "62dda6de2fed116aff363190f95a58d56c690e3e",
      "parents": [
        "48b32a3553a54740d236b79a90f20147a25875e3"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:39 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: journaled xattrs\n\nDeadlocks are possible in the xattr code between the journal lock and the\nxattr sems.\n\nThis patch implements journalling for xattr operations. The benefit is\ntwofold:\n * It gets rid of the deadlock possibility by always ensuring that xattr\n   write operations are initiated inside a transaction.\n * It corrects the problem where xattr backing files aren\u0027t considered any\n   differently than normal files, despite the fact they are metadata.\n\nI discussed the added journal load with Chris Mason, and we decided that\nsince xattrs (versus other journal activity) is fairly rare, the introduction\nof larger transactions to support journaled xattrs wouldn\u0027t be too big a deal.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "48b32a3553a54740d236b79a90f20147a25875e3",
      "tree": "faf6807facb5825608469a9e33c9127f90b974df",
      "parents": [
        "8ecbe550a142fe604874afa477ea68986f89b86c"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:38 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: use generic xattr handlers\n\nChristoph Hellwig had asked me quite some time ago to port the reiserfs\nxattrs to the generic xattr interface.\n\nThis patch replaces the reiserfs-specific xattr handling code with the\ngeneric struct xattr_handler.\n\nHowever, since reiserfs doesn\u0027t split the prefix and name when accessing\nxattrs, it can\u0027t leverage generic_{set,get,list,remove}xattr without\nneedlessly reconstructing the name on the back end.\n\nUpdate 7/26/07: Added missing dput() to deletion path.\nUpdate 8/30/07: Added missing mark_inode_dirty when i_mode is used to\n                represent an ACL and no previous ACL existed.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8ecbe550a142fe604874afa477ea68986f89b86c",
      "tree": "3b11a69188137b478894f24079b8cc56df7843b3",
      "parents": [
        "8b6dd72a441a683cef7ace93de0a57ced4367f00"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:37 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: remove i_has_xattr_dir\n\nWith the changes to xattr root locking, the i_has_xattr_dir flag\nis no longer needed. This patch removes it.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b6dd72a441a683cef7ace93de0a57ced4367f00",
      "tree": "6bdeebd3a35d71db2c7ea3e48e3f617b5efbd81a",
      "parents": [
        "d984561b326cd0fe0d1183d11b9b4fa1d011d21d"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:36 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: make per-inode xattr locking more fine grained\n\nThe per-inode locking can be made more fine-grained to surround just the\ninteraction with the filesystem itself.  This really only applies to\nprotecting reads during a write, since concurrent writes are barred with\ninode-\u003ei_mutex at the vfs level.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d984561b326cd0fe0d1183d11b9b4fa1d011d21d",
      "tree": "e0487588581bccaa2b875529ed84ec5a4a254ab9",
      "parents": [
        "6c17675e1e02ebde220ef639a3fb1333928ec2f4"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:35 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: eliminate per-super xattr lock\n\nWith the switch to using inode-\u003ei_mutex locking during lookups/creation\nin the xattr root, the per-super xattr lock is no longer needed.\n\nThis patch removes it.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c17675e1e02ebde220ef639a3fb1333928ec2f4",
      "tree": "2bc1e7f1d05d725d5d1294d687edb52da0722928",
      "parents": [
        "a72bdb1cd244725ff47b3a29662e2cb820d8c60f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:34 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: simplify xattr internal file lookups/opens\n\nThe xattr file open/lookup code is needlessly complex.  We can use\nvfs-level operations to perform the same work, and also simplify the\nlocking constraints.  The locking advantages will be exploited in future\npatches.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a72bdb1cd244725ff47b3a29662e2cb820d8c60f",
      "tree": "68f9022b303ca5183bd64eddbff41f0624e84188",
      "parents": [
        "6dfede696391133eadd7ce90b61c9573ee6e5a90"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:33 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: Clean up xattrs when REISERFS_FS_XATTR is unset\n\nThe current reiserfs xattr implementation will not clean up old xattr\nfiles if files are deleted when REISERFS_FS_XATTR is unset.  This\nresults in inaccessible lost files, wasting space.\n\nThis patch compiles in basic xattr knowledge, such as how to delete them\nand change ownership for quota tracking.  If the file system has never\nused xattrs, then the operation is quite fast: it returns immediately\nwhen it sees there is no .reiserfs_priv directory.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6dfede696391133eadd7ce90b61c9573ee6e5a90",
      "tree": "2051bfc5108d0e7592b8738e43f4ae972d398ccd",
      "parents": [
        "010f5a21a323e7383e067009a7785462883fe5ea"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:32 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: remove IS_PRIVATE helpers\n\nThere are a number of helper functions for marking a reiserfs inode\nprivate that were leftover from reiserfs did its own thing wrt to\nprivate inodes.  S_PRIVATE has been in the kernel for some time, so this\npatch removes the helpers and uses IS_PRIVATE instead.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "010f5a21a323e7383e067009a7785462883fe5ea",
      "tree": "2144b0d0e7c7e37da0e5b28a922d49c00ea5cec3",
      "parents": [
        "ec6ea56b2f1d3811815e53131e85fd1fc9b51873"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:31 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: remove link detection code\n\nEarly in the reiserfs xattr development, there was a plan to use\nhardlinks to save disk space for identical xattrs.  That code never\nmaterialized and isn\u0027t going to, so this patch removes the detection\ncode.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec6ea56b2f1d3811815e53131e85fd1fc9b51873",
      "tree": "cf5897a3bef7fdfaf96edcce21ffc6738aaea941",
      "parents": [
        "f437c529e3cd4853c1edff6fe3b191ad32304e8f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:30 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: xattr reiserfs_get_page takes offset instead of index\n\nThis patch changes reiserfs_get_page to take an offset rather than an\nindex since no callers calculate the index differently.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f437c529e3cd4853c1edff6fe3b191ad32304e8f",
      "tree": "f46bc41448135d39dbd1900bd06a68e09accf86a",
      "parents": [
        "0030b64570c862f04c1550ba4a0bf7a9c128162a"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:29 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: small variable cleanup\n\nThis patch removes the xinode and mapping variables from\nreiserfs_xattr_{get,set}.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0030b64570c862f04c1550ba4a0bf7a9c128162a",
      "tree": "811b8eec4a417983ad1e5b51f44194f9cc98496d",
      "parents": [
        "1e5e59d431038c53954fe8f0b38bee0f0ad30349"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:28 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: use reiserfs_error()\n\nThis patch makes many paths that are currently using warnings to handle\nthe error.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1e5e59d431038c53954fe8f0b38bee0f0ad30349",
      "tree": "25e10648779424a85de6d368bd08c53c51c8f7a8",
      "parents": [
        "32e8b1062915d00d07d3b88a95174648e369b6a3"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:27 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: introduce reiserfs_error()\n\nAlthough reiserfs can currently handle severe errors such as journal failure,\nit cannot handle less severe errors like metadata i/o failure. The following\npatch adds a reiserfs_error() function akin to the one in ext3.\n\nSubsequent patches will use this new error handler to handle errors more\ngracefully in general.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32e8b1062915d00d07d3b88a95174648e369b6a3",
      "tree": "f8d9da27137667072ca1f826c760fda1717a1c8d",
      "parents": [
        "c3a9c2109f84882b9b3178f6b1838d550d3df0ec"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:26 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: rearrange journal abort\n\nThis patch kills off reiserfs_journal_abort as it is never called, and\ncombines __reiserfs_journal_abort_{soft,hard} into one function called\nreiserfs_abort_journal, which performs the same work. It is silent\nas opposed to the old version, since the message was always issued\nafter a regular \u0027abort\u0027 message.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3a9c2109f84882b9b3178f6b1838d550d3df0ec",
      "tree": "08a502b8013eabb562f03be45622b0f63b1a34b9",
      "parents": [
        "78b6513d2881f1a759fb9825a036d926392de084"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:25 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: rework reiserfs_panic\n\nReiserFS panics can be somewhat inconsistent.\nIn some cases:\n * a unique identifier may be associated with it\n * the function name may be included\n * the device may be printed separately\n\nThis patch aims to make warnings more consistent. reiserfs_warning() prints\nthe device name, so printing it a second time is not required. The function\nname for a warning is always helpful in debugging, so it is now automatically\ninserted into the output. Hans has stated that every warning should have\na unique identifier. Some cases lack them, others really shouldn\u0027t have them.\nreiserfs_warning() now expects an id associated with each message. In the\nrare case where one isn\u0027t needed, \"\" will suffice.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "78b6513d2881f1a759fb9825a036d926392de084",
      "tree": "4839959cb1e322dbabbaba2038fd7c85cb26cdff",
      "parents": [
        "fd7cb031efb1dd71cb731668e2f597d9e61acdcb"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:24 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: add locking around error buffer\n\nThe formatting of the error buffer is race prone. It uses static buffers\nfor both formatting and output. While overwriting the error buffer\ncan product garbled output, overwriting the format buffer with incompatible\n% directives can cause crashes.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cacbe3d7ad3c0a345ca1ce7bf1ecb4c5bfe54d7b",
      "tree": "853abddd05fe175e7aacf9cc7868b28e1bfa6e62",
      "parents": [
        "45b03d5e8e674eb6555b767e1c8eb40b671ff892"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:22 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: prepare_error_buf wrongly consumes va_arg\n\nvsprintf will consume varargs on its own. Skipping them manually\nresults in garbage in the error buffer, or Oopses in the case of\npointers.\n\nThis patch removes the advancement and fixes a number of bugs where\ncrashes were observed as side effects of a regular error report.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "45b03d5e8e674eb6555b767e1c8eb40b671ff892",
      "tree": "d74acd1be7f5102143df960e8cd692aadcc437df",
      "parents": [
        "1d889d9958490888b3fad1d486145d9a03559cbc"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:21 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: rework reiserfs_warning\n\nReiserFS warnings can be somewhat inconsistent.\nIn some cases:\n * a unique identifier may be associated with it\n * the function name may be included\n * the device may be printed separately\n\nThis patch aims to make warnings more consistent. reiserfs_warning() prints\nthe device name, so printing it a second time is not required. The function\nname for a warning is always helpful in debugging, so it is now automatically\ninserted into the output. Hans has stated that every warning should have\na unique identifier. Some cases lack them, others really shouldn\u0027t have them.\nreiserfs_warning() now expects an id associated with each message. In the\nrare case where one isn\u0027t needed, \"\" will suffice.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d889d9958490888b3fad1d486145d9a03559cbc",
      "tree": "6fab5d559376dd8d9aa970efd179a7345f77ae2e",
      "parents": [
        "a5437152eec2c9171f6ab06e63135c5333f0a929"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:20 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:35 2009 -0700"
      },
      "message": "reiserfs: make some warnings informational\n\nIn several places, reiserfs_warning is used when there is no warning, just\na notice. This patch changes some of them to indicate that the message\nis merely informational.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a5437152eec2c9171f6ab06e63135c5333f0a929",
      "tree": "11e7f4c09e48fc674703041834c9ae05d8dfc969",
      "parents": [
        "eba00305591714f1d85ccad1afbf58259c2197b4"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:19 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:35 2009 -0700"
      },
      "message": "reiserfs: use more consistent printk formatting\n\nThe output format between a warning/error/panic/info/etc changes with\nwhich one is used.\n\nThe following patch makes the messages more internally consistent, but also\nmore consistent with other Linux filesystems.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eba00305591714f1d85ccad1afbf58259c2197b4",
      "tree": "260912758e76c1add9e917d22a00544812562a75",
      "parents": [
        "600ed41675d8c384519d8f0b3c76afed39ef2f4b"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:18 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:35 2009 -0700"
      },
      "message": "reiserfs: use buffer_info for leaf_paste_entries\n\nThis patch makes leaf_paste_entries more consistent with respect to the\nother leaf operations.  Using buffer_info instead of buffer_head\ndirectly allows us to get a superblock pointer for use in error\nhandling.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "600ed41675d8c384519d8f0b3c76afed39ef2f4b",
      "tree": "106f17dcaaee07671efdef651ff7f78b1afffb2f",
      "parents": [
        "702d21c6f6c790b12c4820cd2f29bc8472aed633"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:17 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:35 2009 -0700"
      },
      "message": "reiserfs: audit transaction ids to always be unsigned ints\n\nThis patch fixes up the reiserfs code such that transaction ids are\nalways unsigned ints.  In places they can currently be signed ints or\nunsigned longs.\n\nThe former just causes an annoying clm-2200 warning and may join a\ntransaction when it should wait.\n\nThe latter is just for correctness since the disk format uses a 32-bit\ntransaction id.  There aren\u0027t any runtime problems that result from it\nnot wrapping at the correct location since the value is truncated\ncorrectly even on big endian systems.  The 0 value might make it to\ndisk, but the mount-time checks will bump it to 10 itself.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "702d21c6f6c790b12c4820cd2f29bc8472aed633",
      "tree": "eaed957de4e319dc0083fa66e7614f99a10fda89",
      "parents": [
        "8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:16 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:35 2009 -0700"
      },
      "message": "reiserfs: add support for mount count incrementing\n\nThe following patch adds the fields for tracking mount counts and last\nfsck timestamps to the superblock.  It also increments the mount count\non every read-write mount.\n\nReiserfsprogs 3.6.21 added support for these fields.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2d25ee36c84d5b2d6be8bfaf80256ecad69a06ca",
      "tree": "4e8fff4b3de41cec400385fdadd143c8d5d91904",
      "parents": [
        "915db32ddbc967f023fbf7d7f01cca9e05606a9b",
        "4a6a4499693a419a20559c41e33a7bd70bf20a6f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 11:31:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 11:31:47 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  Fix a lockdep warning in fasync_helper()\n  Add a missing unlock_kernel() in raw_open()\n"
    },
    {
      "commit": "b80e0d271606a0f5b35c85b11f9014ce09cbc415",
      "tree": "e030cdeeb857456382bd0962a584b48b7a76566e",
      "parents": [
        "83826dc505e6c6f432332dd45681be4bb71635ce",
        "5291658d87ac1ae60418e79e7b6bad7d5f595e0c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 10:08:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 10:08:10 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  fuse: fix fuse_file_lseek returning with lock held\n"
    },
    {
      "commit": "ffd14285142cb398b2b613e27f71be415d28072e",
      "tree": "32ffd364a8ee1e69d27ec058a3d710551d24a057",
      "parents": [
        "0d34fb8e93ceba7b6dad0062dbb4a0813bacd75b",
        "c68a65da35906b32505bbb8eecab316e6736e28b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 10:02:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 10:02:36 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6:\n  jfs: needs crc32_le\n  jfs: Fix error handling in metapage_writepage()\n  jfs: return f_fsid for statfs(2)\n  jfs: remove xtLookupList()\n  jfs: clean up a dangling comment\n"
    },
    {
      "commit": "5291658d87ac1ae60418e79e7b6bad7d5f595e0c",
      "tree": "e91cba2f5e73a5a93fcff6e866ebae737fee1e5c",
      "parents": [
        "0d34fb8e93ceba7b6dad0062dbb4a0813bacd75b"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Fri Mar 27 13:36:10 2009 +0300"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 30 17:26:24 2009 +0200"
      },
      "message": "fuse: fix fuse_file_lseek returning with lock held\n\nThis bug was found with smatch (http://repo.or.cz/w/smatch.git/).  If\nwe return directly the inode-\u003ei_mutex lock doesn\u0027t get released.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: stable@kernel.org\n"
    },
    {
      "commit": "4a6a4499693a419a20559c41e33a7bd70bf20a6f",
      "tree": "7a89d08f0b2f19e1b84b38869596c8a84ab6f583",
      "parents": [
        "996ff68d8b358885c1de82a45517c607999947c7"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Fri Mar 27 12:24:31 2009 -0600"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Mon Mar 30 08:00:24 2009 -0600"
      },
      "message": "Fix a lockdep warning in fasync_helper()\n\nLockdep gripes if file-\u003ef_lock is taken in a no-IRQ situation, since that\nis not always the case.  We don\u0027t really want to disable IRQs for every\nacquisition of f_lock; instead, just move it outside of fasync_lock.\n\nReported-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nReported-by: Larry Finger \u003cLarry.Finger@lwfinger.net\u003e\nReported-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\n"
    },
    {
      "commit": "af76aba00fdcfb21535c9f9872245d14097a4561",
      "tree": "221ec0b2cd01c7629abc1f30f0f563e1731c1683",
      "parents": [
        "1a2142afa5646ad5af44bbe1febaa5e0b7e71156"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:11 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:11 2009 +1030"
      },
      "message": "cpumask: fix seq_bitmap_*() functions.\n\n1) seq_bitmap_list() should take a const.\n2) All the seq_bitmap should use cpumask_bits().\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "7c2c7d993044cddc5010f6f429b100c63bc7dffb",
      "tree": "b92a6daf7c11f9a53de6fed07512fe02cd5b4a68",
      "parents": [
        "e426b64c412aaa3e9eb3e4b261dc5be0d5a83e78"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Mar 28 23:21:27 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 28 17:30:00 2009 -0700"
      },
      "message": "fix setuid sometimes wouldn\u0027t\n\ncheck_unsafe_exec() also notes whether the fs_struct is being\nshared by more threads than will get killed by the exec, and if so\nsets LSM_UNSAFE_SHARE to make bprm_set_creds() careful about euid.\nBut /proc/\u003cpid\u003e/cwd and /proc/\u003cpid\u003e/root lookups make transient\nuse of get_fs_struct(), which also raises that sharing count.\n\nThis might occasionally cause a setuid program not to change euid,\nin the same way as happened with files-\u003ecount (check_unsafe_exec\nalso looks at sighand-\u003ecount, but /proc doesn\u0027t raise that one).\n\nWe\u0027d prefer exec not to unshare fs_struct: so fix this in procfs,\nreplacing get_fs_struct() by get_fs_path(), which does path_get\nwhile still holding task_lock, instead of raising fs-\u003ecount.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: stable@kernel.org\n___\n\n fs/proc/base.c |   50 +++++++++++++++--------------------------------\n 1 file changed, 16 insertions(+), 34 deletions(-)\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e426b64c412aaa3e9eb3e4b261dc5be0d5a83e78",
      "tree": "c1528139b34fef3e4595576266c64068098fe211",
      "parents": [
        "53e9309e01277ec99c38e84e0ca16921287cf470"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Mar 28 23:20:19 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 28 17:30:00 2009 -0700"
      },
      "message": "fix setuid sometimes doesn\u0027t\n\nJoe Malicki reports that setuid sometimes doesn\u0027t: very rarely,\na setuid root program does not get root euid; and, by the way,\nthey have a health check running lsof every few minutes.\n\nRight, check_unsafe_exec() notes whether the files_struct is being\nshared by more threads than will get killed by the exec, and if so\nsets LSM_UNSAFE_SHARE to make bprm_set_creds() careful about euid.\nBut /proc/\u003cpid\u003e/fd and /proc/\u003cpid\u003e/fdinfo lookups make transient\nuse of get_files_struct(), which also raises that sharing count.\n\nThere\u0027s a rather simple fix for this: exec\u0027s check on files-\u003ecount\nhas been redundant ever since 2.6.1 made it unshare_files() (except\nwhile compat_do_execve() omitted to do so) - just remove that check.\n\n[Note to -stable: this patch will not apply before 2.6.29: earlier\nreleases should just remove the files-\u003ecount line from unsafe_exec().]\n\nReported-by: Joe Malicki \u003cjmalicki@metacarta.com\u003e\nNarrowed-down-by: Michael Itz \u003cmitz@metacarta.com\u003e\nTested-by: Joe Malicki \u003cjmalicki@metacarta.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53e9309e01277ec99c38e84e0ca16921287cf470",
      "tree": "bc70d617e1898e5b0fdf161edafa1808ae8fa529",
      "parents": [
        "07d43ba98621f08e252a48c96b258b4d572b0257"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Mar 28 23:16:03 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 28 17:30:00 2009 -0700"
      },
      "message": "compat_do_execve should unshare_files\n\n2.6.26\u0027s commit fd8328be874f4190a811c58cd4778ec2c74d2c05\n\"sanitize handling of shared descriptor tables in failing execve()\"\nmoved the unshare_files() from flush_old_exec() and several binfmts\nto the head of do_execve(); but forgot to make the same change to\ncompat_do_execve(), leaving a CLONE_FILES files_struct shared across\nexec from a 32-bit process on a 64-bit kernel.\n\nIt\u0027s arguable whether the files_struct really ought to be unshared\nacross exec; but 2.6.1 made that so to stop the loading binary\u0027s fd\nleaking into other threads, and a 32-bit process on a 64-bit kernel\nought to behave in the same way as 32 on 32 and 64 on 64.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c8c45dfab78a1919f6f8a3ea46998c487eb7e12",
      "tree": "532baa9e2ca4a11dcf36bf7542b92e30f8908011",
      "parents": [
        "d188262d60e879800d3a0a768ecbb216d6ef0d40"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:48:14 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 16:51:04 2009 -0400"
      },
      "message": "NFS: Simplify logic to compare socket addresses in client.c\n\nCallback requests from IPv4 servers are now always guaranteed to be\nAF_INET, and never mapped IPv4 AF_INET6 addresses.  Both\nnfs_match_client() and nfs_find_client() can now share the same\naddress comparison logic, so fold them together.\n\nWe can also dispense with of most of the conditional compilation\nin here.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d188262d60e879800d3a0a768ecbb216d6ef0d40",
      "tree": "4416aba693ff03551987addb3de626920b212f5d",
      "parents": [
        "f738f5170367b367e38b2d75a413e7b3c52d46a5",
        "9f4c899c0d90e1b51b6864834f3877b47c161a0e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 16:50:58 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 16:50:58 2009 -0400"
      },
      "message": "Merge commit \u00279f4c899c0d90e1b51b6864834f3877b47c161a0e\u0027 into devel\n"
    },
    {
      "commit": "f738f5170367b367e38b2d75a413e7b3c52d46a5",
      "tree": "3552d487e54e8c555e4f7083194d46b6eb95fc66",
      "parents": [
        "eb16e907781a9da7f272a3e8284c26bc4e4aeb9d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:48:06 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 16:02:43 2009 -0400"
      },
      "message": "NFS: Start PF_INET6 callback listener only if IPv6 support is available\n\nApparently a lot of people need to disable IPv6 completely on their\ndistributor-built systems, which have CONFIG_IPV6_MODULE enabled at\nbuild time.\n\nThey do this by blacklisting the ipv6.ko module.  This causes the\ncreation of the NFSv4 callback service listener to fail if\nCONFIG_IPV6_MODULE is set, but the module cannot be loaded.\n\nNow that the kernel\u0027s PF_INET6 RPC listeners are completely separate\nfrom PF_INET listeners, we can always start PF_INET.  Then the NFS\nclient can try to start a PF_INET6 listener, but it isn\u0027t required\nto be available.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "eb16e907781a9da7f272a3e8284c26bc4e4aeb9d",
      "tree": "6651fc149d5afbcc44418fe235a2480060ce3c17",
      "parents": [
        "9355982830ad67dca35e0f3d43319f3d438f82b4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:47:59 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 16:01:16 2009 -0400"
      },
      "message": "lockd: Start PF_INET6 listener only if IPv6 support is available\n\nApparently a lot of people need to disable IPv6 completely on their\ndistributor-built systems, which have CONFIG_IPV6_MODULE enabled at\nbuild time.\n\nThey do this by blacklisting the ipv6.ko module.  This causes the\ncreation of the lockd service listener to fail if CONFIG_IPV6_MODULE\nis set, but the module cannot be loaded.\n\nNow that the kernel\u0027s PF_INET6 RPC listeners are completely separate\nfrom PF_INET listeners, we can always start PF_INET.  Then lockd can\ntry to start PF_INET6, but it isn\u0027t required to be available.\n\nNote this has the added benefit that NLM callbacks from AF_INET6\nservers will never come from AF_INET remotes.  We no longer have to\nworry about matching mapped IPv4 addresses to AF_INET when comparing\naddresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "26298caacac3e4754194b13aef377706d5de6cf6"
}
