)]}'
{
  "log": [
    {
      "commit": "4843456c5c341eb57f80f9224362a22665d14107",
      "tree": "5656b405a8b1d2596e8eb748b953ee677a261e3c",
      "parents": [
        "2b1caf6ed7b888c95a1909d343799672731651a5",
        "f00c9e44ad1a9660fe8cd3ca15b6cd9497172eab"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 21 07:33:37 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 21 07:33:37 2011 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:\n  quota: Fix deadlock during path resolution\n"
    },
    {
      "commit": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\n"
    },
    {
      "commit": "566538a6cf5bec260324dc37b6820dacd8631452",
      "tree": "5f8e0a5821626ce340ed614498a1b8945716848b",
      "parents": [
        "e0e3d32bb40d28cf57a6a24e1e1d87ef03b913bd"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Wed Jan 12 17:00:27 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:15 2011 -0800"
      },
      "message": "reiserfs: make sure va_end() is always called after va_start().\n\nA call to va_start() must always be followed by a call to va_end() in the\nsame function.  In fs/reiserfs/prints.c::print_block() this is not always\nthe case.  If \u0027bh\u0027 is NULL we\u0027ll return without calling va_end().\n\nOne could add a call to va_end() before the \u0027return\u0027 statement, but it\u0027s\nnicer to just move the call to va_start() after the test for \u0027bh\u0027 being\nNULL.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nAcked-by: Edward Shishkin \u003cedward.shishkin@gmail.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": "f00c9e44ad1a9660fe8cd3ca15b6cd9497172eab",
      "tree": "cbb47ae0d8aba9d8b3c44714b000156715cdf969",
      "parents": [
        "4162cf64973df51fc885825bc9ca4d055891c49f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Sep 15 17:38:58 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jan 12 19:14:55 2011 +0100"
      },
      "message": "quota: Fix deadlock during path resolution\n\nAs Al Viro pointed out path resolution during Q_QUOTAON calls to quotactl\nis prone to deadlocks. We hold s_umount semaphore for reading during the\npath resolution and resolution itself may need to acquire the semaphore\nfor writing when e. g. autofs mountpoint is passed.\n\nSolve the problem by performing the resolution before we get hold of the\nsuperblock (and thus s_umount semaphore). The whole thing is complicated\nby the fact that some filesystems (OCFS2) ignore the path argument. So to\ndistinguish between filesystem which want the path and which do not we\nintroduce new .quota_on_meta callback which does not get the path. OCFS2\nthen uses this callback instead of old .quota_on.\n\nCC: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCC: Christoph Hellwig \u003chch@lst.de\u003e\nCC: Ted Ts\u0027o \u003ctytso@mit.edu\u003e\nCC: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\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": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "238af8751f64a75f8b638193353b1c31ea32e738",
      "tree": "8b314e79791f07596640d45053f0486b45f737d9",
      "parents": [
        "0bae35e14b68f5e7075bc96e5ea608b42bdf8f59"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Dec 02 14:31:16 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 02 14:51:15 2010 -0800"
      },
      "message": "reiserfs: don\u0027t acquire lock recursively in reiserfs_acl_chmod\n\nreiserfs_acl_chmod() can be called by reiserfs_set_attr() and then take\nthe reiserfs lock a second time.  Thereafter it may call journal_begin()\nthat definitely requires the lock not to be nested in order to release\nit before taking the journal mutex because the reiserfs lock depends on\nthe journal mutex already.\n\nSo, aviod nesting the lock in reiserfs_acl_chmod().\n\nReported-by: Pawel Zawora \u003cpzawora@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Pawel Zawora \u003cpzawora@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.32.x+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "da905873effecd1c0166e578bc4b5006f041b18b",
      "tree": "ba6e699a028ce1e0625a01a3e6f82d83dad04aca",
      "parents": [
        "d1d73578e053b981c3611e5a211534290d24a5eb"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Nov 24 12:57:15 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 25 06:50:48 2010 +0900"
      },
      "message": "reiserfs: fix inode mutex - reiserfs lock misordering\n\nreiserfs_unpack() locks the inode mutex with reiserfs_mutex_lock_safe()\nto protect against reiserfs lock dependency.  However this protection\nrequires to have the reiserfs lock to be locked.\n\nThis is the case if reiserfs_unpack() is called by reiserfs_ioctl but\nnot from reiserfs_quota_on() when it tries to unpack tails of quota\nfiles.\n\nFix the ordering of the two locks in reiserfs_unpack() to fix this\nissue.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nReported-by: Markus Gapp \u003cmarkus.gapp@gmx.net\u003e\nReported-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.36.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "451a3c24b0135bce54542009b5fde43846c7cf67",
      "tree": "f0fbbcc155aef2a1ffcb8aa593fe7a966d0e6900",
      "parents": [
        "55f6561c6941713ab5ae9180525b026dd40b7d14"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Nov 17 16:26:55 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 17 08:59:32 2010 -0800"
      },
      "message": "BKL: remove extraneous #include \u003csmp_lock.h\u003e\n\nThe big kernel lock has been removed from all these files at some point,\nleaving only the #include.\n\nRemove this too as a cleanup.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d4d77629953eabd3c14f6fa5746f6b28babfc55f",
      "tree": "38cce0d4764ecb34a9f7f49332959780e28bb786",
      "parents": [
        "75f1dc0d076d1c1168f2115f1941ea627d38bd5a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "message": "block: clean up blkdev_get() wrappers and their users\n\nAfter recent blkdev_get() modifications, open_by_devnum() and\nopen_bdev_exclusive() are simple wrappers around blkdev_get().\nReplace them with blkdev_get_by_dev() and blkdev_get_by_path().\n\nblkdev_get_by_dev() is identical to open_by_devnum().\nblkdev_get_by_path() is slightly different in that it doesn\u0027t\nautomatically add %FMODE_EXCL to @mode.\n\nAll users are converted.  Most conversions are mechanical and don\u0027t\nintroduce any behavior difference.  There are several exceptions.\n\n* btrfs now sets FMODE_EXCL in btrfs_device-\u003emode, so there\u0027s no\n  reason to OR it explicitly on blkdev_put().\n\n* gfs2, nilfs2 and the generic mount_bdev() now set FMODE_EXCL in\n  sb-\u003es_mode.\n\n* With the above changes, sb-\u003es_mode now always should contain\n  FMODE_EXCL.  WARN_ON_ONCE() added to kill_block_super() to detect\n  errors.\n\nThe new blkdev_get_*() functions are with proper docbook comments.\nWhile at it, add function description to blkdev_get() too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Joern Engel \u003cjoern@lazybastard.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: xfs-masters@oss.sgi.com\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e525fd89d380c4a94c0d63913a1dd1a593ed25e7",
      "tree": "d226ef40d3f99e42fcf272ad432585cbd641ebec",
      "parents": [
        "e09b457bdb7e8d23fc54dcef0930ac697d8de895"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: make blkdev_get/put() handle exclusive access\n\nOver time, block layer has accumulated a set of APIs dealing with bdev\nopen, close, claim and release.\n\n* blkdev_get/put() are the primary open and close functions.\n\n* bd_claim/release() deal with exclusive open.\n\n* open/close_bdev_exclusive() are combination of open and claim and\n  the other way around, respectively.\n\n* bd_link/unlink_disk_holder() to create and remove holder/slave\n  symlinks.\n\n* open_by_devnum() wraps bdget() + blkdev_get().\n\nThe interface is a bit confusing and the decoupling of open and claim\nmakes it impossible to properly guarantee exclusive access as\nin-kernel open + claim sequence can disturb the existing exclusive\nopen even before the block layer knows the current open if for another\nexclusive access.  Reorganize the interface such that,\n\n* blkdev_get() is extended to include exclusive access management.\n  @holder argument is added and, if is @FMODE_EXCL specified, it will\n  gain exclusive access atomically w.r.t. other exclusive accesses.\n\n* blkdev_put() is similarly extended.  It now takes @mode argument and\n  if @FMODE_EXCL is set, it releases an exclusive access.  Also, when\n  the last exclusive claim is released, the holder/slave symlinks are\n  removed automatically.\n\n* bd_claim/release() and close_bdev_exclusive() are no longer\n  necessary and either made static or removed.\n\n* bd_link_disk_holder() remains the same but bd_unlink_disk_holder()\n  is no longer necessary and removed.\n\n* open_bdev_exclusive() becomes a simple wrapper around lookup_bdev()\n  and blkdev_get().  It also has an unexpected extra bdev_read_only()\n  test which probably should be moved into blkdev_get().\n\n* open_by_devnum() is modified to take @holder argument and pass it to\n  blkdev_get().\n\nMost of bdev open/close operations are unified into blkdev_get/put()\nand most exclusive accesses are tested atomically at the open time (as\nit should).  This cleans up code and removes some, both valid and\ninvalid, but unnecessary all the same, corner cases.\n\nopen_bdev_exclusive() and open_by_devnum() can use further cleanup -\nrename to blkdev_get_by_path() and blkdev_get_by_devt() and drop\nspecial features.  Well, let\u0027s leave them for another day.\n\nMost conversions are straight-forward.  drbd conversion is a bit more\ninvolved as there was some reordering, but the logic should stay the\nsame.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: dm-devel@redhat.com\nCc: drbd-dev@lists.linbit.com\nCc: Leo Chen \u003cleochen@broadcom.com\u003e\nCc: Scott Branden \u003csbranden@broadcom.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "152a08366671080f27b32e0c411ad620c5f88b57",
      "tree": "d13d16028f74839c678bce355ba8aac75d939fa8",
      "parents": [
        "c96e41e92b4aaf11e1f9775ecf0d1c8cbff829ed"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 00:46:55 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:13 2010 -0400"
      },
      "message": "new helper: mount_bdev()\n\n... and switch of the obvious get_sb_bdev() users to -\u003emount()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "1b430beee5e388605dfb092b214ef0320f752cf6",
      "tree": "c1b1ece282aab771fd1386a3fe0c6e82cb5c5bfe",
      "parents": [
        "d19d5476f4b9f91d2de92b91588bb118beba6c0d"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Oct 26 14:21:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "writeback: remove nonblocking/encountered_congestion references\n\nThis removes more dead code that was somehow missed by commit 0d99519efef\n(writeback: remove unused nonblocking and congestion checks).  There are\nno behavior change except for the removal of two entries from one of the\next4 tracing interface.\n\nThe nonblocking checks in -\u003ewritepages are no longer used because the\nflusher now prefer to block on get_request_wait() than to skip inodes on\nIO congestion.  The latter will lead to more seeky IO.\n\nThe nonblocking checks in -\u003ewritepage are no longer used because it\u0027s\nredundant with the WB_SYNC_NONE check.\n\nWe no long set -\u003enonblocking in VM page out and page migration, because\na) it\u0027s effectively redundant with WB_SYNC_NONE in current code\nb) it\u0027s old semantic of \"Don\u0027t get stuck on request queues\" is mis-behavior:\n   that would skip some dirty inodes on congestion and page out others, which\n   is unfair in terms of LRU age.\n\nInspired by Christoph Hellwig. Thanks!\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Steve French \u003csfrench@samba.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "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": "229aebb873e29726b91e076161649cf45154b0bf",
      "tree": "acc02a3702215bce8d914f4c8cc3d7a1382b1c67",
      "parents": [
        "8de547e1824437f3c6af180d3ed2162fa4b3f389",
        "50a23e6eec6f20d55a3a920e47adb455bff6046e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 13:41:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 13:41:39 2010 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)\n  Update broken web addresses in arch directory.\n  Update broken web addresses in the kernel.\n  Revert \"drivers/usb: Remove unnecessary return\u0027s from void functions\" for musb gadget\n  Revert \"Fix typo: configuation \u003d\u003e configuration\" partially\n  ida: document IDA_BITMAP_LONGS calculation\n  ext2: fix a typo on comment in ext2/inode.c\n  drivers/scsi: Remove unnecessary casts of private_data\n  drivers/s390: Remove unnecessary casts of private_data\n  net/sunrpc/rpc_pipe.c: Remove unnecessary casts of private_data\n  drivers/infiniband: Remove unnecessary casts of private_data\n  drivers/gpu/drm: Remove unnecessary casts of private_data\n  kernel/pm_qos_params.c: Remove unnecessary casts of private_data\n  fs/ecryptfs: Remove unnecessary casts of private_data\n  fs/seq_file.c: Remove unnecessary casts of private_data\n  arm: uengine.c: remove C99 comments\n  arm: scoop.c: remove C99 comments\n  Fix typo configue \u003d\u003e configure in comments\n  Fix typo: configuation \u003d\u003e configuration\n  Fix typo interrest[ing|ed] \u003d\u003e interest[ing|ed]\n  Fix various typos of valid in comments\n  ...\n\nFix up trivial conflicts in:\n\tdrivers/char/ipmi/ipmi_si_intf.c\n\tdrivers/usb/gadget/rndis.c\n\tnet/irda/irnet/irnet_ppp.c\n"
    },
    {
      "commit": "fa251f89903d73989e2f63e13d0eaed1e07ce0da",
      "tree": "3f7fe779941e3b6d67754dd7c44a32f48ea47c74",
      "parents": [
        "dd3932eddf428571762596e17b65f5dc92ca361b",
        "cd07202cc8262e1669edff0d97715f3dd9260917"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "message": "Merge branch \u0027v2.6.36-rc8\u0027 into for-2.6.37/barrier\n\nConflicts:\n\tblock/blk-core.c\n\tdrivers/block/loop.c\n\tmm/swapfile.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "631dd1a885b6d7e9f6f51b4e5b311c2bb04c323c",
      "tree": "c431fa3479c1d35842fb5635ed7ccd487d063a62",
      "parents": [
        "d7eccbbae84b2ee7dbb756e60287c4b47071444e"
      ],
      "author": {
        "name": "Justin P. Mattock",
        "email": "justinmattock@gmail.com",
        "time": "Mon Oct 18 11:03:14 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Oct 18 11:03:14 2010 +0200"
      },
      "message": "Update broken web addresses in the kernel.\n\nThe patch below updates broken web addresses in the kernel\n\nSigned-off-by: Justin P. Mattock \u003cjustinmattock@gmail.com\u003e\nCc: Maciej W. Rozycki \u003cmacro@linux-mips.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Finn Thain \u003cfthain@telegraphics.com.au\u003e\nCc: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nCc: Matt Turner \u003cmattst88@gmail.com\u003e\nCc: Dimitry Torokhov \u003cdmitry.torokhov@gmail.com\u003e\nCc: Mike Frysinger \u003cvapier.adi@gmail.com\u003e\nAcked-by: Ben Pfaff \u003cblp@cs.stanford.edu\u003e\nAcked-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nReviewed-by: Finn Thain \u003cfthain@telegraphics.com.au\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "9d8117e72bf453dd9d85e0cd322ce4a0f8bccbc0",
      "tree": "b04c93fa9d41db9802c576f8dfaf74edb42ebc60",
      "parents": [
        "3f259d092c7a2fdf217823e8f1838530adb0cdb0"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Sep 30 15:15:38 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 01 10:50:59 2010 -0700"
      },
      "message": "reiserfs: fix unwanted reiserfs lock recursion\n\nPrevent from recursively locking the reiserfs lock in reiserfs_unpack()\nbecause we may call journal_begin() that requires the lock to be taken\nonly once, otherwise it won\u0027t be able to release the lock while taking\nother mutexes, ending up in inverted dependencies between the journal\nmutex and the reiserfs lock for example.\n\nThis fixes:\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 ]\n  2.6.35.4.4a #3\n  -------------------------------------------------------\n  lilo/1620 is trying to acquire lock:\n   (\u0026journal-\u003ej_mutex){+.+...}, at: [\u003cd0325bff\u003e] do_journal_begin_r+0x7f/0x340 [reiserfs]\n\n  but task is already holding lock:\n   (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cd032a278\u003e] reiserfs_write_lock+0x28/0x40 [reiserfs]\n\n  which lock already depends on the new lock.\n\n  the existing dependency chain (in reverse order) is:\n\n  -\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n         [\u003cc10562b7\u003e] lock_acquire+0x67/0x80\n         [\u003cc12facad\u003e] __mutex_lock_common+0x4d/0x410\n         [\u003cc12fb0c8\u003e] mutex_lock_nested+0x18/0x20\n         [\u003cd032a278\u003e] reiserfs_write_lock+0x28/0x40 [reiserfs]\n         [\u003cd0325c06\u003e] do_journal_begin_r+0x86/0x340 [reiserfs]\n         [\u003cd0325f77\u003e] journal_begin+0x77/0x140 [reiserfs]\n         [\u003cd0315be4\u003e] reiserfs_remount+0x224/0x530 [reiserfs]\n         [\u003cc10b6a20\u003e] do_remount_sb+0x60/0x110\n         [\u003cc10cee25\u003e] do_mount+0x625/0x790\n         [\u003cc10cf014\u003e] sys_mount+0x84/0xb0\n         [\u003cc12fca3d\u003e] syscall_call+0x7/0xb\n\n  -\u003e #0 (\u0026journal-\u003ej_mutex){+.+...}:\n         [\u003cc10560f6\u003e] __lock_acquire+0x1026/0x1180\n         [\u003cc10562b7\u003e] lock_acquire+0x67/0x80\n         [\u003cc12facad\u003e] __mutex_lock_common+0x4d/0x410\n         [\u003cc12fb0c8\u003e] mutex_lock_nested+0x18/0x20\n         [\u003cd0325bff\u003e] do_journal_begin_r+0x7f/0x340 [reiserfs]\n         [\u003cd0325f77\u003e] journal_begin+0x77/0x140 [reiserfs]\n         [\u003cd0326271\u003e] reiserfs_persistent_transaction+0x41/0x90 [reiserfs]\n         [\u003cd030d06c\u003e] reiserfs_get_block+0x22c/0x1530 [reiserfs]\n         [\u003cc10db9db\u003e] __block_prepare_write+0x1bb/0x3a0\n         [\u003cc10dbbe6\u003e] block_prepare_write+0x26/0x40\n         [\u003cd030b738\u003e] reiserfs_prepare_write+0x88/0x170 [reiserfs]\n         [\u003cd03294d6\u003e] reiserfs_unpack+0xe6/0x120 [reiserfs]\n         [\u003cd0329782\u003e] reiserfs_ioctl+0x272/0x320 [reiserfs]\n         [\u003cc10c3188\u003e] vfs_ioctl+0x28/0xa0\n         [\u003cc10c3bbd\u003e] do_vfs_ioctl+0x32d/0x5c0\n         [\u003cc10c3eb3\u003e] sys_ioctl+0x63/0x70\n         [\u003cc12fca3d\u003e] syscall_call+0x7/0xb\n\n  other info that might help us debug this:\n\n  2 locks held by lilo/1620:\n   #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#8){+.+.+.}, at: [\u003cd032945a\u003e] reiserfs_unpack+0x6a/0x120 [reiserfs]\n   #1:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cd032a278\u003e] reiserfs_write_lock+0x28/0x40 [reiserfs]\n\n  stack backtrace:\n  Pid: 1620, comm: lilo Not tainted 2.6.35.4.4a #3\n  Call Trace:\n   [\u003cc10560f6\u003e] __lock_acquire+0x1026/0x1180\n   [\u003cc10562b7\u003e] lock_acquire+0x67/0x80\n   [\u003cc12facad\u003e] __mutex_lock_common+0x4d/0x410\n   [\u003cc12fb0c8\u003e] mutex_lock_nested+0x18/0x20\n   [\u003cd0325bff\u003e] do_journal_begin_r+0x7f/0x340 [reiserfs]\n   [\u003cd0325f77\u003e] journal_begin+0x77/0x140 [reiserfs]\n   [\u003cd0326271\u003e] reiserfs_persistent_transaction+0x41/0x90 [reiserfs]\n   [\u003cd030d06c\u003e] reiserfs_get_block+0x22c/0x1530 [reiserfs]\n   [\u003cc10db9db\u003e] __block_prepare_write+0x1bb/0x3a0\n   [\u003cc10dbbe6\u003e] block_prepare_write+0x26/0x40\n   [\u003cd030b738\u003e] reiserfs_prepare_write+0x88/0x170 [reiserfs]\n   [\u003cd03294d6\u003e] reiserfs_unpack+0xe6/0x120 [reiserfs]\n   [\u003cd0329782\u003e] reiserfs_ioctl+0x272/0x320 [reiserfs]\n   [\u003cc10c3188\u003e] vfs_ioctl+0x28/0xa0\n   [\u003cc10c3bbd\u003e] do_vfs_ioctl+0x32d/0x5c0\n   [\u003cc10c3eb3\u003e] sys_ioctl+0x63/0x70\n   [\u003cc12fca3d\u003e] syscall_call+0x7/0xb\n\nReported-by: Jarek Poplawski \u003cjarkao2@gmail.com\u003e\nTested-by: Jarek Poplawski \u003cjarkao2@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: All since 2.6.32 \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": "3f259d092c7a2fdf217823e8f1838530adb0cdb0",
      "tree": "3cb2d34157e14b209f47e458be919144780974a0",
      "parents": [
        "f556cb078a3a11f6bcb203040fe014caaa6710c4"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Sep 30 15:15:37 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 01 10:50:59 2010 -0700"
      },
      "message": "reiserfs: fix dependency inversion between inode and reiserfs mutexes\n\nThe reiserfs mutex already depends on the inode mutex, so we can\u0027t lock\nthe inode mutex in reiserfs_unpack() without using the safe locking API,\nbecause reiserfs_unpack() is always called with the reiserfs mutex locked.\n\nThis fixes:\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 ]\n  2.6.35c #13\n  -------------------------------------------------------\n  lilo/1606 is trying to acquire lock:\n   (\u0026sb-\u003es_type-\u003ei_mutex_key#8){+.+.+.}, at: [\u003cd0329450\u003e] reiserfs_unpack+0x60/0x110 [reiserfs]\n\n  but task is already holding lock:\n   (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cd032a268\u003e] reiserfs_write_lock+0x28/0x40 [reiserfs]\n\n  which lock already depends on the new lock.\n\n  the existing dependency chain (in reverse order) is:\n\n  -\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n         [\u003cc1056347\u003e] lock_acquire+0x67/0x80\n         [\u003cc12f083d\u003e] __mutex_lock_common+0x4d/0x410\n         [\u003cc12f0c58\u003e] mutex_lock_nested+0x18/0x20\n         [\u003cd032a268\u003e] reiserfs_write_lock+0x28/0x40 [reiserfs]\n         [\u003cd0329e9a\u003e] reiserfs_lookup_privroot+0x2a/0x90 [reiserfs]\n         [\u003cd0316b81\u003e] reiserfs_fill_super+0x941/0xe60 [reiserfs]\n         [\u003cc10b7d17\u003e] get_sb_bdev+0x117/0x170\n         [\u003cd0313e21\u003e] get_super_block+0x21/0x30 [reiserfs]\n         [\u003cc10b74ba\u003e] vfs_kern_mount+0x6a/0x1b0\n         [\u003cc10b7659\u003e] do_kern_mount+0x39/0xe0\n         [\u003cc10cebe0\u003e] do_mount+0x340/0x790\n         [\u003cc10cf0b4\u003e] sys_mount+0x84/0xb0\n         [\u003cc12f25cd\u003e] syscall_call+0x7/0xb\n\n  -\u003e #0 (\u0026sb-\u003es_type-\u003ei_mutex_key#8){+.+.+.}:\n         [\u003cc1056186\u003e] __lock_acquire+0x1026/0x1180\n         [\u003cc1056347\u003e] lock_acquire+0x67/0x80\n         [\u003cc12f083d\u003e] __mutex_lock_common+0x4d/0x410\n         [\u003cc12f0c58\u003e] mutex_lock_nested+0x18/0x20\n         [\u003cd0329450\u003e] reiserfs_unpack+0x60/0x110 [reiserfs]\n         [\u003cd0329772\u003e] reiserfs_ioctl+0x272/0x320 [reiserfs]\n         [\u003cc10c3228\u003e] vfs_ioctl+0x28/0xa0\n         [\u003cc10c3c5d\u003e] do_vfs_ioctl+0x32d/0x5c0\n         [\u003cc10c3f53\u003e] sys_ioctl+0x63/0x70\n         [\u003cc12f25cd\u003e] syscall_call+0x7/0xb\n\n  other info that might help us debug this:\n\n  1 lock held by lilo/1606:\n   #0:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cd032a268\u003e] reiserfs_write_lock+0x28/0x40 [reiserfs]\n\n  stack backtrace:\n  Pid: 1606, comm: lilo Not tainted 2.6.35c #13\n  Call Trace:\n   [\u003cc1056186\u003e] __lock_acquire+0x1026/0x1180\n   [\u003cc1056347\u003e] lock_acquire+0x67/0x80\n   [\u003cc12f083d\u003e] __mutex_lock_common+0x4d/0x410\n   [\u003cc12f0c58\u003e] mutex_lock_nested+0x18/0x20\n   [\u003cd0329450\u003e] reiserfs_unpack+0x60/0x110 [reiserfs]\n   [\u003cd0329772\u003e] reiserfs_ioctl+0x272/0x320 [reiserfs]\n   [\u003cc10c3228\u003e] vfs_ioctl+0x28/0xa0\n   [\u003cc10c3c5d\u003e] do_vfs_ioctl+0x32d/0x5c0\n   [\u003cc10c3f53\u003e] sys_ioctl+0x63/0x70\n   [\u003cc12f25cd\u003e] syscall_call+0x7/0xb\n\nReported-by: Jarek Poplawski \u003cjarkao2@gmail.com\u003e\nTested-by: Jarek Poplawski \u003cjarkao2@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.32 and later]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd3932eddf428571762596e17b65f5dc92ca361b",
      "tree": "57cec5ae2f862037f78b7e993323d77955bb6463",
      "parents": [
        "8786fb70ccb36c7cff64680bb80c46d3a09d44db"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Sep 16 20:51:46 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 20:52:58 2010 +0200"
      },
      "message": "block: remove BLKDEV_IFL_WAIT\n\nAll the blkdev_issue_* helpers can only sanely be used for synchronous\ncaller.  To issue cache flushes or barriers asynchronously the caller needs\nto set up a bio by itself with a completion callback to move the asynchronous\nstate machine ahead.  So drop the BLKDEV_IFL_WAIT flag that is always\nspecified when calling blkdev_issue_* and also remove the now unused flags\nargument to blkdev_issue_flush and blkdev_issue_zeroout.  For\nblkdev_issue_discard we need to keep it for the secure discard flag, which\ngains a more descriptive name and loses the bitops vs flag confusion.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7cd33ad23ec41d685902159be8b2c6552fab8bd0",
      "tree": "c22c6f5601b7fbcf7cc28813f087189e955cd2ef",
      "parents": [
        "f1e4d518c3beddf67f7722f3548eda0ec7006204"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Aug 18 05:29:14 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:39 2010 +0200"
      },
      "message": "reiserfs: replace barriers with explicit flush / FUA usage\n\nSwitch to the WRITE_FLUSH_FUA flag for log writes and remove the EOPNOTSUPP\ndetection for barriers.  Note that reiserfs had a fairly different code\npath for barriers before as it wa the only filesystem actually making use\nof them.  The new code always uses the old non-barrier codepath and just\nsets the WRITE_FLUSH_FUA explicitly for the journal commits.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9cb569d601e0b93e01c20a22872270ec663b75f6",
      "tree": "80b2568fae48018806e82f8884062dae8a5494ae",
      "parents": [
        "87e99511ea54510ffb60b98001d108794d5037f8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Aug 11 17:06:24 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 18 01:09:01 2010 -0400"
      },
      "message": "remove SWRITE* I/O types\n\nThese flags aren\u0027t real I/O types, but tell ll_rw_block to always\nlock the buffer instead of giving up on a failed trylock.\n\nInstead add a new write_dirty_buffer helper that implements this semantic\nand use it from the existing SWRITE* callers.  Note that the ll_rw_block\ncode had a bug where it didn\u0027t promote WRITE_SYNC_PLUG properly, which\nthis patch fixes.\n\nIn the ufs code clean up the helper that used to call ll_rw_block\nto mirror sync_dirty_buffer, which is the function it implements for\ncompound buffers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f4ae2faa40199b97b12f508234640bc565d166f8",
      "tree": "a4441d53e663fe028693bd140c0c1aae26091626",
      "parents": [
        "da5cabf80e2433131bf0ed8993abc0f7ea618c73"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Wed Aug 11 14:07:01 2010 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 18 00:58:57 2010 -0400"
      },
      "message": "fix reiserfs_evict_inode end_writeback second call\n\nreiserfs_evict_inode calls end_writeback two times hitting\nkernel BUG at fs/inode.c:298 becase inode-\u003ei_state is I_CLEAR already.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b3397ad544172fb34ddcff5b04704b6c80838289",
      "tree": "8214d82e32f433be9229aec88206b37c991ef420",
      "parents": [
        "628a464e5bffd0e9aedaee2a85296be17aa19d90"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Tue Aug 10 18:02:48 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:12 2010 -0700"
      },
      "message": "reiserfs: remove unused local `wait\u0027\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "845a2cc0507055278e0fa722ed0f8c791b7401dd",
      "tree": "73902e3bd0fbb4dffd3676070b4b0a296f4238e4",
      "parents": [
        "bd55597520a2eaa0d71dd7683513a14bfd1bdf5c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 11:37:37 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:23 2010 -0400"
      },
      "message": "convert reiserfs to -\u003eevict_inode()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "db78b877f7744bec4a9d9f9e7d10da3931d7cd39",
      "tree": "fd9ee2fbe0998218b6d90322f85b285887e6fe9d",
      "parents": [
        "1025774ce411f2bd4b059ad7b53f0003569b74fa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:03 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:38 2010 -0400"
      },
      "message": "always call inode_change_ok early in -\u003esetattr\n\nMake sure we call inode_change_ok before doing any changes in -\u003esetattr,\nand make sure to call it even if our fs wants to ignore normal UNIX\npermissions, but use the ATTR_FORCE to skip those.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1025774ce411f2bd4b059ad7b53f0003569b74fa",
      "tree": "2be221c205cb5579652a6063e8ee27d1c72d1bbd",
      "parents": [
        "eef2380c187890816b73b1a4cb89a09203759469"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:02 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:37 2010 -0400"
      },
      "message": "remove inode_setattr\n\nReplace inode_setattr with opencoded variants of it in all callers.  This\nmoves the remaining call to vmtruncate into the filesystem methods where it\ncan be replaced with the proper truncate sequence.\n\nIn a few cases it was obvious that we would never end up calling vmtruncate\nso it was left out in the opencoded variant:\n\n spufs: explicitly checks for ATTR_SIZE earlier\n btrfs,hugetlbfs,logfs,dlmfs: explicitly clears ATTR_SIZE earlier\n ufs: contains an opencoded simple_seattr + truncate that sets the filesize just above\n\nIn addition to that ncpfs called inode_setattr with handcrafted iattrs,\nwhich allowed to trim down the opencoded variant.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6e1db88d536adcbbfe562b2d4b7d6425784fff12",
      "tree": "8cfcb5a6190722db6249b2e4978f39247975abcf",
      "parents": [
        "f4e420dc423148fba637af1ab618fa8896dfb2d6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:57 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:32 2010 -0400"
      },
      "message": "introduce __block_write_begin\n\nSplit up the block_write_begin implementation - __block_write_begin is a new\ntrivial wrapper for block_prepare_write that always takes an already\nallocated page and can be either called from block_write_begin or filesystem\ncode that already has a page allocated.  Remove the handling of already\nallocated pages from block_write_begin after switching all callers that\ndo it to __block_write_begin.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "eafdc7d190a944c755a9fe68573c193e6e0217e7",
      "tree": "915c3cc8004706fabf88eae1ab123a3fa0147516",
      "parents": [
        "256249584bda1a9357e2d29987a37f5b2df035f6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:53 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:29 2010 -0400"
      },
      "message": "sort out blockdev_direct_IO variants\n\nMove the call to vmtruncate to get rid of accessive blocks to the callers\nin prepearation of the new truncate calling sequence.  This was only done\nfor DIO_LOCKING filesystems, so the __blockdev_direct_IO_newtrunc variant\nwas not needed anyway.  Get rid of blockdev_direct_IO_no_locking and\nits _newtrunc variant while at it as just opencoding the two additional\nparamters is shorted than the name suffix.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0e4f6a791b1e8cfde75a74e2f885642ecb3fe9d8",
      "tree": "3cb4d6590be13c4890a7d6d40b90a2517ccbe87a",
      "parents": [
        "918377b696bff7384923a1ef4bf0af7626cb9b68"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 04 12:18:57 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:27 2010 -0400"
      },
      "message": "Fix reiserfs_file_release()\n\na) count file openers correctly; i_count use was completely wrong\nb) use new mutex for exclusion between final close/open/truncate,\nto protect tailpacking logics.  i_mutex use was wrong and resulted\nin deadlocks.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f1bbbb6912662b9f6070c5bfc4ca9eb1f06a9d5b",
      "tree": "c2c130a74be25b0b2dff992e1a195e2728bdaadd",
      "parents": [
        "fd0961ff67727482bb20ca7e8ea97b83e9de2ddb",
        "7e27d6e778cd87b6f2415515d7127eba53fe5d02"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Jun 16 18:08:13 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Jun 16 18:08:13 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n"
    },
    {
      "commit": "421f91d21ad6f799dc7b489bb33cc560ccc56f98",
      "tree": "aaf9f6385233fdf9277e634603156c89ede7f770",
      "parents": [
        "65155b3708137fabee865dc4da822763c0c41208"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Fri Jun 11 12:17:00 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Jun 16 18:05:05 2010 +0200"
      },
      "message": "fix typos concerning \"initiali[zs]e\"\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "d28619f1563140526e2f84eae436f39206f40a69",
      "tree": "d93284016a0983c8f27b745a3c50738617e50995",
      "parents": [
        "021fad8b706849c091f6e682bc5df3ce4f9ab4d7",
        "f32764bd2bbb6ea003c158b1d276b4dc9f900348"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:11:11 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:11:11 2010 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:\n  quota: Convert quota statistics to generic percpu_counter\n  ext3 uses rb_node \u003d NULL; to zero rb_root.\n  quota: Fixup dquot_transfer\n  reiserfs: Fix resuming of quotas on remount read-write\n  pohmelfs: Remove dead quota code\n  ufs: Remove dead quota code\n  udf: Remove dead quota code\n  quota: rename default quotactl methods to dquot_\n  quota: explicitly set -\u003edq_op and -\u003es_qcop\n  quota: drop remount argument to -\u003equota_on and -\u003equota_off\n  quota: move unmount handling into the filesystem\n  quota: kill the vfs_dq_off and vfs_dq_quota_on_remount wrappers\n  quota: move remount handling into the filesystem\n  ocfs2: Fix use after free on remount read-only\n\nFix up conflicts in fs/ext4/super.c and fs/ufs/file.c\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ca572727dbb945e443564029a495157fd2e72995",
      "tree": "10486033a428e9389e32cbc78c0da34c644640a1",
      "parents": [
        "b4d878e23c7f574490ee4d6fd59ebd6819781dd1"
      ],
      "author": {
        "name": "jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Wed May 26 14:44:53 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:56 2010 -0700"
      },
      "message": "fs/: do not fallback to default_llseek() when readdir() uses BKL\n\nDo not use the fallback default_llseek() if the readdir operation of the\nfilesystem still uses the big kernel lock.\n\nSince llseek() modifies\nfile-\u003ef_pos of the directory directly it may need locking to not confuse\nreaddir which usually uses file-\u003ef_pos directly as well\n\nSince the special characteristics of the BKL (unlocked on schedule) are\nnot necessary in this case, the inode mutex can be used for locking as\nprovided by generic_file_llseek().  This is only possible since all\nfilesystems, except reiserfs, either use a directory as a flat file or\nwith disk address offsets.  Reiserfs on the other hand uses a 32bit hash\noff the filename as the offset so generic_file_llseek() can get used as\nwell since the hash is always smaller than sb-\u003es_maxbytes (\u003d (512 \u003c\u003c 32) -\nblocksize).\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Anders Larsen \u003cal@alarsen.net\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f4b113ae6f772b3c25fdcd73d15e9d8b17c89dcc",
      "tree": "af609ef4706152f839d6319dc81b9c90ce82991b",
      "parents": [
        "36a32ae0007c6c1e4e5d1a4363290792c2938f0a"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:12:51 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 27 17:39:36 2010 +0200"
      },
      "message": "reiserfs: Fix resuming of quotas on remount read-write\n\nWhen quota was suspended on remount-ro, finish_unfinished() will try to turn\nit on again (which fails) and also turns the quotas off on exit. Fix the\nfunction to check whether quotas are already on at function entry and do\nnot turn them off in that case.\n\nCC: reiserfs-devel@vger.kernel.org\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "287a80958cf63fc5c68d5bf6e89a3669dd66234a",
      "tree": "8e6883881709ffbbe3b1d6cb7a5b4dcef3428380",
      "parents": [
        "123e9caf1e85008ab7eb5f6cd58c44f9a5d73b2b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 19 07:16:45 2010 -0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon May 24 14:10:17 2010 +0200"
      },
      "message": "quota: rename default quotactl methods to dquot_\n\nFollow the dquot_* style used elsewhere in dquot.c.\n\n[Jan Kara: Fixed up missing conversion of ext2]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "307ae18a56e5b706056a2050d52e8cc01b5171c0",
      "tree": "c4efc57bb8f0fd1d2aa9e416d81c0c7ba87aaf22",
      "parents": [
        "e0ccfd959cd8907bcb66cc2042e0f4fd7fcbff2b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 19 07:16:43 2010 -0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon May 24 14:09:12 2010 +0200"
      },
      "message": "quota: drop remount argument to -\u003equota_on and -\u003equota_off\n\nRemount handling has fully moved into the filesystem, so all this is\nsuperflous now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "e0ccfd959cd8907bcb66cc2042e0f4fd7fcbff2b",
      "tree": "a62a84034243e75e07bb063526e10ea0b837062f",
      "parents": [
        "0f0dd62fddcbd0f6830ed8ef3d3426ccc46b9250"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 19 07:16:42 2010 -0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon May 24 14:09:12 2010 +0200"
      },
      "message": "quota: move unmount handling into the filesystem\n\nCurrently the VFS calls into the quotactl interface for unmounting\nfilesystems.  This means filesystems with their own quota handling\ncan\u0027t easily distinguish between user-space originating quotaoff\nand an unount.  Instead move the responsibily of the unmount handling\ninto the filesystem to be consistent with all other dquot handling.\n\nNote that we do call dquot_disable a lot later now, e.g. after\na sync_filesystem.  But this is fine as the quota code does all its\nwrites via blockdev\u0027s mapping and that is synced even later.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "0f0dd62fddcbd0f6830ed8ef3d3426ccc46b9250",
      "tree": "295ac31b109f78873cb191867603943d8562ead0",
      "parents": [
        "c79d967de3741ceb60c5bbbf1b6f97eab9a89838"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 19 07:16:41 2010 -0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon May 24 14:06:40 2010 +0200"
      },
      "message": "quota: kill the vfs_dq_off and vfs_dq_quota_on_remount wrappers\n\nInstead of having wrappers in the VFS namespace export the dquot_suspend\nand dquot_resume helpers directly.  Also rename vfs_quota_disable to\ndquot_disable while we\u0027re at it.\n\n[Jan Kara: Moved dquot_suspend to quotaops.h and made it inline]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "c79d967de3741ceb60c5bbbf1b6f97eab9a89838",
      "tree": "5494e7b504cffb0ddc6942d1542c2b4a472207ed",
      "parents": [
        "eea7feb072f5914ecafa95b3d83be0c229244d90"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 19 07:16:40 2010 -0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon May 24 14:06:39 2010 +0200"
      },
      "message": "quota: move remount handling into the filesystem\n\nCurrently do_remount_sb calls into the dquot code to tell it about going\nfrom rw to ro and ro to rw.  Move this code into the filesystem to\nnot depend on the dquot code in the VFS - note ocfs2 already ignores\nthese calls and handles remount by itself.  This gets rid of overloading\nthe quotactl calls and allows to unify the VFS and XFS codepaths in\nthat area later.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "e8bebe2f71d26871b0970ae1d9cf0ed3cdd9569d",
      "tree": "c0d82cbd11daaf579b74121c6641d58947091094",
      "parents": [
        "6109e2ce2600e2db26cd0424bb9c6ed019723288",
        "82f3952c02add60b15eea9151d4d99b6b82066c6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (69 commits)\n  fix handling of offsets in cris eeprom.c, get rid of fake on-stack files\n  get rid of home-grown mutex in cris eeprom.c\n  switch ecryptfs_write() to struct inode *, kill on-stack fake files\n  switch ecryptfs_get_locked_page() to struct inode *\n  simplify access to ecryptfs inodes in -\u003ereadpage() and friends\n  AFS: Don\u0027t put struct file on the stack\n  Ban ecryptfs over ecryptfs\n  logfs: replace inode uid,gid,mode initialization with helper function\n  ufs: replace inode uid,gid,mode initialization with helper function\n  udf: replace inode uid,gid,mode init with helper\n  ubifs: replace inode uid,gid,mode initialization with helper function\n  sysv: replace inode uid,gid,mode initialization with helper function\n  reiserfs: replace inode uid,gid,mode initialization with helper function\n  ramfs: replace inode uid,gid,mode initialization with helper function\n  omfs: replace inode uid,gid,mode initialization with helper function\n  bfs: replace inode uid,gid,mode initialization with helper function\n  ocfs2: replace inode uid,gid,mode initialization with helper function\n  nilfs2: replace inode uid,gid,mode initialization with helper function\n  minix: replace inode uid,gid,mode init with helper\n  ext4: replace inode uid,gid,mode init with helper\n  ...\n\nTrivial conflict in fs/fs-writeback.c (mark bitfields unsigned)\n"
    },
    {
      "commit": "04b7ed0d33eee161b223d64f16e1f521a84ace76",
      "tree": "a01bef0d4329c017f370e1e4ed09f9d965587a5a",
      "parents": [
        "454abafe9d8beb3fe7da06131b3d81d6d352a959"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Thu Mar 04 17:32:19 2010 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:26 2010 -0400"
      },
      "message": "reiserfs: replace inode uid,gid,mode initialization with helper function\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\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": "ee9a3607fb03e804ddf624544105f4e34260c380",
      "tree": "ce41b6e0fa10982a306f6c142a92dbf3c9961284",
      "parents": [
        "b492e95be0ae672922f4734acf3f5d35c30be948",
        "d515e86e639890b33a09390d062b0831664f04a2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:27:26 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:27:26 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.35\n\nConflicts:\n\tfs/ext3/fsync.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "12755627bdcddcdb30a1bfb9a09395a52b1d6838",
      "tree": "b2d69696975d5457648020324f683a45302fbf3c",
      "parents": [
        "fcbc59f96e38a0999e827be9d04d46b62b53b20a"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Thu Apr 08 22:04:20 2010 +0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:45 2010 +0200"
      },
      "message": "quota: unify quota init condition in setattr\n\nQuota must being initialized if size or uid/git changes requested.\nBut initialization performed in two different places:\nin case of i_size file system is responsible for dquot init\n, but in case of uid/gid init will be called internally in\ndquot_transfer().\nThis ambiguity makes code harder to understand.\nLet\u0027s move this logic to one common helper function.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "7407cf355fdf5500430be966dbbde84a27293bad",
      "tree": "922861288ff38558ed721a79653f52b17b13bb95",
      "parents": [
        "6a47dc1418682c83d603b491df1d048f73aa973e",
        "79dba2eaa771c3173957eccfd288e0e0d12e4d3f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 29 09:36:24 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 29 09:36:24 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.35\n\nConflicts:\n\tfs/block_dev.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fbd9b09a177a481eda256447c881f014f29034fe",
      "tree": "ef7e213045382f82a1e3e3cf134d196a1045dd7a",
      "parents": [
        "6b4517a7913a09d3259bb1d21c9cb300f12294bd"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Apr 28 17:55:06 2010 +0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 28 19:47:36 2010 +0200"
      },
      "message": "blkdev: generalize flags for blkdev_issue_fn functions\n\nThe patch just convert all blkdev_issue_xxx function to common\nset of flags. Wait/allocation semantics preserved.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\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": "336f5899d287f06d8329e208fc14ce50f7ec9698",
      "tree": "9b762d450d5eb248a6ff8317badb7e223d93ed58",
      "parents": [
        "a4ab2773205e8b94c18625455f85e3b6bb9d7ad6",
        "db217dece3003df0841bacf9556b5c06aa097dae"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 05 11:37:28 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 05 11:37:28 2010 +0900"
      },
      "message": "Merge branch \u0027master\u0027 into export-slabh\n"
    },
    {
      "commit": "b7b7fa43103a9fb30dbcc60cbd5161fdfc25f904",
      "tree": "8d384f813009478e24ff41505dd2d96ef60c8e52",
      "parents": [
        "2eaa9cfdf33b8d7fb7aff27792192e0019ae8fc6"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@jeffreymahoney.com",
        "time": "Mon Mar 29 15:12:39 2010 -0400"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Mar 30 22:13:09 2010 +0200"
      },
      "message": "reiserfs: Fix locking BUG during mount failure\n\nCommit 8ebc423238341b52912c7295b045a32477b33f09 (reiserfs: kill-the-BKL)\nintroduced a bug in the mount failure case.\n\nThe error label releases the lock before calling journal_release_error,\nbut it requires that the lock be held. do_journal_release unlocks and\nretakes it. When it releases it without it held, we trigger a BUG().\n\nThe error_alloc label skips the unlock since the lock isn\u0027t held yet\nbut none of the other conditions that are clean up exist yet either.\n\nThis patch returns immediately after the kzalloc failure and moves\nthe reiserfs_write_unlock after the journal_release_error call.\n\nThis was reported in https://bugzilla.novell.com/show_bug.cgi?id\u003d591807\n\nReported-by:  Thomas Siedentopf \u003cthomas.siedentopf@novell.com\u003e\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Thomas Siedentopf \u003cthomas.siedentopf@novell.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: 2.6.33.x \u003cstable@kernel.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\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": "3f8b5ee33293d43ca360771b535dfae8c57259dc",
      "tree": "f533b80b6ad553882e81799b17e0cf94e41bf70e",
      "parents": [
        "6cb4aff0a77cc0e6bae9475d62205319e3ebbf3f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Tue Mar 23 13:35:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 24 16:31:21 2010 -0700"
      },
      "message": "reiserfs: properly honor read-only devices\n\nThe reiserfs journal behaves inconsistently when determining whether to\nallow a mount of a read-only device.\n\nThis is due to the use of the continue_replay variable to short circuit\nthe journal scanning.  If it\u0027s set, it\u0027s assumed that there are\ntransactions to replay, but there may not be.  If it\u0027s unset, it\u0027s assumed\nthat there aren\u0027t any, and that may not be the case either.\n\nI\u0027ve observed two failure cases:\n1) Where a clean file system on a read-only device refuses to mount\n2) Where a clean file system on a read-only device passes the\n   optimization and then tries writing the journal header to update\n   the latest mount id.\n\nThe former is easily observable by using a freshly created file system on\na read-only loopback device.\n\nThis patch moves the check into journal_read_transaction, where it can\nbail out before it\u0027s about to replay a transaction.  That way it can go\nthrough and skip transactions where appropriate, yet still refuse to mount\na file system with outstanding transactions.\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": "6cb4aff0a77cc0e6bae9475d62205319e3ebbf3f",
      "tree": "9049d01ae8eee4ce948d5a63005c1baf0ceac5a4",
      "parents": [
        "298359c5bf06c04258d7cf552426e198c47e83c1"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Tue Mar 23 13:35:38 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 24 16:31:21 2010 -0700"
      },
      "message": "reiserfs: fix oops while creating privroot with selinux enabled\n\nCommit 57fe60df (\"reiserfs: add atomic addition of selinux attributes\nduring inode creation\") contains a bug that will cause it to oops when\nmounting a file system that didn\u0027t previously contain extended attributes\non a system using security.* xattrs.\n\nThe issue is that while creating the privroot during mount\nreiserfs_security_init calls reiserfs_xattr_jcreate_nblocks which\ndereferences the xattr root.  The xattr root doesn\u0027t exist, so we get an\noops.\n\nAddresses http://bugzilla.kernel.org/show_bug.cgi?id\u003d15309\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": "318ae2edc3b29216abd8a2510f3f80b764f06858",
      "tree": "ce595adde342f57f379d277b25e4dd206988a052",
      "parents": [
        "25cf84cf377c0aae5dbcf937ea89bc7893db5176",
        "3e58974027b04e84f68b964ef368a6cd758e2f84"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "message": "Merge branch \u0027for-next\u0027 into for-linus\n\nConflicts:\n\tDocumentation/filesystems/proc.txt\n\tarch/arm/mach-u300/include/mach/debug-macro.S\n\tdrivers/net/qlge/qlge_ethtool.c\n\tdrivers/net/qlge/qlge_main.c\n\tdrivers/net/typhoon.c\n"
    },
    {
      "commit": "e213e26ab3988c516c06eba4dcd030ac052f6dc9",
      "tree": "6e26fbdbb842b387697d73daf6e70cf718269a77",
      "parents": [
        "c812a51d11bbe983f4c24e32b59b265705ddd3c2",
        "efd8f0e6f6c1faa041f228d7113bd3a9db802d49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6: (33 commits)\n  quota: stop using QUOTA_OK / NO_QUOTA\n  dquot: cleanup dquot initialize routine\n  dquot: move dquot initialization responsibility into the filesystem\n  dquot: cleanup dquot drop routine\n  dquot: move dquot drop responsibility into the filesystem\n  dquot: cleanup dquot transfer routine\n  dquot: move dquot transfer responsibility into the filesystem\n  dquot: cleanup inode allocation / freeing routines\n  dquot: cleanup space allocation / freeing routines\n  ext3: add writepage sanity checks\n  ext3: Truncate allocated blocks if direct IO write fails to update i_size\n  quota: Properly invalidate caches even for filesystems with blocksize \u003c pagesize\n  quota: generalize quota transfer interface\n  quota: sb_quota state flags cleanup\n  jbd: Delay discarding buffers in journal_unmap_buffer\n  ext3: quota_write cross block boundary behaviour\n  quota: drop permission checks from xfs_fs_set_xstate/xfs_fs_set_xquota\n  quota: split out compat_sys_quotactl support from quota.c\n  quota: split out netlink notification support from quota.c\n  quota: remove invalid optimization from quota_sync_all\n  ...\n\nFixed trivial conflicts in fs/namei.c and fs/ufs/inode.c\n"
    },
    {
      "commit": "a9185b41a4f84971b930c519f0c63bd450c4810d",
      "tree": "268cf4e206cca12fb9e1dd68984e7c190e465b46",
      "parents": [
        "26821ed40b4230259e770c9911180f38fcaa6f59"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:37 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:52 2010 -0500"
      },
      "message": "pass writeback_control to -\u003ewrite_inode\n\nThis gives the filesystem more information about the writeback that\nis happening.  Trond requested this for the NFS unstable write handling,\nand other filesystems might benefit from this too by beeing able to\ndistinguish between the different callers in more detail.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "871a293155a24554e153538d36e3a80fa169aefb",
      "tree": "7e38f5a2f9e87f63cbc4bc1077a4bb49dde441b0",
      "parents": [
        "907f4554e2521cb28b0009d17167760650a9561c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:07 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:30 2010 +0100"
      },
      "message": "dquot: cleanup dquot initialize routine\n\nGet rid of the initialize dquot operation - it is now always called from\nthe filesystem and if a filesystem really needs it\u0027s own (which none\ncurrently does) it can just call into it\u0027s own routine directly.\n\nRename the now static low-level dquot_initialize helper to __dquot_initialize\nand vfs_dq_init to dquot_initialize to have a consistent namespace.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\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": "9f7547580263d4a55efe06ce5cfd567f568be6e8",
      "tree": "6f926a075eeed815d0a6680c06f235da0e5ea6d9",
      "parents": [
        "257ba15cedf1288f0c96118d7e63947231d27278"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:05 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:30 2010 +0100"
      },
      "message": "dquot: cleanup dquot drop routine\n\nGet rid of the drop dquot operation - it is now always called from\nthe filesystem and if a filesystem really needs it\u0027s own (which none\ncurrently does) it can just call into it\u0027s own routine directly.\n\nRename the now static low-level dquot_drop helper to __dquot_drop\nand vfs_dq_drop to dquot_drop to have a consistent namespace.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "257ba15cedf1288f0c96118d7e63947231d27278",
      "tree": "7a977a0ea08a324ce74aedce19406cb0688f15e2",
      "parents": [
        "b43fa8284d7790d9cca32c9c55e24f29be2fa33b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:04 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:29 2010 +0100"
      },
      "message": "dquot: move dquot drop responsibility into the filesystem\n\nCurrently clear_inode calls vfs_dq_drop directly.  This means\nwe tie the quota code into the VFS.  Get rid of that and make the\nfilesystem responsible for the drop inside the -\u003eclear_inode\nsuperblock operation.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "b43fa8284d7790d9cca32c9c55e24f29be2fa33b",
      "tree": "acb7f205fe2a1ae324e0e11c50f43baaa6b8dfab",
      "parents": [
        "759bfee658beab14af7b357156461d0eb852be2c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:03 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:29 2010 +0100"
      },
      "message": "dquot: cleanup dquot transfer routine\n\nGet rid of the transfer dquot operation - it is now always called from\nthe filesystem and if a filesystem really needs it\u0027s own (which none\ncurrently does) it can just call into it\u0027s own routine directly.\n\nRename the now static low-level dquot_transfer helper to __dquot_transfer\nand vfs_dq_transfer to dquot_transfer to have a consistent namespace,\nand make the new dquot_transfer return a normal negative errno value\nwhich all callers expect.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "63936ddaa16b9486e2d426ed7b09f559a5c60f87",
      "tree": "4cb1c4581799e10c26dd71d1a7d420de3c2cfd05",
      "parents": [
        "5dd4056db84387975140ff2568eaa0406f07985e"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:01 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:28 2010 +0100"
      },
      "message": "dquot: cleanup inode allocation / freeing routines\n\nGet rid of the alloc_inode and free_inode dquot operations - they are\nalways called from the filesystem and if a filesystem really needs\ntheir own (which none currently does) it can just call into it\u0027s\nown routine directly.\n\nAlso get rid of the vfs_dq_alloc/vfs_dq_free wrappers and always\ncall the lowlevel dquot_alloc_inode / dqout_free_inode routines\ndirectly, which now lose the number argument which is always 1.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "5dd4056db84387975140ff2568eaa0406f07985e",
      "tree": "03c26d7f6e3367b167bfeeb1a01654c6619573f4",
      "parents": [
        "49792c806d0bfd53afc789dcdf50dc9bed2c5b83"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:00 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:28 2010 +0100"
      },
      "message": "dquot: cleanup space allocation / freeing routines\n\nGet rid of the alloc_space, free_space, reserve_space, claim_space and\nrelease_rsv dquot operations - they are always called from the filesystem\nand if a filesystem really needs their own (which none currently does)\nit can just call into it\u0027s own routine directly.\n\nMove shared logic into the common __dquot_alloc_space,\ndquot_claim_space_nodirty and __dquot_free_space low-level methods,\nand rationalize the wrappers around it to move as much as possible\ncode into the common block for CONFIG_QUOTA vs not.  Also rename\nall these helpers to be named dquot_* instead of vfs_dq_*.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "175359f89df39f4faed663c8cfd6ee0222d2fa1e",
      "tree": "8a5da216333192e7c2d605e1644f6bead22cdd06",
      "parents": [
        "bbec919150037b8a2e58e32d3ba642ba3b6582a5"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Feb 11 13:13:10 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Feb 14 19:07:56 2010 +0100"
      },
      "message": "reiserfs: Fix softlockup while waiting on an inode\n\nWhen we wait for an inode through reiserfs_iget(), we hold\nthe reiserfs lock. And waiting for an inode may imply waiting\nfor its writeback. But the inode writeback path may also require\nthe reiserfs lock, which leads to a deadlock.\n\nWe just need to release the reiserfs lock from reiserfs_iget()\nto fix this.\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3ad2f3fbb961429d2aa627465ae4829758bc7e07",
      "tree": "f365c513e8f5b477a61336a600ff54f32b7ad6e1",
      "parents": [
        "1537a3638cbf741d3826c1002026cce487a6bee0"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Wed Feb 03 08:01:28 2010 +0800"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Feb 09 11:13:56 2010 +0100"
      },
      "message": "tree-wide: Assorted spelling fixes\n\nIn particular, several occurances of funny versions of \u0027success\u0027,\n\u0027unknown\u0027, \u0027therefore\u0027, \u0027acknowledge\u0027, \u0027argument\u0027, \u0027achieve\u0027, \u0027address\u0027,\n\u0027beginning\u0027, \u0027desirable\u0027, \u0027separate\u0027 and \u0027necessary\u0027 are fixed.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nCc: Junio C Hamano \u003cgitster@pobox.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "bbec919150037b8a2e58e32d3ba642ba3b6582a5",
      "tree": "52536f66f9cab019f2af86151bcbe863fd5d5691",
      "parents": [
        "92dcffb916d309aa01778bf8963a6932e4014d07"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 28 13:43:50 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 28 13:43:50 2010 +0100"
      },
      "message": "reiserfs: Fix vmalloc call under reiserfs lock\n\nVmalloc is called to allocate journal-\u003ej_cnode_free_list but\nwe hold the reiserfs lock at this time, which raises a\n{RECLAIM_FS-ON-W} -\u003e {IN-RECLAIM_FS-W} lock inversion.\n\nJust drop the reiserfs lock at this time, as it\u0027s not even\nneeded but kept for paranoid reasons.\n\nThis fixes:\n\n[ INFO: inconsistent lock state ]\n2.6.33-rc5 #1\n---------------------------------\ninconsistent {RECLAIM_FS-ON-W} -\u003e {IN-RECLAIM_FS-W} usage.\nkswapd0/313 [HC0[0]:SC0[0]:HE1:SE1] takes:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.?.}, at: [\u003cc11118c8\u003e]\nreiserfs_write_lock_once+0x28/0x50\n{RECLAIM_FS-ON-W} state was registered at:\n  [\u003cc104ee32\u003e] mark_held_locks+0x62/0x90\n  [\u003cc104eefa\u003e] lockdep_trace_alloc+0x9a/0xc0\n  [\u003cc108f7b6\u003e] kmem_cache_alloc+0x26/0xf0\n  [\u003cc108621c\u003e] __get_vm_area_node+0x6c/0xf0\n  [\u003cc108690e\u003e] __vmalloc_node+0x7e/0xa0\n  [\u003cc1086aab\u003e] vmalloc+0x2b/0x30\n  [\u003cc110e1fb\u003e] journal_init+0x6cb/0xa10\n  [\u003cc10f90a2\u003e] reiserfs_fill_super+0x342/0xb80\n  [\u003cc1095665\u003e] get_sb_bdev+0x145/0x180\n  [\u003cc10f68e1\u003e] get_super_block+0x21/0x30\n  [\u003cc1094520\u003e] vfs_kern_mount+0x40/0xd0\n  [\u003cc1094609\u003e] do_kern_mount+0x39/0xd0\n  [\u003cc10aaa97\u003e] do_mount+0x2c7/0x6d0\n  [\u003cc10aaf06\u003e] sys_mount+0x66/0xa0\n  [\u003cc16198a7\u003e] mount_block_root+0xc4/0x245\n  [\u003cc1619a81\u003e] mount_root+0x59/0x5f\n  [\u003cc1619b98\u003e] prepare_namespace+0x111/0x14b\n  [\u003cc1619269\u003e] kernel_init+0xcf/0xdb\n  [\u003cc100303a\u003e] kernel_thread_helper+0x6/0x1c\nirq event stamp: 63236801\nhardirqs last  enabled at (63236801): [\u003cc134e7fa\u003e]\n__mutex_unlock_slowpath+0x9a/0x120\nhardirqs last disabled at (63236800): [\u003cc134e799\u003e]\n__mutex_unlock_slowpath+0x39/0x120\nsoftirqs last  enabled at (63218800): [\u003cc102f451\u003e] __do_softirq+0xc1/0x110\nsoftirqs last disabled at (63218789): [\u003cc102f4ed\u003e] do_softirq+0x4d/0x60\n\nother info that might help us debug this:\n2 locks held by kswapd0/313:\n #0:  (shrinker_rwsem){++++..}, at: [\u003cc1074bb4\u003e] shrink_slab+0x24/0x170\n #1:  (\u0026type-\u003es_umount_key#19){++++..}, at: [\u003cc10a2edd\u003e]\nshrink_dcache_memory+0xfd/0x1a0\n\nstack backtrace:\nPid: 313, comm: kswapd0 Not tainted 2.6.33-rc5 #1\nCall Trace:\n [\u003cc134db2c\u003e] ? printk+0x18/0x1c\n [\u003cc104e7ef\u003e] print_usage_bug+0x15f/0x1a0\n [\u003cc104ebcf\u003e] mark_lock+0x39f/0x5a0\n [\u003cc104d66b\u003e] ? trace_hardirqs_off+0xb/0x10\n [\u003cc1052c50\u003e] ? check_usage_forwards+0x0/0xf0\n [\u003cc1050c24\u003e] __lock_acquire+0x214/0xa70\n [\u003cc10438c5\u003e] ? sched_clock_cpu+0x95/0x110\n [\u003cc10514fa\u003e] lock_acquire+0x7a/0xa0\n [\u003cc11118c8\u003e] ? reiserfs_write_lock_once+0x28/0x50\n [\u003cc134f03f\u003e] mutex_lock_nested+0x5f/0x2b0\n [\u003cc11118c8\u003e] ? reiserfs_write_lock_once+0x28/0x50\n [\u003cc11118c8\u003e] ? reiserfs_write_lock_once+0x28/0x50\n [\u003cc11118c8\u003e] reiserfs_write_lock_once+0x28/0x50\n [\u003cc10f05b0\u003e] reiserfs_delete_inode+0x50/0x140\n [\u003cc10a653f\u003e] ? generic_delete_inode+0x5f/0x150\n [\u003cc10f0560\u003e] ? reiserfs_delete_inode+0x0/0x140\n [\u003cc10a657c\u003e] generic_delete_inode+0x9c/0x150\n [\u003cc10a666d\u003e] generic_drop_inode+0x3d/0x60\n [\u003cc10a5597\u003e] iput+0x47/0x50\n [\u003cc10a2a4f\u003e] dentry_iput+0x6f/0xf0\n [\u003cc10a2af4\u003e] d_kill+0x24/0x50\n [\u003cc10a2d3d\u003e] __shrink_dcache_sb+0x21d/0x2b0\n [\u003cc10a2f0f\u003e] shrink_dcache_memory+0x12f/0x1a0\n [\u003cc1074c9e\u003e] shrink_slab+0x10e/0x170\n [\u003cc1075177\u003e] kswapd+0x477/0x6a0\n [\u003cc1072d10\u003e] ? isolate_pages_global+0x0/0x1b0\n [\u003cc103e160\u003e] ? autoremove_wake_function+0x0/0x40\n [\u003cc1074d00\u003e] ? kswapd+0x0/0x6a0\n [\u003cc103de6c\u003e] kthread+0x6c/0x80\n [\u003cc103de00\u003e] ? kthread+0x0/0x80\n [\u003cc100303a\u003e] kernel_thread_helper+0x6/0x1c\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christian Kujau \u003clists@nerdbynature.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\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": "e0baec1b63632f25ea8101b76edaca0accc061ec",
      "tree": "d4395fde34e5c1d714c14e17ffe38f280ebadb0f",
      "parents": [
        "6c28705418de012216161b14a2ff1dda3da3d786"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Wed Jan 06 23:09:50 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 07 14:03:18 2010 +0100"
      },
      "message": "reiserfs: Fix unreachable statement\n\nStanse found an unreachable statement in reiserfs_ioctl. There is a\nif followed by error assignment and `break\u0027 with no braces. Add the\nbraces so that we don\u0027t break every time, but only in error case,\nso that REISERFS_IOC_SETVERSION actually works when it returns no\nerror.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Reiserfs \u003creiserfs-devel@vger.kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "6c28705418de012216161b14a2ff1dda3da3d786",
      "tree": "f9765f8ef8dc55a61ba354fb2516a4d172ef4591",
      "parents": [
        "4f3be1b5a98587b86cae05aa5d129dd0b3fff466"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 07 12:57:47 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 07 13:46:48 2010 +0100"
      },
      "message": "reiserfs: Don\u0027t call reiserfs_get_acl() with the reiserfs lock\n\nreiserfs_get_acl is usually not called under the reiserfs lock,\nas it doesn\u0027t need it. But it happens when it is called by\nreiserfs_acl_chmod(), which creates a dependency inversion against\nthe private xattr inodes mutexes for the given inode.\n\nWe need to call it without the reiserfs lock, especially since\nit\u0027s unnecessary.\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": "108d3943c021f0b66e860ba98ded40b82b677bd7",
      "tree": "0567b063d5365e24bb418476310f412936e4dd8c",
      "parents": [
        "5fe1533fda8ae005541bd418a7a8bc4fa0cda522"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jan 05 00:15:38 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jan 05 08:00:29 2010 +0100"
      },
      "message": "reiserfs: Relax the lock before truncating pages\n\nWhile truncating a file, reiserfs_setattr() calls inode_setattr()\nthat will truncate the mapping for the given inode, but for that\nit needs the pages locks.\n\nIn order to release these, the owners need the reiserfs lock to\ncomplete their jobs. But they can\u0027t, as we don\u0027t release it before\ncalling inode_setattr().\n\nWe need to do that to fix the following softlockups:\n\nINFO: task flush-8:0:2149 blocked for more than 120 seconds.\n\"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\nflush-8:0     D f51af998     0  2149      2 0x00000000\n f51af9ac 00000092 00000002 f51af998 c2803304 00000000 c1894ad0 010f3000\n f51af9cc c1462604 c189ef80 f51af974 c1710304 f715b450 f715b5ec c2807c40\n 00000000 0005bb00 c2803320 c102c55b c1710304 c2807c50 c2803304 00000246\nCall Trace:\n [\u003cc1462604\u003e] ? schedule+0x434/0xb20\n [\u003cc102c55b\u003e] ? resched_task+0x4b/0x70\n [\u003cc106fa22\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc146414d\u003e] ? mutex_lock_nested+0x1fd/0x350\n [\u003cc14640b9\u003e] mutex_lock_nested+0x169/0x350\n [\u003cc1178cde\u003e] ? reiserfs_write_lock+0x2e/0x40\n [\u003cc1178cde\u003e] reiserfs_write_lock+0x2e/0x40\n [\u003cc11719a2\u003e] do_journal_end+0xc2/0xe70\n [\u003cc1172912\u003e] journal_end+0xb2/0x120\n [\u003cc11686b3\u003e] ? pathrelse+0x33/0xb0\n [\u003cc11729e4\u003e] reiserfs_end_persistent_transaction+0x64/0x70\n [\u003cc1153caa\u003e] reiserfs_get_block+0x12ba/0x15f0\n [\u003cc106fa22\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc1154b24\u003e] reiserfs_writepage+0xa74/0xe80\n [\u003cc1465a27\u003e] ? _raw_spin_unlock_irq+0x27/0x50\n [\u003cc11f3d25\u003e] ? radix_tree_gang_lookup_tag_slot+0x95/0xc0\n [\u003cc10b5377\u003e] ? find_get_pages_tag+0x127/0x1a0\n [\u003cc106fa22\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc106fcd4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10bc1e0\u003e] __writepage+0x10/0x40\n [\u003cc10bc9ab\u003e] write_cache_pages+0x16b/0x320\n [\u003cc10bc1d0\u003e] ? __writepage+0x0/0x40\n [\u003cc10bcb88\u003e] generic_writepages+0x28/0x40\n [\u003cc10bcbd5\u003e] do_writepages+0x35/0x40\n [\u003cc11059f7\u003e] writeback_single_inode+0xc7/0x330\n [\u003cc11067b2\u003e] writeback_inodes_wb+0x2c2/0x490\n [\u003cc1106a86\u003e] wb_writeback+0x106/0x1b0\n [\u003cc1106cf6\u003e] wb_do_writeback+0x106/0x1e0\n [\u003cc1106c18\u003e] ? wb_do_writeback+0x28/0x1e0\n [\u003cc1106e0a\u003e] bdi_writeback_task+0x3a/0xb0\n [\u003cc10cbb13\u003e] bdi_start_fn+0x63/0xc0\n [\u003cc10cbab0\u003e] ? bdi_start_fn+0x0/0xc0\n [\u003cc105d1f4\u003e] kthread+0x74/0x80\n [\u003cc105d180\u003e] ? kthread+0x0/0x80\n [\u003cc100327a\u003e] kernel_thread_helper+0x6/0x10\n3 locks held by flush-8:0/2149:\n #0:  (\u0026type-\u003es_umount_key#30){+++++.}, at: [\u003cc110676f\u003e] writeback_inodes_wb+0x27f/0x490\n #1:  (\u0026journal-\u003ej_mutex){+.+...}, at: [\u003cc117199a\u003e] do_journal_end+0xba/0xe70\n #2:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1178cde\u003e] reiserfs_write_lock+0x2e/0x40\nINFO: task fstest:3813 blocked for more than 120 seconds.\n\"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\nfstest        D 00000002     0  3813   3812 0x00000000\n f5103c94 00000082 f5103c40 00000002 f5ad5450 00000007 f5103c28 011f3000\n 00000006 f5ad5450 c10bb005 00000480 c1710304 f5ad5450 f5ad55ec c2907c40\n 00000001 f5ad5450 f5103c74 00000046 00000002 f5ad5450 00000007 f5103c6c\nCall Trace:\n [\u003cc10bb005\u003e] ? free_hot_cold_page+0x1d5/0x280\n [\u003cc1462d64\u003e] io_schedule+0x74/0xc0\n [\u003cc10b5a45\u003e] sync_page+0x35/0x60\n [\u003cc146325a\u003e] __wait_on_bit_lock+0x4a/0x90\n [\u003cc10b5a10\u003e] ? sync_page+0x0/0x60\n [\u003cc10b59e5\u003e] __lock_page+0x85/0x90\n [\u003cc105d660\u003e] ? wake_bit_function+0x0/0x60\n [\u003cc10bf654\u003e] truncate_inode_pages_range+0x1e4/0x2d0\n [\u003cc10bf75f\u003e] truncate_inode_pages+0x1f/0x30\n [\u003cc10bf7cf\u003e] truncate_pagecache+0x5f/0xa0\n [\u003cc10bf86a\u003e] vmtruncate+0x5a/0x70\n [\u003cc10fdb7d\u003e] inode_setattr+0x5d/0x190\n [\u003cc1150117\u003e] reiserfs_setattr+0x1f7/0x2f0\n [\u003cc1464569\u003e] ? down_write+0x49/0x70\n [\u003cc10fde01\u003e] notify_change+0x151/0x330\n [\u003cc10e6f3d\u003e] do_truncate+0x6d/0xa0\n [\u003cc10f4ce2\u003e] do_filp_open+0x9a2/0xcf0\n [\u003cc1465aec\u003e] ? _raw_spin_unlock+0x2c/0x50\n [\u003cc10fec50\u003e] ? alloc_fd+0xe0/0x100\n [\u003cc10e602d\u003e] do_sys_open+0x6d/0x130\n [\u003cc1002cfb\u003e] ? sysenter_exit+0xf/0x16\n [\u003cc10e615e\u003e] sys_open+0x2e/0x40\n [\u003cc1002ccc\u003e] sysenter_do_call+0x12/0x32\n3 locks held by fstest/3813:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#4){+.+.+.}, at: [\u003cc10e6f33\u003e] do_truncate+0x63/0xa0\n #1:  (\u0026sb-\u003es_type-\u003ei_alloc_sem_key#3){+.+.+.}, at: [\u003cc10fdf07\u003e] notify_change+0x257/0x330\n #2:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1178c8e\u003e] reiserfs_write_lock_once+0x2e/0x50\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": "5fe1533fda8ae005541bd418a7a8bc4fa0cda522",
      "tree": "411dd7c99f884e914a34ce91d8f282bbc70c63c8",
      "parents": [
        "f3e22f48f37c1e14441c9f72ca8e63b1d4516745"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Jan 04 22:04:01 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jan 05 07:59:38 2010 +0100"
      },
      "message": "reiserfs: Fix recursive lock on lchown\n\nOn chown, reiserfs will call reiserfs_setattr() to change the owner\nof the given inode, but it may also recursively call\nreiserfs_setattr() to propagate the owner change to the private xattr\nfiles for this inode.\n\nHence, the reiserfs lock may be acquired twice which is not wanted\nas reiserfs_setattr() calls journal_begin() that is going to try to\nrelax the lock in order to safely acquire the journal mutex.\n\nUsing reiserfs_write_lock_once() from reiserfs_setattr() solves\nthe problem.\n\nThis fixes the following warning, that precedes a lockdep report.\n\nWARNING: at fs/reiserfs/lock.c:95 reiserfs_lock_check_recursive+0x3f/0x50()\nHardware name: MS-7418\nUnwanted recursive reiserfs lock!\nPid: 4189, comm: fsstress Not tainted 2.6.33-rc2-tip-atom+ #195\nCall Trace:\n [\u003cc1178bff\u003e] ? reiserfs_lock_check_recursive+0x3f/0x50\n [\u003cc1178bff\u003e] ? reiserfs_lock_check_recursive+0x3f/0x50\n [\u003cc103f7ac\u003e] warn_slowpath_common+0x6c/0xc0\n [\u003cc1178bff\u003e] ? reiserfs_lock_check_recursive+0x3f/0x50\n [\u003cc103f84b\u003e] warn_slowpath_fmt+0x2b/0x30\n [\u003cc1178bff\u003e] reiserfs_lock_check_recursive+0x3f/0x50\n [\u003cc1172ae3\u003e] do_journal_begin_r+0x83/0x350\n [\u003cc1172f2d\u003e] journal_begin+0x7d/0x140\n [\u003cc106509a\u003e] ? in_group_p+0x2a/0x30\n [\u003cc10fda71\u003e] ? inode_change_ok+0x91/0x140\n [\u003cc115007d\u003e] reiserfs_setattr+0x15d/0x2e0\n [\u003cc10f9bf3\u003e] ? dput+0xe3/0x140\n [\u003cc1465adc\u003e] ? _raw_spin_unlock+0x2c/0x50\n [\u003cc117831d\u003e] chown_one_xattr+0xd/0x10\n [\u003cc11780a3\u003e] reiserfs_for_each_xattr+0x113/0x2c0\n [\u003cc1178310\u003e] ? chown_one_xattr+0x0/0x10\n [\u003cc14641e9\u003e] ? mutex_lock_nested+0x2a9/0x350\n [\u003cc117826f\u003e] reiserfs_chown_xattrs+0x1f/0x60\n [\u003cc106509a\u003e] ? in_group_p+0x2a/0x30\n [\u003cc10fda71\u003e] ? inode_change_ok+0x91/0x140\n [\u003cc1150046\u003e] reiserfs_setattr+0x126/0x2e0\n [\u003cc1177c20\u003e] ? reiserfs_getxattr+0x0/0x90\n [\u003cc11b0d57\u003e] ? cap_inode_need_killpriv+0x37/0x50\n [\u003cc10fde01\u003e] notify_change+0x151/0x330\n [\u003cc10e659f\u003e] chown_common+0x6f/0x90\n [\u003cc10e67bd\u003e] sys_lchown+0x6d/0x80\n [\u003cc1002ccc\u003e] sysenter_do_call+0x12/0x32\n---[ end trace 7c2b77224c1442fc ]---\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": "c674905ca74ad0ae5b048afb1ef68663a0d7e987",
      "tree": "3f269bdda58519c012cf0505e36cee158ec7064b",
      "parents": [
        "3f14fea6bbd3444dd46a2af3a2e219e792616645"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 07:12:03 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:57:32 2010 +0100"
      },
      "message": "reiserfs: Fix unwanted recursive reiserfs lock in reiserfs_unlink()\n\nreiserfs_unlink() may or may not be called under the reiserfs\nlock.\nBut it also takes the reiserfs lock and can then acquire it\nrecursively which leads to do_journal_begin_r() that fails to\nrelax the reiserfs lock before grabbing the journal mutex,\ncreating an unexpected lock inversion.\n\nWe need to ensure reiserfs_unlink() won\u0027t get the reiserfs lock\nrecursively using reiserfs_write_lock_once().\n\nThis fixes the following warning that precedes a lock inversion\nreport (reiserfs lock \u003c-\u003e journal mutex).\n\n------------[ cut here ]------------\nWARNING: at fs/reiserfs/lock.c:95 reiserfs_lock_check_recursive+0x3a/0x50()\nHardware name: MS-7418\nUnwanted recursive reiserfs lock!\nPid: 3208, comm: dbench Not tainted 2.6.32-atom #177\nCall Trace:\n [\u003cc114327a\u003e] ? reiserfs_lock_check_recursive+0x3a/0x50\n [\u003cc114327a\u003e] ? reiserfs_lock_check_recursive+0x3a/0x50\n [\u003cc10373a7\u003e] warn_slowpath_common+0x67/0xc0\n [\u003cc114327a\u003e] ? reiserfs_lock_check_recursive+0x3a/0x50\n [\u003cc1037446\u003e] warn_slowpath_fmt+0x26/0x30\n [\u003cc114327a\u003e] reiserfs_lock_check_recursive+0x3a/0x50\n [\u003cc113c213\u003e] do_journal_begin_r+0x83/0x360\n [\u003cc105eb16\u003e] ? __lock_acquire+0x1296/0x19e0\n [\u003cc1142a57\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc113c670\u003e] journal_begin+0x80/0x130\n [\u003cc1116d5d\u003e] reiserfs_unlink+0x7d/0x2d0\n [\u003cc1142a57\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc1142a57\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc1142a57\u003e] ? xattr_unlink+0x57/0xb0\n [\u003cc1142a64\u003e] xattr_unlink+0x64/0xb0\n [\u003cc1143169\u003e] delete_one_xattr+0x29/0x100\n [\u003cc11427ab\u003e] reiserfs_for_each_xattr+0x10b/0x290\n [\u003cc1143140\u003e] ? delete_one_xattr+0x0/0x100\n [\u003cc1401ca9\u003e] ? mutex_lock_nested+0x299/0x340\n [\u003cc11429aa\u003e] reiserfs_delete_xattrs+0x1a/0x60\n [\u003cc11432f9\u003e] ? reiserfs_write_lock_once+0x29/0x50\n [\u003cc111ea1f\u003e] reiserfs_delete_inode+0x9f/0x150\n [\u003cc11b0d0f\u003e] ? _atomic_dec_and_lock+0x4f/0x70\n [\u003cc111e980\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 [\u003cc10505c6\u003e] ? up_read+0x16/0x30\n [\u003cc1022ab7\u003e] ? do_page_fault+0x187/0x330\n [\u003cc1002fd8\u003e] ? restore_all_notrace+0x0/0x18\n [\u003cc1022930\u003e] ? do_page_fault+0x0/0x330\n [\u003cc105cbe4\u003e] ? trace_hardirqs_on_caller+0x124/0x170\n [\u003cc10c0a00\u003e] sys_unlink+0x10/0x20\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n---[ end trace 2e35d71a6cc69d0c ]---\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": "0523676d3f3aa7edeea63cc3a1bc4dc612380a26",
      "tree": "daf7226836c93f57e4a6eaccdfa6617dcae83df0",
      "parents": [
        "27026a05bb805866a3b9068dda8153b72cb942f4"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 05:56:08 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:56:54 2010 +0100"
      },
      "message": "reiserfs: Relax reiserfs lock while freeing the journal\n\nKeeping the reiserfs lock while freeing the journal on\numount path triggers a lock inversion between bdev-\u003ebd_mutex\nand the reiserfs lock.\n\nWe don\u0027t need the reiserfs lock at this stage. The filesystem\nis not usable anymore, and there are no more pending commits,\neverything got flushed (even this operation was done in parallel\nand didn\u0027t required the reiserfs lock from the current process).\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 #172\n-------------------------------------------------------\numount/3904 is trying to acquire lock:\n (\u0026bdev-\u003ebd_mutex){+.+.+.}, at: [\u003cc10de2c2\u003e] __blkdev_put+0x22/0x160\n\nbut task is already holding lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1143279\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 #3 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc140199b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc1143229\u003e] reiserfs_write_lock_once+0x29/0x50\n       [\u003cc111c485\u003e] reiserfs_get_block+0x85/0x1620\n       [\u003cc10e1040\u003e] do_mpage_readpage+0x1f0/0x6d0\n       [\u003cc10e1640\u003e] mpage_readpages+0xc0/0x100\n       [\u003cc1119b89\u003e] reiserfs_readpages+0x19/0x20\n       [\u003cc108f1ec\u003e] __do_page_cache_readahead+0x1bc/0x260\n       [\u003cc108f2b8\u003e] ra_submit+0x28/0x40\n       [\u003cc1087e3e\u003e] filemap_fault+0x40e/0x420\n       [\u003cc109b5fd\u003e] __do_fault+0x3d/0x430\n       [\u003cc109d47e\u003e] handle_mm_fault+0x12e/0x790\n       [\u003cc1022a65\u003e] do_page_fault+0x135/0x330\n       [\u003cc1403663\u003e] error_code+0x6b/0x70\n       [\u003cc10ef9ca\u003e] load_elf_binary+0x82a/0x1a10\n       [\u003cc10ba130\u003e] search_binary_handler+0x90/0x1d0\n       [\u003cc10bb70f\u003e] do_execve+0x1df/0x250\n       [\u003cc1001746\u003e] sys_execve+0x46/0x70\n       [\u003cc1002fa5\u003e] syscall_call+0x7/0xb\n\n-\u003e #2 (\u0026mm-\u003emmap_sem){++++++}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc109b1ab\u003e] might_fault+0x8b/0xb0\n       [\u003cc11b8f52\u003e] copy_to_user+0x32/0x70\n       [\u003cc10c3b94\u003e] filldir64+0xa4/0xf0\n       [\u003cc1109116\u003e] sysfs_readdir+0x116/0x210\n       [\u003cc10c3e1d\u003e] vfs_readdir+0x8d/0xb0\n       [\u003cc10c3ea9\u003e] sys_getdents64+0x69/0xb0\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #1 (sysfs_mutex){+.+.+.}:\n       [\u003cc105ea7f\u003e] __lock_acquire+0x11ff/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc140199b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc110951c\u003e] sysfs_addrm_start+0x2c/0xb0\n       [\u003cc1109aa0\u003e] create_dir+0x40/0x90\n       [\u003cc1109b1b\u003e] sysfs_create_dir+0x2b/0x50\n       [\u003cc11b2352\u003e] kobject_add_internal+0xc2/0x1b0\n       [\u003cc11b2531\u003e] kobject_add_varg+0x31/0x50\n       [\u003cc11b25ac\u003e] kobject_add+0x2c/0x60\n       [\u003cc1258294\u003e] device_add+0x94/0x560\n       [\u003cc11036ea\u003e] add_partition+0x18a/0x2a0\n       [\u003cc110418a\u003e] rescan_partitions+0x33a/0x450\n       [\u003cc10de5bf\u003e] __blkdev_get+0x12f/0x2d0\n       [\u003cc10de76a\u003e] blkdev_get+0xa/0x10\n       [\u003cc11034b8\u003e] register_disk+0x108/0x130\n       [\u003cc11a87a9\u003e] add_disk+0xd9/0x130\n       [\u003cc12998e5\u003e] sd_probe_async+0x105/0x1d0\n       [\u003cc10528af\u003e] async_thread+0xcf/0x230\n       [\u003cc104bfd4\u003e] kthread+0x74/0x80\n       [\u003cc1003aab\u003e] kernel_thread_helper+0x7/0x3c\n\n-\u003e #0 (\u0026bdev-\u003ebd_mutex){+.+.+.}:\n       [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n       [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n       [\u003cc140199b\u003e] mutex_lock_nested+0x5b/0x340\n       [\u003cc10de2c2\u003e] __blkdev_put+0x22/0x160\n       [\u003cc10de40a\u003e] blkdev_put+0xa/0x10\n       [\u003cc113ce22\u003e] free_journal_ram+0xd2/0x130\n       [\u003cc113ea18\u003e] do_journal_release+0x98/0x190\n       [\u003cc113eb2a\u003e] journal_release+0xa/0x10\n       [\u003cc1128eb6\u003e] reiserfs_put_super+0x36/0x130\n       [\u003cc10b776f\u003e] generic_shutdown_super+0x4f/0xe0\n       [\u003cc10b7825\u003e] kill_block_super+0x25/0x40\n       [\u003cc11255df\u003e] reiserfs_kill_sb+0x7f/0x90\n       [\u003cc10b7f4a\u003e] deactivate_super+0x7a/0x90\n       [\u003cc10cccd8\u003e] mntput_no_expire+0x98/0xd0\n       [\u003cc10ccfcc\u003e] sys_umount+0x4c/0x310\n       [\u003cc10cd2a9\u003e] sys_oldumount+0x19/0x20\n       [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\nother info that might help us debug this:\n\n2 locks held by umount/3904:\n #0:  (\u0026type-\u003es_umount_key#30){+++++.}, at: [\u003cc10b7f45\u003e] deactivate_super+0x75/0x90\n #1:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc1143279\u003e] reiserfs_write_lock+0x29/0x40\n\nstack backtrace:\nPid: 3904, comm: umount Not tainted 2.6.32-atom #172\nCall Trace:\n [\u003cc13ff903\u003e] ? printk+0x18/0x1a\n [\u003cc105d33a\u003e] print_circular_bug+0xca/0xd0\n [\u003cc105f176\u003e] __lock_acquire+0x18f6/0x19e0\n [\u003cc108b66f\u003e] ? free_pcppages_bulk+0x1f/0x250\n [\u003cc105f2c8\u003e] lock_acquire+0x68/0x90\n [\u003cc10de2c2\u003e] ? __blkdev_put+0x22/0x160\n [\u003cc10de2c2\u003e] ? __blkdev_put+0x22/0x160\n [\u003cc140199b\u003e] mutex_lock_nested+0x5b/0x340\n [\u003cc10de2c2\u003e] ? __blkdev_put+0x22/0x160\n [\u003cc105c932\u003e] ? mark_held_locks+0x62/0x80\n [\u003cc10afe12\u003e] ? kfree+0x92/0xd0\n [\u003cc10de2c2\u003e] __blkdev_put+0x22/0x160\n [\u003cc105cc3b\u003e] ? trace_hardirqs_on+0xb/0x10\n [\u003cc10de40a\u003e] blkdev_put+0xa/0x10\n [\u003cc113ce22\u003e] free_journal_ram+0xd2/0x130\n [\u003cc113ea18\u003e] do_journal_release+0x98/0x190\n [\u003cc113eb2a\u003e] journal_release+0xa/0x10\n [\u003cc1128eb6\u003e] reiserfs_put_super+0x36/0x130\n [\u003cc1050596\u003e] ? up_write+0x16/0x30\n [\u003cc10b776f\u003e] generic_shutdown_super+0x4f/0xe0\n [\u003cc10b7825\u003e] kill_block_super+0x25/0x40\n [\u003cc10f41e0\u003e] ? vfs_quota_off+0x0/0x20\n [\u003cc11255df\u003e] reiserfs_kill_sb+0x7f/0x90\n [\u003cc10b7f4a\u003e] deactivate_super+0x7a/0x90\n [\u003cc10cccd8\u003e] mntput_no_expire+0x98/0xd0\n [\u003cc10ccfcc\u003e] sys_umount+0x4c/0x310\n [\u003cc10cd2a9\u003e] sys_oldumount+0x19/0x20\n [\u003cc1002ec4\u003e] sysenter_do_call+0x12/0x32\n\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": "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": "c4a62ca362258d98f42efb282cfbf9b61caffdbe",
      "tree": "017484107efa26789ddd96579fcef09d874333c0",
      "parents": [
        "0719d3434747889b314a1e8add776418c4148bcf"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 30 03:20:19 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 02 01:54:37 2010 +0100"
      },
      "message": "reiserfs: Warn on lock relax if taken recursively\n\nWhen we relax the reiserfs lock to avoid creating unwanted\ndependencies against others locks while grabbing these,\nwe want to ensure it has not been taken recursively, otherwise\nthe lock won\u0027t be really relaxed. Only its depth will be decreased.\nThe unwanted dependency would then actually happen.\n\nTo prevent from that, add a reiserfs_lock_check_recursive() call\nin the places that need it.\n\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": "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": "98ea3f50bcc97689cc0e1fa3b6733f03aeb8fef4",
      "tree": "d909a47008ed466e5119f21f366934be5a6276b8",
      "parents": [
        "47376ceba54600cec4dd9e7c4fe8b98e4269633a"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Dec 29 21:51:15 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Dec 29 22:34:59 2009 +0100"
      },
      "message": "reiserfs: Fix remaining in-reclaim-fs \u003c-\u003e reclaim-fs-on locking inversion\n\nCommit 500f5a0bf5f0624dae34307010e240ec090e4cde\n(reiserfs: Fix possible recursive lock) fixed a vmalloc under reiserfs\nlock that triggered a lockdep warning because of a\nIN-FS-RECLAIM \u003c-\u003e RECLAIM-FS-ON locking dependency inversion.\n\nBut this patch has ommitted another vmalloc call in the same path\nthat allocates the journal. Relax the lock for this one too.\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\n"
    },
    {
      "commit": "ec8e2f7466ca370f5e09000ca40a71759afc9ac8",
      "tree": "41c33d2317d9ffb0cc60cdacebf246bc023f8677",
      "parents": [
        "2bf212b9e48e1c35eaf8f0cc1729d7c4a39b7b5a"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Dec 17 15:27:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 15:45:30 2009 -0800"
      },
      "message": "reiserfs: truncate blocks not used by a write\n\nIt can happen that write does not use all the blocks allocated in\nwrite_begin either because of some filesystem error (like ENOSPC) or\nbecause page with data to write has been removed from memory.  We truncate\nthese blocks so that we don\u0027t have dangling blocks beyond i_size.\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b6e3224fb20954f155e41ec5709b2ab70b50ae2d",
      "tree": "96302d1b564c879779b9cc5d7aae7c3c4471ed14",
      "parents": [
        "a2770d86b33024f71df269fde2de096df89d6a48"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 13:23:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 13:23:24 2009 -0800"
      },
      "message": "Revert \"task_struct: make journal_info conditional\"\n\nThis reverts commit e4c570c4cb7a95dbfafa3d016d2739bf3fdfe319, as\nrequested by Alexey:\n\n \"I think I gave a good enough arguments to not merge it.\n  To iterate:\n   * patch makes impossible to start using ext3 on EXT3_FS\u003dn kernels\n     without reboot.\n   * this is done only for one pointer on task_struct\"\n\n  None of config options which define task_struct are tristate directly\n  or effectively.\"\n\nRequested-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "bac5e54c29f352d962a2447d22735316b347b9f1",
      "tree": "7642993fa93164835ffaa2dacd341388193f1979",
      "parents": [
        "529e89430d6c0d64db8ac474cb95e68e2527c79a",
        "c05c4edd876b7ae92787d1295868afcb89b6a348"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:04:02 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:04:02 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (38 commits)\n  direct I/O fallback sync simplification\n  ocfs: stop using do_sync_mapping_range\n  cleanup blockdev_direct_IO locking\n  make generic_acl slightly more generic\n  sanitize xattr handler prototypes\n  libfs: move EXPORT_SYMBOL for d_alloc_name\n  vfs: force reval of target when following LAST_BIND symlinks (try #7)\n  ima: limit imbalance msg\n  Untangling ima mess, part 3: kill dead code in ima\n  Untangling ima mess, part 2: deal with counters\n  Untangling ima mess, part 1: alloc_file()\n  O_TRUNC open shouldn\u0027t fail after file truncation\n  ima: call ima_inode_free ima_inode_free\n  IMA: clean up the IMA counts updating code\n  ima: only insert at inode creation time\n  ima: valid return code from ima_inode_alloc\n  fs: move get_empty_filp() deffinition to internal.h\n  Sanitize exec_permission_lite()\n  Kill cached_lookup() and real_lookup()\n  Kill path_lookup_open()\n  ...\n\nTrivial conflicts in fs/direct-io.c\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": "e3c96f53ac132743fda1384910feb863a2eab916",
      "tree": "48b97fdf50897d5ee97409db86bd4e4d7220be03",
      "parents": [
        "904e812931f001b984912b2d2f653ea69520313c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Dec 15 16:46:54 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:06 2009 -0800"
      },
      "message": "reiserfs: don\u0027t compile procfs.o at all if no support\n\n* small define cleanup in header\n* fix #ifdeffery in procfs.c via Kconfig\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.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": "904e812931f001b984912b2d2f653ea69520313c",
      "tree": "c09ae6040d59111bb75594248bdb6b1246e828f3",
      "parents": [
        "f3e2a520f5fb1a1df033efd9c2e5eadb384aad9b"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Dec 15 16:46:52 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:06 2009 -0800"
      },
      "message": "reiserfs: remove /proc/fs/reiserfs/version\n\n/proc/fs/reiserfs/version is on the way of removing -\u003eread_proc interface.\n It\u0027s empty however, so simply remove it instead of doing dummy\nconversion.  It\u0027s hard to see what information userspace can extract from\nempty file.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.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"
    }
  ],
  "next": "e4c570c4cb7a95dbfafa3d016d2739bf3fdfe319"
}
