)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "e4c570c4cb7a95dbfafa3d016d2739bf3fdfe319",
      "tree": "ce2be0a79fa2e8d8271426f0fc27b25e83c050b4",
      "parents": [
        "8420e7efa1cf155765c6d77c91d3e3547c7aa557"
      ],
      "author": {
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com",
        "time": "Mon Dec 14 18:00:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "task_struct: make journal_info conditional\n\njournal_info in task_struct is used in journaling file system only.  So\nintroduce CONFIG_FS_JOURNAL_INFO and make it conditional.\n\nSigned-off-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cb1c2e51c5a72f093b5af384b11d2f1c2abd6c13",
      "tree": "e4cb094df0a729eaac4eb1229e0f9ee0ab39aeaf",
      "parents": [
        "500f5a0bf5f0624dae34307010e240ec090e4cde"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Dec 13 23:32:06 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 14 11:47:11 2009 +0100"
      },
      "message": "reiserfs: Fix reiserfs lock and journal lock inversion dependency\n\nWhen we were using the bkl, we didn\u0027t care about dependencies against\nother locks, but the mutex conversion created new ones, which is why\nwe have reiserfs_mutex_lock_safe(), which unlocks the reiserfs lock\nbefore acquiring another mutex.\n\nBut this trick actually fails if we have acquired the reiserfs lock\nrecursively, as we try to unlock it to acquire the new mutex without\ninverted dependency, but we eventually only decrease its depth.\n\nThis happens in the case of a nested inode creation/deletion.\nSay we have no space left on the device, we create an inode\nand tak the lock but fail to create its entry, then we release the\ninode using iput(), which calls reiserfs_delete_inode() that takes\nthe reiserfs lock recursively. The path eventually ends up in\njournal_begin() where we try to take the journal safely but we\nfail because of the reiserfs lock recursion:\n\n[ INFO: possible circular locking dependency detected ]\n2.6.32-06486-g053fe57 #2\n-------------------------------------------------------\nvi/23454 is trying to acquire lock:\n (\u0026journal-\u003ej_mutex){+.+...}, at: [\u003cc110dac4\u003e] do_journal_begin_r+0x64/0x2f0\n\nbut task is already holding lock:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc11106a8\u003e] reiserfs_write_lock+0x28/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       [\u003cc104f8f3\u003e] validate_chain+0xa23/0xf70\n       [\u003cc1050325\u003e] __lock_acquire+0x4e5/0xa70\n       [\u003cc105092a\u003e] lock_acquire+0x7a/0xa0\n       [\u003cc134c78f\u003e] mutex_lock_nested+0x5f/0x2b0\n       [\u003cc11106a8\u003e] reiserfs_write_lock+0x28/0x40\n       [\u003cc110dacb\u003e] do_journal_begin_r+0x6b/0x2f0\n       [\u003cc110ddcf\u003e] journal_begin+0x7f/0x120\n       [\u003cc10f76c2\u003e] reiserfs_remount+0x212/0x4d0\n       [\u003cc1093997\u003e] do_remount_sb+0x67/0x140\n       [\u003cc10a9ca6\u003e] do_mount+0x436/0x6b0\n       [\u003cc10a9f86\u003e] sys_mount+0x66/0xa0\n       [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\n-\u003e #0 (\u0026journal-\u003ej_mutex){+.+...}:\n       [\u003cc104fe38\u003e] validate_chain+0xf68/0xf70\n       [\u003cc1050325\u003e] __lock_acquire+0x4e5/0xa70\n       [\u003cc105092a\u003e] lock_acquire+0x7a/0xa0\n       [\u003cc134c78f\u003e] mutex_lock_nested+0x5f/0x2b0\n       [\u003cc110dac4\u003e] do_journal_begin_r+0x64/0x2f0\n       [\u003cc110ddcf\u003e] journal_begin+0x7f/0x120\n       [\u003cc10ef52f\u003e] reiserfs_delete_inode+0x9f/0x140\n       [\u003cc10a55fc\u003e] generic_delete_inode+0x9c/0x150\n       [\u003cc10a56ed\u003e] generic_drop_inode+0x3d/0x60\n       [\u003cc10a4607\u003e] iput+0x47/0x50\n       [\u003cc10e915c\u003e] reiserfs_create+0x16c/0x1c0\n       [\u003cc109a9c1\u003e] vfs_create+0xc1/0x130\n       [\u003cc109dbec\u003e] do_filp_open+0x81c/0x920\n       [\u003cc109004f\u003e] do_sys_open+0x4f/0x110\n       [\u003cc1090179\u003e] sys_open+0x29/0x40\n       [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\nother info that might help us debug this:\n\n2 locks held by vi/23454:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#5){+.+.+.}, at: [\u003cc109d64e\u003e]\ndo_filp_open+0x27e/0x920\n #1:  (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}, at: [\u003cc11106a8\u003e]\nreiserfs_write_lock+0x28/0x40\n\nstack backtrace:\nPid: 23454, comm: vi Not tainted 2.6.32-06486-g053fe57 #2\nCall Trace:\n [\u003cc134b202\u003e] ? printk+0x18/0x1e\n [\u003cc104e960\u003e] print_circular_bug+0xc0/0xd0\n [\u003cc104fe38\u003e] validate_chain+0xf68/0xf70\n [\u003cc104ca9b\u003e] ? trace_hardirqs_off+0xb/0x10\n [\u003cc1050325\u003e] __lock_acquire+0x4e5/0xa70\n [\u003cc105092a\u003e] lock_acquire+0x7a/0xa0\n [\u003cc110dac4\u003e] ? do_journal_begin_r+0x64/0x2f0\n [\u003cc134c78f\u003e] mutex_lock_nested+0x5f/0x2b0\n [\u003cc110dac4\u003e] ? do_journal_begin_r+0x64/0x2f0\n [\u003cc110dac4\u003e] ? do_journal_begin_r+0x64/0x2f0\n [\u003cc110ff80\u003e] ? delete_one_xattr+0x0/0x1c0\n [\u003cc110dac4\u003e] do_journal_begin_r+0x64/0x2f0\n [\u003cc110ddcf\u003e] journal_begin+0x7f/0x120\n [\u003cc11105b5\u003e] ? reiserfs_delete_xattrs+0x15/0x50\n [\u003cc10ef52f\u003e] reiserfs_delete_inode+0x9f/0x140\n [\u003cc10a55bf\u003e] ? generic_delete_inode+0x5f/0x150\n [\u003cc10ef490\u003e] ? reiserfs_delete_inode+0x0/0x140\n [\u003cc10a55fc\u003e] generic_delete_inode+0x9c/0x150\n [\u003cc10a56ed\u003e] generic_drop_inode+0x3d/0x60\n [\u003cc10a4607\u003e] iput+0x47/0x50\n [\u003cc10e915c\u003e] reiserfs_create+0x16c/0x1c0\n [\u003cc1099a5d\u003e] ? inode_permission+0x7d/0xa0\n [\u003cc109a9c1\u003e] vfs_create+0xc1/0x130\n [\u003cc10e8ff0\u003e] ? reiserfs_create+0x0/0x1c0\n [\u003cc109dbec\u003e] do_filp_open+0x81c/0x920\n [\u003cc104ca9b\u003e] ? trace_hardirqs_off+0xb/0x10\n [\u003cc134dc0d\u003e] ? _spin_unlock+0x1d/0x20\n [\u003cc10a6eea\u003e] ? alloc_fd+0xba/0xf0\n [\u003cc109004f\u003e] do_sys_open+0x4f/0x110\n [\u003cc1090179\u003e] sys_open+0x29/0x40\n [\u003cc1002c50\u003e] sysenter_do_call+0x12/0x36\n\nTo fix this, use reiserfs_lock_once() from reiserfs_delete_inode()\nwhich prevents from adding reiserfs lock recursion.\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": "500f5a0bf5f0624dae34307010e240ec090e4cde",
      "tree": "2b91adce6d79d8d5caaad1ad3c6421ade480e4bf",
      "parents": [
        "6548698f929814375fa5d62ae1db96959b0418c1"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Dec 13 22:48:54 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 14 11:43:09 2009 +0100"
      },
      "message": "reiserfs: Fix possible recursive lock\n\nWhile allocating the bitmap using vmalloc, we hold the reiserfs lock,\nwhich makes lockdep later reporting a possible deadlock as we may\nswap out pages to allocate memory and then take the reiserfs lock\nrecursively:\n\ninconsistent {RECLAIM_FS-ON-W} -\u003e {IN-RECLAIM_FS-W} usage.\nkswapd0/312 [HC0[0]:SC0[0]:HE1:SE1] takes:\n (\u0026REISERFS_SB(s)-\u003elock){+.+.?.}, at: [\u003cc11108a8\u003e] reiserfs_write_lock+0x28/0x40\n{RECLAIM_FS-ON-W} state was registered at:\n  [\u003cc104e1c2\u003e] mark_held_locks+0x62/0x90\n  [\u003cc104e28a\u003e] lockdep_trace_alloc+0x9a/0xc0\n  [\u003cc108e396\u003e] kmem_cache_alloc+0x26/0xf0\n  [\u003cc10850ec\u003e] __get_vm_area_node+0x6c/0xf0\n  [\u003cc10857de\u003e] __vmalloc_node+0x7e/0xa0\n  [\u003cc108597b\u003e] vmalloc+0x2b/0x30\n  [\u003cc10e00b9\u003e] reiserfs_init_bitmap_cache+0x39/0x70\n  [\u003cc10f8178\u003e] reiserfs_fill_super+0x2e8/0xb90\n  [\u003cc1094345\u003e] get_sb_bdev+0x145/0x180\n  [\u003cc10f5a11\u003e] get_super_block+0x21/0x30\n  [\u003cc10931f0\u003e] vfs_kern_mount+0x40/0xd0\n  [\u003cc10932d9\u003e] do_kern_mount+0x39/0xd0\n  [\u003cc10a9857\u003e] do_mount+0x2c7/0x6b0\n  [\u003cc10a9ca6\u003e] sys_mount+0x66/0xa0\n  [\u003cc161589b\u003e] mount_block_root+0xc4/0x245\n  [\u003cc1615a75\u003e] mount_root+0x59/0x5f\n  [\u003cc1615b8c\u003e] prepare_namespace+0x111/0x14b\n  [\u003cc1615269\u003e] kernel_init+0xcf/0xdb\n  [\u003cc10031fb\u003e] kernel_thread_helper+0x7/0x1c\n\nThis is actually fine for two reasons: we call vmalloc at mount time\nthen it\u0027s not in the swapping out path. Also the reiserfs lock can be\nacquired recursively, but since its implementation depends on a mutex,\nit\u0027s hard and not necessary worth it to teach that to lockdep.\n\nThe lock is useless at mount time anyway, at least until we replay the\njournal. But let\u0027s remove it from this path later as this needs\nmore thinking and is a sensible change.\n\nFor now we can just relax the lock around vmalloc,\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": "4ef58d4e2ad1fa2a3e5bbf41af2284671fca8cf8",
      "tree": "856ba96302a36014736747e8464f80eeb827bbdd",
      "parents": [
        "f6c4c8195b5e7878823caa1181be404d9e86d369",
        "d014d043869cdc591f3a33243d3481fa4479c2d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 19:43:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 19:43:33 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (42 commits)\n  tree-wide: fix misspelling of \"definition\" in comments\n  reiserfs: fix misspelling of \"journaled\"\n  doc: Fix a typo in slub.txt.\n  inotify: remove superfluous return code check\n  hdlc: spelling fix in find_pvc() comment\n  doc: fix regulator docs cut-and-pasteism\n  mtd: Fix comment in Kconfig\n  doc: Fix IRQ chip docs\n  tree-wide: fix assorted typos all over the place\n  drivers/ata/libata-sff.c: comment spelling fixes\n  fix typos/grammos in Documentation/edac.txt\n  sysctl: add missing comments\n  fs/debugfs/inode.c: fix comment typos\n  sgivwfb: Make use of ARRAY_SIZE.\n  sky2: fix sky2_link_down copy/paste comment error\n  tree-wide: fix typos \"couter\" -\u003e \"counter\"\n  tree-wide: fix typos \"offest\" -\u003e \"offset\"\n  fix kerneldoc for set_irq_msi()\n  spidev: fix double \"of of\" in comment\n  comment typo fix: sybsystem -\u003e subsystem\n  ...\n"
    },
    {
      "commit": "a9280fed383082da08a40af3f38daccaed6d8d62",
      "tree": "7eeacfcd07f7f1de56b1b29f473cb31b7251d8b4",
      "parents": [
        "2b876f95d03e226394b5d360c86127cbefaf614b",
        "1d2c6cfd40b2dece3bb958cbbc405a2c1536ab75"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 07:58:15 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 07:58:15 2009 -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: (31 commits)\n  kill-the-bkl/reiserfs: turn GFP_ATOMIC flag to GFP_NOFS in reiserfs_get_block()\n  kill-the-bkl/reiserfs: drop the fs race watchdog from _get_block_create_0()\n  kill-the-bkl/reiserfs: definitely drop the bkl from reiserfs_ioctl()\n  kill-the-bkl/reiserfs: always lock the ioctl path\n  kill-the-bkl/reiserfs: fix reiserfs lock to cpu_add_remove_lock dependency\n  kill-the-bkl/reiserfs: Fix induced mm-\u003emmap_sem to sysfs_mutex dependency\n  kill-the-bkl/reiserfs: panic in case of lock imbalance\n  kill-the-bkl/reiserfs: fix recursive reiserfs write lock in reiserfs_commit_write()\n  kill-the-bkl/reiserfs: fix recursive reiserfs lock in reiserfs_mkdir()\n  kill-the-bkl/reiserfs: fix \"reiserfs lock\" / \"inode mutex\" lock inversion dependency\n  kill-the-bkl/reiserfs: move the concurrent tree accesses checks per superblock\n  kill-the-bkl/reiserfs: acquire the inode mutex safely\n  kill-the-bkl/reiserfs: unlock only when needed in search_by_key\n  kill-the-bkl/reiserfs: use mutex_lock in reiserfs_mutex_lock_safe\n  kill-the-bkl/reiserfs: factorize the locking in reiserfs_write_end()\n  kill-the-bkl/reiserfs: reduce number of contentions in search_by_key()\n  kill-the-bkl/reiserfs: don\u0027t hold the write recursively in reiserfs_lookup()\n  kill-the-bkl/reiserfs: lock only once on reiserfs_get_block()\n  kill-the-bkl/reiserfs: conditionaly release the write lock on fs_changed()\n  kill-the-BKL/reiserfs: add reiserfs_cond_resched()\n  ...\n"
    },
    {
      "commit": "6548698f929814375fa5d62ae1db96959b0418c1",
      "tree": "340924ae82cb0946aa15045b2b72186de52a8146",
      "parents": [
        "1d2c6cfd40b2dece3bb958cbbc405a2c1536ab75",
        "22763c5cf3690a681551162c15d34d935308c8d7"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 07 07:28:35 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 07 07:29:22 2009 +0100"
      },
      "message": "Merge commit \u0027v2.6.32\u0027 into reiserfs/kill-bkl\n\nMerge-reason: The tree was based 2.6.31. It\u0027s better to be up to date\nwith 2.6.32. Although no conflicting changes were made in between,\nit gives benchmarking results closer to the lastest kernel behaviour.\n"
    },
    {
      "commit": "febe29d957c5076ff6a9fa49f39b01f1e48d1c04",
      "tree": "a8707ab69455a7082c594445881403df2870d19e",
      "parents": [
        "e02f0e868a2664c1f5d72cd9a7fc08b4c4309169"
      ],
      "author": {
        "name": "Adam Buchbinder",
        "email": "adam.buchbinder@gmail.com",
        "time": "Fri Dec 04 15:24:22 2009 -0500"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 23:39:11 2009 +0100"
      },
      "message": "reiserfs: fix misspelling of \"journaled\"\n\n\"Journaled\" is misspelled \"journlaled\" in an output string; this patch\nfixed it. No changes in functionality.\n\nSigned-off-by: Adam Buchbinder \u003cadam.buchbinder@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "1d2c6cfd40b2dece3bb958cbbc405a2c1536ab75",
      "tree": "52ab33b148548083ae0456857791a8d410c83a31",
      "parents": [
        "27b3a5c51b50a234fb4a21146841e6723b5934ce"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Nov 20 04:11:30 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Nov 20 18:25:02 2009 +0100"
      },
      "message": "kill-the-bkl/reiserfs: turn GFP_ATOMIC flag to GFP_NOFS in reiserfs_get_block()\n\nGFP_ATOMIC was used in reiserfs_get_block to not lose the Bkl so that\nnobody can modify the tree in the middle of its work. Now that we\nkicked out the bkl, we can use a more friendly flag. We use GFP_NOFS\nhere because we already hold the reiserfs lock.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "27b3a5c51b50a234fb4a21146841e6723b5934ce",
      "tree": "41b1df81b0b40b0115c77f835b3791db7c13c1f5",
      "parents": [
        "205cb37b89ab37db553907e5ac17962eec561804"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:34:31 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:34:31 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: drop the fs race watchdog from _get_block_create_0()\n\nWe had a watchdog in _get_block_create_0() that jumped to a fixup retry\npath in case the bkl got relaxed while calling kmap().\nThis is not necessary anymore since we now have a reiserfs lock that is\nnot implicitly relaxed while sleeping.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "205cb37b89ab37db553907e5ac17962eec561804",
      "tree": "1ba8dcbef0112fbd0d77d28a317c950b11c19563",
      "parents": [
        "ac78a07893d24d95ff5f39d0433c25210f224f07"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:22:17 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:28:12 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: definitely drop the bkl from reiserfs_ioctl()\n\nThe reiserfs ioctl path doesn\u0027t need the big kernel lock anymore , now\nthat the filesystem synchronizes through its own lock.\n\nWe can then turn reiserfs_ioctl() into an unlocked_ioctl callback.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ac78a07893d24d95ff5f39d0433c25210f224f07",
      "tree": "ac48d2a828ef6daa62d5f5373cc14ba658b2a945",
      "parents": [
        "48f6ba5e691948caba2e7bc362153fb28e4f1e09"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:08:43 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:27:57 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: always lock the ioctl path\n\nReiserfs uses the ioctl callback for its file operations, which means\nthat its ioctl path is still locked by the bkl, this was synchronizing\nwith the rest of the filsystem operations. We have changed that by\nlocking it with the new reiserfs lock but we do that only from the\ncompat_ioctl callback.\n\nFix that by locking reiserfs_ioctl() everytime.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "48f6ba5e691948caba2e7bc362153fb28e4f1e09",
      "tree": "318e755ec8c3664b1276a5a87f455b8dc37c3862",
      "parents": [
        "193be0ee17dd7ea309ddab1093da17e5924d7f36"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Oct 05 16:31:37 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Oct 05 16:31:37 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix reiserfs lock to cpu_add_remove_lock dependency\n\nWhile creating the reiserfs workqueue during the journal\ninitialization, we are holding the reiserfs lock, but\ncreate_workqueue() also holds the cpu_add_remove_lock, creating\nthen the following dependency:\n\n- reiserfs lock -\u003e cpu_add_remove_lock\n\nBut we also have the following existing dependencies:\n\n- mm-\u003emmap_sem -\u003e reiserfs lock\n- cpu_add_remove_lock -\u003e cpu_hotplug.lock -\u003e slub_lock -\u003e sysfs_mutex\n\nThe merged dependency chain then becomes:\n\n- mm-\u003emmap_sem -\u003e reiserfs lock -\u003e cpu_add_remove_lock -\u003e\n\tcpu_hotplug.lock -\u003e slub_lock -\u003e sysfs_mutex\n\nBut when we fill a dir entry in sysfs_readir(), we are holding the\nsysfs_mutex and we also might fault while copying the directory entry\nto the user, leading to the following dependency:\n\n- sysfs_mutex -\u003e mm-\u003emmap_sem\n\nThe end result is then a lock inversion between sysfs_mutex and\nmm-\u003emmap_sem, as reported in the following lockdep warning:\n\n[ INFO: possible circular locking dependency detected ]\n2.6.31-07095-g25a3912 #4\n-------------------------------------------------------\nudevadm/790 is trying to acquire lock:\n (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cc1098942\u003e] might_fault+0x72/0xc0\n\nbut task is already holding lock:\n (sysfs_mutex){+.+.+.}, at: [\u003cc110813c\u003e] sysfs_readdir+0x7c/0x260\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #5 (sysfs_mutex){+.+.+.}:\n      [...]\n\n-\u003e #4 (slub_lock){+++++.}:\n      [...]\n\n-\u003e #3 (cpu_hotplug.lock){+.+.+.}:\n      [...]\n\n-\u003e #2 (cpu_add_remove_lock){+.+.+.}:\n      [...]\n\n-\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n      [...]\n\n-\u003e #0 (\u0026mm-\u003emmap_sem){++++++}:\n      [...]\n\nThis can be fixed by relaxing the reiserfs lock while creating the\nworkqueue.\nThis is fine to relax the lock here, we just keep it around to pass\nthrough reiserfs lock checks and for paranoid reasons.\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nTested-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "0d54b217a247f39605361f867fefbb9e099a5432",
      "tree": "5af6a2cc4cbc6c327e735ac5edb642d47a1f0013",
      "parents": [
        "61e225dc341107be304fd1088146c2a5e88ff9e0"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: make struct super_block::s_qcop const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@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": "61e225dc341107be304fd1088146c2a5e88ff9e0",
      "tree": "e6d3e1dc5506e232497f17721175a081a5306b5b",
      "parents": [
        "00d3803b656a5f0935518d746f6bb27d5181d29d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: make struct super_block::dq_op const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@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": "193be0ee17dd7ea309ddab1093da17e5924d7f36",
      "tree": "d57d6a5162311b9f4513f485aca89fe5b992e31a",
      "parents": [
        "80503185989b2dd84170bb842e23d3fd45ebdf40"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Sep 17 05:31:37 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Sep 17 05:31:37 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: Fix induced mm-\u003emmap_sem to sysfs_mutex dependency\n\nAlexander Beregalov reported the following warning:\n\n\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\t[ INFO: possible circular locking dependency detected ]\n\t2.6.31-03149-gdcc030a #1\n\t-------------------------------------------------------\n\tudevadm/716 is trying to acquire lock:\n\t (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cc107249a\u003e] might_fault+0x4a/0xa0\n\n\tbut task is already holding lock:\n\t (sysfs_mutex){+.+.+.}, at: [\u003cc10cb9aa\u003e] sysfs_readdir+0x5a/0x200\n\n\twhich lock already depends on the new lock.\n\n\tthe existing dependency chain (in reverse order) is:\n\n\t-\u003e #3 (sysfs_mutex){+.+.+.}:\n\t       [...]\n\n\t-\u003e #2 (\u0026bdev-\u003ebd_mutex){+.+.+.}:\n\t       [...]\n\n\t-\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n\t       [...]\n\n\t-\u003e #0 (\u0026mm-\u003emmap_sem){++++++}:\n\t       [...]\n\nOn reiserfs mount path, we take the reiserfs lock and while\ninitializing the journal, we open the device, taking the\nbdev-\u003ebd_mutex. Then rescan_partition() may signal the change\nto sysfs.\n\nWe have then the following dependency:\n\n\treiserfs_lock -\u003e bd_mutex -\u003e sysfs_mutex\n\nLater, while entering reiserfs_readpage() after a pagefault in an\nmmaped reiserfs file, we are holding the mm-\u003emmap_sem, and we are going\nto take the reiserfs lock too.\nWe have then the following dependency:\n\n\tmm-\u003emmap_sem -\u003e reiserfs_lock\n\nwhich, expanded with the previous dependency gives us:\n\n\tmm-\u003emmap_sem -\u003e reiserfs_lock -\u003e bd_mutex -\u003e sysfs_mutex\n\nNow while entering the sysfs readdir path, we are holding the\nsysfs_mutex. And when we copy a directory entry to the user buffer, we\nmight fault and then take the mm-\u003emmap_sem lock. Which leads to the\ncircular locking dependency reported.\n\nWe can fix that by relaxing the reiserfs lock during the call to\njournal_init_dev(), which is the place where we open the mounted\ndevice.\n\nThis is fine to relax the lock here because we are in the begining of\nthe reiserfs mount path and there is nothing to protect at this time,\nthe journal is not intialized.\nWe just keep this lock around for paranoid reasons.\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nTested-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "80503185989b2dd84170bb842e23d3fd45ebdf40",
      "tree": "5b1a862071199421ba0427137067b8ed14a0c843",
      "parents": [
        "7e94277050e31aa4204060f03953bba72598cf7d"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 04:18:06 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:30 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: panic in case of lock imbalance\n\nUntil now, trying to unlock the reiserfs write lock whereas the current\ntask doesn\u0027t hold it lead to a simple warning.\nWe should actually warn and panic in this case to avoid the user datas\nto reach an unstable state.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "7e94277050e31aa4204060f03953bba72598cf7d",
      "tree": "7a53cd463e76c0ed5e72345152755b5318ad430b",
      "parents": [
        "b10ab4c337a600456ed2d9daea0331016f7cdeeb"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 03:38:12 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:29 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix recursive reiserfs write lock in reiserfs_commit_write()\n\nreiserfs_commit_write() is always called with the write lock held.\nThus the current calls to reiserfs_write_lock() in this function are\nacquiring the lock recursively.\nWe can safely drop them.\n\nThis also solves further assumptions for this lock to be really\nreleased while calling reiserfs_write_unlock().\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "b10ab4c337a600456ed2d9daea0331016f7cdeeb",
      "tree": "6e85b1faea80835b5dcab78bf66d51b529711ada",
      "parents": [
        "ae635c0bbd6c10aa62bf5149c6f41add59fbf4d2"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 02:44:21 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:27 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix recursive reiserfs lock in reiserfs_mkdir()\n\nreiserfs_mkdir() acquires the reiserfs lock, assuming it has been called\nfrom the dir inodes callbacks, without the lock held.\n\nBut it can also be called from other internal sites such as\nreiserfs_xattr_init() which already holds the lock. This recursive\nlocking leads to further wrong assumptions. For example, later calls\nto reiserfs_mutex_lock_safe() won\u0027t actually unlock the reiserfs lock\nthe time we acquire a given mutex, creating unexpected lock inversions.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "ae635c0bbd6c10aa62bf5149c6f41add59fbf4d2",
      "tree": "a8f3ed7ca8452fba1cb153bdb0e2ec98ea5219e1",
      "parents": [
        "08f14fc8963e585e65b71212ce8050607b9b6c36"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 02:24:45 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:26 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix \"reiserfs lock\" / \"inode mutex\" lock inversion dependency\n\nreiserfs_xattr_init is called with the reiserfs write lock held, but\nif the \".reiserfs_priv\" entry is not created, we take the superblock\nroot directory inode mutex until .reiserfs_priv is created.\n\nThis creates a lock dependency inversion against other sites such as\nreiserfs_file_release() which takes an inode mutex and the reiserfs\nlock after.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "08f14fc8963e585e65b71212ce8050607b9b6c36",
      "tree": "04d808f71193df2a90d485fcc0e2604bd8fe8d93",
      "parents": [
        "c72e05756b900b3be24cd73a16de52bab80984c0"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 16 19:10:38 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:25 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: move the concurrent tree accesses checks per superblock\n\nWhen do_balance() balances the tree, a trick is performed to\nprovide the ability for other tree writers/readers to check whether\ndo_balance() is executing concurrently (requires CONFIG_REISERFS_CHECK).\n\nThis is done to protect concurrent accesses to the tree. The trick\nis the following:\n\nWhen do_balance is called, a unique global variable called cur_tb\ntakes a pointer to the current tree to be rebalanced.\nOnce do_balance finishes its work, cur_tb takes the NULL value.\n\nThen, concurrent tree readers/writers just have to check the value\nof cur_tb to ensure do_balance isn\u0027t executing concurrently.\nIf it is, then it proves that schedule() occured on do_balance(),\nwhich then relaxed the bkl that protected the tree.\n\nNow that the bkl has be turned into a mutex, this check is still\nfine even though do_balance() becomes preemptible: the write lock\nwill not be automatically released on schedule(), so the tree is\nstill protected.\n\nBut this is only fine if we have a single reiserfs mountpoint.\nIndeed, because the bkl is a global lock, it didn\u0027t allowed\nconcurrent executions between a tree reader/writer in a mount point\nand a do_balance() on another tree from another mountpoint.\n\nSo assuming all these readers/writers weren\u0027t supposed to be\nreentrant, the current check now sometimes detect false positives with\nthe current per-superblock mutex which allows this reentrancy.\n\nThis patch keeps the concurrent tree accesses check but moves it\nper superblock, so that only trees from a same mount point are\nchecked to be not accessed concurrently.\n\n[ Impact: fix spurious panic while running several reiserfs mount-points ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "c72e05756b900b3be24cd73a16de52bab80984c0",
      "tree": "4fc35ad9efc1a6a9ca14baa3612e551fb4da793e",
      "parents": [
        "2ac626955ed62ee8596f00581f959cc86e6198d1"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 16 18:12:08 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:24 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: acquire the inode mutex safely\n\nWhile searching a pathname, an inode mutex can be acquired\nin do_lookup() which calls reiserfs_lookup() which in turn\nacquires the write lock.\n\nOn the other side reiserfs_fill_super() can acquire the write_lock\nand then call reiserfs_lookup_privroot() which can acquire an\ninode mutex (the root of the mount point).\n\nSo we theoretically risk an AB - BA lock inversion that could lead\nto a deadlock.\n\nAs for other lock dependencies found since the bkl to mutex\nconversion, the fix is to use reiserfs_mutex_lock_safe() which\ndrops the lock dependency to the write lock.\n\n[ Impact: fix a possible deadlock with reiserfs ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "2ac626955ed62ee8596f00581f959cc86e6198d1",
      "tree": "a5bd28e558b889ad7c026199f6032b2ff33f9103",
      "parents": [
        "c63e3c0b2498adec921b06c670d12c8c74b85538"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 14 02:56:39 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:22 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: unlock only when needed in search_by_key\n\nsearch_by_key() is the site which most requires the lock.\nThis is mostly because it is a very central function and also\nbecause it releases/reaqcuires the write lock at least once each\ntime it is called.\n\nSuch release/reacquire creates a lot of contention in this place and\nalso opens more the window which let another thread changing the tree.\nWhen it happens, the current path searching over the tree must be\nretried from the beggining (the root) which is a wasteful and\ntime consuming recovery.\n\nThis patch factorizes two release/reacquire sequences:\n\n- reading leaf nodes blocks\n- reading current block\n\nThe latter immediately follows the former.\n\nThe whole sequence is safe as a single unlocked section because\nwe check just after if the tree has changed during these operations.\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "c63e3c0b2498adec921b06c670d12c8c74b85538",
      "tree": "27ca06415b5fdd51e369361ea8aa8f8e8e1ac741",
      "parents": [
        "d6f5b0aa08078c3dabe377d5b1a6077e9c9352d3"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 20:01:09 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:21 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: use mutex_lock in reiserfs_mutex_lock_safe\n\nreiserfs_mutex_lock_safe() is a hack to avoid any dependency between\nan internal reiserfs mutex and the write lock, it has been proposed\nto follow the old bkl logic.\n\nThe code does the following:\n\nwhile (!mutex_trylock(m)) {\n\treiserfs_write_unlock(s);\n\tschedule();\n\treiserfs_write_lock(s);\n}\n\nIt then imitate the implicit behaviour of the lock when it was\na Bkl and hadn\u0027t such dependency:\n\nmutex_lock(m) {\n\tif (fastpath)\n\t\tlet\u0027s go\n\telse {\n\t\twait_for_mutex() {\n\t\t\tschedule() {\n\t\t\t\tunlock_kernel()\n\t\t\t\treacquire_lock_kernel()\n\t\t\t}\n\t\t}\n\t}\n}\n\nThe problem is that by using such explicit schedule(), we don\u0027t\nbenefit of the adaptive mutex spinning on owner.\n\nThe logic in use now is:\n\nreiserfs_write_unlock(s);\nmutex_lock(m); // -\u003e possible adaptive spinning\nreiserfs_write_lock(s);\n\n[ Impact: restore the use of adaptive spinning mutexes in reiserfs ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "d6f5b0aa08078c3dabe377d5b1a6077e9c9352d3",
      "tree": "b5d6bd99e007c57a6cd4953368202d99a41141cd",
      "parents": [
        "09eb47a7c52ad535aafca889e0b936c445c375ce"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 14:53:52 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:20 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: factorize the locking in reiserfs_write_end()\n\nreiserfs_write_end() is a hot path in reiserfs.\nWe have two wasteful write lock lock/release inside that can be gathered\nwithout changing the code logic.\n\nThis patch factorizes them out in a single protected section, reducing the\nnumber of contentions inside.\n\n[ Impact: reduce lock contention in a reiserfs hotpath ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "09eb47a7c52ad535aafca889e0b936c445c375ce",
      "tree": "81ebee49cb84f29e0aa3d884f6ed9c23ab044218",
      "parents": [
        "b1c839bb2d8d6f1f6bf48f5c657752b4963f88f8"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 14:21:33 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:19 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: reduce number of contentions in search_by_key()\n\nsearch_by_key() is a central function in reiserfs which searches\nthe patch in the fs tree from the root to a node given its key.\n\nIt is the function that is most requesting the write lock\nbecause it\u0027s a path very often used.\n\nAlso we forget to release the lock while reading the next tree node,\nmaking us holding the lock in a wasteful way.\n\nThen we release the lock while reading the current node and its childs,\nall-in-one. It should be safe because we have a reference to these\nblocks and even if we read a block that will be concurrently changed,\nwe have an fs_changed check later that will make us retry the path from\nthe root.\n\n[ Impact: release the write lock while unused in a hot path ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "b1c839bb2d8d6f1f6bf48f5c657752b4963f88f8",
      "tree": "7396e1e56cfe544248d0e21374ab10f4edf6de3a",
      "parents": [
        "26931309a47747fd31b2ef029c29d47794c2d93d"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 01:05:06 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:17 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: don\u0027t hold the write recursively in reiserfs_lookup()\n\nThe write lock can be acquired recursively in reiserfs_lookup(). But we may\nwant to *really* release the lock before possible rescheduling from a\nreiserfs_lookup() callee.\n\nHence we want to only acquire the lock once (ie: not recursively).\n\n[ Impact: prevent from possible false unreleased write lock on sleeping ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "26931309a47747fd31b2ef029c29d47794c2d93d",
      "tree": "85b3ba9ee14c6d90243e4590af60e7ef3e72c5ff",
      "parents": [
        "d663af807d8bb226394cb7e02f4665f6141a8140"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 07 23:48:44 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:16 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: lock only once on reiserfs_get_block()\n\nreiserfs_get_block() is one of these sites where the write lock might\nbe acquired recursively.\n\nIt\u0027s a particular problem because this function is called very often.\nIt\u0027s a hot spot which needs to reschedule() periodically while converting\ndirect items to indirect ones because it can take some time.\n\nThen if we are applying the write lock release/reacquire pattern on\nschedule() here, it may not produce the desired effect since we may have\nlocked in more than one depth.\n\nThe solution is to use reiserfs_write_lock_once() which won\u0027t try\nto reacquire the lock recursively. Then the lock will be *really*\nreleased before schedule().\n\nAlso, we only release the lock if TIF_NEED_RESCHED is set to not\ncreate wasteful numerous contentions.\n\n[ Impact: fix a too long holded lock case in reiserfs_get_block() ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "6e3647acb4f200add1d8e0203514f7ac925ae463",
      "tree": "95a779d1f59c04ca58956a49340b88497b476f13",
      "parents": [
        "4c5eface5d0e4eb7f77be346193c2850e7e3b983"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 01 02:27:39 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:13 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock on flush_commit_list()\n\nflush_commit_list() uses ll_rw_block() to commit the pending log blocks.\nll_rw_block() might sleep, and the bkl was released at this point. Then\nwe can also relax the write lock at this point.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "4c5eface5d0e4eb7f77be346193c2850e7e3b983",
      "tree": "f827eb485149bc52974a41a8d0b5f1d553953fb5",
      "parents": [
        "148d3504c1d9f964cf14fafc46d2b7d1f0bed2b1"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 01 01:44:57 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:11 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock inside reiserfs_read_bitmap_block()\n\nreiserfs_read_bitmap_block() uses sb_bread() to read the bitmap block. This\nhelper might sleep.\n\nThen, when the bkl was used, it was released at this point. We can then\nrelax the write lock too here.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "148d3504c1d9f964cf14fafc46d2b7d1f0bed2b1",
      "tree": "6b17f1361099e8b579d10e892a8d919eae037354",
      "parents": [
        "5e69e3a4492ea5abfd2e8ddc575448becf28e4d9"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 01 01:10:52 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:10 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock inside get_neighbors()\n\nget_neighbors() is used to get the left and/or right blocks\nagainst a given one in order to balance a tree.\n\nsb_bread() is used to read the buffer of these neighors blocks and\nwhile it waits for this operation, it might sleep.\n\nThe bkl was released at this point, and then we can also release\nthe write lock before calling sb_bread().\n\nThis is safe because if the filesystem is changed after this\nlock release, the function returns REPEAT_SEARCH (aka SCHEDULE_OCCURRED\nin the function header comments) in order to repeat the neighbhor\nresearch.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "5e69e3a4492ea5abfd2e8ddc575448becf28e4d9",
      "tree": "85cad0034222ceef31241e7c0e406bc76aca0186",
      "parents": [
        "e6950a4da33fa84ef4402d29e2331cd5e5df9cb8"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Apr 30 23:36:33 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:09 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release write lock while rescheduling on prepare_for_delete_or_cut()\n\nprepare_for_delete_or_cut() can process several types of items, including\nindirect items, ie: items which contain no file data but pointers to\nunformatted nodes scattering the datas of a file.\n\nIn this case it has to zero out these pointers to block numbers of\nunformatted nodes and release the bitmap from these block numbers.\n\nIt can take some time, so a rescheduling() is performed between each\nblock processed. We can safely release the write lock while\nrescheduling(), like the bkl did, because the code checks just after\nif the item has moved after sleeping.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "e6950a4da33fa84ef4402d29e2331cd5e5df9cb8",
      "tree": "05650bb6b4fc7c148253dd3c7c4222c2783f84d3",
      "parents": [
        "f32049dc244f4d394c8faa161b4f13cb8c4f5c8c"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Apr 30 23:04:32 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:08 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock before rescheduling on do_journal_end()\n\nWhen do_journal_end() copies data to the journal blocks buffers in memory,\nit reschedules if needed between each block copied and dirtyfied.\n\nWe can also release the write lock at this rescheduling stage,\nlike did the bkl implicitly.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "dc8f6d8936eb244eea452af689df5ee19e635206",
      "tree": "c93624678a2d2821c78048f6f7db19889eac5b3a",
      "parents": [
        "22c963addcf426bef97a43f6e601f985f8082ed5"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 05:34:25 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:04 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: only acquire the write lock once in reiserfs_dirty_inode\n\nImpact: fix a deadlock\n\nreiserfs_dirty_inode() is the super_operations::dirty_inode() callback\nof reiserfs. It can be called from different contexts where the write\nlock can be already held.\n\nBut this function also grab the write lock (possibly recursively).\nSubsequent release of the lock before sleep will actually not release\nthe lock if the caller of mark_inode_dirty() (which in turn calls\nreiserfs_dirty_inode()) already owns the lock.\n\nA typical case:\n\nreiserfs_write_end() {\n\tacquire_write_lock()\n\tmark_inode_dirty() {\n\t\treiserfs_dirty_inode() {\n\t\t\treacquire_write_lock() {\n\t\t\t\tjournal_begin() {\n\t\t\t\t\tdo_journal_begin_r() {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * fail to release, still\n\t\t\t\t\t\t * one depth of lock\n\t\t\t\t\t\t */\n\t\t\t\t\t\trelease_write_lock()\n\t\t\t\t\t\treiserfs_wait_on_write_block() {\n\t\t\t\t\t\t\twait_event()\n\nThe event is usually provided by something which needs the write lock but\nit hasn\u0027t been released.\n\nWe use reiserfs_write_lock_once() here to ensure we only grab the\nwrite lock in one level.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nLKML-Reference: \u003c1239680065-25013-4-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "22c963addcf426bef97a43f6e601f985f8082ed5",
      "tree": "f71ae95fd1eee899c446ebb03a3cc02fe24daf3c",
      "parents": [
        "daf88c898312a22b5385655bc6e0b064eaa2efba"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 05:34:24 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:03 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: lock only once in reiserfs_truncate_file\n\nImpact: fix a deadlock\n\nreiserfs_truncate_file() can be called from multiple context where\nthe write lock can be already hold or not.\n\nThis function also acquire (possibly recursively) the write\nlock. Subsequent releases before sleeping will not actually release\nthe lock because we may be in more than one lock depth degree.\n\nA typical case is:\n\nreiserfs_file_release {\n\tacquire_the_lock()\n\treiserfs_truncate_file()\n\t\treacquire_the_lock()\n\t\tjournal_begin() {\n\t\t\tdo_journal_begin_r() {\n\t\t\t\treiserfs_wait_on_write_block() {\n\t\t\t\t\t/*\n\t\t\t\t\t * Not released because still one\n\t\t\t\t\t * depth owned\n\t\t\t\t\t */\n\t\t\t\t\trelease_lock()\n\t\t\t\t\twait_for_event()\n\nAt this stage the event never happen because the one which provides\nit needs the write lock.\n\nWe use reiserfs_write_lock_once() here to ensure that we don\u0027t acquire the\nwrite lock recursively.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nLKML-Reference: \u003c1239680065-25013-3-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "daf88c898312a22b5385655bc6e0b064eaa2efba",
      "tree": "016c432fc26c174d5aee3647e54f2aafb690dceb",
      "parents": [
        "a412f9efdd6424bf4bf28c8e8c92060b5e975482"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 05:34:23 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:02 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: provide a tool to lock only once the write lock\n\nSometimes we don\u0027t want to recursively hold the per superblock write\nlock because we want to be sure it is actually released when we come\nto sleep.\n\nThis patch introduces the necessary tools for that.\n\nreiserfs_write_lock_once() does the same job than reiserfs_write_lock()\nexcept that it won\u0027t try to acquire recursively the lock if the current\ntask already owns it. Also the lock_depth before the call of this function\nis returned.\n\nreiserfs_write_unlock_once() unlock only if reiserfs_write_lock_once()\nreturned a depth equal to -1, ie: only if it actually locked.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nLKML-Reference: \u003c1239680065-25013-2-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a412f9efdd6424bf4bf28c8e8c92060b5e975482",
      "tree": "b290d38a85c4b675af426dbd8593768bc5339fa1",
      "parents": [
        "8ebc423238341b52912c7295b045a32477b33f09"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 00:10:35 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:01 2009 +0200"
      },
      "message": "reiserfs, kill-the-BKL: fix unsafe j_flush_mutex lock\n\nImpact: fix a deadlock\n\nThe j_flush_mutex is acquired safely in journal.c:\nif we can\u0027t take it, we free the reiserfs per superblock lock\nand wait a bit.\n\nBut we have a remaining place in kupdate_transactions() where\nj_flush_mutex is still acquired traditionnaly. Thus the following\nscenario (warned by lockdep) can happen:\n\nA\t\t\t\t\t\tB\n\nmutex_lock(\u0026write_lock)\t\t\tmutex_lock(\u0026write_lock)\n\tmutex_lock(\u0026j_flush_mutex)\tmutex_lock(\u0026j_flush_mutex) //block\n\tmutex_unlock(\u0026write_lock)\n\tsleep...\n\tmutex_lock(\u0026write_lock) //deadlock\n\nFix this by using reiserfs_mutex_lock_safe() in kupdate_transactions().\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nLKML-Reference: \u003c1239660635-12940-1-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8ebc423238341b52912c7295b045a32477b33f09",
      "tree": "39677401de0df98c09ca888c87d85033b6fe93c9",
      "parents": [
        "74fca6a42863ffacaf7ba6f1936a9f228950f657"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 07 04:19:49 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:17:59 2009 +0200"
      },
      "message": "reiserfs: kill-the-BKL\n\nThis patch is an attempt to remove the Bkl based locking scheme from\nreiserfs and is intended.\n\nIt is a bit inspired from an old attempt by Peter Zijlstra:\n\n   http://lkml.indiana.edu/hypermail/linux/kernel/0704.2/2174.html\n\nThe bkl is heavily used in this filesystem to prevent from\nconcurrent write accesses on the filesystem.\n\nReiserfs makes a deep use of the specific properties of the Bkl:\n\n- It can be acqquired recursively by a same task\n- It is released on the schedule() calls and reacquired when schedule() returns\n\nThe two properties above are a roadmap for the reiserfs write locking so it\u0027s\nvery hard to simply replace it with a common mutex.\n\n- We need a recursive-able locking unless we want to restructure several blocks\n  of the code.\n- We need to identify the sites where the bkl was implictly relaxed\n  (schedule, wait, sync, etc...) so that we can in turn release and\n  reacquire our new lock explicitly.\n  Such implicit releases of the lock are often required to let other\n  resources producer/consumer do their job or we can suffer unexpected\n  starvations or deadlocks.\n\nSo the new lock that replaces the bkl here is a per superblock mutex with a\nspecific property: it can be acquired recursively by a same task, like the\nbkl.\n\nFor such purpose, we integrate a lock owner and a lock depth field on the\nsuperblock information structure.\n\nThe first axis on this patch is to turn reiserfs_write_(un)lock() function\ninto a wrapper to manage this mutex. Also some explicit calls to\nlock_kernel() have been converted to reiserfs_write_lock() helpers.\n\nThe second axis is to find the important blocking sites (schedule...(),\nwait_on_buffer(), sync_dirty_buffer(), etc...) and then apply an explicit\nrelease of the write lock on these locations before blocking. Then we can\nsafely wait for those who can give us resources or those who need some.\nTypically this is a fight between the current writer, the reiserfs workqueue\n(aka the async commiter) and the pdflush threads.\n\nThe third axis is a consequence of the second. The write lock is usually\non top of a lock dependency chain which can include the journal lock, the\nflush lock or the commit lock. So it\u0027s dangerous to release and trying to\nreacquire the write lock while we still hold other locks.\n\nThis is fine with the bkl:\n\n      T1                       T2\n\nlock_kernel()\n    mutex_lock(A)\n    unlock_kernel()\n    // do something\n                            lock_kernel()\n                                mutex_lock(A) -\u003e already locked by T1\n                                schedule() (and then unlock_kernel())\n    lock_kernel()\n    mutex_unlock(A)\n    ....\n\nThis is not fine with a mutex:\n\n      T1                       T2\n\nmutex_lock(write)\n    mutex_lock(A)\n    mutex_unlock(write)\n    // do something\n                           mutex_lock(write)\n                              mutex_lock(A) -\u003e already locked by T1\n                              schedule()\n\n    mutex_lock(write) -\u003e already locked by T2\n    deadlock\n\nThe solution in this patch is to provide a helper which releases the write\nlock and sleep a bit if we can\u0027t lock a mutex that depend on it. It\u0027s another\nsimulation of the bkl behaviour.\n\nThe last axis is to locate the fs callbacks that are called with the bkl held,\naccording to Documentation/filesystem/Locking.\n\nThose are:\n\n- reiserfs_remount\n- reiserfs_fill_super\n- reiserfs_put_super\n\nReiserfs didn\u0027t need to explicitly lock because of the context of these callbacks.\nBut now we must take care of that with the new locking.\n\nAfter this patch, reiserfs suffers from a slight performance regression (for now).\nOn UP, a high volume write with dd reports an average of 27 MB/s instead\nof 30 MB/s without the patch applied.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Bron Gondwana \u003cbrong@fastmail.fm\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nLKML-Reference: \u003c1239070789-13354-1-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "8aa7e847d834ed937a9ad37a0f2ad5b8584c1ab0"
}
