)]}'
{
  "log": [
    {
      "commit": "f466c6fdb3b1f043ff1977a8d2a1d0cd4dc164fa",
      "tree": "4ebd1b27da5be1a77c6d095b2d0066ab8fb2c5e0",
      "parents": [
        "a8a4b79b53fc7cbb023afedf58b04dd4e9bbb114"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 17 01:16:43 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:43 2012 -0400"
      },
      "message": "move private bits of reiserfs_fs.h to fs/reiserfs/reiserfs.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a3063ab88fcbe5249f841cb95dfd626b8bf2674f",
      "tree": "bb3304f3317a4075cee2926b39867336cae708b0",
      "parents": [
        "c45ac8887e778c4fa2b572c51a94a681a0955d4d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 17 01:03:10 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:42 2012 -0400"
      },
      "message": "move reiserfs_acl.h to fs/reiserfs/acl.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c45ac8887e778c4fa2b572c51a94a681a0955d4d",
      "tree": "913d8c72376def5c3c29838273b2ddde49887c81",
      "parents": [
        "82234e61a8fc75599f29026c0805fc0cfe2a6c87"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 17 00:59:06 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:42 2012 -0400"
      },
      "message": "take private bits of reiserfs_xattr.h to fs/reiserfs/xattr.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c",
      "tree": "4ee4e584bc9a67f3ec14ce159d2d7d4a27e68d4a",
      "parents": [
        "8208a22bb8bd3c52ef634b4ff194f14892ab1713"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:41:39 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch vfs_mkdir() and -\u003emkdir() to umode_t\n\nvfs_mkdir() gets int, but immediately drops everything that might not\nfit into umode_t and that\u0027s the only caller of -\u003emkdir()...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4e34e719e457f2e031297175410fc0bd4016a085",
      "tree": "ab969a371e0d2efc6bfbf503ca6cdfce3af3bf6c",
      "parents": [
        "edde854e8bb34a7f32fa993d721f1da0faf64165"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Jul 23 17:37:31 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:30:23 2011 -0400"
      },
      "message": "fs: take the ACL checks to common code\n\nReplace the -\u003echeck_acl method with a -\u003eget_acl method that simply reads an\nACL from disk after having a cache miss.  This means we can replace the ACL\nchecking boilerplate code with a single implementation in namei.c.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4482a087d4c5a6ffbc385c56b4a4e2f694d9fd5d",
      "tree": "10ca7beda590618be3c695720e04582c63a03822",
      "parents": [
        "6311b10800a4bdc3f2c85d01fb113cf49bb83770"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Jul 23 17:37:03 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:25:38 2011 -0400"
      },
      "message": "reiserfs: cache negative ACLs for v1 stat format\n\nAlways set up a negative ACL cache entry if the inode can\u0027t have ACLs.\nThat behaves much better than doing this check inside -\u003echeck_acl.\n\nAlso remove the left over MAY_NOT_BLOCK check.\n\nSigned-off-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": "10556cb21a0d0b24d95f00ea6df16f599a3345b2",
      "tree": "3d7d8dfba807805a55c154f1850717bf3b49f343",
      "parents": [
        "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:28:19 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:24 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003epermission()\n\nnot used by the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890",
      "tree": "bbcebc14bffd000f1dfcbf37e64f56d2f49581ac",
      "parents": [
        "7e40145eb111a5192e6d819f764db9d6828d1abb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:16:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:22 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to generic_permission()\n\nredundant; all callers get it duplicated in mask \u0026 MAY_NOT_BLOCK and none of\nthem removes that bit.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7e40145eb111a5192e6d819f764db9d6828d1abb",
      "tree": "3249952a751de12465e8d66c63328445e9242f3a",
      "parents": [
        "9c2c703929e4c41210cfa6e3f599514421bab8dc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:12:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:21 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003echeck_acl()\n\nnot used in the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9c2c703929e4c41210cfa6e3f599514421bab8dc",
      "tree": "2086738f22755ad18ba18ab2ee0f2b23d651da60",
      "parents": [
        "1fc0f78ca9f311c6277e2f1b7655bb4d43ceb311"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:06:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:19 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: pass MAY_NOT_BLOCK to -\u003echeck_acl()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "178ea73521d64ba41d7aa5488fb9f549c6d4507d",
      "tree": "7fb6bfb6483577752e307a5bb2e3905658d44294",
      "parents": [
        "07b8ce1ee87d291ff564c02cf878fae973317a52"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 11:31:30 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:16 2011 -0400"
      },
      "message": "kill check_acl callback of generic_permission()\n\nits value depends only on inode and does not change; we might as\nwell store it in -\u003ei_op-\u003echeck_acl and be done with that.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1d29b5a2ed7eb8862c9b66daf475f3e4c1a40299",
      "tree": "3829dfe2e49732bd3db1b6232ff71d8e7a32c5ea",
      "parents": [
        "cf1279111686d9742cbc4145bc9d526c83f59fea"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 18 20:37:33 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 10:45:21 2011 -0400"
      },
      "message": "reiserfs_permission() doesn\u0027t need to bail out in RCU mode\n\nnothing blocking other than generic_permission() (and\ncheck_acl callback does bail out in RCU mode).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cc350c2764a657ee012efd5bd260a6cd5be2f877",
      "tree": "1360aeab2ec2fbb71e80804df2f11f57b6bfb025",
      "parents": [
        "87161faae26503a8ebe1be5ba72073ae860dbfc7"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 27 13:42:02 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 28 01:02:51 2011 -0400"
      },
      "message": "reiserfs: remove unnecessary dentry_unhash from rmdir, dir rename\n\nReiserfs does not have problems with references to unlinked directories.\n\nCC: reiserfs-devel@vger.kernel.org\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "64252c75a2196a0cf1e0d3777143ecfe0e3ae650",
      "tree": "8534f12a507ef5aee91e302f3e54cf8a4440fc82",
      "parents": [
        "48293699a09324d2e3c66bd53d10eed6d67937a0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 13:06:05 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 26 07:26:46 2011 -0400"
      },
      "message": "vfs: remove dget() from dentry_unhash()\n\nThis serves no useful purpose that I can discern.  All callers (rename,\nrmdir) hold their own reference to the dentry.\n\nA quick audit of all file systems showed no relevant checks on the value\nof d_count in vfs_rmdir/vfs_rename_dir paths.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "c78f4cc5e7d642c7009089817c12d8984e7ba872",
      "tree": "15fec47edc3e047865e98b5f8c233b1d8d2e063a",
      "parents": [
        "ae50adcb0ac4cde67a7aec8ae67249d1b2be2948"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Feb 16 10:14:56 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 10 03:42:01 2011 -0500"
      },
      "message": "reiserfs xattr -\u003ed_revalidate() shouldn\u0027t care about RCU\n\n... it returns an error unconditionally\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "34286d6662308d82aed891852d04c7c3a2649b16",
      "tree": "c4b7311404d302e7cb94df7a4690298e1059910a",
      "parents": [
        "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:57 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: rcu-walk aware d_revalidate method\n\nRequire filesystems be aware of .d_revalidate being called in rcu-walk\nmode (nd-\u003eflags \u0026 LOOKUP_RCU). For now do a simple push down, returning\n-ECHILD from all implementations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\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": "ebdec241d509cf69f6ebf1ecdc036359d3dbe154",
      "tree": "e3c23f9b213936cb8501c83f55522a01f4a69aca",
      "parents": [
        "56b0dacfa2b8416815a2f2a5f4f51e46be4cf14c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 06 10:47:23 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:18:20 2010 -0400"
      },
      "message": "fs: kill block_prepare_write\n\n__block_write_begin and block_prepare_write are identical except for slightly\ndifferent calling conventions.  Convert all callers to the __block_write_begin\ncalling conventions and drop block_prepare_write.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "94d09a98cdb163be12fb5c76841fa295f0bee22a",
      "tree": "32f8e25bd707de3fe5fd34d49329d9510d7d0af2",
      "parents": [
        "11e27528076e7dee63f1db78bffbef6310f076f4"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu May 13 17:53:19 2010 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:19 2010 -0400"
      },
      "message": "reiserfs: constify xattr_handler\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fb2162df74bb19552db3d988fd11c787cf5fad56",
      "tree": "9e35e26d36fbf552568fef213903956e5bc66c8c",
      "parents": [
        "93d5c9be1ddd57d4063ce463c9ac2be1e5ee14f1"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Fri Apr 23 13:17:41 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 24 11:31:24 2010 -0700"
      },
      "message": "reiserfs: fix corruption during shrinking of xattrs\n\nCommit 48b32a3553a54740d236b79a90f20147a25875e3 (\"reiserfs: use generic\nxattr handlers\") introduced a problem that causes corruption when extended\nattributes are replaced with a smaller value.\n\nThe issue is that the reiserfs_setattr to shrink the xattr file was moved\nfrom before the write to after the write.\n\nThe root issue has always been in the reiserfs xattr code, but was papered\nover by the fact that in the shrink case, the file would just be expanded\nagain while the xattr was written.\n\nThe end result is that the last 8 bytes of xattr data are lost.\n\nThis patch fixes it to use new_size.\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d14826\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nReported-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Edward Shishkin \u003cedward.shishkin@gmail.com\u003e\nCc: Jethro Beekman \u003ckernel@jbeekman.nl\u003e\nCc: Greg Surbey \u003cgregsurbey@hotmail.com\u003e\nCc: Marco Gatti \u003cmarco.gatti@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cac36f707119b792b2396aed371d6b5cdc194890",
      "tree": "ccb19a68ce1c1aa066d6d13dde51657cba906de6",
      "parents": [
        "33eaf788345c0311ab48ae62673c05f59fb09bb3"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Fri Apr 23 13:17:37 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 24 11:31:24 2010 -0700"
      },
      "message": "reiserfs: fix permissions on .reiserfs_priv\n\nCommit 677c9b2e393a0cd203bd54e9c18b012b2c73305a (\"reiserfs: remove\nprivroot hiding in lookup\") removed the magic from the lookup code to hide\nthe .reiserfs_priv directory since it was getting loaded at mount-time\ninstead.  The intent was that the entry would be hidden from the user via\na poisoned d_compare, but this was faulty.\n\nThis introduced a security issue where unprivileged users could access and\nmodify extended attributes or ACLs belonging to other users, including\nroot.\n\nThis patch resolves the issue by properly hiding .reiserfs_priv.  This was\nthe intent of the xattr poisoning code, but it appears to have never\nworked as expected.  This is fixed by using d_revalidate instead of\nd_compare.\n\nThis patch makes -oexpose_privroot a no-op.  I\u0027m fine leaving it this way.\nThe effort involved in working out the corner cases wrt permissions and\ncaching outweigh the benefit of the feature.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nAcked-by: Edward Shishkin \u003cedward.shishkin@gmail.com\u003e\nReported-by: Matt McCutchen \u003cmatt@mattmccutchen.net\u003e\nTested-by: Matt McCutchen \u003cmatt@mattmccutchen.net\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\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": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\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": "82062e7b50280bcf0feca70ac35a44f375602976",
      "tree": "0321bff42945768990a92c3770d4270497c0e8ee",
      "parents": [
        "dbd6a7cfead4fa2d7ad3fefe47168fcb146ac5ba",
        "31370f62baa1460b785cee9944bdcaf63d19e567"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 08 14:03:55 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 08 14:03:55 2010 -0800"
      },
      "message": "Merge branch \u0027reiserfs/kill-bkl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing\n\n* \u0027reiserfs/kill-bkl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:\n  reiserfs: Relax reiserfs_xattr_set_handle() while acquiring xattr locks\n  reiserfs: Fix unreachable statement\n  reiserfs: Don\u0027t call reiserfs_get_acl() with the reiserfs lock\n  reiserfs: Relax lock on xattr removing\n  reiserfs: Relax the lock before truncating pages\n  reiserfs: Fix recursive lock on lchown\n  reiserfs: Fix mistake in down_write() conversion\n"
    },
    {
      "commit": "31370f62baa1460b785cee9944bdcaf63d19e567",
      "tree": "cc3846f1a623366c61c4f16860f4ed62c68ea03f",
      "parents": [
        "e0baec1b63632f25ea8101b76edaca0accc061ec"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 07 15:55:31 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 07 16:02:53 2010 +0100"
      },
      "message": "reiserfs: Relax reiserfs_xattr_set_handle() while acquiring xattr locks\n\nFix remaining xattr locks acquired in reiserfs_xattr_set_handle()\nwhile we are holding the reiserfs lock to avoid lock inversions.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4f3be1b5a98587b86cae05aa5d129dd0b3fff466",
      "tree": "f4d9acd840357ccdd6d5e667132996c050d0a9fa",
      "parents": [
        "108d3943c021f0b66e860ba98ded40b82b677bd7"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jan 05 02:14:30 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jan 05 08:00:50 2010 +0100"
      },
      "message": "reiserfs: Relax lock on xattr removing\n\nWhen we remove an xattr, we call lookup_and_delete_xattr()\nthat takes some private xattr inodes mutexes. But we hold\nthe reiserfs lock at this time, which leads to dependency\ninversions.\n\nWe can safely call lookup_and_delete_xattr() without the\nreiserfs lock, where xattr inodes lookups only need the\nxattr inodes mutexes.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f3e22f48f37c1e14441c9f72ca8e63b1d4516745",
      "tree": "762d2fcf7d0c087413fe54897a63b6424aceef84",
      "parents": [
        "835d5247d98f46e35d007dcfa6215e526ca33360"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Jan 03 03:44:53 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Jan 03 03:44:53 2010 +0100"
      },
      "message": "reiserfs: Fix mistake in down_write() conversion\n\nFix a mistake in commit 0719d3434747889b314a1e8add776418c4148bcf\n(reiserfs: Fix reiserfs lock \u003c-\u003e i_xattr_sem dependency inversion)\nthat has converted a down_write() into a down_read() accidentally.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "45d28b097280a78893ce25a5d0db41e6a2717853",
      "tree": "0c2049700c5fca3fc9d73d2f347fab21e84765f8",
      "parents": [
        "4207a152bc242effd0b8231143aa5b9f7a1593a9",
        "835d5247d98f46e35d007dcfa6215e526ca33360"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 02 11:17:05 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 02 11:17:05 2010 -0800"
      },
      "message": "Merge branch \u0027reiserfs/kill-bkl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing\n\n* \u0027reiserfs/kill-bkl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:\n  reiserfs: Safely acquire i_mutex from xattr_rmdir\n  reiserfs: Safely acquire i_mutex from reiserfs_for_each_xattr\n  reiserfs: Fix journal mutex \u003c-\u003e inode mutex lock inversion\n  reiserfs: Fix unwanted recursive reiserfs lock in reiserfs_unlink()\n  reiserfs: Relax lock before open xattr dir in reiserfs_xattr_set_handle()\n  reiserfs: Relax reiserfs lock while freeing the journal\n  reiserfs: Fix reiserfs lock \u003c-\u003e i_mutex dependency inversion on xattr\n  reiserfs: Warn on lock relax if taken recursively\n  reiserfs: Fix reiserfs lock \u003c-\u003e i_xattr_sem dependency inversion\n  reiserfs: Fix remaining in-reclaim-fs \u003c-\u003e reclaim-fs-on locking inversion\n  reiserfs: Fix reiserfs lock \u003c-\u003e inode mutex dependency inversion\n  reiserfs: Fix reiserfs lock and journal lock inversion dependency\n  reiserfs: Fix possible recursive lock\n"
    },
    {
      "commit": "835d5247d98f46e35d007dcfa6215e526ca33360",
      "tree": "83caead46ca375781c93648e54adb6873204f569",
      "parents": [
        "8b513f56d4e117f11cf0760abcc030eedefc45c3"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 07:40:39 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:59:48 2010 +0100"
      },
      "message": "reiserfs: Safely acquire i_mutex from xattr_rmdir\n\nRelax the reiserfs lock before taking the inode mutex from\nxattr_rmdir() to avoid the usual reiserfs lock \u003c-\u003e inode mutex\nbad dependency.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8b513f56d4e117f11cf0760abcc030eedefc45c3",
      "tree": "3684dbe60c43a1c6484513e31227604452a4001f",
      "parents": [
        "4dd859697f836cf62c8de08bd9a9f4b4f4beaa91"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 07:28:58 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:59:14 2010 +0100"
      },
      "message": "reiserfs: Safely acquire i_mutex from reiserfs_for_each_xattr\n\nRelax the reiserfs lock before taking the inode mutex from\nreiserfs_for_each_xattr() to avoid the usual bad dependencies:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.32-atom #179\n-------------------------------------------------------\nrm/3242 is trying to acquire lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc11428ef\u003e] reiserfs_for_each_xattr+0x23f/0x290\n\nbut task is already holding lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1143389\u003e] reiserfs_write_lock+0x29/0x40\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401aab\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1143339\u003e] reiserfs_write_lock_once+0x29/0x50\n       [\u003cc1117022\u003e] reiserfs_lookup+0x62/0x140\n       [\u003cc10bd85f\u003e] __lookup_hash+0xef/0x110\n       [\u003cc10bf21d\u003e] lookup_one_len+0x8d/0xc0\n       [\u003cc1141e3a\u003e] open_xa_dir+0xea/0x1b0\n       [\u003cc1142720\u003e] reiserfs_for_each_xattr+0x70/0x290\n       [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #0 (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}:\n       [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401aab\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc11428ef\u003e] reiserfs_for_each_xattr+0x23f/0x290\n       [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nother info that might help us debug this:\n\n1 lock held by rm/3242:\n #0:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1143389\u003e] reiserfs_write_lock+0x29/0x40\n\nstack backtrace:\nPid: 3242, comm: rm Not tainted 2.6.32-atom #179\nCall Trace:\n [\u003cc13ffa13\u003e] ? printk+0x18/0x1a\n [\u003cc105d33a\u003e] print_circular_bug+0xca/0xd0\n [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n [\u003cc105c932\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc105cc3b\u003e] ? trace_hardirqs_on+0xb/0x10\n [\u003cc1401098\u003e] ? mutex_unlock+0x8/0x10\n [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n [\u003cc11428ef\u003e] ? reiserfs_for_each_xattr+0x23f/0x290\n [\u003cc11428ef\u003e] ? reiserfs_for_each_xattr+0x23f/0x290\n [\u003cc1401aab\u003e] mutex_lock_nested+0x5b/0x340\n [\u003cc11428ef\u003e] ? reiserfs_for_each_xattr+0x23f/0x290\n [\u003cc11428ef\u003e] reiserfs_for_each_xattr+0x23f/0x290\n [\u003cc1143180\u003e] ? delete_one_xattr+0x0/0x100\n [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n [\u003cc1143339\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n [\u003cc11b0d4f\u003e] ? _atomic_dec_and_lock+0x4f/0x70\n [\u003cc111e990\u003e] ? reiserfs_delete_inode+0x0/0x150\n [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n [\u003cc10c8b07\u003e] iput+0x47/0x50\n [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n [\u003cc1401098\u003e] ? mutex_unlock+0x8/0x10\n [\u003cc10c3e0d\u003e] ? vfs_readdir+0x7d/0xb0\n [\u003cc10c3af0\u003e] ? filldir64+0x0/0xf0\n [\u003cc1002ef3\u003e] ? sysenter_exit+0xf/0x16\n [\u003cc105cbe4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4dd859697f836cf62c8de08bd9a9f4b4f4beaa91",
      "tree": "761ac40341fe99a0b78131241541f888d2242b88",
      "parents": [
        "c674905ca74ad0ae5b048afb1ef68663a0d7e987"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 07:26:28 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:58:32 2010 +0100"
      },
      "message": "reiserfs: Fix journal mutex \u003c-\u003e inode mutex lock inversion\n\nWe need to relax the reiserfs lock before locking the inode mutex\nfrom xattr_unlink(), otherwise we\u0027ll face the usual bad dependencies:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.32-atom #178\n-------------------------------------------------------\nrm/3202 is trying to acquire lock:\n (\u0026journal-\u003ej_mutex){+.+...}, at: [\u003cc113c234\u003e] do_journal_begin_r+0x94/0x360\n\nbut task is already holding lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#4/2){+.+...}, at: [\u003cc1142a67\u003e] xattr_unlink+0x57/0xb0\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #2 (\u0026sb-\u003es_type-\u003ei_mutex_key#4/2){+.+...}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a7b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1142a67\u003e] xattr_unlink+0x57/0xb0\n       [\u003cc1143179\u003e] delete_one_xattr+0x29/0x100\n       [\u003cc11427bb\u003e] reiserfs_for_each_xattr+0x10b/0x290\n       [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a7b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1143359\u003e] reiserfs_write_lock+0x29/0x40\n       [\u003cc113c23c\u003e] do_journal_begin_r+0x9c/0x360\n       [\u003cc113c680\u003e] journal_begin+0x80/0x130\n       [\u003cc1127363\u003e] reiserfs_remount+0x223/0x4e0\n       [\u003cc10b6dd6\u003e] do_remount_sb+0xa6/0x140\n       [\u003cc10ce6a0\u003e] do_mount+0x560/0x750\n       [\u003cc10ce914\u003e] sys_mount+0x84/0xb0\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #0 (\u0026journal-\u003ej_mutex){+.+...}:\n       [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a7b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc113c234\u003e] do_journal_begin_r+0x94/0x360\n       [\u003cc113c680\u003e] journal_begin+0x80/0x130\n       [\u003cc1116d63\u003e] reiserfs_unlink+0x83/0x2e0\n       [\u003cc1142a74\u003e] xattr_unlink+0x64/0xb0\n       [\u003cc1143179\u003e] delete_one_xattr+0x29/0x100\n       [\u003cc11427bb\u003e] reiserfs_for_each_xattr+0x10b/0x290\n       [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nother info that might help us debug this:\n\n2 locks held by rm/3202:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc114274b\u003e] reiserfs_for_each_xattr+0x9b/0x290\n #1:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/2){+.+...}, at: [\u003cc1142a67\u003e] xattr_unlink+0x57/0xb0\n\nstack backtrace:\nPid: 3202, comm: rm Not tainted 2.6.32-atom #178\nCall Trace:\n [\u003cc13ff9e3\u003e] ? printk+0x18/0x1a\n [\u003cc105d33a\u003e] print_circular_bug+0xca/0xd0\n [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n [\u003cc1142a67\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n [\u003cc113c234\u003e] ? do_journal_begin_r+0x94/0x360\n [\u003cc113c234\u003e] ? do_journal_begin_r+0x94/0x360\n [\u003cc1401a7b\u003e] mutex_lock_nested+0x5b/0x340\n [\u003cc113c234\u003e] ? do_journal_begin_r+0x94/0x360\n [\u003cc113c234\u003e] do_journal_begin_r+0x94/0x360\n [\u003cc10411b6\u003e] ? run_timer_softirq+0x1a6/0x220\n [\u003cc103cb00\u003e] ? __do_softirq+0x50/0x140\n [\u003cc113c680\u003e] journal_begin+0x80/0x130\n [\u003cc103cba2\u003e] ? __do_softirq+0xf2/0x140\n [\u003cc104f72f\u003e] ? hrtimer_interrupt+0xdf/0x220\n [\u003cc1116d63\u003e] reiserfs_unlink+0x83/0x2e0\n [\u003cc105c932\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc11b8d08\u003e] ? trace_hardirqs_on_thunk+0xc/0x10\n [\u003cc1002fd8\u003e] ? restore_all_notrace+0x0/0x18\n [\u003cc1142a67\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc1142a74\u003e] xattr_unlink+0x64/0xb0\n [\u003cc1143179\u003e] delete_one_xattr+0x29/0x100\n [\u003cc11427bb\u003e] reiserfs_for_each_xattr+0x10b/0x290\n [\u003cc1143150\u003e] ? delete_one_xattr+0x0/0x100\n [\u003cc1401cb9\u003e] ? mutex_lock_nested+0x299/0x340\n [\u003cc11429ba\u003e] reiserfs_delete_xattrs+0x1a/0x60\n [\u003cc1143309\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc111ea2f\u003e] reiserfs_delete_inode+0x9f/0x150\n [\u003cc11b0d1f\u003e] ? _atomic_dec_and_lock+0x4f/0x70\n [\u003cc111e990\u003e] ? reiserfs_delete_inode+0x0/0x150\n [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n [\u003cc10c8b07\u003e] iput+0x47/0x50\n [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n [\u003cc1401068\u003e] ? mutex_unlock+0x8/0x10\n [\u003cc10c3e0d\u003e] ? vfs_readdir+0x7d/0xb0\n [\u003cc10c3af0\u003e] ? filldir64+0x0/0xf0\n [\u003cc1002ef3\u003e] ? sysenter_exit+0xf/0x16\n [\u003cc105cbe4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10c0b13\u003e] sys_unlinkat+0x23/0x40\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3f14fea6bbd3444dd46a2af3a2e219e792616645",
      "tree": "84d1af175646801c766fb7b63dbd5eb40641a34d",
      "parents": [
        "0523676d3f3aa7edeea63cc3a1bc4dc612380a26"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 07:03:53 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:57:01 2010 +0100"
      },
      "message": "reiserfs: Relax lock before open xattr dir in reiserfs_xattr_set_handle()\n\nWe call xattr_lookup() from reiserfs_xattr_get(). We then hold\nthe reiserfs lock when we grab the i_mutex. But later, we may\nrelax the reiserfs lock, creating dependency inversion between\nboth locks.\n\nThe lookups and creation jobs ar already protected by the\ninode mutex, so we can safely relax the reiserfs lock, dropping\nthe unwanted reiserfs lock -\u003e i_mutex dependency, as shown\nin the following lockdep report:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.32-atom #173\n-------------------------------------------------------\ncp/3204 is trying to acquire lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n\nbut task is already holding lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc1141e18\u003e] open_xa_dir+0xd8/0x1b0\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1141d83\u003e] open_xa_dir+0x43/0x1b0\n       [\u003cc1142722\u003e] reiserfs_for_each_xattr+0x62/0x260\n       [\u003cc114299a\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea1f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0a00\u003e] sys_unlink+0x10/0x20\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #0 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n       [\u003cc1117012\u003e] reiserfs_lookup+0x62/0x140\n       [\u003cc10bd85f\u003e] __lookup_hash+0xef/0x110\n       [\u003cc10bf21d\u003e] lookup_one_len+0x8d/0xc0\n       [\u003cc1141e2a\u003e] open_xa_dir+0xea/0x1b0\n       [\u003cc1141fe5\u003e] xattr_lookup+0x15/0x160\n       [\u003cc1142476\u003e] reiserfs_xattr_get+0x56/0x2a0\n       [\u003cc1144042\u003e] reiserfs_get_acl+0xa2/0x360\n       [\u003cc114461a\u003e] reiserfs_cache_default_acl+0x3a/0x160\n       [\u003cc111789c\u003e] reiserfs_mkdir+0x6c/0x2c0\n       [\u003cc10bea96\u003e] vfs_mkdir+0xd6/0x180\n       [\u003cc10c0c10\u003e] sys_mkdirat+0xc0/0xd0\n       [\u003cc10c0c40\u003e] sys_mkdir+0x20/0x30\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nother info that might help us debug this:\n\n2 locks held by cp/3204:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/1){+.+.+.}, at: [\u003cc10bd8d6\u003e] lookup_create+0x26/0xa0\n #1:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc1141e18\u003e] open_xa_dir+0xd8/0x1b0\n\nstack backtrace:\nPid: 3204, comm: cp Not tainted 2.6.32-atom #173\nCall Trace:\n [\u003cc13ff993\u003e] ? printk+0x18/0x1a\n [\u003cc105d33a\u003e] print_circular_bug+0xca/0xd0\n [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n [\u003cc105d3aa\u003e] ? check_usage+0x6a/0x460\n [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n [\u003cc1117012\u003e] reiserfs_lookup+0x62/0x140\n [\u003cc105ccca\u003e] ? debug_check_no_locks_freed+0x8a/0x140\n [\u003cc105cbe4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10bd85f\u003e] __lookup_hash+0xef/0x110\n [\u003cc10bf21d\u003e] lookup_one_len+0x8d/0xc0\n [\u003cc1141e2a\u003e] open_xa_dir+0xea/0x1b0\n [\u003cc1141fe5\u003e] xattr_lookup+0x15/0x160\n [\u003cc1142476\u003e] reiserfs_xattr_get+0x56/0x2a0\n [\u003cc1144042\u003e] reiserfs_get_acl+0xa2/0x360\n [\u003cc10ca2e7\u003e] ? new_inode+0x27/0xa0\n [\u003cc114461a\u003e] reiserfs_cache_default_acl+0x3a/0x160\n [\u003cc1402eb7\u003e] ? _spin_unlock+0x27/0x40\n [\u003cc111789c\u003e] reiserfs_mkdir+0x6c/0x2c0\n [\u003cc10c7cb8\u003e] ? __d_lookup+0x108/0x190\n [\u003cc105c932\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc1401c8d\u003e] ? mutex_lock_nested+0x2bd/0x340\n [\u003cc10bd17a\u003e] ? generic_permission+0x1a/0xa0\n [\u003cc11788fe\u003e] ? security_inode_permission+0x1e/0x20\n [\u003cc10bea96\u003e] vfs_mkdir+0xd6/0x180\n [\u003cc10c0c10\u003e] sys_mkdirat+0xc0/0xd0\n [\u003cc10505c6\u003e] ? up_read+0x16/0x30\n [\u003cc1002fd8\u003e] ? restore_all_notrace+0x0/0x18\n [\u003cc10c0c40\u003e] sys_mkdir+0x20/0x30\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "27026a05bb805866a3b9068dda8153b72cb942f4",
      "tree": "45fbdb663ad5165b2b5cbc08f11f09e06d502a72",
      "parents": [
        "c4a62ca362258d98f42efb282cfbf9b61caffdbe"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 05:06:21 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:54:47 2010 +0100"
      },
      "message": "reiserfs: Fix reiserfs lock \u003c-\u003e i_mutex dependency inversion on xattr\n\nWhile deleting the xattrs of an inode, we hold the reiserfs lock\nand grab the inode-\u003ei_mutex of the targeted inode and the root\nprivate xattr directory.\n\nLater on, we may relax the reiserfs lock for various reasons, this\ncreates inverted dependencies.\n\nWe can remove the reiserfs lock -\u003e i_mutex dependency by relaxing\nthe former before calling open_xa_dir(). This is fine because the\nlookup and creation of xattr private directories done in\nopen_xa_dir() are covered by the targeted inode mutexes. And deeper\noperations in the tree are still done under the write lock.\n\nThis fixes the following lockdep report:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.32-atom #173\n-------------------------------------------------------\ncp/3204 is trying to acquire lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n\nbut task is already holding lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc1141e18\u003e] open_xa_dir+0xd8/0x1b0\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1141d83\u003e] open_xa_dir+0x43/0x1b0\n       [\u003cc1142722\u003e] reiserfs_for_each_xattr+0x62/0x260\n       [\u003cc114299a\u003e] reiserfs_delete_xattrs+0x1a/0x60\n       [\u003cc111ea1f\u003e] reiserfs_delete_inode+0x9f/0x150\n       [\u003cc10c9c32\u003e] generic_delete_inode+0xa2/0x170\n       [\u003cc10c9d4f\u003e] generic_drop_inode+0x4f/0x70\n       [\u003cc10c8b07\u003e] iput+0x47/0x50\n       [\u003cc10c0965\u003e] do_unlinkat+0xd5/0x160\n       [\u003cc10c0a00\u003e] sys_unlink+0x10/0x20\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #0 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n       [\u003cc1117012\u003e] reiserfs_lookup+0x62/0x140\n       [\u003cc10bd85f\u003e] __lookup_hash+0xef/0x110\n       [\u003cc10bf21d\u003e] lookup_one_len+0x8d/0xc0\n       [\u003cc1141e2a\u003e] open_xa_dir+0xea/0x1b0\n       [\u003cc1141fe5\u003e] xattr_lookup+0x15/0x160\n       [\u003cc1142476\u003e] reiserfs_xattr_get+0x56/0x2a0\n       [\u003cc1144042\u003e] reiserfs_get_acl+0xa2/0x360\n       [\u003cc114461a\u003e] reiserfs_cache_default_acl+0x3a/0x160\n       [\u003cc111789c\u003e] reiserfs_mkdir+0x6c/0x2c0\n       [\u003cc10bea96\u003e] vfs_mkdir+0xd6/0x180\n       [\u003cc10c0c10\u003e] sys_mkdirat+0xc0/0xd0\n       [\u003cc10c0c40\u003e] sys_mkdir+0x20/0x30\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nother info that might help us debug this:\n\n2 locks held by cp/3204:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/1){+.+.+.}, at: [\u003cc10bd8d6\u003e] lookup_create+0x26/0xa0\n #1:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4/3){+.+.+.}, at: [\u003cc1141e18\u003e] open_xa_dir+0xd8/0x1b0\n\nstack backtrace:\nPid: 3204, comm: cp Not tainted 2.6.32-atom #173\nCall Trace:\n [\u003cc13ff993\u003e] ? printk+0x18/0x1a\n [\u003cc105d33a\u003e] print_circular_bug+0xca/0xd0\n [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n [\u003cc105d3aa\u003e] ? check_usage+0x6a/0x460\n [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc1401a2b\u003e] mutex_lock_nested+0x5b/0x340\n [\u003cc11432b9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc11432b9\u003e] reiserfs_write_lock_once+0x29/0x50\n [\u003cc1117012\u003e] reiserfs_lookup+0x62/0x140\n [\u003cc105ccca\u003e] ? debug_check_no_locks_freed+0x8a/0x140\n [\u003cc105cbe4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10bd85f\u003e] __lookup_hash+0xef/0x110\n [\u003cc10bf21d\u003e] lookup_one_len+0x8d/0xc0\n [\u003cc1141e2a\u003e] open_xa_dir+0xea/0x1b0\n [\u003cc1141fe5\u003e] xattr_lookup+0x15/0x160\n [\u003cc1142476\u003e] reiserfs_xattr_get+0x56/0x2a0\n [\u003cc1144042\u003e] reiserfs_get_acl+0xa2/0x360\n [\u003cc10ca2e7\u003e] ? new_inode+0x27/0xa0\n [\u003cc114461a\u003e] reiserfs_cache_default_acl+0x3a/0x160\n [\u003cc1402eb7\u003e] ? _spin_unlock+0x27/0x40\n [\u003cc111789c\u003e] reiserfs_mkdir+0x6c/0x2c0\n [\u003cc10c7cb8\u003e] ? __d_lookup+0x108/0x190\n [\u003cc105c932\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc1401c8d\u003e] ? mutex_lock_nested+0x2bd/0x340\n [\u003cc10bd17a\u003e] ? generic_permission+0x1a/0xa0\n [\u003cc11788fe\u003e] ? security_inode_permission+0x1e/0x20\n [\u003cc10bea96\u003e] vfs_mkdir+0xd6/0x180\n [\u003cc10c0c10\u003e] sys_mkdirat+0xc0/0xd0\n [\u003cc10505c6\u003e] ? up_read+0x16/0x30\n [\u003cc1002fd8\u003e] ? restore_all_notrace+0x0/0x18\n [\u003cc10c0c40\u003e] sys_mkdir+0x20/0x30\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nv2: Don\u0027t drop reiserfs_mutex_lock_nested_safe() as we\u0027ll still\n    need it later\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0719d3434747889b314a1e8add776418c4148bcf",
      "tree": "6ff1fea4ffa9c96ee504bcb026659101eea4a12f",
      "parents": [
        "98ea3f50bcc97689cc0e1fa3b6733f03aeb8fef4"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 00:39:22 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:54:04 2010 +0100"
      },
      "message": "reiserfs: Fix reiserfs lock \u003c-\u003e i_xattr_sem dependency inversion\n\ni_xattr_sem depends on the reiserfs lock. But after we grab\ni_xattr_sem, we may relax/relock the reiserfs lock while waiting\non a freezed filesystem, creating a dependency inversion between\nthe two locks.\n\nIn order to avoid the i_xattr_sem -\u003e reiserfs lock dependency, let\u0027s\ncreate a reiserfs_down_read_safe() that acts like\nreiserfs_mutex_lock_safe(): relax the reiserfs lock while grabbing\nanother lock to avoid undesired dependencies induced by the\nheivyweight reiserfs lock.\n\nThis fixes the following warning:\n\n[  990.005931] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[  990.012373] [ INFO: possible circular locking dependency detected ]\n[  990.013233] 2.6.33-rc1 #1\n[  990.013233] -------------------------------------------------------\n[  990.013233] dbench/1891 is trying to acquire lock:\n[  990.013233]  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cffffffff81159505\u003e] reiserfs_write_lock+0x35/0x50\n[  990.013233]\n[  990.013233] but task is already holding lock:\n[  990.013233]  (\u0026REISERFS_I(inode)-\u003ei_xattr_sem){+.+.+.}, at: [\u003cffffffff8115899a\u003e] reiserfs_xattr_set_handle+0x8a/0x470\n[  990.013233]\n[  990.013233] which lock already depends on the new lock.\n[  990.013233]\n[  990.013233]\n[  990.013233] the existing dependency chain (in reverse order) is:\n[  990.013233]\n[  990.013233] -\u003e #1 (\u0026REISERFS_I(inode)-\u003ei_xattr_sem){+.+.+.}:\n[  990.013233]        [\u003cffffffff81063afc\u003e] __lock_acquire+0xf9c/0x1560\n[  990.013233]        [\u003cffffffff8106414f\u003e] lock_acquire+0x8f/0xb0\n[  990.013233]        [\u003cffffffff814ac194\u003e] down_write+0x44/0x80\n[  990.013233]        [\u003cffffffff8115899a\u003e] reiserfs_xattr_set_handle+0x8a/0x470\n[  990.013233]        [\u003cffffffff81158e30\u003e] reiserfs_xattr_set+0xb0/0x150\n[  990.013233]        [\u003cffffffff8115a6aa\u003e] user_set+0x8a/0x90\n[  990.013233]        [\u003cffffffff8115901a\u003e] reiserfs_setxattr+0xaa/0xb0\n[  990.013233]        [\u003cffffffff810e2596\u003e] __vfs_setxattr_noperm+0x36/0xa0\n[  990.013233]        [\u003cffffffff810e26bc\u003e] vfs_setxattr+0xbc/0xc0\n[  990.013233]        [\u003cffffffff810e2780\u003e] setxattr+0xc0/0x150\n[  990.013233]        [\u003cffffffff810e289d\u003e] sys_fsetxattr+0x8d/0xa0\n[  990.013233]        [\u003cffffffff81002dab\u003e] system_call_fastpath+0x16/0x1b\n[  990.013233]\n[  990.013233] -\u003e #0 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n[  990.013233]        [\u003cffffffff81063e30\u003e] __lock_acquire+0x12d0/0x1560\n[  990.013233]        [\u003cffffffff8106414f\u003e] lock_acquire+0x8f/0xb0\n[  990.013233]        [\u003cffffffff814aba77\u003e] __mutex_lock_common+0x47/0x3b0\n[  990.013233]        [\u003cffffffff814abebe\u003e] mutex_lock_nested+0x3e/0x50\n[  990.013233]        [\u003cffffffff81159505\u003e] reiserfs_write_lock+0x35/0x50\n[  990.013233]        [\u003cffffffff811340e5\u003e] reiserfs_prepare_write+0x45/0x180\n[  990.013233]        [\u003cffffffff81158bb6\u003e] reiserfs_xattr_set_handle+0x2a6/0x470\n[  990.013233]        [\u003cffffffff81158e30\u003e] reiserfs_xattr_set+0xb0/0x150\n[  990.013233]        [\u003cffffffff8115a6aa\u003e] user_set+0x8a/0x90\n[  990.013233]        [\u003cffffffff8115901a\u003e] reiserfs_setxattr+0xaa/0xb0\n[  990.013233]        [\u003cffffffff810e2596\u003e] __vfs_setxattr_noperm+0x36/0xa0\n[  990.013233]        [\u003cffffffff810e26bc\u003e] vfs_setxattr+0xbc/0xc0\n[  990.013233]        [\u003cffffffff810e2780\u003e] setxattr+0xc0/0x150\n[  990.013233]        [\u003cffffffff810e289d\u003e] sys_fsetxattr+0x8d/0xa0\n[  990.013233]        [\u003cffffffff81002dab\u003e] system_call_fastpath+0x16/0x1b\n[  990.013233]\n[  990.013233] other info that might help us debug this:\n[  990.013233]\n[  990.013233] 2 locks held by dbench/1891:\n[  990.013233]  #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#12){+.+.+.}, at: [\u003cffffffff810e2678\u003e] vfs_setxattr+0x78/0xc0\n[  990.013233]  #1:  (\u0026REISERFS_I(inode)-\u003ei_xattr_sem){+.+.+.}, at: [\u003cffffffff8115899a\u003e] reiserfs_xattr_set_handle+0x8a/0x470\n[  990.013233]\n[  990.013233] stack backtrace:\n[  990.013233] Pid: 1891, comm: dbench Not tainted 2.6.33-rc1 #1\n[  990.013233] Call Trace:\n[  990.013233]  [\u003cffffffff81061639\u003e] print_circular_bug+0xe9/0xf0\n[  990.013233]  [\u003cffffffff81063e30\u003e] __lock_acquire+0x12d0/0x1560\n[  990.013233]  [\u003cffffffff8115899a\u003e] ? reiserfs_xattr_set_handle+0x8a/0x470\n[  990.013233]  [\u003cffffffff8106414f\u003e] lock_acquire+0x8f/0xb0\n[  990.013233]  [\u003cffffffff81159505\u003e] ? reiserfs_write_lock+0x35/0x50\n[  990.013233]  [\u003cffffffff8115899a\u003e] ? reiserfs_xattr_set_handle+0x8a/0x470\n[  990.013233]  [\u003cffffffff814aba77\u003e] __mutex_lock_common+0x47/0x3b0\n[  990.013233]  [\u003cffffffff81159505\u003e] ? reiserfs_write_lock+0x35/0x50\n[  990.013233]  [\u003cffffffff81159505\u003e] ? reiserfs_write_lock+0x35/0x50\n[  990.013233]  [\u003cffffffff81062592\u003e] ? mark_held_locks+0x72/0xa0\n[  990.013233]  [\u003cffffffff814ab81d\u003e] ? __mutex_unlock_slowpath+0xbd/0x140\n[  990.013233]  [\u003cffffffff810628ad\u003e] ? trace_hardirqs_on_caller+0x14d/0x1a0\n[  990.013233]  [\u003cffffffff814abebe\u003e] mutex_lock_nested+0x3e/0x50\n[  990.013233]  [\u003cffffffff81159505\u003e] reiserfs_write_lock+0x35/0x50\n[  990.013233]  [\u003cffffffff811340e5\u003e] reiserfs_prepare_write+0x45/0x180\n[  990.013233]  [\u003cffffffff81158bb6\u003e] reiserfs_xattr_set_handle+0x2a6/0x470\n[  990.013233]  [\u003cffffffff81158e30\u003e] reiserfs_xattr_set+0xb0/0x150\n[  990.013233]  [\u003cffffffff814abcb4\u003e] ? __mutex_lock_common+0x284/0x3b0\n[  990.013233]  [\u003cffffffff8115a6aa\u003e] user_set+0x8a/0x90\n[  990.013233]  [\u003cffffffff8115901a\u003e] reiserfs_setxattr+0xaa/0xb0\n[  990.013233]  [\u003cffffffff810e2596\u003e] __vfs_setxattr_noperm+0x36/0xa0\n[  990.013233]  [\u003cffffffff810e26bc\u003e] vfs_setxattr+0xbc/0xc0\n[  990.013233]  [\u003cffffffff810e2780\u003e] setxattr+0xc0/0x150\n[  990.013233]  [\u003cffffffff81056018\u003e] ? sched_clock_cpu+0xb8/0x100\n[  990.013233]  [\u003cffffffff8105eded\u003e] ? trace_hardirqs_off+0xd/0x10\n[  990.013233]  [\u003cffffffff810560a3\u003e] ? cpu_clock+0x43/0x50\n[  990.013233]  [\u003cffffffff810c6820\u003e] ? fget+0xb0/0x110\n[  990.013233]  [\u003cffffffff810c6770\u003e] ? fget+0x0/0x110\n[  990.013233]  [\u003cffffffff81002ddc\u003e] ? sysret_check+0x27/0x62\n[  990.013233]  [\u003cffffffff810e289d\u003e] sys_fsetxattr+0x8d/0xa0\n[  990.013233]  [\u003cffffffff81002dab\u003e] system_call_fastpath+0x16/0x1b\n\nReported-and-tested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "47376ceba54600cec4dd9e7c4fe8b98e4269633a",
      "tree": "7282806f0095519200729f0d78810f78aa57a974",
      "parents": [
        "cb1c2e51c5a72f093b5af384b11d2f1c2abd6c13"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 16 23:25:50 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 16 23:25:50 2009 +0100"
      },
      "message": "reiserfs: Fix reiserfs lock \u003c-\u003e inode mutex dependency inversion\n\nThe reiserfs lock -\u003e inode mutex dependency gets inverted when we\nrelax the lock while walking to the tree.\n\nTo fix this, use a specialized version of reiserfs_mutex_lock_safe\nthat takes care of mutex subclasses. Then we can grab the inode\nmutex with I_MUTEX_XATTR subclass without any reiserfs lock\ndependency.\n\nThis fixes the following report:\n\n[ INFO: possible circular locking dependency detected ]\n2.6.32-06793-gf405425-dirty #2\n-------------------------------------------------------\nmv/18566 is trying to acquire lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1110708\u003e] reiserfs_write_lock+0x28\u003d\n/0x40\n\nbut task is already holding lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#5/3){+.+.+.}, at: [\u003cc111033c\u003e]\nreiserfs_for_each_xattr+0x10c/0x380\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026sb-\u003es_type-\u003ei_mutex_key#5/3){+.+.+.}:\n       [\u003cc104f723\u003e] validate_chain+0xa23/0xf70\n       [\u003cc1050155\u003e] __lock_acquire+0x4e5/0xa70\n       [\u003cc105075a\u003e] lock_acquire+0x7a/0xa0\n       [\u003cc134c76f\u003e] mutex_lock_nested+0x5f/0x2b0\n       [\u003cc11102b4\u003e] reiserfs_for_each_xattr+0x84/0x380\n       [\u003cc1110615\u003e] reiserfs_delete_xattrs+0x15/0x50\n       [\u003cc10ef57f\u003e] reiserfs_delete_inode+0x8f/0x140\n       [\u003cc10a565c\u003e] generic_delete_inode+0x9c/0x150\n       [\u003cc10a574d\u003e] generic_drop_inode+0x3d/0x60\n       [\u003cc10a4667\u003e] iput+0x47/0x50\n       [\u003cc109cc0b\u003e] do_unlinkat+0xdb/0x160\n       [\u003cc109cca0\u003e] sys_unlink+0x10/0x20\n       [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\n-\u003e #0 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc104fc68\u003e] validate_chain+0xf68/0xf70\n       [\u003cc1050155\u003e] __lock_acquire+0x4e5/0xa70\n       [\u003cc105075a\u003e] lock_acquire+0x7a/0xa0\n       [\u003cc134c76f\u003e] mutex_lock_nested+0x5f/0x2b0\n       [\u003cc1110708\u003e] reiserfs_write_lock+0x28/0x40\n       [\u003cc1103d6b\u003e] search_by_key+0x1f7b/0x21b0\n       [\u003cc10e73ef\u003e] search_by_entry_key+0x1f/0x3b0\n       [\u003cc10e77f7\u003e] reiserfs_find_entry+0x77/0x400\n       [\u003cc10e81e5\u003e] reiserfs_lookup+0x85/0x130\n       [\u003cc109a144\u003e] __lookup_hash+0xb4/0x110\n       [\u003cc109b763\u003e] lookup_one_len+0xb3/0x100\n       [\u003cc1110350\u003e] reiserfs_for_each_xattr+0x120/0x380\n       [\u003cc1110615\u003e] reiserfs_delete_xattrs+0x15/0x50\n       [\u003cc10ef57f\u003e] reiserfs_delete_inode+0x8f/0x140\n       [\u003cc10a565c\u003e] generic_delete_inode+0x9c/0x150\n       [\u003cc10a574d\u003e] generic_drop_inode+0x3d/0x60\n       [\u003cc10a4667\u003e] iput+0x47/0x50\n       [\u003cc10a1c4f\u003e] dentry_iput+0x6f/0xf0\n       [\u003cc10a1d74\u003e] d_kill+0x24/0x50\n       [\u003cc10a396b\u003e] dput+0x5b/0x120\n       [\u003cc109ca89\u003e] sys_renameat+0x1b9/0x230\n       [\u003cc109cb28\u003e] sys_rename+0x28/0x30\n       [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\nother info that might help us debug this:\n\n2 locks held by mv/18566:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#5/1){+.+.+.}, at: [\u003cc109b6ac\u003e]\nlock_rename+0xcc/0xd0\n #1:  (\u0026sb-\u003es_type-\u003ei_mutex_key#5/3){+.+.+.}, at: [\u003cc111033c\u003e]\nreiserfs_for_each_xattr+0x10c/0x380\n\nstack backtrace:\nPid: 18566, comm: mv Tainted: G         C 2.6.32-06793-gf405425-dirty #2\nCall Trace:\n [\u003cc134b252\u003e] ? printk+0x18/0x1e\n [\u003cc104e790\u003e] print_circular_bug+0xc0/0xd0\n [\u003cc104fc68\u003e] validate_chain+0xf68/0xf70\n [\u003cc104c8cb\u003e] ? trace_hardirqs_off+0xb/0x10\n [\u003cc1050155\u003e] __lock_acquire+0x4e5/0xa70\n [\u003cc105075a\u003e] lock_acquire+0x7a/0xa0\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc134c76f\u003e] mutex_lock_nested+0x5f/0x2b0\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc134b60a\u003e] ? schedule+0x27a/0x440\n [\u003cc1110708\u003e] reiserfs_write_lock+0x28/0x40\n [\u003cc1103d6b\u003e] search_by_key+0x1f7b/0x21b0\n [\u003cc1050176\u003e] ? __lock_acquire+0x506/0xa70\n [\u003cc1051267\u003e] ? lock_release_non_nested+0x1e7/0x340\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc104e354\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc104e3ab\u003e] ? trace_hardirqs_on+0xb/0x10\n [\u003cc1042a55\u003e] ? T.316+0x15/0x1a0\n [\u003cc1042d2d\u003e] ? sched_clock_cpu+0x9d/0x100\n [\u003cc10e73ef\u003e] search_by_entry_key+0x1f/0x3b0\n [\u003cc134bf2a\u003e] ? __mutex_unlock_slowpath+0x9a/0x120\n [\u003cc104e354\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10e77f7\u003e] reiserfs_find_entry+0x77/0x400\n [\u003cc10e81e5\u003e] reiserfs_lookup+0x85/0x130\n [\u003cc1042d2d\u003e] ? sched_clock_cpu+0x9d/0x100\n [\u003cc109a144\u003e] __lookup_hash+0xb4/0x110\n [\u003cc109b763\u003e] lookup_one_len+0xb3/0x100\n [\u003cc1110350\u003e] reiserfs_for_each_xattr+0x120/0x380\n [\u003cc110ffe0\u003e] ? delete_one_xattr+0x0/0x1c0\n [\u003cc1003342\u003e] ? math_error+0x22/0x150\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc1110615\u003e] reiserfs_delete_xattrs+0x15/0x50\n [\u003cc1110708\u003e] ? reiserfs_write_lock+0x28/0x40\n [\u003cc10ef57f\u003e] reiserfs_delete_inode+0x8f/0x140\n [\u003cc10a561f\u003e] ? generic_delete_inode+0x5f/0x150\n [\u003cc10ef4f0\u003e] ? reiserfs_delete_inode+0x0/0x140\n [\u003cc10a565c\u003e] generic_delete_inode+0x9c/0x150\n [\u003cc10a574d\u003e] generic_drop_inode+0x3d/0x60\n [\u003cc10a4667\u003e] iput+0x47/0x50\n [\u003cc10a1c4f\u003e] dentry_iput+0x6f/0xf0\n [\u003cc10a1d74\u003e] d_kill+0x24/0x50\n [\u003cc10a396b\u003e] dput+0x5b/0x120\n [\u003cc109ca89\u003e] sys_renameat+0x1b9/0x230\n [\u003cc1042d2d\u003e] ? sched_clock_cpu+0x9d/0x100\n [\u003cc104c8cb\u003e] ? trace_hardirqs_off+0xb/0x10\n [\u003cc1042dde\u003e] ? cpu_clock+0x4e/0x60\n [\u003cc1350825\u003e] ? do_page_fault+0x155/0x370\n [\u003cc1041816\u003e] ? up_read+0x16/0x30\n [\u003cc1350825\u003e] ? do_page_fault+0x155/0x370\n [\u003cc109cb28\u003e] sys_rename+0x28/0x30\n [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "431547b3c4533b8c7fd150ab36980b9a3147797b",
      "tree": "807ff2790f3c13c7c91ed2afd6d833032899482d",
      "parents": [
        "ef26ca97e83052790940cbc444b01b0d17a813c1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Nov 13 09:52:56 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:49 2009 -0500"
      },
      "message": "sanitize xattr handler prototypes\n\nAdd a flags argument to struct xattr_handler and pass it to all xattr\nhandler methods.  This allows using the same methods for multiple\nhandlers, e.g. for the ACL methods which perform exactly the same action\nfor the access and default ACLs, just using a different underlying\nattribute.  With a little more groundwork it\u0027ll also allow sharing the\nmethods for the regular user/trusted/secure handlers in extN, ocfs2 and\njffs2 like it\u0027s already done for xfs in this patch.\n\nAlso change the inode argument to the handlers to a dentry to allow\nusing the handlers mechnism for filesystems that require it later,\ne.g. cifs.\n\n[with GFS2 bits updated by Steven Whitehouse \u003cswhiteho@redhat.com\u003e]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ae635c0bbd6c10aa62bf5149c6f41add59fbf4d2",
      "tree": "a8f3ed7ca8452fba1cb153bdb0e2ec98ea5219e1",
      "parents": [
        "08f14fc8963e585e65b71212ce8050607b9b6c36"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 02:24:45 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:26 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix \"reiserfs lock\" / \"inode mutex\" lock inversion dependency\n\nreiserfs_xattr_init is called with the reiserfs write lock held, but\nif the \".reiserfs_priv\" entry is not created, we take the superblock\nroot directory inode mutex until .reiserfs_priv is created.\n\nThis creates a lock dependency inversion against other sites such as\nreiserfs_file_release() which takes an inode mutex and the reiserfs\nlock after.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "c72e05756b900b3be24cd73a16de52bab80984c0",
      "tree": "4fc35ad9efc1a6a9ca14baa3612e551fb4da793e",
      "parents": [
        "2ac626955ed62ee8596f00581f959cc86e6198d1"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 16 18:12:08 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:24 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: acquire the inode mutex safely\n\nWhile searching a pathname, an inode mutex can be acquired\nin do_lookup() which calls reiserfs_lookup() which in turn\nacquires the write lock.\n\nOn the other side reiserfs_fill_super() can acquire the write_lock\nand then call reiserfs_lookup_privroot() which can acquire an\ninode mutex (the root of the mount point).\n\nSo we theoretically risk an AB - BA lock inversion that could lead\nto a deadlock.\n\nAs for other lock dependencies found since the bkl to mutex\nconversion, the fix is to use reiserfs_mutex_lock_safe() which\ndrops the lock dependency to the write lock.\n\n[ Impact: fix a possible deadlock with reiserfs ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "73422811d290c628b4ddbf6830e5cd6fa42e84f1",
      "tree": "9308c36ee82a8217b02848372896209335c69575",
      "parents": [
        "a525890cb6a2949b644d212ae290b658967d3919"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun May 10 16:05:39 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:35:58 2009 -0400"
      },
      "message": "reiserfs: allow exposing privroot w/ xattrs enabled\n\nThis patch adds an -oexpose_privroot option to allow access to the privroot.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b83674c0da6558e357c6b482ccf299eeea77d8ef",
      "tree": "22f71c1f3f099887b53884a9cabbb6aaeb3bc0a6",
      "parents": [
        "ceb5edc457f07956c82dccfb54ca8ae7e2a399f0"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun May 17 01:02:03 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 17 11:45:45 2009 -0700"
      },
      "message": "reiserfs: fixup perms when xattrs are disabled\n\nThis adds CONFIG_REISERFS_FS_XATTR protection from reiserfs_permission.\n\nThis is needed to avoid warnings during file deletions and chowns with\nxattrs disabled.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ceb5edc457f07956c82dccfb54ca8ae7e2a399f0",
      "tree": "0b58e5a5e359090e47583ec0b49e7b29af0b2179",
      "parents": [
        "12abb35a03e32c97235fcefdcf2d851be9f82dc2"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun May 17 01:02:02 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 17 11:45:45 2009 -0700"
      },
      "message": "reiserfs: deal with NULL xattr root w/ xattrs disabled\n\nThis avoids an Oops in open_xa_root that can occur when deleting a file\nwith xattrs disabled.  It assumes that the xattr root will be there, and\nthat is not guaranteed.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "12abb35a03e32c97235fcefdcf2d851be9f82dc2",
      "tree": "b415acb9230b775a899252f9fc7b66b14092911e",
      "parents": [
        "bba0b4ec3cd6c52cb778af34ad70f6cc3aec1c7e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun May 17 01:02:01 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 17 11:45:45 2009 -0700"
      },
      "message": "reiserfs: clean up ifdefs\n\nWith xattr cleanup even with xattrs disabled, much of the initial setup\nis still performed.  Some #ifdefs are just not needed since the options\nthey protect wouldn\u0027t be available anyway.\n\nThis cleans those up.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "677c9b2e393a0cd203bd54e9c18b012b2c73305a",
      "tree": "575d3f70bb9fbf12171ff526909b68377bede67b",
      "parents": [
        "b82bb72ba7df473461c5e2368a4e7497c8ce76e9"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Tue May 05 15:30:17 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:39 2009 -0400"
      },
      "message": "reiserfs: remove privroot hiding in lookup\n\n With Al Viro\u0027s patch to move privroot lookup to fs mount, there\u0027s no need\n to have special code to hide the privroot in reiserfs_lookup.\n\n I\u0027ve also cleaned up the privroot hiding in reiserfs_readdir_dentry and\n removed the last user of reiserfs_xattrs().\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ab17c4f02156c4f75d7fa43a5aa2a7f942d47201",
      "tree": "20ff8ec91144d20966ac70adb24bd3372e3508c4",
      "parents": [
        "edcc37a0478836b4a51eafb1bcec6a52708f681d"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Tue May 05 15:30:15 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:39 2009 -0400"
      },
      "message": "reiserfs: fixup xattr_root caching\n\n The xattr_root caching was broken from my previous patch set. It wouldn\u0027t\n cause corruption, but could cause decreased performance due to allocating\n a larger chunk of the journal (~ 27 blocks) than it would actually use.\n\n This patch loads the xattr root dentry at xattr initialization and creates\n it on-demand. Since we\u0027re using the cached dentry, there\u0027s no point\n in keeping lookup_or_create_dir around, so that\u0027s removed.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "edcc37a0478836b4a51eafb1bcec6a52708f681d",
      "tree": "95294fa607420d760823401a6c6e7d9deb698bb1",
      "parents": [
        "5a6059c358d3b3004cb6b8562e3b049b1f8564f9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun May 03 06:00:05 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:38 2009 -0400"
      },
      "message": "Always lookup priv_root on reiserfs mount and keep it\n\n... even if it\u0027s a negative dentry.  That way we can set -\u003ed_op on\nroot before anyone could race with us.  Simplify d_compare(), while\nwe are at it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5a6059c358d3b3004cb6b8562e3b049b1f8564f9",
      "tree": "3c0d0bfabc7545963c0d618afbe4bd483b7c6166",
      "parents": [
        "67e55205ec55cc7899f1d783f217961596798419"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Fri May 01 12:11:12 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:38 2009 -0400"
      },
      "message": "reiserfs: Expand i_mutex to enclose lookup_one_len\n\n 2.6.30-rc3 introduced some sanity checks in the VFS code to avoid NFS\n bugs by ensuring that lookup_one_len is always called under i_mutex.\n\n This patch expands the i_mutex locking to enclose lookup_one_len. This was\n always required, but not not enforced in the reiserfs code since it\n does locking around the xattr interactions with the xattr_sem.\n\n This is obvious enough, and it survived an overnight 50 thread ACL test.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3a355cc61d41bc31cc23a57247df63dba80a6018",
      "tree": "cf39d0b861fa8a33b748a95f3c86bbb33d9c2dac",
      "parents": [
        "77e465867080c2d1e0c410e96dcdcd51e8584a6f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 16:49:58 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 14:28:58 2009 -0700"
      },
      "message": "reiserfs: xattr_create is unused with xattrs disabled\n\nThis patch ifdefs xattr_create when xattrs aren\u0027t enabled.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1c502482853f84606928f5a2f2eb6da1993cda1",
      "tree": "ca296007164906342a195bdf3a5305277e6af5da",
      "parents": [
        "019abbc87025a030fd25008612afd4eff8a375f7",
        "ee93961be1faddf9e9a638bc519145c20f0cfeba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:29:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:33:01 2009 -0700"
      },
      "message": "Merge branch \u0027reiserfs-updates\u0027 from Jeff Mahoney\n\n* reiserfs-updates: (35 commits)\n  reiserfs: rename [cn]_* variables\n  reiserfs: rename p_._ variables\n  reiserfs: rename p_s_tb to tb\n  reiserfs: rename p_s_inode to inode\n  reiserfs: rename p_s_bh to bh\n  reiserfs: rename p_s_sb to sb\n  reiserfs: strip trailing whitespace\n  reiserfs: cleanup path functions\n  reiserfs: factor out buffer_info initialization\n  reiserfs: add atomic addition of selinux attributes during inode creation\n  reiserfs: use generic readdir for operations across all xattrs\n  reiserfs: journaled xattrs\n  reiserfs: use generic xattr handlers\n  reiserfs: remove i_has_xattr_dir\n  reiserfs: make per-inode xattr locking more fine grained\n  reiserfs: eliminate per-super xattr lock\n  reiserfs: simplify xattr internal file lookups/opens\n  reiserfs: Clean up xattrs when REISERFS_FS_XATTR is unset\n  reiserfs: remove IS_PRIVATE helpers\n  reiserfs: remove link detection code\n  ...\n\nFixed up conflicts manually due to:\n - quota name cleanups vs variable naming changes:\n\tfs/reiserfs/inode.c\n\tfs/reiserfs/namei.c\n\tfs/reiserfs/stree.c\n        fs/reiserfs/xattr.c\n - exported include header cleanups\n\tinclude/linux/reiserfs_fs.h\n"
    },
    {
      "commit": "a41f1a4715f26f7bc4d047d0bc7710145c8e69c7",
      "tree": "8b5d94368e774ec490619593300e8b3f4b7c5cb1",
      "parents": [
        "0ab2621ebd9a28bf7a524ecd50d492a10579dfcc"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:40 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: use generic readdir for operations across all xattrs\n\nThe current reiserfs xattr implementation open codes reiserfs_readdir\nand frees the path before calling the filldir function.  Typically, the\nfilldir function is something that modifies the file system, such as a\nchown or an inode deletion that also require reading of an inode\nassociated with each direntry.  Since the file system is modified, the\npath retained becomes invalid for the next run.  In addition, it runs\nbackwards in attempt to minimize activity.\n\nThis is clearly suboptimal from a code cleanliness perspective as well\nas performance-wise.\n\nThis patch implements a generic reiserfs_for_each_xattr that uses the\ngeneric readdir and a specific filldir routine that simply populates an\narray of dentries and then performs a specific operation on them.  When\nall files have been operated on, it then calls the operation on the\ndirectory itself.\n\nThe result is a noticable code reduction and better performance.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ab2621ebd9a28bf7a524ecd50d492a10579dfcc",
      "tree": "62dda6de2fed116aff363190f95a58d56c690e3e",
      "parents": [
        "48b32a3553a54740d236b79a90f20147a25875e3"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:39 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: journaled xattrs\n\nDeadlocks are possible in the xattr code between the journal lock and the\nxattr sems.\n\nThis patch implements journalling for xattr operations. The benefit is\ntwofold:\n * It gets rid of the deadlock possibility by always ensuring that xattr\n   write operations are initiated inside a transaction.\n * It corrects the problem where xattr backing files aren\u0027t considered any\n   differently than normal files, despite the fact they are metadata.\n\nI discussed the added journal load with Chris Mason, and we decided that\nsince xattrs (versus other journal activity) is fairly rare, the introduction\nof larger transactions to support journaled xattrs wouldn\u0027t be too big a deal.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "48b32a3553a54740d236b79a90f20147a25875e3",
      "tree": "faf6807facb5825608469a9e33c9127f90b974df",
      "parents": [
        "8ecbe550a142fe604874afa477ea68986f89b86c"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:38 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: use generic xattr handlers\n\nChristoph Hellwig had asked me quite some time ago to port the reiserfs\nxattrs to the generic xattr interface.\n\nThis patch replaces the reiserfs-specific xattr handling code with the\ngeneric struct xattr_handler.\n\nHowever, since reiserfs doesn\u0027t split the prefix and name when accessing\nxattrs, it can\u0027t leverage generic_{set,get,list,remove}xattr without\nneedlessly reconstructing the name on the back end.\n\nUpdate 7/26/07: Added missing dput() to deletion path.\nUpdate 8/30/07: Added missing mark_inode_dirty when i_mode is used to\n                represent an ACL and no previous ACL existed.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8ecbe550a142fe604874afa477ea68986f89b86c",
      "tree": "3b11a69188137b478894f24079b8cc56df7843b3",
      "parents": [
        "8b6dd72a441a683cef7ace93de0a57ced4367f00"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:37 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: remove i_has_xattr_dir\n\nWith the changes to xattr root locking, the i_has_xattr_dir flag\nis no longer needed. This patch removes it.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b6dd72a441a683cef7ace93de0a57ced4367f00",
      "tree": "6bdeebd3a35d71db2c7ea3e48e3f617b5efbd81a",
      "parents": [
        "d984561b326cd0fe0d1183d11b9b4fa1d011d21d"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:36 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: make per-inode xattr locking more fine grained\n\nThe per-inode locking can be made more fine-grained to surround just the\ninteraction with the filesystem itself.  This really only applies to\nprotecting reads during a write, since concurrent writes are barred with\ninode-\u003ei_mutex at the vfs level.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d984561b326cd0fe0d1183d11b9b4fa1d011d21d",
      "tree": "e0487588581bccaa2b875529ed84ec5a4a254ab9",
      "parents": [
        "6c17675e1e02ebde220ef639a3fb1333928ec2f4"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:35 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: eliminate per-super xattr lock\n\nWith the switch to using inode-\u003ei_mutex locking during lookups/creation\nin the xattr root, the per-super xattr lock is no longer needed.\n\nThis patch removes it.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c17675e1e02ebde220ef639a3fb1333928ec2f4",
      "tree": "2bc1e7f1d05d725d5d1294d687edb52da0722928",
      "parents": [
        "a72bdb1cd244725ff47b3a29662e2cb820d8c60f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:34 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: simplify xattr internal file lookups/opens\n\nThe xattr file open/lookup code is needlessly complex.  We can use\nvfs-level operations to perform the same work, and also simplify the\nlocking constraints.  The locking advantages will be exploited in future\npatches.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a72bdb1cd244725ff47b3a29662e2cb820d8c60f",
      "tree": "68f9022b303ca5183bd64eddbff41f0624e84188",
      "parents": [
        "6dfede696391133eadd7ce90b61c9573ee6e5a90"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:33 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: Clean up xattrs when REISERFS_FS_XATTR is unset\n\nThe current reiserfs xattr implementation will not clean up old xattr\nfiles if files are deleted when REISERFS_FS_XATTR is unset.  This\nresults in inaccessible lost files, wasting space.\n\nThis patch compiles in basic xattr knowledge, such as how to delete them\nand change ownership for quota tracking.  If the file system has never\nused xattrs, then the operation is quite fast: it returns immediately\nwhen it sees there is no .reiserfs_priv directory.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6dfede696391133eadd7ce90b61c9573ee6e5a90",
      "tree": "2051bfc5108d0e7592b8738e43f4ae972d398ccd",
      "parents": [
        "010f5a21a323e7383e067009a7785462883fe5ea"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:32 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: remove IS_PRIVATE helpers\n\nThere are a number of helper functions for marking a reiserfs inode\nprivate that were leftover from reiserfs did its own thing wrt to\nprivate inodes.  S_PRIVATE has been in the kernel for some time, so this\npatch removes the helpers and uses IS_PRIVATE instead.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "010f5a21a323e7383e067009a7785462883fe5ea",
      "tree": "2144b0d0e7c7e37da0e5b28a922d49c00ea5cec3",
      "parents": [
        "ec6ea56b2f1d3811815e53131e85fd1fc9b51873"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:31 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: remove link detection code\n\nEarly in the reiserfs xattr development, there was a plan to use\nhardlinks to save disk space for identical xattrs.  That code never\nmaterialized and isn\u0027t going to, so this patch removes the detection\ncode.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec6ea56b2f1d3811815e53131e85fd1fc9b51873",
      "tree": "cf5897a3bef7fdfaf96edcce21ffc6738aaea941",
      "parents": [
        "f437c529e3cd4853c1edff6fe3b191ad32304e8f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:30 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: xattr reiserfs_get_page takes offset instead of index\n\nThis patch changes reiserfs_get_page to take an offset rather than an\nindex since no callers calculate the index differently.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f437c529e3cd4853c1edff6fe3b191ad32304e8f",
      "tree": "f46bc41448135d39dbd1900bd06a68e09accf86a",
      "parents": [
        "0030b64570c862f04c1550ba4a0bf7a9c128162a"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:29 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: small variable cleanup\n\nThis patch removes the xinode and mapping variables from\nreiserfs_xattr_{get,set}.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0030b64570c862f04c1550ba4a0bf7a9c128162a",
      "tree": "811b8eec4a417983ad1e5b51f44194f9cc98496d",
      "parents": [
        "1e5e59d431038c53954fe8f0b38bee0f0ad30349"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:28 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: use reiserfs_error()\n\nThis patch makes many paths that are currently using warnings to handle\nthe error.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "45b03d5e8e674eb6555b767e1c8eb40b671ff892",
      "tree": "d74acd1be7f5102143df960e8cd692aadcc437df",
      "parents": [
        "1d889d9958490888b3fad1d486145d9a03559cbc"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:21 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: rework reiserfs_warning\n\nReiserFS warnings can be somewhat inconsistent.\nIn some cases:\n * a unique identifier may be associated with it\n * the function name may be included\n * the device may be printed separately\n\nThis patch aims to make warnings more consistent. reiserfs_warning() prints\nthe device name, so printing it a second time is not required. The function\nname for a warning is always helpful in debugging, so it is now automatically\ninserted into the output. Hans has stated that every warning should have\na unique identifier. Some cases lack them, others really shouldn\u0027t have them.\nreiserfs_warning() now expects an id associated with each message. In the\nrare case where one isn\u0027t needed, \"\" will suffice.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d889d9958490888b3fad1d486145d9a03559cbc",
      "tree": "6fab5d559376dd8d9aa970efd179a7345f77ae2e",
      "parents": [
        "a5437152eec2c9171f6ab06e63135c5333f0a929"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:20 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:35 2009 -0700"
      },
      "message": "reiserfs: make some warnings informational\n\nIn several places, reiserfs_warning is used when there is no warning, just\na notice. This patch changes some of them to indicate that the message\nis merely informational.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e16404ed0f3f330dc3e99b95cef69bb60bcd27f7",
      "tree": "e60bf730a9a34ae3139ced51cdc9cbd90562fb24",
      "parents": [
        "f786aa90e026f2174bb0c26d49f338c5c46ede55"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:55:13 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:00 2009 -0400"
      },
      "message": "constify dentry_operations: misc filesystems\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "67b172c097177835fbf5b0666885c4059a4f67ff",
      "tree": "2885ade2f6f3fdaae986f4724390adc404c42a2f",
      "parents": [
        "6b23ea7679978e6e1148aae9245021dfbcd989d7"
      ],
      "author": {
        "name": "Julien Brunel",
        "email": "brunel@diku.dk",
        "time": "Wed Oct 15 22:04:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:46 2008 -0700"
      },
      "message": "fs/reiserfs: use an IS_ERR test rather than a NULL test\n\nIn case of error, the function open_xa_dir returns an ERR pointer, but\nnever returns a NULL pointer.  So a NULL test that comes after an IS_ERR\ntest should be deleted.\n\nThe semantic match that finds this problem is as follows:\n(http://www.emn.fr/x-info/coccinelle/)\n\n// \u003csmpl\u003e\n@match_bad_null_test@\nexpression x, E;\nstatement S1,S2;\n@@\nx \u003d open_xa_dir(...)\n... when !\u003d x \u003d E\n(\n*  if (x \u003d\u003d NULL \u0026\u0026 ...) S1 else S2\n|\n*  if (x \u003d\u003d NULL || ...) S1 else S2\n)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julien Brunel \u003cbrunel@diku.dk\u003e\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e6305c43eda10ebfd2ad9e35d6e172ccc7bb3695",
      "tree": "8a95bd0e27fb3ce895cca9ef91af2e1605e4cdab",
      "parents": [
        "1bd5191d9f5d1928c4efdf604c4164b04bb88dbe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 15 21:03:57 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:14 2008 -0400"
      },
      "message": "[PATCH] sanitize -\u003epermission() prototype\n\n* kill nameidata * argument; map the 3 bits in -\u003eflags anybody cares\n  about to new MAY_... ones and pass with the mask.\n* kill redundant gfs2_iop_permission()\n* sanitize ecryptfs_permission()\n* fix remaining places where -\u003epermission() instances might barf on new\n  MAY_... found in mask.\n\nThe obvious next target in that direction is permission(9)\n\nfolded fix for nfs_permission() breakage from Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cb688371e27880d86c42323826846d1cd7caad8f",
      "tree": "1be4f5bb437e86a547365a94aed5ade23adb09da",
      "parents": [
        "d3135846f6c1858dbad6ccb780a42e6c98953e6d"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Tue Feb 26 09:59:26 2008 -0500"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Fri Apr 18 22:16:44 2008 -0400"
      },
      "message": "fs: Remove unnecessary inclusions of asm/semaphore.h\n\nNone of these files use any of the functionality promised by\nasm/semaphore.h.\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "3227e14c3cab5ef7972c72eb13c13de444b5bfbc",
      "tree": "e846d8e513f1d43da3e5ca9a7004fb8349b67852",
      "parents": [
        "f382d6e631fe424200ee0d8bb16539f5b7bef7be"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Fri Feb 15 14:37:22 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 19 06:49:36 2008 -0400"
      },
      "message": "[PATCH] reiserfs: eliminate private use of struct file in xattr\n\nAfter several posts and bug reports regarding interaction with the NULL\nnameidata, here\u0027s a patch to clean up the mess with struct file in the\nreiserfs xattr code.\n\nAs observed in several of the posts, there\u0027s really no need for struct file\nto exist in the xattr code.  It was really only passed around due to the\nf_op-\u003ereaddir() and a_ops-\u003e{prepare,commit}_write prototypes requiring it.\n\nreiserfs_prepare_write() and reiserfs_commit_write() don\u0027t actually use the\nstruct file passed to it, and the xattr code uses a private version of\nreiserfs_readdir() to enumerate the xattr directories.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e231c2ee64eb1c5cd3c63c31da9dac7d888dcf7f",
      "tree": "d4b17ef65960594681397a3acac02c2d248200b5",
      "parents": [
        "d1bc8e95445224276d7896b8b08cbb0b28a0ca80"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Feb 07 00:15:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:26 2008 -0800"
      },
      "message": "Convert ERR_PTR(PTR_ERR(p)) instances to ERR_CAST(p)\n\nConvert instances of ERR_PTR(PTR_ERR(p)) to ERR_CAST(p) using:\n\nperl -spi -e \u0027s/ERR_PTR[(]PTR_ERR[(](.*)[)][)]/ERR_CAST(\\1)/\u0027 `grep -rl \u0027ERR_PTR[(]*PTR_ERR\u0027 fs crypto net security`\n\nSigned-off-by: David Howells \u003cdhowells@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": "bcf11cbeccd7d981d68567942ba6ec184890bc29",
      "tree": "c23b864f3a7478cf73828cc06d32d0a0a83246cf",
      "parents": [
        "e381d1c46037aa4191c35e7514191bb3de739cbc"
      ],
      "author": {
        "name": "Denis Cheng",
        "email": "crquan@gmail.com",
        "time": "Wed Feb 06 01:37:40 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:08 2008 -0800"
      },
      "message": "fs/reiserfs/xattr.c: use LIST_HEAD instead of LIST_HEAD_INIT\n\nSigned-off-by: Denis Cheng \u003ccrquan@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7598392894f6455cf2114f29a98a0289df788056",
      "tree": "b6bef139021d0d82aa985f243a5c9acc6c7a1907",
      "parents": [
        "9ad163ae0df8a3adab6d521475142392e3efb7a6"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Oct 18 23:39:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:35 2007 -0700"
      },
      "message": "reiserfs: fix up lockdep warnings\n\nAdd I_MUTEX_XATTR annotations to the inode locking in the reiserfs xattr code.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba9d8cec6c7165e440f9b2413a0464cf3c12fb25",
      "tree": "7fc05b10cdd18da51fce987b3323754ecdc53973",
      "parents": [
        "797b4cffdf79b9ed66759b8d2d5252eba965fb18"
      ],
      "author": {
        "name": "Vladimir Saveliev",
        "email": "vs@namesys.com",
        "time": "Tue Oct 16 01:25:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:56 2007 -0700"
      },
      "message": "reiserfs: convert to new aops\n\nConvert reiserfs to new aops\n\nSigned-off-by: Vladimir Saveliev \u003cvs@namesys.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6fe6900e1e5b6fa9e5c59aa5061f244fe3f467e2",
      "tree": "8bbfe5072279227cc50a941ad4813908082426a1",
      "parents": [
        "714b8171af9c930a59a0da8f6fe50518e70ab035"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun May 06 14:49:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:51 2007 -0700"
      },
      "message": "mm: make read_cache_page synchronous\n\nEnsure pages are uptodate after returning from read_cache_page, which allows\nus to cut out most of the filesystem-internal PageUptodate calls.\n\nI didn\u0027t have a great look down the call chains, but this appears to fixes 7\npossible use-before uptodate in hfs, 2 in hfsplus, 1 in jfs, a few in\necryptfs, 1 in jffs2, and a possible cleared data overwritten with readpage in\nblock2mtd.  All depending on whether the filler is async and/or can return\nwith a !uptodate page.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1173a729fc3ce2fa0d698bd39be8ff7bf6c70bf1",
      "tree": "562d53dc7faadcd431f87159d2e67512823372b2",
      "parents": [
        "42e380832a6911c8a3173ee0172fbc0e4864d80b"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.de",
        "time": "Mon Apr 30 15:09:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Apr 30 16:40:40 2007 -0700"
      },
      "message": "reiserfs: suppress lockdep warning\n\nWe\u0027re getting lockdep warnings due to a post-2.6.21-rc7 bugfix.\n\nThe xattr_sem can never be taken in the manner described. Internal inodes\nare protected by I_PRIVATE.  Add the appropriate annotation.\n\nCc: \u003cstable@kernel.org\u003e\nCc: \"Antonino A. Daplas\" \u003cadaplas@pol.net\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b7f375505f5611efb562065b57814b28a81abc3",
      "tree": "3f51e49ca5b70081bf15f4ce9d7ddbd289917932",
      "parents": [
        "1a641fceb6bb6b0930db1aadbda1aaf5711d65d6"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Apr 23 14:41:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Apr 24 08:23:09 2007 -0700"
      },
      "message": "reiserfs: fix xattr root locking/refcount bug\n\nThe listxattr() and getxattr() operations are only protected by a read\nlock.  As a result, if either of these operations run in parallel, a race\ncondition exists where the xattr_root will end up being cached twice, which\nresults in the leaking of a reference and a BUG() on umount.\n\nThis patch refactors get_xa_root(), __get_xa_root(), and create_xa_root(),\ninto one get_xa_root() function that takes the appropriate locking around\nthe entire critical section.\n\nReported, diagnosed and tested by Andrea Righi \u003ca.righi@cineca.it\u003e\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Andrea Righi \u003ca.righi@cineca.it\u003e\nCc: \"Vladimir V. Saveliev\" \u003cvs@namesys.com\u003e\nCc: Edward Shishkin \u003cedward@namesys.com\u003e\nCc: Alex Zarochentsev \u003czam@namesys.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1fc5adbd1916793c19d25347f484806c124d9be7",
      "tree": "81be6f222656f43c970013acf805da8d74882ca6",
      "parents": [
        "a57c4d65f70cb43c8503bc213c8be638011c22e7"
      ],
      "author": {
        "name": "Josef Sipek",
        "email": "jsipek@fsl.cs.sunysb.edu",
        "time": "Fri Dec 08 02:37:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:49 2006 -0800"
      },
      "message": "[PATCH] struct path: convert reiserfs\n\nSigned-off-by: Josef Sipek \u003cjsipek@fsl.cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3277c39f8d706afb6fefc02f49563a73bbd405b9",
      "tree": "b00b0a604337c04951cadd6ae518cefca8a89462",
      "parents": [
        "75e7ce66ef044fa877a420f1b4febe416bbc09ad"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Nov 14 21:13:53 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:22:59 2006 -0800"
      },
      "message": "[NET]: Kill direct includes of asm/checksum.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "afefdbb28a0a2af689926c30b94a14aea6036719",
      "tree": "6ee500575cac928cd90045bcf5b691cf2b8daa09",
      "parents": [
        "1d32849b14bc8792e6f35ab27dd990d74b16126c"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Oct 03 01:13:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:03:40 2006 -0700"
      },
      "message": "[PATCH] VFS: Make filldir_t and struct kstat deal in 64-bit inode numbers\n\nThese patches make the kernel pass 64-bit inode numbers internally when\ncommunicating to userspace, even on a 32-bit system.  They are required\nbecause some filesystems have intrinsic 64-bit inode numbers: NFS3+ and XFS\nfor example.  The 64-bit inode numbers are then propagated to userspace\nautomatically where the arch supports it.\n\nProblems have been seen with userspace (eg: ld.so) using the 64-bit inode\nnumber returned by stat64() or getdents64() to differentiate files, and\nfailing because the 64-bit inode number space was compressed to 32-bits, and\nso overlaps occur.\n\nThis patch:\n\nMake filldir_t take a 64-bit inode number and struct kstat carry a 64-bit\ninode number so that 64-bit inode numbers can be passed back to userspace.\n\nThe stat functions then returns the full 64-bit inode number where\navailable and where possible.  If it is not possible to represent the inode\nnumber supplied by the filesystem in the field provided by userspace, then\nerror EOVERFLOW will be issued.\n\nSimilarly, the getdents/readdir functions now pass the full 64-bit inode\nnumber to userspace where possible, returning EOVERFLOW instead when a\ndirectory entry is encountered that can\u0027t be properly represented.\n\nNote that this means that some inodes will not be stat\u0027able on a 32-bit\nsystem with old libraries where they were before - but it does mean that\nthere will be no ambiguity over what a 32-bit inode number refers to.\n\nNote similarly that directory scans may be cut short with an error on a\n32-bit system with old libraries where the scan would work before for the\nsame reasons.\n\nIt is judged unlikely that this situation will occur because modern glibc\nuses 64-bit capable versions of stat and getdents class functions\nexclusively, and that older systems are unlikely to encounter\nunrepresentable inode numbers anyway.\n\n[akpm: alpha build fix]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4df46240a1312161e3c794f6ace50ef7eb5ff3d7",
      "tree": "c32b0e6b32b79f8fbb8326743867b25ea483134d",
      "parents": [
        "36e8e5783297fbb83bdebe7e245ef659958f23cb"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 27 01:23:56 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Aug 27 11:01:32 2006 -0700"
      },
      "message": "[PATCH] lockdep: annotate reiserfs\n\nreiserfs seems to have another locking level layer for the i_mutex due to the\nxattrs-are-a-directory thing.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "090d2b185d8680fc26a2eaf4245d4171dcf4baf1",
      "tree": "67e604e3cd1bad3cfd034bced19a0fbff6a80c30",
      "parents": [
        "c330dda908b5a46469a997eea90b66f2f9f02b34"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 23 02:05:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:02 2006 -0700"
      },
      "message": "[PATCH] read_mapping_page for address space\n\nAdd read_mapping_page() which is used for callers that pass\nmapping-\u003ea_ops-\u003ereadpage as the filler for read_cache_page.  This removes\nsome duplication from filesystem code.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ec191574b9c3cb7bfb95e4f803b63f7c8dc52690",
      "tree": "3fea2eb0fb84e0d793ac0185e1a85121a1835d4f",
      "parents": [
        "c87d0c07ea198db1ce451421904edd60b7d385ee"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Feb 01 03:06:46 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:25 2006 -0800"
      },
      "message": "[PATCH] reiserfs: use generic_permission\n\nUse the generic_permission code with a proper wrapper and callback instead\nof having a local copy.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cmason@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c87d0c07ea198db1ce451421904edd60b7d385ee",
      "tree": "c6c58f49d3c9bf8fab0c27cf8335028f17614470",
      "parents": [
        "e5dd259f78ba0fd0c7bfc5c52179dbbff3eb48aa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Feb 01 03:06:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:25 2006 -0800"
      },
      "message": "[PATCH] reiserfs: remove reiserfs_permission_locked\n\nThis function is completely unused since the xattr permission checking\nchanges.  Remove it and fold __reiserfs_permission into\nreiserfs_permission.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cmason@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d739b42b82773206297db1fc0d96ef895a5d9688",
      "tree": "b23e68bf685ca8a383e10b8673e5d1c547988b74",
      "parents": [
        "d19720a909b4443f78cbb03f4f090180e143ad9d"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Wed Feb 01 03:06:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:25 2006 -0800"
      },
      "message": "[PATCH] reiserfs: remove kmalloc wrapper\n\nRemove kmalloc() wrapper from fs/reiserfs/.  Please note that a reiserfs\n/proc entry format is changed because kmalloc statistics is removed.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "16f7e0fe2ecc30f30652e8185e1772cdebe39109",
      "tree": "e668703267c7b02f1af3cc1581bb4366a5370fdd",
      "parents": [
        "c59ede7b78db329949d9cdcd7064e22d357560ef"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Wed Jan 11 12:17:46 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 11 18:42:13 2006 -0800"
      },
      "message": "[PATCH] capable/capability.h (fs/)\n\nfs: Use \u003clinux/capability.h\u003e where capable() is used.\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nAcked-by: Tim Schmielau \u003ctim@physik3.uni-rostock.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b98932cb514eef404c6168c9a15cf28851498dea",
      "tree": "445c3d1b2510dec9ba5caf38e9e44e1d96a712cb",
      "parents": [
        "c37ef806a3e1c0bca65fd03b7590d56d19625da4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jan 09 20:51:59 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:30 2006 -0800"
      },
      "message": "[PATCH] remove reiserfs xattr permission checks\n\nremove checks now in the VFS\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4a4efbdee278b2f4ed91aad2db5c006ff754276e",
      "tree": "be5742c3d3ff5382c8a6ccdcd31bfe00fb9b6491",
      "parents": [
        "7a1119b1fc87cc347d3932b8aee051e86b32818f"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Tue Jan 03 13:27:11 2006 +0100"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@r063144.stusta.swh.mhn.de",
        "time": "Tue Jan 03 13:27:11 2006 +0100"
      },
      "message": "s/retreiv/retriev/g\n\nAs everyone knows, the rule is: \"i before e.. um.. always.\"\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "c4cdd038318863e912e9b992489f61497f98b442",
      "tree": "07ebd1d1d5d27be8adcca5b81991af077f6044f8",
      "parents": [
        "b4e3ca1ab1ae9ae86134126dcdc88da1caaa32ca"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 21 03:22:39 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 28 08:16:51 2005 -0700"
      },
      "message": "[PATCH] gfp_t: reiserfs mapping_set_gfp_mask() use\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "02b775696fee75a04041d8d94db26a9462216d24",
      "tree": "634447f4dfd9299deb5a53a1b9fab267186556cd",
      "parents": [
        "ec0344a2c93c770fe1ef7cdccd8115a69ca100d1"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Wed Jul 27 11:45:16 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jul 27 16:26:07 2005 -0700"
      },
      "message": "[PATCH] reiserfs doesn\u0027t use mbcache\n\nreiserfs doesn\u0027t use the mbcache, so this can go.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bd4c625c061c2a38568d0add3478f59172455159",
      "tree": "1c44a17c55bce2ee7ad5ea3d15a208ecc0955f74",
      "parents": [
        "7fa94c8868edfef8cb6a201fcc9a5078b7b961da"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 20:21:28 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 20:21:28 2005 -0700"
      },
      "message": "reiserfs: run scripts/Lindent on reiserfs code\n\nThis was a pure indentation change, using:\n\n\tscripts/Lindent fs/reiserfs/*.c include/linux/reiserfs_*.h\n\nto make reiserfs match the regular Linux indentation style.  As Jeff\nMahoney \u003cjeffm@suse.com\u003e writes:\n\n The ReiserFS code is a mix of a number of different coding styles, sometimes\n different even from line-to-line. Since the code has been relatively stable\n for quite some time and there are few outstanding patches to be applied, it\n is time to reformat the code to conform to the Linux style standard outlined\n in Documentation/CodingStyle.\n\n This patch contains the result of running scripts/Lindent against\n fs/reiserfs/*.c and include/linux/reiserfs_*.h. There are places where the\n code can be made to look better, but I\u0027d rather keep those patches separate\n so that there isn\u0027t a subtle by-hand hand accident in the middle of a huge\n patch. To be clear: This patch is reformatting *only*.\n\n A number of patches may follow that continue to make the code more consistent\n with the Linux coding style.\n\n Hans wasn\u0027t particularly enthusiastic about these patches, but said he\n wouldn\u0027t really oppose them either.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
