)]}'
{
  "log": [
    {
      "commit": "e59cc473cc603d562f2c80c12c943ef2a8cde6b2",
      "tree": "14030457a2322175a899afa14d3ad0de23942e7d",
      "parents": [
        "ac2aca2817ca10ad30f86d0d3caa41ea8cc4f0f0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 07 13:17:19 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:51 2012 -0400"
      },
      "message": "trim includes in inode.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "68ac1234fb949b66941d94dce4157742799fc581",
      "tree": "04059b7dbaed92d672b8ceef1fcf25c6185e06f8",
      "parents": [
        "40ffe67d2e89c7a475421d007becc11a2f88ea3d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 15 08:21:57 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:41 2012 -0400"
      },
      "message": "switch touch_atime to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9bcb4b733c22b7dbc4cf847e707ac98f751e9180",
      "tree": "f99c68d0b7d049d7a25706d23f224c734d0e1da1",
      "parents": [
        "e28e832c3e1e1197873cfd0b6ce86868cf5c391d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Feb 12 19:43:17 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:33 2012 -0400"
      },
      "message": "vfs: turn generic_drop_inode() into static inline\n\nOnce upon a time it used to be much bigger, but these days there\u0027s\nno point whatsoever keeping it in fs/inode.c, especially since\nit\u0027s not even needed as initializer for -\u003edrop_inode() - it\u0027s the\ndefault and leaving -\u003edrop_inode NULL will do just as well.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "310fa7a36722017088af123043ebd231cd6bc559",
      "tree": "0943711750f1fabe4b696f7532bcc610fe37dd02",
      "parents": [
        "7f6c7e62fcc123e6bd9206da99a2163fe3facc31"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 10 17:07:28 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 10 17:07:28 2012 -0500"
      },
      "message": "restore smp_mb() in unlock_new_inode()\n\nwait_on_inode() doesn\u0027t have -\u003ei_lock\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "978d6d8c4574098050b22281b9ed06818c0b23ca",
      "tree": "7186772f24633adc91ce02ab532da80eda329532",
      "parents": [
        "c7b285550544c22bc005ec20978472c9ac7138c6"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@canonical.com",
        "time": "Mon Dec 12 10:02:30 2011 -0600"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 10 16:05:38 2012 -0500"
      },
      "message": "vfs: Correctly set the dir i_mutex lockdep class\n\n9a7aa12f3911853a introduced additional logic around setting the i_mutex\nlockdep class for directory inodes. The idea was that some filesystems\nmay want their own special lockdep class for different directory\ninodes and calling unlock_new_inode() should not clobber one of\nthose special classes.\n\nI believe that the added conditional, around the *negated* return value\nof lockdep_match_class(), caused directory inodes to be placed in the\nwrong lockdep class.\n\ninode_init_always() sets the i_mutex lockdep class with i_mutex_key for\nall inodes. If the filesystem did not change the class during inode\ninitialization, then the conditional mentioned above was false and the\ndirectory inode was incorrectly left in the non-directory lockdep class.\nIf the filesystem did set a special lockdep class, then the conditional\nmentioned above was true and that class was clobbered with\ni_mutex_dir_key.\n\nThis patch removes the negation from the conditional so that the i_mutex\nlockdep class is properly set for directory inodes. Special classes are\npreserved and directory inodes with unmodified classes are set with\ni_mutex_dir_key.\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@canonical.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "074b85175a43a23fdbde60f55feea636e0bf0f85",
      "tree": "e6f6fdd82854b2bf25ea5b404cee010806a8fced",
      "parents": [
        "1d6f2097865e64963e90cce04980dce2f9fc023f"
      ],
      "author": {
        "name": "Dimitri Sivanich",
        "email": "sivanich@sgi.com",
        "time": "Wed Feb 08 12:39:07 2012 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Feb 13 20:45:38 2012 -0500"
      },
      "message": "vfs: fix panic in __d_lookup() with high dentry hashtable counts\n\nWhen the number of dentry cache hash table entries gets too high\n(2147483648 entries), as happens by default on a 16TB system, use of a\nsigned integer in the dcache_init() initialization loop prevents the\ndentry_hashtable from getting initialized, causing a panic in\n__d_lookup().  Fix this in dcache_init() and similar areas.\n\nSigned-off-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "424a5334a5235c2fbb80090b18a065eeceb51d64",
      "tree": "2b46dd90d5950c994975ede7d0fdcb51ae814625",
      "parents": [
        "e1616300a20c80396109c1cf013ba9a36055a3da"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Jan 12 12:41:36 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 17 16:39:47 2012 -0500"
      },
      "message": "vfs: remove printk from set_nlink()\n\nDon\u0027t log a message for set_nlink(0).\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5f8aefd44e64ed2f6950a1dcc77309b7dd9979f4",
      "tree": "524db6828c07e0f83f94d799cbc1bbb7dd8e6084",
      "parents": [
        "f90ac3982a78d36f894824636beeef13361d7c59"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue Jan 10 15:07:18 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:42 2012 -0800"
      },
      "message": "mm: account reaped page cache on inode cache pruning\n\nInode cache pruning indirectly reclaims page-cache by invalidating mapping\npages.  Let\u0027s account them into reclaim-state to notice this progress in\nmemory reclaimer.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ada4db88634429f4da690ad1c4eb73c93085f0c",
      "tree": "ed1228f0bfa9d0050d746933595004d7c6e940f9",
      "parents": [
        "4ed5e82fe77f4147cf386327c9a63a2dd7eff518"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Nov 21 12:11:32 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:20:12 2012 -0500"
      },
      "message": "vfs: count unlinked inodes\n\nAdd a new counter to the superblock that keeps track of unlinked but\nnot yet deleted inodes.\n\nDo not WARN_ON if set_nlink is called with zero count, just do a\nratelimited printk.  This happens on xfs and probably other\nfilesystems after an unclean shutdown when the filesystem reads inodes\nwhich already have zero i_nlink.  Reported by Christoph Hellwig.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "62bb109170375f82eb3c51c8080b72954f02dca7",
      "tree": "47d0a7b84c195b2267ed6803e4492eec6ec8478c",
      "parents": [
        "175a4eb7ea531cdbf6d574f5d5ba9aa0f5e8ed13"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 24 23:20:18 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:11 2012 -0500"
      },
      "message": "switch inode_init_owner() to umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6b520e0565422966cdf1c3759bd73df77b0f248c",
      "tree": "f63a26afa7342eb59b125271b16e30a219b59094",
      "parents": [
        "2a79f17e4a641a2f463cb512cb0ec349844a147b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 12 15:51:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:40 2012 -0500"
      },
      "message": "vfs: fix the stupidity with i_dentry in inode destructors\n\nSeeing that just about every destructor got that INIT_LIST_HEAD() copied into\nit, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();\nthe cost of taking it into inode_init_always() will be negligible for pipes\nand sockets and negative for everything else.  Not to mention the removal of\nboilerplate code from -\u003edestroy_inode() instances...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2a79f17e4a641a2f463cb512cb0ec349844a147b",
      "tree": "8801127310d0a3492941bb284e83393844a19685",
      "parents": [
        "8c9379e972e984d11c2b99121847ba9fa7a0c56c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Dec 09 08:06:57 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:40 2012 -0500"
      },
      "message": "vfs: mnt_drop_write_file()\n\nnew helper (wrapper around mnt_drop_write()) to be used in pair with\nmnt_want_write_file().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a78ef704a8dd430225955f0709b22d4a6ba21deb",
      "tree": "ebd8f8a5a257077912b7cc38ecfdab43e1d7d73d",
      "parents": [
        "bfe8684869601dacfcb2cd69ef8cfd9045f62170"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:30 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "vfs: protect i_nlink\n\nPrevent direct modification of i_nlink by making it const and adding a\nnon-const __i_nlink alias.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "62a3ddef6181d7d932c565d97552d2f7b9ab4d28",
      "tree": "fbf4c2fd154936afdea976514f5d50e94e7225da",
      "parents": [
        "948409c74d217f6cf054b8c927765a1c3fe16b53"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Oct 28 10:03:41 2011 +0200"
      },
      "committer": {
        "name": "root",
        "email": "root@serles.lst.de",
        "time": "Fri Oct 28 14:58:55 2011 +0200"
      },
      "message": "vfs: fix spinning prevention in prune_icache_sb\n\nWe need to move the inode to the end of the list to actually make the\nspinning prevention explained in the comment above it work.  With a\nplain list_move it will simply stay in place as we\u0027re always reclaiming\nfrom the head of the list.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e096d0c7e2e4e5893792db865dd065ac73cf1f00",
      "tree": "20e603f81a9f1a55d330cba670952b991d564e00",
      "parents": [
        "e33f2d238e2e53e264c758c0849423a9308eb63e"
      ],
      "author": {
        "name": "Josh Boyer",
        "email": "jwboyer@redhat.com",
        "time": "Thu Aug 25 07:48:12 2011 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 25 10:50:18 2011 -0700"
      },
      "message": "lockdep: Add helper function for dir vs file i_mutex annotation\n\nPurely in-memory filesystems do not use the inode hash as the dcache\ntells us if an entry already exists.  As a result, they do not call\nunlock_new_inode, and thus directory inodes do not get put into a\ndifferent lockdep class for i_sem.\n\nWe need the different lockdep classes, because the locking order for\ni_mutex is different for directory inodes and regular inodes.  Directory\ninodes can do \"readdir()\", which takes i_mutex *before* possibly taking\nmm-\u003emmap_sem (due to a page fault while copying the directory entry to\nuser space).\n\nIn contrast, regular inodes can be mmap\u0027ed, which takes mm-\u003emmap_sem\nbefore accessing i_mutex.\n\nThe two cases can never happen for the same inode, so no real deadlock\ncan occur, but without the different lockdep classes, lockdep cannot\nunderstand that.  As a result, if CONFIG_DEBUG_LOCK_ALLOC is set, this\ncan lead to false positives from lockdep like below:\n\n    find/645 is trying to acquire lock:\n     (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cffffffff81109514\u003e] might_fault+0x5c/0xac\n\n    but task is already holding lock:\n     (\u0026sb-\u003es_type-\u003ei_mutex_key#15){+.+.+.}, at: [\u003cffffffff81149f34\u003e]\n    vfs_readdir+0x5b/0xb4\n\n    which lock already depends on the new lock.\n\n    the existing dependency chain (in reverse order) is:\n\n    -\u003e #1 (\u0026sb-\u003es_type-\u003ei_mutex_key#15){+.+.+.}:\n          [\u003cffffffff8108ac26\u003e] lock_acquire+0xbf/0x103\n          [\u003cffffffff814db822\u003e] __mutex_lock_common+0x4c/0x361\n          [\u003cffffffff814dbc46\u003e] mutex_lock_nested+0x40/0x45\n          [\u003cffffffff811daa87\u003e] hugetlbfs_file_mmap+0x82/0x110\n          [\u003cffffffff81111557\u003e] mmap_region+0x258/0x432\n          [\u003cffffffff811119dd\u003e] do_mmap_pgoff+0x2ac/0x306\n          [\u003cffffffff81111b4f\u003e] sys_mmap_pgoff+0x118/0x16a\n          [\u003cffffffff8100c858\u003e] sys_mmap+0x22/0x24\n          [\u003cffffffff814e3ec2\u003e] system_call_fastpath+0x16/0x1b\n\n    -\u003e #0 (\u0026mm-\u003emmap_sem){++++++}:\n          [\u003cffffffff8108a4bc\u003e] __lock_acquire+0xa1a/0xcf7\n          [\u003cffffffff8108ac26\u003e] lock_acquire+0xbf/0x103\n          [\u003cffffffff81109541\u003e] might_fault+0x89/0xac\n          [\u003cffffffff81149cff\u003e] filldir+0x6f/0xc7\n          [\u003cffffffff811586ea\u003e] dcache_readdir+0x67/0x205\n          [\u003cffffffff81149f54\u003e] vfs_readdir+0x7b/0xb4\n          [\u003cffffffff8114a073\u003e] sys_getdents+0x7e/0xd1\n          [\u003cffffffff814e3ec2\u003e] system_call_fastpath+0x16/0x1b\n\nThis patch moves the directory vs file lockdep annotation into a helper\nfunction that can be called by in-memory filesystems and has hugetlbfs\ncall it.\n\nSigned-off-by: Josh Boyer \u003cjwboyer@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ddcd0569cd68f00f3beae9a7959b72918bb91f4",
      "tree": "3f7c591316560b1c22e2cc0700fbcd29aa3fbd7f",
      "parents": [
        "830c0f0edca67403d361fe976a25b17356c11f19"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 06 22:45:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 06 22:53:23 2011 -0700"
      },
      "message": "vfs: optimize inode cache access patterns\n\nThe inode structure layout is largely random, and some of the vfs paths\nreally do care.  The path lookup in particular is already quite D$\nintensive, and profiles show that accessing the \u0027inode-\u003ei_op-\u003exyz\u0027\nfields is quite costly.\n\nWe already optimized the dcache to not unnecessarily load the d_op\nstructure for members that are often NULL using the DCACHE_OP_xyz bits\nin dentry-\u003ed_flags, and this does something very similar for the inode\nops that are used during pathname lookup.\n\nIt also re-orders the fields so that the fields accessed by \u0027stat\u0027 are\ntogether at the beginning of the inode structure, and roughly in the\norder accessed.\n\nThe effect of this seems to be in the 1-2% range for an empty kernel\n\"make -j\" run (which is fairly kernel-intensive, mostly in filename\nlookup), so it\u0027s visible.  The numbers are fairly noisy, though, and\nlikely depend a lot on exact microarchitecture.  So there\u0027s more tuning\nto be done.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c4ae0c65455c1bb30d1b71c6dd9a1a62aadde8ef",
      "tree": "75d45726ff5f09955054a665e368b919faf4c105",
      "parents": [
        "f2ee7abf4c40c8e6bffced923a7c01ea2d1f6c97"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jul 28 06:55:13 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 01 01:41:17 2011 -0400"
      },
      "message": "vfs: avoid call to inode_lru_list_del() if possible\n\ninode_lru_list_del() is expensive because of per superblock lru locking,\nwhile some inodes are not in lru list.\n\nAdding a check in iput_final() can speedup pipe/sockets workloads on\nSMP.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f2ee7abf4c40c8e6bffced923a7c01ea2d1f6c97",
      "tree": "3c7ec119cf89f82737c55235ff7881ebeed9408f",
      "parents": [
        "b12362bdb61a230a67daa77bcd2a11e59b2802e1"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jul 28 06:41:09 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 01 01:41:17 2011 -0400"
      },
      "message": "vfs: avoid taking inode_hash_lock on pipes and sockets\n\nSome inodes (pipes, sockets, ...) are not hashed, no need to take\ncontended inode_hash_lock at dismantle time.\n\nnice speedup on SMP machines on socket intensive workloads.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b12362bdb61a230a67daa77bcd2a11e59b2802e1",
      "tree": "f85752d085d3618207ef6aa5b7d8a10910201fc5",
      "parents": [
        "5a30d8a2b8ddd5102c440c7e5a7c8e1fd729c818"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jul 28 06:11:47 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 01 01:41:17 2011 -0400"
      },
      "message": "vfs: conditionally call inode_wb_list_del()\n\nSome inodes (pipes, sockets, ...) are not in bdi writeback list.\n\nevict() can avoid calling inode_wb_list_del() and its expensive spinlock\nby checking inode i_wb_list being empty or not.\n\nAt this point, no other cpu/user can concurrently manipulate this inode\ni_wb_list\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e371d46ae45488bcb112a99a7de462e9e3aa6764",
      "tree": "9e2eceb292018e52304053bd8013cdb0a7f31dcc",
      "parents": [
        "b0189cd087aa82bd23277cb5c8960ab030e13e5c",
        "e57712ebebbb9db7d8dcef216437b3171ddcf115"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 18:30:20 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 18:30:20 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  merge fchmod() and fchmodat() guts, kill ancient broken kludge\n  xfs: fix misspelled S_IS...()\n  xfs: get rid of open-coded S_ISREG(), etc.\n  vfs: document locking requirements for d_move, __d_move and d_materialise_unique\n  omfs: fix (mode \u0026 S_IFDIR) abuse\n  btrfs: S_ISREG(mode) is not mode \u0026 S_IFREG...\n  ima: fmode_t misspelled as mode_t...\n  pci-label.c: size_t misspelled as mode_t\n  jffs2: S_ISLNK(mode \u0026 S_IFMT) is pointless\n  snd_msnd -\u003emode is fmode_t, not mode_t\n  v9fs_iop_get_acl: get rid of unused variable\n  vfs: dont chain pipe/anon/socket on superblock s_inodes list\n  Documentation: Exporting: update description of d_splice_alias\n  fs: add missing unlock in default_llseek()\n"
    },
    {
      "commit": "f01ef569cddb1a8627b1c6b3a134998ad1cf4b22",
      "tree": "29ea1a0942c8549c24411e976cd6891c7e995e89",
      "parents": [
        "a93a1329271038f0e8337061d3b41b3b212a851e",
        "bcff25fc8aa47a13faff8b4b992589813f7b450a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 10:39:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 10:39:54 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback: (27 commits)\n  mm: properly reflect task dirty limits in dirty_exceeded logic\n  writeback: don\u0027t busy retry writeback on new/freeing inodes\n  writeback: scale IO chunk size up to half device bandwidth\n  writeback: trace global_dirty_state\n  writeback: introduce max-pause and pass-good dirty limits\n  writeback: introduce smoothed global dirty limit\n  writeback: consolidate variable names in balance_dirty_pages()\n  writeback: show bdi write bandwidth in debugfs\n  writeback: bdi write bandwidth estimation\n  writeback: account per-bdi accumulated written pages\n  writeback: make writeback_control.nr_to_write straight\n  writeback: skip tmpfs early in balance_dirty_pages_ratelimited_nr()\n  writeback: trace event writeback_queue_io\n  writeback: trace event writeback_single_inode\n  writeback: remove .nonblocking and .encountered_congestion\n  writeback: remove writeback_control.more_io\n  writeback: skip balance_dirty_pages() for in-memory fs\n  writeback: add bdi_dirty_limit() kernel-doc\n  writeback: avoid extra sync work at enqueue time\n  writeback: elevate queue_io() into wb_writeback()\n  ...\n\nFix up trivial conflicts in fs/fs-writeback.c and mm/filemap.c\n"
    },
    {
      "commit": "a209dfc7b0d94bd6fa94553c097836a2e6d0f0ba",
      "tree": "7dacc92b08264c675a0dfcbae83982b7d3ad5135",
      "parents": [
        "5b9f4567726513a359e70f85029482c7c3714dbd"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jul 26 11:36:34 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 12:57:09 2011 -0400"
      },
      "message": "vfs: dont chain pipe/anon/socket on superblock s_inodes list\n\nWorkloads using pipes and sockets hit inode_sb_list_lock contention.\n\nsuperblock s_inodes list is needed for quota, dirty, pagecache and\nfsnotify management. pipe/anon/socket fs are clearly not candidates for\nthese.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bd5fe6c5eb9c548d7f07fe8f89a150bb6705e8e3",
      "tree": "ef5341c7747f809aec7ae233f6e3ef90af39be5f",
      "parents": [
        "f9b5570d7fdedff32a2e78102bfb54cd1b12b289"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:46 2011 -0400"
      },
      "message": "fs: kill i_alloc_sem\n\ni_alloc_sem is a rather special rw_semaphore.  It\u0027s the last one that may\nbe released by a non-owner, and it\u0027s write side is always mirrored by\nreal exclusion.  It\u0027s intended use it to wait for all pending direct I/O\nrequests to finish before starting a truncate.\n\nReplace it with a hand-grown construct:\n\n - exclusion for truncates is already guaranteed by i_mutex, so it can\n   simply fall way\n - the reader side is replaced by an i_dio_count member in struct inode\n   that counts the number of pending direct I/O requests.  Truncate can\u0027t\n   proceed as long as it\u0027s non-zero\n - when i_dio_count reaches non-zero we wake up a pending truncate using\n   wake_up_bit on a new bit in i_flags\n - new references to i_dio_count can\u0027t appear while we are waiting for\n   it to read zero because the direct I/O count always needs i_mutex\n   (or an equivalent like XFS\u0027s i_iolock) for starting a new operation.\n\nThis scheme is much simpler, and saves the space of a spinlock_t and a\nstruct list_head in struct inode (typically 160 bits on a non-debug 64-bit\nsystem).\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4f8c19fdf3f97402b68f058b1c72a6c7166c9e59",
      "tree": "1e986c639955955f6191c46bcfa831e6bb466d60",
      "parents": [
        "b0d40c92adafde7c2d81203ce7c1c69275f41140"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:43 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:40 2011 -0400"
      },
      "message": "inode: remove iprune_sem\n\nNow that we have per-sb shrinkers with a lifecycle that is a subset\nof the superblock lifecycle and can reliably detect a filesystem\nbeing unmounted, there is not longer any race condition for the\niprune_sem to protect against. Hence we can remove it.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b0d40c92adafde7c2d81203ce7c1c69275f41140",
      "tree": "f75a19dcd1a37aff23dc43323b58f014b1297c6b",
      "parents": [
        "12ad3ab66103e6582ca69c0c9de18b13487eaaef"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:42 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:10 2011 -0400"
      },
      "message": "superblock: introduce per-sb cache shrinker infrastructure\n\nWith context based shrinkers, we can implement a per-superblock\nshrinker that shrinks the caches attached to the superblock. We\ncurrently have global shrinkers for the inode and dentry caches that\nsplit up into per-superblock operations via a coarse proportioning\nmethod that does not batch very well.  The global shrinkers also\nhave a dependency - dentries pin inodes - so we have to be very\ncareful about how we register the global shrinkers so that the\nimplicit call order is always correct.\n\nWith a per-sb shrinker callout, we can encode this dependency\ndirectly into the per-sb shrinker, hence avoiding the need for\nstrictly ordering shrinker registrations. We also have no need for\nany proportioning code for the shrinker subsystem already provides\nthis functionality across all shrinkers. Allowing the shrinker to\noperate on a single superblock at a time means that we do less\nsuperblock list traversals and locking and reclaim should batch more\neffectively. This should result in less CPU overhead for reclaim and\npotentially faster reclaim of items from each filesystem.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "09cc9fc7a7c3d872065426d7fb0f0ad6d3eb90fc",
      "tree": "79f6f835dd009ac34bd35ee3ee61e616ec2b255a",
      "parents": [
        "98b745c647a5a90c3c21ea43cbfad9a47b0dfad7"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:40 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:36 2011 -0400"
      },
      "message": "inode: move to per-sb LRU locks\n\nWith the inode LRUs moving to per-sb structures, there is no longer\na need for a global inode_lru_lock. The locking can be made more\nfine-grained by moving to a per-sb LRU lock, isolating the LRU\noperations of different filesytsems completely from each other.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "98b745c647a5a90c3c21ea43cbfad9a47b0dfad7",
      "tree": "08917a620b6d15076223c1ef75996a1a76a13abd",
      "parents": [
        "fcb94f72d3e0f4f34b326c2986da8e5996daf72c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:39 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:35 2011 -0400"
      },
      "message": "inode: Make unused inode LRU per superblock\n\nThe inode unused list is currently a global LRU. This does not match\nthe other global filesystem cache - the dentry cache - which uses\nper-superblock LRU lists. Hence we have related filesystem object\ntypes using different LRU reclaimation schemes.\n\nTo enable a per-superblock filesystem cache shrinker, both of these\ncaches need to have per-sb unused object LRU lists. Hence this patch\nconverts the global inode LRU to per-sb LRUs.\n\nThe patch only does rudimentary per-sb propotioning in the shrinker\ninfrastructure, as this gets removed when the per-sb shrinker\ncallouts are introduced later on.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fcb94f72d3e0f4f34b326c2986da8e5996daf72c",
      "tree": "a18da3a56f447264c0dc2501a41afc5890afc78c",
      "parents": [
        "e9299f5058595a655c3b207cda9635e28b9197e6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:38 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:34 2011 -0400"
      },
      "message": "inode: convert inode_stat.nr_unused to per-cpu counters\n\nBefore we split up the inode_lru_lock, the unused inode counter\nneeds to be made independent of the global inode_lru_lock. Convert\nit to per-cpu counters to do this.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e7f59097071f2e193e900093742a4be85839f3d9",
      "tree": "35cc747b65d29fdc4f6dea472bf75b540da20453",
      "parents": [
        "0ee5dc676a5f8fadede608c7281dfedb1ae714ea"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 15:45:59 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:21 2011 -0400"
      },
      "message": "kill useless checks for sb-\u003es_op \u003d\u003d NULL\n\nnever is...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "08142579b6ca35883c1ed066a2681de6f6917062",
      "tree": "00735ed37753533f3b645714770b4fb036b5f7e0",
      "parents": [
        "9b679320a5fbf46454011e5c62e0b8991b0956d1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jun 27 16:18:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:13 2011 -0700"
      },
      "message": "mm: fix assertion mapping-\u003enrpages \u003d\u003d 0 in end_writeback()\n\nUnder heavy memory and filesystem load, users observe the assertion\nmapping-\u003enrpages \u003d\u003d 0 in end_writeback() trigger.  This can be caused by\npage reclaim reclaiming the last page from a mapping in the following\nrace:\n\n\tCPU0\t\t\t\tCPU1\n  ...\n  shrink_page_list()\n    __remove_mapping()\n      __delete_from_page_cache()\n        radix_tree_delete()\n\t\t\t\t\tevict_inode()\n\t\t\t\t\t  truncate_inode_pages()\n\t\t\t\t\t    truncate_inode_pages_range()\n\t\t\t\t\t      pagevec_lookup() - finds nothing\n\t\t\t\t\t  end_writeback()\n\t\t\t\t\t    mapping-\u003enrpages !\u003d 0 -\u003e BUG\n        page-\u003emapping \u003d NULL\n        mapping-\u003enrpages--\n\nFix the problem by doing a reliable check of mapping-\u003enrpages under\nmapping-\u003etree_lock in end_writeback().\n\nAnalyzed by Jay \u003cjinshan.xiong@whamcloud.com\u003e, lost in LKML, and dug out\nby Miklos Szeredi \u003cmszeredi@suse.de\u003e.\n\nCc: Jay \u003cjinshan.xiong@whamcloud.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\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": "f758eeabeb96f878c860e8f110f94ec8820822a9",
      "tree": "fea5a465aa0aa38c6c9263eb264acbeb7f722c02",
      "parents": [
        "424b351fe1901fc909fd0ca4f21dab58f24c1aac"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Apr 21 18:19:44 2011 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Jun 08 08:25:21 2011 +0800"
      },
      "message": "writeback: split inode_wb_list_lock into bdi_writeback.list_lock\n\nSplit the global inode_wb_list_lock into a per-bdi_writeback list_lock,\nas it\u0027s currently the most contended lock in the system for metadata\nheavy workloads.  It won\u0027t help for single-filesystem workloads for\nwhich we\u0027ll need the I/O-less balance_dirty_pages, but at least we\ncan dedicate a cpu to spinning on each bdi now for larger systems.\n\nBased on earlier patches from Nick Piggin and Dave Chinner.\n\nIt reduces lock contentions to 1/4 in this test case:\n10 HDD JBOD, 100 dd on each disk, XFS, 6GB ram\n\nlock_stat version 0.3\n-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n                              class name    con-bounces    contentions   waittime-min   waittime-max waittime-total    acq-bounces   acquisitions   holdtime-min   holdtime-max holdtime-total\n-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\nvanilla 2.6.39-rc3:\n                      inode_wb_list_lock:         42590          44433           0.12         147.74      144127.35         252274         886792           0.08         121.34      917211.23\n                      ------------------\n                      inode_wb_list_lock              2          [\u003cffffffff81165da5\u003e] bdev_inode_switch_bdi+0x29/0x85\n                      inode_wb_list_lock             34          [\u003cffffffff8115bd0b\u003e] inode_wb_list_del+0x22/0x49\n                      inode_wb_list_lock          12893          [\u003cffffffff8115bb53\u003e] __mark_inode_dirty+0x170/0x1d0\n                      inode_wb_list_lock          10702          [\u003cffffffff8115afef\u003e] writeback_single_inode+0x16d/0x20a\n                      ------------------\n                      inode_wb_list_lock              2          [\u003cffffffff81165da5\u003e] bdev_inode_switch_bdi+0x29/0x85\n                      inode_wb_list_lock             19          [\u003cffffffff8115bd0b\u003e] inode_wb_list_del+0x22/0x49\n                      inode_wb_list_lock           5550          [\u003cffffffff8115bb53\u003e] __mark_inode_dirty+0x170/0x1d0\n                      inode_wb_list_lock           8511          [\u003cffffffff8115b4ad\u003e] writeback_sb_inodes+0x10f/0x157\n\n2.6.39-rc3 + patch:\n                \u0026(\u0026wb-\u003elist_lock)-\u003erlock:         11383          11657           0.14         151.69       40429.51          90825         527918           0.11         145.90      556843.37\n                ------------------------\n                \u0026(\u0026wb-\u003elist_lock)-\u003erlock             10          [\u003cffffffff8115b189\u003e] inode_wb_list_del+0x5f/0x86\n                \u0026(\u0026wb-\u003elist_lock)-\u003erlock           1493          [\u003cffffffff8115b1ed\u003e] writeback_inodes_wb+0x3d/0x150\n                \u0026(\u0026wb-\u003elist_lock)-\u003erlock           3652          [\u003cffffffff8115a8e9\u003e] writeback_sb_inodes+0x123/0x16f\n                \u0026(\u0026wb-\u003elist_lock)-\u003erlock           1412          [\u003cffffffff8115a38e\u003e] writeback_single_inode+0x17f/0x223\n                ------------------------\n                \u0026(\u0026wb-\u003elist_lock)-\u003erlock              3          [\u003cffffffff8110b5af\u003e] bdi_lock_two+0x46/0x4b\n                \u0026(\u0026wb-\u003elist_lock)-\u003erlock              6          [\u003cffffffff8115b189\u003e] inode_wb_list_del+0x5f/0x86\n                \u0026(\u0026wb-\u003elist_lock)-\u003erlock           2061          [\u003cffffffff8115af97\u003e] __mark_inode_dirty+0x173/0x1cf\n                \u0026(\u0026wb-\u003elist_lock)-\u003erlock           2629          [\u003cffffffff8115a8e9\u003e] writeback_sb_inodes+0x123/0x16f\n\nhughd@google.com: fix recursive lock when bdi_lock_two() is called with new the same as old\nakpm@linux-foundation.org: cleanup bdev_inode_switch_bdi() comment\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "4b4563dc80594c6a2580aa52d9fcf0177a27074e",
      "tree": "1930ae6b71c7d69c7072e05cc2e2c55fb83547f4",
      "parents": [
        "c642808454ac81d6a6701da6022e93bbe47bb38b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri May 27 09:28:01 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 27 09:43:00 2011 -0400"
      },
      "message": "fs: cosmetic inode.c cleanups\n\nMove the lock order description after all the includes, remove several\nfairly outdated and/or incorrect comments, move Andrea\u0027s\ncopyright/changelog to the top where it belongs, remove the pointless\nfilename in the top of the file comment, and remove to useless macros.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1495f230fa7750479c79e3656286b9183d662077",
      "tree": "e5e233bb9fe1916ccc7281e7dcc71b1572fb22c5",
      "parents": [
        "a09ed5e00084448453c8bada4dcd31e5fbfc2f21"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue May 24 17:12:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:26 2011 -0700"
      },
      "message": "vmscan: change shrinker API by passing shrink_control struct\n\nChange each shrinker\u0027s API by consolidating the existing parameters into\nshrink_control struct.  This will simplify any further features added w/o\ntouching each file of shrinker.\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: fix warning]\n[kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API]\n[akpm@linux-foundation.org: fix xfs warning]\n[akpm@linux-foundation.org: update gfs2]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@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": "3d48ae45e72390ddf8cc5256ac32ed6f7a19cbea",
      "tree": "1f46db3a8424090dd8e0b58991fa5acc1a73e680",
      "parents": [
        "97a894136f29802da19a15541de3c019e1ca147e"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 24 17:12:06 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:18 2011 -0700"
      },
      "message": "mm: Convert i_mmap_lock to a mutex\n\nStraightforward conversion of i_mmap_lock to a mutex.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Namhyung Kim \u003cnamhyung@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": "97a894136f29802da19a15541de3c019e1ca147e",
      "tree": "1fd3f92ba92a37d5d8527a1f41458091d0a944dc",
      "parents": [
        "e4c70a6629f9c74c4b0de258a3951890e9047c82"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 24 17:12:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:17 2011 -0700"
      },
      "message": "mm: Remove i_mmap_lock lockbreak\n\nHugh says:\n \"The only significant loser, I think, would be page reclaim (when\n  concurrent with truncation): could spin for a long time waiting for\n  the i_mmap_mutex it expects would soon be dropped? \"\n\nCounter points:\n - cpu contention makes the spin stop (need_resched())\n - zap pages should be freeing pages at a higher rate than reclaim\n   ever can\n\nI think the simplification of the truncate code is definitely worth it.\n\nEffectively reverts: 2aa15890f3c (\"mm: prevent concurrent\nunmap_mapping_range() on the same inode\") and takes out the code that\ncaused its problem.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Namhyung Kim \u003cnamhyung@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": "9ce6e0be0626a5de2aca8b769a4aa57086257156",
      "tree": "a6c2d49e85c8aca4665d54f8a3629196d5f7fd23",
      "parents": [
        "dcb4a1f0e0367efb813907e5083998bbb98b0456"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Sun May 22 18:54:21 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 22 11:26:02 2011 -0700"
      },
      "message": "fs: add missing prefetch.h include\n\nFixes this build error on s390 and probably other archs as well:\n\n  fs/inode.c: In function \u0027new_inode\u0027:\n  fs/inode.c:894:2: error: implicit declaration of function \u0027spin_lock_prefetch\u0027\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n[ Happens on architectures that don\u0027t define their own prefetch\n  functions in \u003casm/processor.h\u003e, and instead rely on the default\n  ones in \u003clinux/prefetch.h\u003e   - Linus]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7dcda1c96d7c643101d4a05579ef4512a4baa7ef",
      "tree": "62051d63c47a3df7381cdc294815e79da5ebdc93",
      "parents": [
        "929e27252e8ca69363f81f26af5eaba62cb4c572"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:48 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:48 2011 +0200"
      },
      "message": "fs: export empty_aops\n\nWith the -\u003esync_page() hook gone, we have a few users that\nadd their own static address_space_operations without any\nfunctions defined.\n\nfs/inode.c already has an empty_aops that it uses for init\npurposes. Lets export that and use it in the places where\nan otherwise empty aops was defined.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b6d0ad686da95fa85ce0c583ec35017bf1583563",
      "tree": "357c740a9d8bb37397ead382dc3dd302f91d0e28",
      "parents": [
        "6213cfe82461e39219a3b06ecf1d0679b4c0657f"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sat Mar 26 13:27:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 27 19:30:19 2011 -0700"
      },
      "message": "fs: fix inode.c kernel-doc warning\n\nFix inode.c kernel-doc fatal error: 2 comment sections have the same name:\n\n  Error(fs/inode.c:1171): duplicate section name \u0027Note\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b2d0724e26a335cd326eb7ad552c109116a8795",
      "tree": "fabd651e35f3fbc60d4ca9ca7fbdad0a04596d43",
      "parents": [
        "0f1b1fd86f6fd662e04da3e82a6780b226fcd0d1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 23 15:03:28 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:17:52 2011 -0400"
      },
      "message": "fs: simplify iget \u0026 friends\n\nMerge get_new_inode/get_new_inode_fast into iget5_locked/iget_locked\nas those were the only callers.  Remove the internal ifind/ifind_fast\nhelpers - ifind_fast only had a single caller, and ifind had two\ncallers wanting it to do different things.  Also clean up the comments\nin this area to focus on information important to a developer trying\nto use it, instead of overloading them with implementation details.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "67a23c494621ff1d5431c3bc320947865b224625",
      "tree": "cce0868fc73031d8b0addc4dc7412d49ee9ec370",
      "parents": [
        "a66979abad090b2765a6c6790c9fdeab996833f2"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:42 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:17:51 2011 -0400"
      },
      "message": "fs: rename inode_lock to inode_hash_lock\n\nAll that remains of the inode_lock is protecting the inode hash list\nmanipulation and traversals. Rename the inode_lock to\ninode_hash_lock to reflect it\u0027s actual function.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a66979abad090b2765a6c6790c9fdeab996833f2",
      "tree": "e48b2d0fac8f96456286a503aeeb952620234961",
      "parents": [
        "55fa6091d83160ca772fc37cebae45d42695a708"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:41 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:17:51 2011 -0400"
      },
      "message": "fs: move i_wb_list out from under inode_lock\n\nProtect the inode writeback list with a new global lock\ninode_wb_list_lock and use it to protect the list manipulations and\ntraversals. This lock replaces the inode_lock as the inodes on the\nlist can be validity checked while holding the inode-\u003ei_lock and\nhence the inode_lock is no longer needed to protect the list.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "55fa6091d83160ca772fc37cebae45d42695a708",
      "tree": "4df49f372032e30449e1a2dd64daf443e20b781c",
      "parents": [
        "f283c86afe6aa70b733d1ecebad5d9464943b774"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:40 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:32 2011 -0400"
      },
      "message": "fs: move i_sb_list out from under inode_lock\n\nProtect the per-sb inode list with a new global lock\ninode_sb_list_lock and use it to protect the list manipulations and\ntraversals. This lock replaces the inode_lock as the inodes on the\nlist can be validity checked while holding the inode-\u003ei_lock and\nhence the inode_lock is no longer needed to protect the list.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f283c86afe6aa70b733d1ecebad5d9464943b774",
      "tree": "beaeca959996f2d8a00a997c56932dc5916bfec8",
      "parents": [
        "02afc410f363f98ac4f186341e38dcec13fc0e60"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:39 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:32 2011 -0400"
      },
      "message": "fs: remove inode_lock from iput_final and prune_icache\n\nNow that inode state changes are protected by the inode-\u003ei_lock and\nthe inode LRU manipulations by the inode_lru_lock, we can remove the\ninode_lock from prune_icache and the initial part of iput_final().\n\ninstead of using the inode_lock to protect the inode during\niput_final, use the inode-\u003ei_lock instead. This protects the inode\nagainst new references being taken while we change the inode state\nto I_FREEING, as well as preventing prune_icache from grabbing the\ninode while we are manipulating it. Hence we no longer need the\ninode_lock in iput_final prior to setting I_FREEING on the inode.\n\nFor prune_icache, we no longer need the inode_lock to protect the\nLRU list, and the inodes themselves are protected against freeing\nraces by the inode-\u003ei_lock. Hence we can lift the inode_lock from\nprune_icache as well.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "02afc410f363f98ac4f186341e38dcec13fc0e60",
      "tree": "2c5d5b2f1556806da135f2323b4df4d7d72d3734",
      "parents": [
        "b2b2af8e614b4dcd8aca1369d82ce5ad0461a7b1"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:38 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:31 2011 -0400"
      },
      "message": "fs: Lock the inode LRU list separately\n\nIntroduce the inode_lru_lock to protect the inode_lru list. This\nlock is nested inside the inode-\u003ei_lock to allow the inode to be\nadded to the LRU list in iput_final without needing to deal with\nlock inversions. This keeps iput_final() clean and neat.\n\nFurther, where marking the inode I_FREEING and removing it from the\nLRU, move the LRU list manipulation within the inode-\u003ei_lock to keep\nthe list manipulation consistent with iput_final. This also means\nthat most of the open coded LRU list removal + unused inode\naccounting can now use the inode_lru_list_del() wrappers which\ncleans the code up further.\n\nHowever, this locking change means what the LRU traversal in\nprune_icache() inverts this lock ordering and needs to use trylock\nsemantics on the inode-\u003ei_lock to avoid deadlocking. In these cases,\nif we fail to lock the inode we move it to the back of the LRU to\nprevent spinning on it.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b2b2af8e614b4dcd8aca1369d82ce5ad0461a7b1",
      "tree": "08b810e4df93a0705cc3c430a327344ae46ebfc8",
      "parents": [
        "250df6ed274d767da844a5d9f05720b804240197"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:37 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:31 2011 -0400"
      },
      "message": "fs: factor inode disposal\n\nWe have a couple of places that dispose of inodes. factor the\ndisposal into evict() to isolate this code and make it simpler to\npeel away the inode_lock from the code.\n\nWhile doing this, change the logic flow in iput_final() to separate\nthe different cases that need to be handled to make the transitions\nthe inode goes through more obvious.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "250df6ed274d767da844a5d9f05720b804240197",
      "tree": "b74f49a86c4451d9e3e82f90e3f791163025be21",
      "parents": [
        "3dc8fe4dca9cd3e4aa828ed36451e2bcfd2350da"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:36 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:31 2011 -0400"
      },
      "message": "fs: protect inode-\u003ei_state with inode-\u003ei_lock\n\nProtect inode state transitions and validity checks with the\ninode-\u003ei_lock. This enables us to make inode state transitions\nindependently of the inode_lock and is the first step to peeling\naway the inode_lock from the code.\n\nThis requires that __iget() is done atomically with i_state checks\nduring list traversals so that we don\u0027t race with another thread\nmarking the inode I_FREEING between the state check and grabbing the\nreference.\n\nAlso remove the unlock_new_inode() memory barrier optimisation\nrequired to avoid taking the inode_lock when clearing I_NEW.\nSimplify the code by simply taking the inode-\u003ei_lock around the\nstate change and wakeup. Because the wakeup is no longer tricky,\nremove the wake_up_inode() function and open code the wakeup where\nnecessary.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2e1496707560ecf98e9b0604622c0990f94861d3",
      "tree": "d1473b70fad31a903fedc87221680678a6c6c5f6",
      "parents": [
        "e795b71799ff0b27365020c9ddaa25d0d83f99c8"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:13 2011 -0700"
      },
      "message": "userns: rename is_owner_or_cap to inode_owner_or_capable\n\nAnd give it a kernel-doc comment.\n\n[akpm@linux-foundation.org: btrfs changed in linux-next]\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e795b71799ff0b27365020c9ddaa25d0d83f99c8",
      "tree": "f3b628c2366f181380a8fbcd490910eb086a7b8e",
      "parents": [
        "b0e77598f87107001a00b8a4ece9c95e4254ccc4"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:08 2011 -0700"
      },
      "message": "userns: userns: check user namespace for task-\u003efile uid equivalence checks\n\nCheat for now and say all files belong to init_user_ns.  Next step will be\nto let superblocks belong to a user_ns, and derive inode_userns(inode)\nfrom inode-\u003ei_sb-\u003es_user_ns.  Finally we\u0027ll introduce more flexible\narrangements.\n\nChangelog:\n\tFeb 15: make is_owner_or_cap take const struct inode\n\tFeb 23: make is_owner_or_cap bool\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eaae668d01e15435cf977cced3975ccc436257fc",
      "tree": "8dcb4dafe2f8aeb0a5222ad1cdd45e3abb44f753",
      "parents": [
        "2c3d44dc4a1262168ef31bef22b3aa554c0572d8"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Tue Feb 15 12:48:09 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 21 00:16:08 2011 -0400"
      },
      "message": "fs/inode: Fix kernel-doc format for inode_init_owner\n\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bab1d9444d9a147f1dc3478dd06c16f490227f3e",
      "tree": "e5dd5220c976f604163c0b96945af3ee0be1fe24",
      "parents": [
        "5229645bdc35f1cc43eb8b25b6993c8fa58b4b43"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Mar 15 21:51:24 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 09:56:03 2011 -0400"
      },
      "message": "prune back iprune_sem\n\niprune_sem is continously giving us lockdep warnings because we do take it in\nread mode in the reclaim path, but we\u0027re also doing non-NOFS allocations under\nit taken in write mode.\n\nTaking a bit deeper look at it I think it\u0027s fixable quite trivially:\n\n - for invalidate_inodes we do not need iprune_sem at all.  We have an active\n   reference on the superblock, so the filesystem is not going away until it\n   has finished.\n - for evict_inodes we do need it, to make sure prune_icache has done it\u0027s\n   work before we tear down the superblock.  But there is no reason to\n   hold it over the actual reclaim operation - it\u0027s enough to cycle through\n   it after the actual reclaim to make sure we wait for any pending\n   prune_icache to complete.  We just have to remove the WARN_ON for\n   otherwise busy inodes as they can actually happen now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "638691a7a46a4ae9a7b56c603299e42d7f6e722e",
      "tree": "f744b3fbdd4704ef9ae122b67a14785b4a7a6b65",
      "parents": [
        "0a93ea2e897bd793cc0aaaddc397eff32ac8d6fe",
        "f0b4f7e2f29af678bd9af43422c537dcb6008603"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 11:13:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 11:13:26 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: Fix - again - partition detection when array becomes active\n  Fix over-zealous flush_disk when changing device size.\n  md: avoid spinlock problem in blk_throtl_exit\n  md: correctly handle probe of an \u0027mdp\u0027 device.\n  md: don\u0027t set_capacity before array is active.\n  md: Fix raid1-\u003eraid0 takeover\n"
    },
    {
      "commit": "93b270f76e7ef3b81001576860c2701931cdc78b",
      "tree": "abaca0e4d3e86721815498fafd06295dd9cfd002",
      "parents": [
        "da9cf5050a2e3dbc3cf26a8d908482eb4485ed49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:25:47 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:25:47 2011 +1100"
      },
      "message": "Fix over-zealous flush_disk when changing device size.\n\nThere are two cases when we call flush_disk.\nIn one, the device has disappeared (check_disk_change) so any\ndata will hold becomes irrelevant.\nIn the oter, the device has changed size (check_disk_size_change)\nso data we hold may be irrelevant.\n\nIn both cases it makes sense to discard any \u0027clean\u0027 buffers,\nso they will be read back from the device if needed.\n\nIn the former case it makes sense to discard \u0027dirty\u0027 buffers\nas there will never be anywhere safe to write the data.  In the\nsecond case it *does*not* make sense to discard dirty buffers\nas that will lead to file system corruption when you simply enlarge\nthe containing devices.\n\nflush_disk calls __invalidate_devices.\n__invalidate_device calls both invalidate_inodes and invalidate_bdev.\n\ninvalidate_inodes *does* discard I_DIRTY inodes and this does lead\nto fs corruption.\n\ninvalidate_bev *does*not* discard dirty pages, but I don\u0027t really care\nabout that at present.\n\nSo this patch adds a flag to __invalidate_device (calling it\n__invalidate_device2) to indicate whether dirty buffers should be\nkilled, and this is passed to invalidate_inodes which can choose to\nskip dirty inodes.\n\nflusk_disk then passes true from check_disk_change and false from\ncheck_disk_size_change.\n\ndm avoids tripping over this problem by calling i_size_write directly\nrathher than using check_disk_size_change.\n\nmd does use check_disk_size_change and so is affected.\n\nThis regression was introduced by commit 608aeef17a which causes\ncheck_disk_size_change to call flush_disk, so it is suitable for any\nkernel since 2.6.27.\n\nCc: stable@kernel.org\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Andrew Patterson \u003candrew.patterson@hp.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2aa15890f3c191326678f1bd68af61ec6b8753ec",
      "tree": "347f5fdcd0678b12be92f266cd2a5e7a74749403",
      "parents": [
        "78794b2cdeac37ac1fd950fc9c4454b56d88ac03"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Feb 23 13:49:47 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 23 19:52:52 2011 -0800"
      },
      "message": "mm: prevent concurrent unmap_mapping_range() on the same inode\n\nMichael Leun reported that running parallel opens on a fuse filesystem\ncan trigger a \"kernel BUG at mm/truncate.c:475\"\n\nGurudas Pai reported the same bug on NFS.\n\nThe reason is, unmap_mapping_range() is not prepared for more than\none concurrent invocation per inode.  For example:\n\n  thread1: going through a big range, stops in the middle of a vma and\n     stores the restart address in vm_truncate_count.\n\n  thread2: comes in with a small (e.g. single page) unmap request on\n     the same vma, somewhere before restart_address, finds that the\n     vma was already unmapped up to the restart address and happily\n     returns without doing anything.\n\nAnother scenario would be two big unmap requests, both having to\nrestart the unmapping and each one setting vm_truncate_count to its\nown value.  This could go on forever without any of them being able to\nfinish.\n\nTruncate and hole punching already serialize with i_mutex.  Other\ncallers of unmap_mapping_range() do not, and it\u0027s difficult to get\ni_mutex protection for all callers.  In particular -\u003ed_revalidate(),\nwhich calls invalidate_inode_pages2_range() in fuse, may be called\nwith or without i_mutex.\n\nThis patch adds a new mutex to \u0027struct address_space\u0027 to prevent\nrunning multiple concurrent unmap_mapping_range() on the same mapping.\n\n[ We\u0027ll hopefully get rid of all this with the upcoming mm\n  preemptibility series by Peter Zijlstra, the \"mm: Remove i_mmap_mutex\n  lockbreak\" patch in particular.  But that is for 2.6.39 ]\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nReported-by: Michael Leun \u003clkml20101129@newton.leun.net\u003e\nReported-by: Gurudas Pai \u003cgurudas.pai@oracle.com\u003e\nTested-by: Gurudas Pai \u003cgurudas.pai@oracle.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff0c7d15f9787b7e8c601533c015295cc68329f8",
      "tree": "e3db53950b8ed78e542ab35a3cd3a6eaee26eccd",
      "parents": [
        "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:50 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: avoid inode RCU freeing for pseudo fs\n\nPseudo filesystems that don\u0027t put inode on RCU list or reachable by\nrcu-walk dentries do not need to RCU free their inodes.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "3e880fb5e4bb6a012035e3edd0586ee2817c2e24",
      "tree": "665101c2c559c26e2dff2c7eca2c747fb736b524",
      "parents": [
        "86c8749ede0c59e590de9267066932a26f1ce796"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:19 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:17 2011 +1100"
      },
      "message": "fs: use fast counters for vfs caches\n\npercpu_counter library generates quite nasty code, so unless you need\nto dynamically allocate counters or take fast approximate value, a\nsimple per cpu set of counters is much better.\n\nThe percpu_counter can never be made to work as well, because it has an\nindirection from pointer to percpu memory, and it can\u0027t use direct\nthis_cpu_inc interfaces because it doesn\u0027t use static PER_CPU data, so\ncode will always be worse.\n\nIn the fastpath, it is the difference between this:\n\n        incl %gs:nr_dentry      # nr_dentry\n\nand this:\n\n        movl    percpu_counter_batch(%rip), %edx        # percpu_counter_batch,\n        movl    $1, %esi        #,\n        movq    $nr_dentry, %rdi        #,\n        call    __percpu_counter_add    # (plus I clobber registers)\n\n__percpu_counter_add:\n        pushq   %rbp    #\n        movq    %rsp, %rbp      #,\n        subq    $32, %rsp       #,\n        movq    %rbx, -24(%rbp) #,\n        movq    %r12, -16(%rbp) #,\n        movq    %r13, -8(%rbp)  #,\n        movq    %rdi, %rbx      # fbc, fbc\n#APP\n# 216 \"/home/npiggin/usr/src/linux-2.6/arch/x86/include/asm/thread_info.h\" 1\n        movq %gs:kernel_stack,%rax      #, pfo_ret__\n# 0 \"\" 2\n#NO_APP\n        incl    -8124(%rax)     # \u003cvariable\u003e.preempt_count\n        movq    32(%rdi), %r12  # \u003cvariable\u003e.counters, tcp_ptr__\n#APP\n# 78 \"lib/percpu_counter.c\" 1\n        add %gs:this_cpu_off, %r12      # this_cpu_off, tcp_ptr__\n# 0 \"\" 2\n#NO_APP\n        movslq  (%r12),%r13     #* tcp_ptr__, tmp73\n        movslq  %edx,%rax       # batch, batch\n        addq    %rsi, %r13      # amount, count\n        cmpq    %rax, %r13      # batch, count\n        jge     .L27    #,\n        negl    %edx    # tmp76\n        movslq  %edx,%rdx       # tmp76, tmp77\n        cmpq    %rdx, %r13      # tmp77, count\n        jg      .L28    #,\n.L27:\n        movq    %rbx, %rdi      # fbc,\n        call    _raw_spin_lock  #\n        addq    %r13, 8(%rbx)   # count, \u003cvariable\u003e.count\n        movq    %rbx, %rdi      # fbc,\n        movl    $0, (%r12)      #,* tcp_ptr__\n        call    _raw_spin_unlock        #\n.L29:\n#APP\n# 216 \"/home/npiggin/usr/src/linux-2.6/arch/x86/include/asm/thread_info.h\" 1\n        movq %gs:kernel_stack,%rax      #, pfo_ret__\n# 0 \"\" 2\n#NO_APP\n        decl    -8124(%rax)     # \u003cvariable\u003e.preempt_count\n        movq    -8136(%rax), %rax       #, D.14625\n        testb   $8, %al #, D.14625\n        jne     .L32    #,\n.L31:\n        movq    -24(%rbp), %rbx #,\n        movq    -16(%rbp), %r12 #,\n        movq    -8(%rbp), %r13  #,\n        leave\n        ret\n        .p2align 4,,10\n        .p2align 3\n.L28:\n        movl    %r13d, (%r12)   # count,*\n        jmp     .L29    #\n.L32:\n        call    preempt_schedule        #\n        .p2align 4,,6\n        jmp     .L31    #\n        .size   __percpu_counter_add, .-__percpu_counter_add\n        .p2align 4,,15\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "86c8749ede0c59e590de9267066932a26f1ce796",
      "tree": "316517d7c03d9caf0577acc517532ed2bc1801cc",
      "parents": [
        "ccd35fb9f4da856b105ea0f1e0cab3702e8ae6ba"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:18 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:17 2011 +1100"
      },
      "message": "vfs: revert per-cpu nr_unused counters for dentry and inodes\n\nThe nr_unused counters count the number of objects on an LRU, and as such they\nare synchronized with LRU object insertion and removal and scanning, and\nprotected under the LRU lock.\n\nMaking it per-cpu does not actually get any concurrency improvements because of\nthis lock, and summing the counter is much slower, and\nincrementing/decrementing it costs more code size and is slower too.\n\nThese counters should stay per-LRU, which currently means global.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "a178d2027d3198b0a04517d764326ab71cd73da2",
      "tree": "d81b9336328ba1741231b318a6f8187f627581fd",
      "parents": [
        "b9593d309d17c57e9ddc3934d641902533896ca9"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Oct 25 14:41:59 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 11:37:18 2010 -0700"
      },
      "message": "IMA: move read counter into struct inode\n\nIMA currently allocated an inode integrity structure for every inode in\ncore.  This stucture is about 120 bytes long.  Most files however\n(especially on a system which doesn\u0027t make use of IMA) will never need\nany of this space.  The problem is that if IMA is enabled we need to\nknow information about the number of readers and the number of writers\nfor every inode on the box.  At the moment we collect that information\nin the per inode iint structure and waste the rest of the space.  This\npatch moves those counters into the struct inode so we can eventually\nstop allocating an IMA integrity structure except when absolutely\nneeded.\n\nThis patch does the minimum needed to move the location of the data.\nFurther cleanups, especially the location of counter updates, may still\nbe possible.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Mimi Zohar \u003czohar@linux.vnet.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "63997e98a3be68d7cec806d22bf9b02b2e1daabb",
      "tree": "acd366273dc459d6b34e7f67216c06eb56117a4a",
      "parents": [
        "9843b76aae80293f5b5a0e275360627508595ce5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 20:49:35 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:27:18 2010 -0400"
      },
      "message": "split invalidate_inodes()\n\nPull removal of fsnotify marks into generic_shutdown_super().\nSplit umount-time work into a new function - evict_inodes().\nMake sure that invalidate_inodes() will be able to cope with\nI_FREEING once we change locking in iput().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a031878670ac8fe466859d4c1506bd91ae48678c",
      "tree": "09cfc2b1425d69c08751a27e389499d4d72438ef",
      "parents": [
        "d895a1c96af8c2a0f6a5e0119695a7c6b92df8db"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sun Oct 24 19:40:33 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:15 2010 -0400"
      },
      "message": "fs: fold invalidate_list into invalidate_inodes\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d895a1c96af8c2a0f6a5e0119695a7c6b92df8db",
      "tree": "6c6c72f5a071eb3c1c31b9188e8237d64001b2eb",
      "parents": [
        "7ccf19a8042e343f8159f8a5fdd6a9422aa90c78"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sun Oct 24 19:40:24 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:15 2010 -0400"
      },
      "message": "fs: do not drop inode_lock in dispose_list\n\nDespite the comment above it we can not safely drop the lock here.\ninvalidate_list is called from many other places that just umount.\nAlso switch to proper list macros now that we never drop the lock.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7ccf19a8042e343f8159f8a5fdd6a9422aa90c78",
      "tree": "9a69aaad6eb8992cae06f44dfea8c1d94f2a7f99",
      "parents": [
        "a5491e0c7bb7387e3e6ff9994d6dc2efc78af56c"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Oct 21 11:49:30 2010 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:15 2010 -0400"
      },
      "message": "fs: inode split IO and LRU lists\n\nThe use of the same inode list structure (inode-\u003ei_list) for two\ndifferent list constructs with different lifecycles and purposes\nmakes it impossible to separate the locking of the different\noperations. Therefore, to enable the separation of the locking of\nthe writeback and reclaim lists, split the inode-\u003ei_list into two\nseparate lists dedicated to their specific tracking functions.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "99a38919241fd051b8d93b2e4d0c05ef0556d795",
      "tree": "6d42602c4663645412e3c11dc31211a28b285594",
      "parents": [
        "4d4eb36679adbdd75495e1bbfe7ac40e4ae41dea"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 19:07:20 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:14 2010 -0400"
      },
      "message": "fs: fix buffer invalidation in invalidate_list\n\nWe must not call invalidate_inode_buffers in invalidate_list unless the\ninode can be reclaimed.  If we remove the buffer association of a busy\ninode fsync won\u0027t find the buffers anymore.  As invalidate_inode_buffers\nis called from various others sources than umount this actually does\nmatter in practice.\n\nWhile at it change the loop to a more natural form and remove the\nWARN_ON for I_NEW, wich we already tested a few lines above.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "85fe4025c616a7c0ed07bc2fc8c5371b07f3888c",
      "tree": "7a5db7accb6192f2911f2473b4e3191227b914cc",
      "parents": [
        "f991bd2e14210fb93d722cb23e54991de20e8a3d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 11:19:54 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "fs: do not assign default i_ino in new_inode\n\nInstead of always assigning an increasing inode number in new_inode\nmove the call to assign it into those callers that actually need it.\nFor now callers that need it is estimated conservatively, that is\nthe call is added to all filesystems that do not assign an i_ino\nby themselves.  For a few more filesystems we can avoid assigning\nany inode number given that they aren\u0027t user visible, and for others\nit could be done lazily when an inode number is actually needed,\nbut that\u0027s left for later patches.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f991bd2e14210fb93d722cb23e54991de20e8a3d",
      "tree": "60643fb9d828c388d963ceb26504dce9890eabbb",
      "parents": [
        "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sat Oct 23 11:18:01 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "fs: introduce a per-cpu last_ino allocator\n\nnew_inode() dirties a contended cache line to get increasing\ninode numbers. This limits performance on workloads that cause\nsignificant parallel inode allocation.\n\nSolve this problem by using a per_cpu variable fed by the shared\nlast_ino in batches of 1024 allocations.  This reduces contention on\nthe shared last_ino, and give same spreading ino numbers than before\n(i.e. same wraparound after 2^32 allocations).\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "646ec4615cd05972581c9c5342ed7a1e77df17bb",
      "tree": "23c252d906f5356205b4d42c4ff9b4e6f70ebca2",
      "parents": [
        "f7899bd5472e8e99741369b4a32eca44e5282a85"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 07:15:32 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:10 2010 -0400"
      },
      "message": "fs: remove inode_add_to_list/__inode_add_to_list\n\nSplit up inode_add_to_list/__inode_add_to_list.  Locking for the two\nlists will be split soon so these helpers really don\u0027t buy us much\nanymore.\n\nThe __ prefixes for the sb list helpers will go away soon, but until\ninode_lock is gone we\u0027ll need them to distinguish between the locked\nand unlocked variants.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f7899bd5472e8e99741369b4a32eca44e5282a85",
      "tree": "01297ddbb1bbeb0409f4f6bba81fbb3150794033",
      "parents": [
        "ad5e195ac9fdf4e2b28b8cf14937e5b9384dac2e"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 07:09:06 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:10 2010 -0400"
      },
      "message": "fs: move i_count increments into find_inode/find_inode_fast\n\nNow that iunique is not abusing find_inode anymore we can move the i_ref\nincrement back to where it belongs.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ad5e195ac9fdf4e2b28b8cf14937e5b9384dac2e",
      "tree": "0345280d9095f5046c03ed25893aad229fae9369",
      "parents": [
        "4c51acbc66f754e536e1c9e3331656b69bce86d0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 07:00:16 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:10 2010 -0400"
      },
      "message": "fs: Stop abusing find_inode_fast in iunique\n\nStop abusing find_inode_fast for iunique and opencode the inode hash walk.\nIntroduce a new iunique_lock to protect the iunique counters once inode_lock\nis removed.\n\nBased on a patch originally from Nick Piggin.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4c51acbc66f754e536e1c9e3331656b69bce86d0",
      "tree": "f3b5bf0bfbadb04663d59a9dc42e7f57487d698c",
      "parents": [
        "9e38d86ff2d8a8db99570e982230861046df32b5"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Oct 23 06:58:09 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:10 2010 -0400"
      },
      "message": "fs: Factor inode hash operations into functions\n\nBefore replacing the inode hash locking with a more scalable\nmechanism, factor the removal of the inode from the hashes rather\nthan open coding it in several places.\n\nBased on a patch originally from Nick Piggin.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9e38d86ff2d8a8db99570e982230861046df32b5",
      "tree": "7ea2ceea24a4e070259a4585b2748c9e2c070ee0",
      "parents": [
        "cffbc8aa334f55c9ed42d25202eb3ebf3a97c195"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 23 06:55:17 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:09 2010 -0400"
      },
      "message": "fs: Implement lazy LRU updates for inodes\n\nConvert the inode LRU to use lazy updates to reduce lock and\ncacheline traffic.  We avoid moving inodes around in the LRU list\nduring iget/iput operations so these frequent operations don\u0027t need\nto access the LRUs. Instead, we defer the refcount checks to\nreclaim-time and use a per-inode state flag, I_REFERENCED, to tell\nreclaim that iget has touched the inode in the past. This means that\nonly reclaim should be touching the LRU with any frequency, hence\nsignificantly reducing lock acquisitions and the amount contention\non LRU updates.\n\nThis also removes the inode_in_use list, which means we now only\nhave one list for tracking the inode LRU status. This makes it much\nsimpler to split out the LRU list operations under it\u0027s own lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cffbc8aa334f55c9ed42d25202eb3ebf3a97c195",
      "tree": "dab046695754e2cec1a7ab7a64b236e976d94360",
      "parents": [
        "be1a16a0ae29a7c90081a657b64aa51cb1a65a27"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Oct 23 05:03:02 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:09 2010 -0400"
      },
      "message": "fs: Convert nr_inodes and nr_unused to per-cpu counters\n\nThe number of inodes allocated does not need to be tied to the\naddition or removal of an inode to/from a list. If we are not tied\nto a list lock, we could update the counters when inodes are\ninitialised or destroyed, but to do that we need to convert the\ncounters to be per-cpu (i.e. independent of a lock). This means that\nwe have the freedom to change the list/locking implementation\nwithout needing to care about the counters.\n\nBased on a patch originally from Eric Dumazet.\n\n[AV: cleaned up a bit, fixed build breakage on weird configs\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1d3382cbf02986e4833849f528d451367ea0b4cb",
      "tree": "b754f9903c0f77ce40dcff18030b49d0ce213eab",
      "parents": [
        "a8dade34e3df581bc36ca2afe6e27055e178801c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 15:19:20 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:24:15 2010 -0400"
      },
      "message": "new helper: inode_unhashed()\n\nnote: for race-free uses you inode_lock held\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a8dade34e3df581bc36ca2afe6e27055e178801c",
      "tree": "8c1598922eb17d5626f639a4c94256f25a8e6690",
      "parents": [
        "61ebdb4254e3ecb59022d2c730b57b04d0eeecc6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Oct 24 11:13:10 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:23:32 2010 -0400"
      },
      "message": "unexport invalidate_inodes\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a3314a0ed389f51a51695120b429eccd45b3a165",
      "tree": "bf8ce1231099e372dd25dc71d467831beaaccff7",
      "parents": [
        "306fb0979443419288594446a348155a8027dcf2"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Oct 11 22:38:00 2010 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:18:23 2010 -0400"
      },
      "message": "lockdep: fixup checking of dir inode annotation\n\nSince inode-\u003ei_mode shares its bits for S_IFMT, S_ISDIR should be\nused to distinguish whether it is a dir or not.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "56b0dacfa2b8416815a2f2a5f4f51e46be4cf14c",
      "tree": "f438745535c50a574a9c0e4a55fe5f526689204a",
      "parents": [
        "c37650161a53c01ddd88587675f9a4adc909a73e"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 06 10:48:55 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:18:19 2010 -0400"
      },
      "message": "fs: mark destroy_inode static\n\nHugetlbfs used to need it, but after the destroy_inode and evict_inode\nchanges it\u0027s not required anymore.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8c8946f509a494769a8c602b5ed189df01917d39",
      "tree": "dfd96bd6ca5ea6803c6d77f65ba37e04f78b2d3b",
      "parents": [
        "5f248c9c251c60af3403902b26e08de43964ea0b",
        "1968f5eed54ce47bde488fd9a450912e4a2d7138"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:39:13 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:39:13 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify\n\n* \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify: (132 commits)\n  fanotify: use both marks when possible\n  fsnotify: pass both the vfsmount mark and inode mark\n  fsnotify: walk the inode and vfsmount lists simultaneously\n  fsnotify: rework ignored mark flushing\n  fsnotify: remove global fsnotify groups lists\n  fsnotify: remove group-\u003emask\n  fsnotify: remove the global masks\n  fsnotify: cleanup should_send_event\n  fanotify: use the mark in handler functions\n  audit: use the mark in handler functions\n  dnotify: use the mark in handler functions\n  inotify: use the mark in handler functions\n  fsnotify: send fsnotify_mark to groups in event handling functions\n  fsnotify: Exchange list heads instead of moving elements\n  fsnotify: srcu to protect read side of inode and vfsmount locks\n  fsnotify: use an explicit flag to indicate fsnotify_destroy_mark has been called\n  fsnotify: use _rcu functions for mark list traversal\n  fsnotify: place marks on object in order of group memory address\n  vfs/fsnotify: fsnotify_close can delay the final work in fput\n  fsnotify: store struct file not struct path\n  ...\n\nFix up trivial delete/modify conflict in fs/notify/inotify/inotify.c.\n"
    },
    {
      "commit": "b70a3e0702dee2ed9435e06a8bde7d9fa2228895",
      "tree": "697bf3815a50d24e5393d9c0d05aaa050862e03b",
      "parents": [
        "b57922d97fd6f79b6dbe6db0c4fd30d219fa08c1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 14:35:46 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:39 2010 -0400"
      },
      "message": "All filesystems that need invalidate_inode_buffers() are doing that explicitly\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b57922d97fd6f79b6dbe6db0c4fd30d219fa08c1",
      "tree": "1d39e9cd8e1c1f502fb7e985a08286859c69aa36",
      "parents": [
        "45321ac54316eaeeebde0b5f728a1791e500974c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 14:34:48 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:37 2010 -0400"
      },
      "message": "convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "45321ac54316eaeeebde0b5f728a1791e500974c",
      "tree": "c3989dd1a8b4a50168d696aa608941de88da9ade",
      "parents": [
        "30140837f256558c943636245ab90897a9455a70"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 13:43:19 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:35 2010 -0400"
      },
      "message": "Make -\u003edrop_inode() just return whether inode needs to be dropped\n\n... and let iput_final() do the actual eviction or retention\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "30140837f256558c943636245ab90897a9455a70",
      "tree": "71ab647be533cd520eb665a48d489e46e4c2fd8c",
      "parents": [
        "644da5960ded137c339bc69bc2aeac54f73aad59"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 13:23:20 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:34 2010 -0400"
      },
      "message": "fs/inode.c:clear_inode() is gone\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "644da5960ded137c339bc69bc2aeac54f73aad59",
      "tree": "b2ce4c69d95e5f3439db40adcc2e85d1bc3d6272",
      "parents": [
        "07958f9f5b9e8422c15368a1733a52ea99009896"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 13:21:05 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:33 2010 -0400"
      },
      "message": "fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "07958f9f5b9e8422c15368a1733a52ea99009896",
      "tree": "bab80f40113f8b7d86287f9d596fa5f0c1b755a7",
      "parents": [
        "0930fcc1ee2f0a810b938bc283a3a262d7adccbb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 13:20:09 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:31 2010 -0400"
      },
      "message": "-\u003edelete_inode() is gone\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b0683aa638b3326c6fc22e5290dfa75e08bd83f5",
      "tree": "8287f1eff3c76dc7cf6c42208efebb1510b075b2",
      "parents": [
        "661074e91b1da1ee262dfde6dd836deacccb9def"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 04 20:55:25 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:49 2010 -0400"
      },
      "message": "new helper: end_writeback()\n\nEssentially, the minimal variant of -\u003eevict_inode().  It\u0027s\na trimmed-down clear_inode(), sans any fs callbacks.  Once\nit returns we know that no async writeback will be happening;\nevery -\u003eevict_inode() instance should do that once and do that\nbefore doing anything -\u003ewrite_inode() could interfere with\n(e.g. freeing the on-disk inode).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "661074e91b1da1ee262dfde6dd836deacccb9def",
      "tree": "97227898352c3bea7975fcc0bb98a8e013b1d03b",
      "parents": [
        "c6287315cb958e740466555ca5e9d007f25b39bd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 04 20:19:55 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:48 2010 -0400"
      },
      "message": "Take -\u003ei_bdev/-\u003ei_cdev handling out of clear_inode()\n\nAll call chains to clear_inode() pass through evict_inode() and\nclear_inode() should be called by evict_inode() exactly once.\nSo we can pull i_bdev/i_cdev detaching up to evict_inode() itself.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c6287315cb958e740466555ca5e9d007f25b39bd",
      "tree": "39067d77f55479519b502750caa8e3c34e45de7f",
      "parents": [
        "2bbbda308f5ca027d4fd721f914c0cab88d49aec"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 04 19:56:17 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:48 2010 -0400"
      },
      "message": "generic_detach_inode() can be static now\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "be7ce4161f9e6bf2497f90337d1214aa6ee06e15",
      "tree": "a9bf28ff703a81ebf309d470c68ae6aa788a2d36",
      "parents": [
        "b4272d4c810532e1a4dea111433a0af56d3bd2b7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 04 19:40:39 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:46 2010 -0400"
      },
      "message": "New method - evict_inode()\n\nHybrid of -\u003eclear_inode() and -\u003edelete_inode(); if present, does\nall fs work to be done when in-core inode is about to be gone,\nfor whatever reason.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b4272d4c810532e1a4dea111433a0af56d3bd2b7",
      "tree": "6379265e3881831741510ebf4d42eedf800e6949",
      "parents": [
        "a4ffdde6e56fdf8c34ddadc2674d6eb978083369"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 04 19:33:20 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:45 2010 -0400"
      },
      "message": "unify fs/inode.c callers of clear_inode()\n\nFor now, just a straightforward merge\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a4ffdde6e56fdf8c34ddadc2674d6eb978083369",
      "tree": "0fa07df92d804cb7d0482135195e4835cb16403a",
      "parents": [
        "b5fc510c48f631882ccec3c0f02a25d5b67de09f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 02 17:38:30 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:44 2010 -0400"
      },
      "message": "simplify checks for I_CLEAR/I_FREEING\n\nadd I_CLEAR instead of replacing I_FREEING with it.  I_CLEAR is\nequivalent to I_FREEING for almost all code looking at either;\nit\u0027s there to keep track of having called clear_inode() exactly\nonce per inode lifetime, at some point after having set I_FREEING.\nI_CLEAR and I_FREEING never get set at the same time with the\ncurrent code, so we can switch to setting i_flags to I_FREEING | I_CLEAR\ninstead of I_CLEAR without loss of information.  As the result of\nsuch change, checks become simpler and the amount of code that needs\nto know about I_CLEAR shrinks a lot.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e61ce86737b4d60521e4e71f9892fe4bdcfb688b",
      "tree": "a1aba411504ac028d4ead6f28ca05bd024c74142",
      "parents": [
        "72acc854427948efed7a83da27f7dc3239ac9afc"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:24 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:53 2010 -0400"
      },
      "message": "fsnotify: rename fsnotify_mark_entry to just fsnotify_mark\n\nThe name is long and it serves no real purpose.  So rename\nfsnotify_mark_entry to just fsnotify_mark.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2dfc1cae4c42b93b831b2417540df2b895ab7108",
      "tree": "e07a0075964fd2cb9210b302114255e16ab1d4c0",
      "parents": [
        "7050c48826d5adb2210bddfb6a67aa13bbe984ed"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 20:30:52 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:31 2010 -0400"
      },
      "message": "inotify: remove inotify in kernel interface\n\nnothing uses inotify in the kernel, drop it!\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "7f8275d0d660c146de6ee3017e1e2e594c49e820",
      "tree": "884db927118b44102750b5168ee36ef4b8b5cb4e",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "message": "mm: add context argument to shrinker callback\n\nThe current shrinker implementation requires the registered callback\nto have global state to work from. This makes it difficult to shrink\ncaches that are not global (e.g. per-filesystem caches). Pass the shrinker\nstructure to the callback so that users can embed the shrinker structure\nin the context the shrinker needs to operate on and get back to it in the\ncallback via container_of().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "a1bd120d13e586ea1c424048fd2c8420a442852a",
      "tree": "fdac342d7ab0fbaaeb1dd7d61a86b457a6938672",
      "parents": [
        "52957fe1c709d5ca3732456d73f4e4d95492c72c"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Thu Mar 04 17:29:14 2010 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:22 2010 -0400"
      },
      "message": "vfs: Add inode uid,gid,mode init helper\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2e147f1ef7d593b36c0e27a393b7d7ec0765f54b",
      "tree": "cc7746744467dfcedd8e5068eac982fc9c308515",
      "parents": [
        "a7cf4145bb86aaf85d4d4d29a69b50b688e2e49d"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Fri May 14 10:49:22 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:21 2010 -0400"
      },
      "message": "fs: inode.c use atomic_inc_return in __iget\n\nUsing atomic_inc_return in __iget(struct inode *inode) makes the intent\nof this code clearer and generates less code on processors that have\nthis operation.\n\nOn x86_64 this patch reduces the text size of inode.o by 12 bytes.\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\n\n----\npatch against 2.6.34-rc7\ncompiled \u0026 tested on x86_64 AMD X2\n\nI\u0027ve been running with this patch applied for several weeks with no\nobvious problems.\nregards\nRichard\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9d5ed77dadc66a72b40419c91df942adfa55a102",
      "tree": "eb55062edf757a7b7fe707adda7178181f8a4427",
      "parents": [
        "91a9420f5826db482030c21eca8c507271bbc441"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Apr 07 15:14:50 2010 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Apr 12 12:19:15 2010 +1000"
      },
      "message": "security: remove dead hook inode_delete\n\nUnused hook.  Remove.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "907f4554e2521cb28b0009d17167760650a9561c",
      "tree": "68dc49163fd34331f8efbd63592c8f1baa387031",
      "parents": [
        "9f7547580263d4a55efe06ce5cfd567f568be6e8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:06 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:30 2010 +0100"
      },
      "message": "dquot: move dquot initialization responsibility into the filesystem\n\nCurrently various places in the VFS call vfs_dq_init directly.  This means\nwe tie the quota code into the VFS.  Get rid of that and make the\nfilesystem responsible for the initialization.   For most metadata operations\nthis is a straight forward move into the methods, but for truncate and\nopen it\u0027s a bit more complicated.\n\nFor truncate we currently only call vfs_dq_init for the sys_truncate case\nbecause open already takes care of it for ftruncate and open(O_TRUNC) - the\nnew code causes an additional vfs_dq_init for those which is harmless.\n\nFor open the initialization is moved from do_filp_open into the open method,\nwhich means it happens slightly earlier now, and only for regular files.\nThe latter is fine because we don\u0027t need to initialize it for operations\non special files, and we already do it as part of the namespace operations\nfor directories.\n\nAdd a dquot_file_open helper that filesystems that support generic quotas\ncan use to fill in -\u003eopen.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "257ba15cedf1288f0c96118d7e63947231d27278",
      "tree": "7a977a0ea08a324ce74aedce19406cb0688f15e2",
      "parents": [
        "b43fa8284d7790d9cca32c9c55e24f29be2fa33b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:04 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:29 2010 +0100"
      },
      "message": "dquot: move dquot drop responsibility into the filesystem\n\nCurrently clear_inode calls vfs_dq_drop directly.  This means\nwe tie the quota code into the VFS.  Get rid of that and make the\nfilesystem responsible for the drop inside the -\u003eclear_inode\nsuperblock operation.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "eaff8079d4f1016a12e34ab323737314f24127dd",
      "tree": "a3d9e00320c6195e55811d5247a521f99341a411",
      "parents": [
        "7a0ad10c367ab57c899d340372f37880cbe6ab52"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Dec 17 14:25:01 2009 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 17 11:03:25 2009 -0500"
      },
      "message": "kill I_LOCK\n\nAfter I_SYNC was split from I_LOCK the leftover is always used together with\nI_NEW and thus superflous.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6c21a7fb492bf7e2c4985937082ce58ddeca84bd",
      "tree": "6cfe11ba4b8eee26ee8b02d2b4a5fcc6ea07e4bd",
      "parents": [
        "6e8e16c7bc298d7887584c3d027e05db3e86eed9"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Thu Oct 22 17:30:13 2009 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Sun Oct 25 12:22:48 2009 +0800"
      },
      "message": "LSM: imbed ima calls in the security hooks\n\nBased on discussions on LKML and LSM, where there are consecutive\nsecurity_ and ima_ calls in the vfs layer, move the ima_ calls to\nthe existing security_ hooks.\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    }
  ],
  "next": "ce06e0b21d6732a2bab10a585a3ec6909499be28"
}
