)]}'
{
  "log": [
    {
      "commit": "4504230a71566785a05d3e6b53fa1ee071b864eb",
      "tree": "e73070fcad99b800f0324992c392d44c6dddc97c",
      "parents": [
        "4fadd7bb20a1e7c774ed88dc703d8fbcd00ff917"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Aug 03 23:28:35 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Sep 24 07:47:41 2009 -0400"
      },
      "message": "freeze_bdev: grab active reference to frozen superblocks\n\nCurrently we held s_umount while a filesystem is frozen, despite that we\nmight return to userspace and unlock it from a different process.  Instead\ngrab an active reference to keep the file system busy and add an explicit\ncheck for frozen filesystems in remount and reject the remount instead\nof blocking on s_umount.\n\nAdd a new get_active_super helper to super.c for use by freeze_bdev that\ngrabs an active reference to a superblock from a given block device.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4fadd7bb20a1e7c774ed88dc703d8fbcd00ff917",
      "tree": "a6f3df6f19d27e81f35a93f8858b73bd4273f420",
      "parents": [
        "1ba50bbe93ebb98e83b174a85eff76af430c4e5b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Aug 03 23:28:06 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Sep 24 07:47:39 2009 -0400"
      },
      "message": "freeze_bdev: kill bd_mount_sem\n\nNow that we have the freeze count there is not much reason for bd_mount_sem\nanymore.  The actual freeze/thaw operations are serialized using the\nbd_fsfreeze_mutex, and the only other place we take bd_mount_sem is\nget_sb_bdev which tries to prevent mounting a filesystem while the block\ndevice is frozen.  Instead of add a check for bd_fsfreeze_count and\nreturn -EBUSY if a filesystem is frozen.  While that is a change in user\nvisible behaviour a failing mount is much better for this case rather\nthan having the mount process stuck uninterruptible for a long time.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "42cb56ae2ab67390da34906b27bedc3f2ff1393b",
      "tree": "db4a6a4871feeb153f924a80a79b7790e4e2c90e",
      "parents": [
        "5aa98b706e83da4cde4172c890d6e815915536a0"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Sep 18 13:05:53 2009 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Sep 24 07:47:33 2009 -0400"
      },
      "message": "vfs: change sb-\u003es_maxbytes to a loff_t\n\nsb-\u003es_maxbytes is supposed to indicate the maximum size of a file that can\nexist on the filesystem.  It\u0027s declared as an unsigned long long.\n\nEven if a filesystem has no inherent limit that prevents it from using\nevery bit in that unsigned long long, it\u0027s still problematic to set it to\nanything larger than MAX_LFS_FILESIZE.  There are places in the kernel\nthat cast s_maxbytes to a signed value.  If it\u0027s set too large then this\ncast makes it a negative number and generally breaks the comparison.\n\nChange s_maxbytes to be loff_t instead.  That should help eliminate the\ntemptation to set it too large by making it a signed value.\n\nAlso, add a warning for couple of releases to help catch filesystems that\nset s_maxbytes too large.  Eventually we can either convert this to a\nBUG() or just remove it and in the hope that no one will get it wrong now\nthat it\u0027s a signed value.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Robert Love \u003crlove@google.com\u003e\nCc: Mandeep Singh Baines \u003cmsb@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b87221de6a4934eda856475a0065688d12973a04",
      "tree": "6bcf0628e106c4833538f4c23d710fbbe3d7609a",
      "parents": [
        "0d54b217a247f39605361f867fefbb9e099a5432"
      ],
      "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: mark remaining super_operations 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": "32a88aa1b6dfb901cec64e1898cac78d0f25028a",
      "tree": "51aa6f56ccfca53f495d015645373317bdee3647",
      "parents": [
        "c4a77a6c7dcff04a2abc7fe4b6b2ae605be41c5b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:02:33 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:18:51 2009 +0200"
      },
      "message": "fs: Assign bdi in super_block\n\nWe do this automatically in get_sb_bdev() from the set_bdev_super()\ncallback. Filesystems that have their own private backing_dev_info\nmust assign that in -\u003efill_super().\n\nNote that -\u003es_bdi assignment is required for proper writeback!\n\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "03ba3782e8dcc5b0e1efe440d33084f066e38cae",
      "tree": "e5a6513b411de16a46199530ec98ef9b7f1efc50",
      "parents": [
        "66f3b8e2e103a0b93b945764d98e9ba46cb926dd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 09 09:08:54 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 09:20:25 2009 +0200"
      },
      "message": "writeback: switch to per-bdi threads for flushing data\n\nThis gets rid of pdflush for bdi writeout and kupdated style cleaning.\npdflush writeout suffers from lack of locality and also requires more\nthreads to handle the same workload, since it has to work in a\nnon-blocking fashion against each queue. This also introduces lumpy\nbehaviour and potential request starvation, since pdflush can be starved\nfor queue access if others are accessing it. A sample ffsb workload that\ndoes random writes to files is about 8% faster here on a simple SATA drive\nduring the benchmark phase. File layout also seems a LOT more smooth in\nvmstat:\n\n r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa\n 0  1      0 608848   2652 375372    0    0     0 71024  604    24  1 10 48 42\n 0  1      0 549644   2712 433736    0    0     0 60692  505    27  1  8 48 44\n 1  0      0 476928   2784 505192    0    0     4 29540  553    24  0  9 53 37\n 0  1      0 457972   2808 524008    0    0     0 54876  331    16  0  4 38 58\n 0  1      0 366128   2928 614284    0    0     4 92168  710    58  0 13 53 34\n 0  1      0 295092   3000 684140    0    0     0 62924  572    23  0  9 53 37\n 0  1      0 236592   3064 741704    0    0     4 58256  523    17  0  8 48 44\n 0  1      0 165608   3132 811464    0    0     0 57460  560    21  0  8 54 38\n 0  1      0 102952   3200 873164    0    0     4 74748  540    29  1 10 48 41\n 0  1      0  48604   3252 926472    0    0     0 53248  469    29  0  7 47 45\n\nwhere vanilla tends to fluctuate a lot in the creation phase:\n\n r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa\n 1  1      0 678716   5792 303380    0    0     0 74064  565    50  1 11 52 36\n 1  0      0 662488   5864 319396    0    0     4   352  302   329  0  2 47 51\n 0  1      0 599312   5924 381468    0    0     0 78164  516    55  0  9 51 40\n 0  1      0 519952   6008 459516    0    0     4 78156  622    56  1 11 52 37\n 1  1      0 436640   6092 541632    0    0     0 82244  622    54  0 11 48 41\n 0  1      0 436640   6092 541660    0    0     0     8  152    39  0  0 51 49\n 0  1      0 332224   6200 644252    0    0     4 102800  728    46  1 13 49 36\n 1  0      0 274492   6260 701056    0    0     4 12328  459    49  0  7 50 43\n 0  1      0 211220   6324 763356    0    0     0 106940  515    37  1 10 51 39\n 1  0      0 160412   6376 813468    0    0     0  8224  415    43  0  6 49 45\n 1  1      0  85980   6452 886556    0    0     4 113516  575    39  1 11 54 34\n 0  2      0  85968   6452 886620    0    0     0  1640  158   211  0  0 46 54\n\nA 10 disk test with btrfs performs 26% faster with per-bdi flushing. A\nSSD based writeback test on XFS performs over 20% better as well, with\nthe throughput being very stable around 1GB/sec, where pdflush only\nmanages 750MB/sec and fluctuates wildly while doing so. Random buffered\nwrites to many files behave a lot better as well, as does random mmap\u0027ed\nwrites.\n\nA separate thread is added to sync the super blocks. In the long term,\nadding sync_supers_bdi() functionality could get rid of this thread again.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "66f3b8e2e103a0b93b945764d98e9ba46cb926dd",
      "tree": "442bf5664214f0a1448e4010b09868cc58fdd3d1",
      "parents": [
        "d8a8559cd7a9ccac98d5f6f13297a2ff68a43627"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 02 09:19:46 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 09:20:25 2009 +0200"
      },
      "message": "writeback: move dirty inodes from super_block to backing_dev_info\n\nThis is a first step at introducing per-bdi flusher threads. We should\nhave no change in behaviour, although sb_has_dirty_inodes() is now\nridiculously expensive, as there\u0027s no easy way to answer that question.\nNot a huge problem, since it\u0027ll be deleted in subsequent patches.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f21f62208a6f60e2e05440b2e438d9541822dc4d",
      "tree": "e373be2998ac4914122f9da76398be980d0dbd47",
      "parents": [
        "c63e09ecccb50f930e899d7005edc5411ee86d4f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 03:12:00 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:15:26 2009 -0400"
      },
      "message": "... and the same for vfsmount id/mount group id\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c63e09ecccb50f930e899d7005edc5411ee86d4f",
      "tree": "aafa5169cde98a2bb8327fcc948c76dba0746322",
      "parents": [
        "7e325d3a6b117c7288bfc0755410e9d9d2b71326"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 02:05:18 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:15:25 2009 -0400"
      },
      "message": "Make allocation of anon devices cheaper\n\nStandard trick - add a new variable (start) such that\nfor each n \u003c start n is known to be busy.  Allocation can\nskip checking everything in [0..start) and if it returns\nn, we can set start to n + 1.  Freeing below start sets\nstart to what we\u0027d just freed.\n\nOf course, it still sucks if we do something like\n\tfree 0\n\tallocate\n\tallocate\nin a loop - still O(n^2) time.  However, on saner loads it\nimproves the things a lot and the entire thing is not worth\nthe trouble of switching to something with better worst-case\nbehaviour.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b0895513f499b8f786d292ce48589ca210ca1d6e",
      "tree": "e7e7e684f19a930ca029afa08396aa5170e7fb3d",
      "parents": [
        "210ad6aedb332e73167ece5af9bd47f0da8c2aca"
      ],
      "author": {
        "name": "J. R. Okajima",
        "email": "hooanon05@yahoo.co.jp",
        "time": "Wed Jun 17 01:16:50 2009 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 17 00:36:35 2009 -0400"
      },
      "message": "remove unlock_kernel() left accidentally\n\ncommit 337eb00a2c3a421999c39c94ce7e33545ee8baa7\nPush BKL down into -\u003eremount_fs()\nand\ncommit 4aa98cf768b6f2ea4b204620d949a665959214f6\nPush BKL down into do_remount_sb()\n\nwere uncorrectly merged.\nThe former removes one pair of lock/unlock_kernel(), but the latter adds\nseveral unlock_kernel(). Finally a few unlock_kernel() calls left.\n\nSigned-off-by: J. R. Okajima \u003chooanon05@yahoo.co.jp\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "337eb00a2c3a421999c39c94ce7e33545ee8baa7",
      "tree": "d9b780d095b638b1d8fa23841ff70347cf5daa08",
      "parents": [
        "4195f73d1329e49727bcceb028e58cb38376c2b0"
      ],
      "author": {
        "name": "Alessio Igor Bogani",
        "email": "abogani@texware.it",
        "time": "Tue May 12 15:10:54 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:11 2009 -0400"
      },
      "message": "Push BKL down into -\u003eremount_fs()\n\n[xfs, btrfs, capifs, shmem don\u0027t need BKL, exempt]\n\nSigned-off-by: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ebc1ac164560a241d9bf1b7519062910c3f90a01",
      "tree": "db17fd3043b15f8269cce2c2d00213814022fc30",
      "parents": [
        "01ba687577647beef6c5f2ea59bfb56fac9fcde2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon May 11 23:35:03 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:09 2009 -0400"
      },
      "message": "-\u003ewrite_super lock_super pushdown\n\nPush down lock_super into -\u003ewrite_super instances and remove it from the\ncaller.\n\nFollowing filesystem don\u0027t need -\u003es_lock in -\u003ewrite_super and are skipped:\n\n * bfs, nilfs2 - no other uses of s_lock and have internal locks in\n\t-\u003ewrite_super\n * ext2 - uses BKL in ext2_write_super and has internal calls without s_lock\n * reiserfs - no other uses of s_lock as has reiserfs_write_lock (BKL) in\n \t-\u003ewrite_super\n * xfs - no other uses of s_lock and uses internal lock (buffer lock on\n\tsuperblock buffer) to serialize -\u003ewrite_super.  Also xfs_fs_write_super\n\tis superflous and will go away in the next merge window\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4aa98cf768b6f2ea4b204620d949a665959214f6",
      "tree": "dd6f5be97396b9e1f24a9697524da19463e7a8da",
      "parents": [
        "7f78d4cd4c5d01864943c22b79df1b6bde923129"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 08 13:36:58 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:08 2009 -0400"
      },
      "message": "Push BKL down into do_remount_sb()\n\n[folded fix from Jiri Slaby]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bbd6851a3213a525128473e978b692ab6ac11aba",
      "tree": "8ebddebadd8992871ab98456187cb00849a82058",
      "parents": [
        "6cfd0148425e528b859b26e436b01f23f6926224"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 06 10:43:07 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:08 2009 -0400"
      },
      "message": "Push lock_super() into the -\u003eremount_fs() of filesystems that care about it\n\nNote that since we can\u0027t run into contention between remount_fs and write_super\n(due to exclusion on s_umount), we have to care only about filesystems that\ntouch lock_super() on their own.  Out of those ext3, ext4, hpfs, sysv and ufs\ndo need it; fat doesn\u0027t since its -\u003eremount_fs() only accesses assign-once\ndata (basically, it\u0027s \"we have no atime on directories and only have atime on\nfiles for vfat; force nodiratime and possibly noatime into *flags\").\n\n[folded a build fix from hch]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6cfd0148425e528b859b26e436b01f23f6926224",
      "tree": "60e3257053554ff198fe5825e6f12a00c3b4422a",
      "parents": [
        "a9e220f8322e2b0e0b8903fe00265461cffad3f0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 05 15:40:36 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:07 2009 -0400"
      },
      "message": "push BKL down into -\u003eput_super\n\nMove BKL into -\u003eput_super from the only caller.  A couple of\nfilesystems had trivial enough -\u003eput_super (only kfree and NULLing of\ns_fs_info + stuff in there) to not get any locking: coda, cramfs, efs,\nhugetlbfs, omfs, qnx4, shmem, all others got the full treatment.  Most\nof them probably don\u0027t need it, but I\u0027d rather sort that out individually.\nPreferably after all the other BKL pushdowns in that area.\n\n[AV: original used to move lock_super() down as well; these changes are\nremoved since we don\u0027t do lock_super() at all in generic_shutdown_super()\nnow]\n[AV: fuse, btrfs and xfs are known to need no damn BKL, exempt]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a9e220f8322e2b0e0b8903fe00265461cffad3f0",
      "tree": "b3be7d58b8eb9fd810636223f0458191ec1b9d75",
      "parents": [
        "62c6943b4b1e818aea60c11c5a68a50785b83119"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 05 22:10:44 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:07 2009 -0400"
      },
      "message": "No need to do lock_super() for exclusion in generic_shutdown_super()\n\nWe can\u0027t run into contention on it.  All other callers of lock_super()\neither hold s_umount (and we have it exclusive) or hold an active\nreference to superblock in question, which prevents the call of\ngeneric_shutdown_super() while the reference is held.  So we can\nreplace lock_super(s) with get_fs_excl() in generic_shutdown_super()\n(and corresponding change for unlock_super(), of course).\n\nSince ext4 expects s_lock held for its put_super, take lock_super()\ninto it.  The rest of filesystems do not care at all.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "443b94baaa16771e98b29ca7c24f1e305738ffca",
      "tree": "cf498a25d012330928e0315222c46ea90c200530",
      "parents": [
        "5af7926ff33b68b3ba46531471c6e0564b285efc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 05 23:48:50 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:07 2009 -0400"
      },
      "message": "Make sure that all callers of remount hold s_umount exclusive\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e5004753388dcf5e1b8a52ac0ab807d232340fbb",
      "tree": "4a74a93f1468acb111ba9a3e9ed4a55f338f51fe",
      "parents": [
        "f3da392e9ff14b9f388e74319e6d195848991c07"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 05 16:08:56 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:06 2009 -0400"
      },
      "message": "cleanup sync_supers\n\nMerge the write_super helper into sync_super and move the check for\n-\u003ewrite_super earlier so that we can avoid grabbing a reference to\na superblock that doesn\u0027t have it.\n\nWhile we\u0027re at it also add a little comment documenting sync_supers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8c85e125124a473d6f3e9bb187b0b84207f81d91",
      "tree": "d883424a156c00c55193e46567efdffddb6ef6b9",
      "parents": [
        "517bfae28353e996160518add4d00033d3886e61"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Apr 28 18:00:26 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:06 2009 -0400"
      },
      "message": "remove -\u003ewrite_super call in generic_shutdown_super\n\nWe just did a full fs writeout using sync_filesystem before, and if\nthat\u0027s not enough for the filesystem it can perform it\u0027s own writeout\nin -\u003eput_super, which many filesystems already do.\n\nMove a call to foofs_write_super into every foofs_put_super for now to\nguarantee identical behaviour until it\u0027s cleaned up by the individual\nfilesystem maintainers.\n\nExceptions:\n\n - affs already has identical copy \u0026 pasted code at the beginning of\n   affs_put_super so no need to do it twice.\n - xfs does the right thing without it and I have changes pending for\n   the xfs tree touching this are so I don\u0027t really need conflicts\n   here..\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "60b0680fa236ac4e17ce31a50048c9d75f9ec831",
      "tree": "c8ca34340a173326694247eab779e713c57202c2",
      "parents": [
        "c15c54f5f056ee4819da9fde59a5f2cd45445f23"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Apr 27 16:43:53 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:04 2009 -0400"
      },
      "message": "vfs: Rename fsync_super() to sync_filesystem() (version 4)\n\nRename the function so that it better describe what it really does. Also\nremove the unnecessary include of buffer_head.h.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c15c54f5f056ee4819da9fde59a5f2cd45445f23",
      "tree": "0b8d142f0b8d44b71bf7ff9db7a373f90d0556a3",
      "parents": [
        "5cee5815d1564bbbd505fea86f4550f1efdb5cd0"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Apr 27 16:43:52 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:04 2009 -0400"
      },
      "message": "vfs: Move syncing code from super.c to sync.c (version 4)\n\nMove sync_filesystems(), __fsync_super(), fsync_super() from\nsuper.c to sync.c where it fits better.\n\n[build fixes folded]\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5cee5815d1564bbbd505fea86f4550f1efdb5cd0",
      "tree": "ba99c38932dc534bf56f0d7dcfeeca153f50b007",
      "parents": [
        "429479f031322a0cc5c921ffb2321a51718dc875"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Apr 27 16:43:51 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:03 2009 -0400"
      },
      "message": "vfs: Make sys_sync() use fsync_super() (version 4)\n\nIt is unnecessarily fragile to have two places (fsync_super() and do_sync())\ndoing data integrity sync of the filesystem. Alter __fsync_super() to\naccommodate needs of both callers and use it. So after this patch\n__fsync_super() is the only place where we gather all the calls needed to\nproperly send all data on a filesystem to disk.\n\nNice bonus is that we get a complete livelock avoidance and write_supers()\nis now only used for periodic writeback of superblocks.\n\nsync_blockdevs() introduced a couple of patches ago is gone now.\n\n[build fixes folded]\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "429479f031322a0cc5c921ffb2321a51718dc875",
      "tree": "6741f7f1bfa1d889bbc4f44ab0489de97a3e47c0",
      "parents": [
        "bfe881255c74800147523b59c85328a1a826ba21"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Apr 27 16:43:50 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:03 2009 -0400"
      },
      "message": "vfs: Make __fsync_super() a static function (version 4)\n\n__fsync_super() does the same thing as fsync_super(). So change the only\ncaller to use fsync_super() and make __fsync_super() static. This removes\nunnecessarily duplicated call to sync_blockdev() and prepares ground\nfor the changes to __fsync_super() in the following patches.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bfe881255c74800147523b59c85328a1a826ba21",
      "tree": "4ed9b761a440ee0b69a35a5c8bddc42c64195e47",
      "parents": [
        "5a3e5cb8e08bd876e2542c1451c9a93dab1b0e39"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Apr 27 16:43:49 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:03 2009 -0400"
      },
      "message": "vfs: Call -\u003esync_fs() even if s_dirt is 0 (version 4)\n\nsync_filesystems() has a condition that if wait \u003d\u003d 0 and s_dirt \u003d\u003d 0, then\n-\u003esync_fs() isn\u0027t called. This does not really make much sence since s_dirt is\ngenerally used by a filesystem to mean that -\u003ewrite_super() needs to be called.\nBut -\u003esync_fs() does different things. I even suspect that some filesystems\n(btrfs?) sets s_dirt just to fool this logic.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5a3e5cb8e08bd876e2542c1451c9a93dab1b0e39",
      "tree": "3b792d21246f1001adeca8b67df24ca71593dd3f",
      "parents": [
        "876a9f76abbcb775f8d21cbc99fa161f9e5937f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Apr 27 16:43:48 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:03 2009 -0400"
      },
      "message": "vfs: Fix sys_sync() and fsync_super() reliability (version 4)\n\nSo far, do_sync() called:\n  sync_inodes(0);\n  sync_supers();\n  sync_filesystems(0);\n  sync_filesystems(1);\n  sync_inodes(1);\n\nThis ordering makes it kind of hard for filesystems as sync_inodes(0) need not\nsubmit all the IO (for example it skips inodes with I_SYNC set) so e.g. forcing\ntransaction to disk in -\u003esync_fs() is not really enough. Therefore sys_sync has\nnot been completely reliable on some filesystems (ext3, ext4, reiserfs, ocfs2\nand others are hit by this) when racing e.g. with background writeback. A\nsimilar problem hits also other filesystems (e.g. ext2) because of\nwrite_supers() being called before the sync_inodes(1).\n\nChange the ordering of calls in do_sync() - this requires a new function\nsync_blockdevs() to preserve the property that block devices are always synced\nafter write_super() / sync_fs() call.\n\nThe same issue is fixed in __fsync_super() function used on umount /\nremount read-only.\n\n[AV: build fixes]\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "876a9f76abbcb775f8d21cbc99fa161f9e5937f1",
      "tree": "971a1ac276c365a53ef1563c9d9f71013a563f09",
      "parents": [
        "864d7c4c068f23642efe91b33be3a84afe5f71e0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Apr 28 18:05:55 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:02 2009 -0400"
      },
      "message": "remove s_async_list\n\nRemove the unused s_async_list in the superblock, a leftover of the\nbroken async inode deletion code that leaked into mainline.  Having this\nin the middle of the sync/unmount path is not helpful for the following\ncleanups.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "864d7c4c068f23642efe91b33be3a84afe5f71e0",
      "tree": "512b253428958e95ca99274a664ace103f6bb10e",
      "parents": [
        "96029c4e09ccbd73a6d0ed2b29e80bf2586ad7ef"
      ],
      "author": {
        "name": "npiggin@suse.de",
        "email": "npiggin@suse.de",
        "time": "Sun Apr 26 20:25:56 2009 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:02 2009 -0400"
      },
      "message": "fs: move mark_files_ro into file_table.c\n\nThis function walks the s_files lock, and operates primarily on the\nfiles in a superblock, so it better belongs here (eg. see also\nfs_may_remount_ro).\n\n[AV: ... and it shouldn\u0027t be static after that move]\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ddbaaf3024d764ced700efb2d818709b90ea6fdd",
      "tree": "e8f3f970bb8a009a3847b6beba144016df8bbe4d",
      "parents": [
        "db6c1fbb92eeb4cb52c6133e0c533602f49fc4bd"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Wed Apr 29 20:14:57 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:41 2009 -0400"
      },
      "message": "NULL noise in fs/super.c:kill_bdev_super()\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Subrata Modak \u003csubrata@linux.vnet.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "74dbbdd7fdc11763f4698d2f3e684cf4446951e6",
      "tree": "f31d70174915b0d209fafeec35e996e8ed7e269d",
      "parents": [
        "677c9b2e393a0cd203bd54e9c18b012b2c73305a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 06 01:07:50 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:39 2009 -0400"
      },
      "message": "New helper: deactivate_locked_super()\n\nDoes equivalent of up_write(\u0026s-\u003es_umount); deactivate_super(s);\nHowever, it does not does not unlock it until it\u0027s all over.\nAs the result, it\u0027s safe to use to dispose of new superblock on -\u003eget_sb()\nfailure exits - nobody will see the sucker until it\u0027s all over.\nEquivalent using up_write/deactivate_super is safe for that purpose\nif superblock is either\tsafe to use or has NULL -\u003es_root when we unlock.\nNormally filesystems take the required precautions, but\n\ta) we do have bugs in that area in some of them.\n\tb) up_write/deactivate_super sequence is extremely common,\nso the helper makes sense anyway.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "909e6d94795654040ed416ac69858d5d2ce66dd3",
      "tree": "c0d873c341e3419c3bb54cffd964bbe850bbb4ab",
      "parents": [
        "7ce5ba3c7ef26284f60babbe4465259d1f9968f3"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Mon Apr 06 19:01:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:09 2009 -0700"
      },
      "message": "namespaces: move proc_net_get_sb to a generic fs/super.c helper\n\nThe mqueuefs filesystem will use this helper as well.  Proc\u0027s main get_sb\ncould also be made to use it, but that will require a bit more rework.\n\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "800a964787faef3509d194fa33268628c3d1daa9",
      "tree": "37a722ed9d269d60bc26f6d8f0862d87e45a2424",
      "parents": [
        "385e1ca5f21c4680ad6a46a3aa2ea8af99e99c92"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:40 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:40 2009 +0100"
      },
      "message": "CacheFiles: Export things for CacheFiles\n\nExport a number of functions for CacheFiles\u0027s use.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "3ae5080f4c2e293229508dabe7c8a90af4e4c460",
      "tree": "9cb11f26905a82b7fac9d3b8f9d61d58bc5c94b0",
      "parents": [
        "2c9e15a011c55ff96b2b8d2b126d1b9a96abba20",
        "aabb8fdb41128705fd1627f56fdd571e45fdbcdb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 16:23:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 16:23:12 2009 -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: (37 commits)\n  fs: avoid I_NEW inodes\n  Merge code for single and multiple-instance mounts\n  Remove get_init_pts_sb()\n  Move common mknod_ptmx() calls into caller\n  Parse mount options just once and copy them to super block\n  Unroll essentials of do_remount_sb() into devpts\n  vfs: simple_set_mnt() should return void\n  fs: move bdev code out of buffer.c\n  constify dentry_operations: rest\n  constify dentry_operations: configfs\n  constify dentry_operations: sysfs\n  constify dentry_operations: JFS\n  constify dentry_operations: OCFS2\n  constify dentry_operations: GFS2\n  constify dentry_operations: FAT\n  constify dentry_operations: FUSE\n  constify dentry_operations: procfs\n  constify dentry_operations: ecryptfs\n  constify dentry_operations: CIFS\n  constify dentry_operations: AFS\n  ...\n"
    },
    {
      "commit": "2c9e15a011c55ff96b2b8d2b126d1b9a96abba20",
      "tree": "6d9b27a07f88ad4509dcd86aa74a2cdecd0d5f4b",
      "parents": [
        "805de022b100bcf796860fe88d7db4164066d1c3",
        "c16831b4cc9b0805adf8ca3001752a7ec10a17bf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 14:48:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 14:48:34 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6: (27 commits)\n  ext2: Zero our b_size in ext2_quota_read()\n  trivial: fix typos/grammar errors in fs/Kconfig\n  quota: Coding style fixes\n  quota: Remove superfluous inlines\n  quota: Remove uppercase aliases for quota functions.\n  nfsd: Use lowercase names of quota functions\n  jfs: Use lowercase names of quota functions\n  udf: Use lowercase names of quota functions\n  ufs: Use lowercase names of quota functions\n  reiserfs: Use lowercase names of quota functions\n  ext4: Use lowercase names of quota functions\n  ext3: Use lowercase names of quota functions\n  ext2: Use lowercase names of quota functions\n  ramfs: Remove quota call\n  vfs: Use lowercase names of quota functions\n  quota: Remove dqbuf_t and other cleanups\n  quota: Remove NODQUOT macro\n  quota: Make global quota locks cacheline aligned\n  quota: Move quota files into separate directory\n  ext4: quota reservation for delayed allocation\n  ...\n"
    },
    {
      "commit": "a3ec947c85ec339884b30ef6a08133e9311fdae1",
      "tree": "c3cc5859a6b6d8986547405b6c5bd11bc8916114",
      "parents": [
        "585d3bc06f4ca57f975a5a1f698f65a45ea66225"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Wed Mar 04 12:06:34 2009 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:03 2009 -0400"
      },
      "message": "vfs: simple_set_mnt() should return void\n\nsimple_set_mnt() is defined as returning \u0027int\u0027 but always returns 0.\nCallers assume simple_set_mnt() never fails and don\u0027t properly cleanup if\nit were to _ever_ fail.  For instance, get_sb_single() and get_sb_nodev()\nshould:\n\n        up_write(sb-\u003es_unmount);\n        deactivate_super(sb);\n\nif simple_set_mnt() fails.\n\nSince simple_set_mnt() never fails, would be cleaner if it did not\nreturn anything.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a2a9537ac0b37a5da6fbe7e1e9cb06c524d2a9c4",
      "tree": "798376ab3cb0fdbea5fc067562e2adfabdb4d9d6",
      "parents": [
        "6933c02e9cc47c2df3c016621a013ec79fb4203f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Mar 17 09:38:40 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Mar 26 11:01:36 2009 +0100"
      },
      "message": "Get rid of pdflush_operation() in emergency sync and remount\n\nOpencode a cheasy approach with kevent. The idea here is that we\u0027ll\nadd some generic delayed work infrastructure, which probably wont be\nbased on pdflush (or maybe it will, in which case we can just add it\nback).\n\nThis is in preparation for getting rid of pdflush completely.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9e3509e273ecc2a5f937c493f9bb71e5e41ac2e5",
      "tree": "a7d9704e891f14b7196a275543b7f9c90f348b82",
      "parents": [
        "d26ac1a8128f6e1fc467f145acaa9f9bf9e16b75"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 26 16:45:12 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Mar 26 02:18:35 2009 +0100"
      },
      "message": "vfs: Use lowercase names of quota functions\n\nUse lowercase names of quota functions instead of old uppercase ones.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCC: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a3cfbb53b1764a3d1f58ddc032737ab9edaa7d41",
      "tree": "818ca39043749382a4b91d0310f532bf2fdc22ce",
      "parents": [
        "e5bc49ba7439b9726006d031d440cba96819f0f8"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Mar 12 14:31:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:23 2009 -0700"
      },
      "message": "vfs: add missing unlock in sget()\n\nIn sget(), destroy_super(s) is called with s-\u003es_umount held, which makes\nlockdep unhappy.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ada723dcd681e2dffd7d73345cc8fda0eb0df9bd",
      "tree": "5f1b114d225721ae7a65fca08a6d053f89f36c43",
      "parents": [
        "27c0c8e511fa9e2389503926840fac606d90a049"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Wed Feb 18 14:48:30 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 18 15:37:55 2009 -0800"
      },
      "message": "fs/super.c: add lockdep annotation to s_umount\n\nLi Zefan said:\n\nThread 1:\n  for ((; ;))\n  {\n      mount -t cpuset xxx /mnt \u003e /dev/null 2\u003e\u00261\n      cat /mnt/cpus \u003e /dev/null 2\u003e\u00261\n      umount /mnt \u003e /dev/null 2\u003e\u00261\n  }\n\nThread 2:\n  for ((; ;))\n  {\n      mount -t cpuset xxx /mnt \u003e /dev/null 2\u003e\u00261\n      umount /mnt \u003e /dev/null 2\u003e\u00261\n  }\n\n(Note: It is irrelevant which cgroup subsys is used.)\n\nAfter a while a lockdep warning showed up:\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\n[ INFO: possible recursive locking detected ]\n2.6.28 #479\n---------------------------------------------\nmount/13554 is trying to acquire lock:\n (\u0026type-\u003es_umount_key#19){--..}, at: [\u003cc049d888\u003e] sget+0x5e/0x321\n\nbut task is already holding lock:\n (\u0026type-\u003es_umount_key#19){--..}, at: [\u003cc049da0c\u003e] sget+0x1e2/0x321\n\nother info that might help us debug this:\n1 lock held by mount/13554:\n #0:  (\u0026type-\u003es_umount_key#19){--..}, at: [\u003cc049da0c\u003e] sget+0x1e2/0x321\n\nstack backtrace:\nPid: 13554, comm: mount Not tainted 2.6.28-mc #479\nCall Trace:\n [\u003cc044ad2e\u003e] validate_chain+0x4c6/0xbbd\n [\u003cc044ba9b\u003e] __lock_acquire+0x676/0x700\n [\u003cc044bb82\u003e] lock_acquire+0x5d/0x7a\n [\u003cc049d888\u003e] ? sget+0x5e/0x321\n [\u003cc061b9b8\u003e] down_write+0x34/0x50\n [\u003cc049d888\u003e] ? sget+0x5e/0x321\n [\u003cc049d888\u003e] sget+0x5e/0x321\n [\u003cc045a2e7\u003e] ? cgroup_set_super+0x0/0x3e\n [\u003cc045959f\u003e] ? cgroup_test_super+0x0/0x2f\n [\u003cc045bcea\u003e] cgroup_get_sb+0x98/0x2e7\n [\u003cc045cfb6\u003e] cpuset_get_sb+0x4a/0x5f\n [\u003cc049dfa4\u003e] vfs_kern_mount+0x40/0x7b\n [\u003cc049e02d\u003e] do_kern_mount+0x37/0xbf\n [\u003cc04af4a0\u003e] do_mount+0x5c3/0x61a\n [\u003cc04addd2\u003e] ? copy_mount_options+0x2c/0x111\n [\u003cc04af560\u003e] sys_mount+0x69/0xa0\n [\u003cc0403251\u003e] sysenter_do_call+0x12/0x31\n\nThe cause is after alloc_super() and then retry, an old entry in list\nfs_supers is found, so grab_super(old) is called, but both functions hold\ns_umount lock:\n\nstruct super_block *sget(...)\n{\n\t...\nretry:\n\tspin_lock(\u0026sb_lock);\n\tif (test) {\n\t\tlist_for_each_entry(old, \u0026type-\u003efs_supers, s_instances) {\n\t\t\tif (!test(old, data))\n\t\t\t\tcontinue;\n\t\t\tif (!grab_super(old))  \u003c--- 2nd: down_write(\u0026old-\u003es_umount);\n\t\t\t\tgoto retry;\n\t\t\tif (s)\n\t\t\t\tdestroy_super(s);\n\t\t\treturn old;\n\t\t}\n\t}\n\tif (!s) {\n\t\tspin_unlock(\u0026sb_lock);\n\t\ts \u003d alloc_super(type);   \u003c--- 1th: down_write(\u0026s-\u003es_umount)\n\t\tif (!s)\n\t\t\treturn ERR_PTR(-ENOMEM);\n\t\tgoto retry;\n\t}\n\t...\n}\n\nIt seems like a false positive, and seems like VFS but not cgroup needs to\nbe fixed.\n\nPeter said:\n\nWe can simply put the new s_umount instance in a but lockdep doesn\u0027t\nparticularly cares about subclass order.\n\nIf there\u0027s any issue with the callers of sget() assuming the s_umount lock\nbeing of sublcass 0, then there is another annotation we can use to fix\nthat, but lets not bother with that if this is sufficient.\n\nAddresses http://bugzilla.kernel.org/show_bug.cgi?id\u003d12673\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nTested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "766ccb9ed406c230d13c145def08ebea1b932982",
      "tree": "952f74260d8baa66063fd8efa1b29d2dddb45c2b",
      "parents": [
        "f30d5b307c694e03368ab55f2f96b0ca4131e775"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Tue Jan 20 15:31:31 2009 +0100"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Feb 08 09:56:11 2009 -0800"
      },
      "message": "async: Rename _special -\u003e _domain for clarity.\n\nRename the async_*_special() functions to async_*_domain(), which\ndescribes the purpose of these functions much better.\n[Broke up long lines to silence checkpatch]\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "257ac264d69017270fbc3cf5536953525db4076c",
      "tree": "4638386ef7a5ac2b5140b055807e973e52c47f4d",
      "parents": [
        "bdc480e3bef6eb0e7071770834cbdda7e30a5436"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:13 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:23 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 11\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "2150edc6c5cf00f7adb54538b9ea2a3e9cedca3f",
      "tree": "f72a0d85e66f500b4cead348a231e3d3b9f357bc",
      "parents": [
        "cd764695b67386a81964f68e9c66efd9f13f4d29",
        "4b905671d2ea09fd48fed72c581df17e40823f39"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (57 commits)\n  jbd2: Fix oops in jbd2_journal_init_inode() on corrupted fs\n  ext4: Remove \"extents\" mount option\n  block: Add Kconfig help which notes that ext4 needs CONFIG_LBD\n  ext4: Make printk\u0027s consistently prefixed with \"EXT4-fs: \"\n  ext4: Add sanity checks for the superblock before mounting the filesystem\n  ext4: Add mount option to set kjournald\u0027s I/O priority\n  jbd2: Submit writes to the journal using WRITE_SYNC\n  jbd2: Add pid and journal device name to the \"kjournald2 starting\" message\n  ext4: Add markers for better debuggability\n  ext4: Remove code to create the journal inode\n  ext4: provide function to release metadata pages under memory pressure\n  ext3: provide function to release metadata pages under memory pressure\n  add releasepage hooks to block devices which can be used by file systems\n  ext4: Fix s_dirty_blocks_counter if block allocation failed with nodelalloc\n  ext4: Init the complete page while building buddy cache\n  ext4: Don\u0027t allow new groups to be added during block allocation\n  ext4: mark the blocks/inode bitmap beyond end of group as used\n  ext4: Use new buffer_head flag to check uninit group bitmaps initialization\n  ext4: Fix the race between read_inode_bitmap() and ext4_new_inode()\n  ext4: code cleanup\n  ...\n"
    },
    {
      "commit": "96777fe7b042e5a5d0fe5fb861fcd6cd80ef9634",
      "tree": "a39a7a0a4817ec4b2815730d09a3f8b7b76a8ab2",
      "parents": [
        "9e42d0cf5020aaf217433cad1a224745241d212a"
      ],
      "author": {
        "name": "Dave Kleikamp",
        "email": "shaggy@linux.vnet.ibm.com",
        "time": "Thu Jan 08 09:46:31 2009 -0600"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:15:39 2009 -0800"
      },
      "message": "async: Don\u0027t call async_synchronize_full_special() while holding sb_lock\n\nsync_filesystems() shouldn\u0027t be calling async_synchronize_full_special\nwhile holding a spinlock.  The second while loop in that function is the\nright place for this anyway.\n\nSigned-off-by: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nReported-by: Grissiom \u003cchaos.proton@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "efaee192063a54749c56b7383803e16fe553630e",
      "tree": "b18e3072904e53701bdd7889bb32babf8cc7bf7c",
      "parents": [
        "f29d3b23238e1955a8094e038c72546e99308e61"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Tue Jan 06 07:20:54 2009 -0800"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Wed Jan 07 08:47:24 2009 -0800"
      },
      "message": "async: make the final inode deletion an asynchronous event\n\nthis makes \"rm -rf\" on a (names cached) kernel tree go from\n11.6 to 8.6 seconds on an ext3 filesystem\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "87d8fe1ee6b8d2f95076142d58c440dba4e7bdc2",
      "tree": "8c91506978a16c22268b086f693e307de0ca57db",
      "parents": [
        "0087d9fb3f29f59e8d42c8b058376d80e5adde4c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 09:47:09 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 09:47:09 2009 -0500"
      },
      "message": "add releasepage hooks to block devices which can be used by file systems\n\nImplement blkdev_releasepage() to release the buffer_heads and pages\nafter we release private data belonging to a mounted filesystem.\n\nCc: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nCc: linux-fsdevel@vger.kernel.org\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "12204e24b1330428c3062faee10a0d80b8a5cb61",
      "tree": "d92ee705a86f0ec2bf85c8a797239dbb840d5927",
      "parents": [
        "459c19f524a9d89c65717a7d061d5f11ecf6bcb8"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Dec 19 10:44:42 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Sat Dec 20 09:02:39 2008 +1100"
      },
      "message": "security: pass mount flags to security_sb_kern_mount()\n\nPass mount flags to security_sb_kern_mount(), so security modules\ncan determine if a mount operation is being performed by the kernel.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\n"
    },
    {
      "commit": "22484856402bfa1ff3defe47f6029ab0418240d9",
      "tree": "140c67bf59674da350a7b51765d6ff7eb101b597",
      "parents": [
        "5ed487bc2c44ca4e9668ef9cb54c830e2a9fac47",
        "56b26add02b4bdea81d5e0ebda60db1fe3311ad4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:23:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:23:07 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev: (66 commits)\n  [PATCH] kill the rest of struct file propagation in block ioctls\n  [PATCH] get rid of struct file use in blkdev_ioctl() BLKBSZSET\n  [PATCH] get rid of blkdev_locked_ioctl()\n  [PATCH] get rid of blkdev_driver_ioctl()\n  [PATCH] sanitize blkdev_get() and friends\n  [PATCH] remember mode of reiserfs journal\n  [PATCH] propagate mode through swsusp_close()\n  [PATCH] propagate mode through open_bdev_excl/close_bdev_excl\n  [PATCH] pass fmode_t to blkdev_put()\n  [PATCH] kill the unused bsize on the send side of /dev/loop\n  [PATCH] trim file propagation in block/compat_ioctl.c\n  [PATCH] end of methods switch: remove the old ones\n  [PATCH] switch sr\n  [PATCH] switch sd\n  [PATCH] switch ide-scsi\n  [PATCH] switch tape_block\n  [PATCH] switch dcssblk\n  [PATCH] switch dasd\n  [PATCH] switch mtd_blkdevs\n  [PATCH] switch mmc\n  ...\n"
    },
    {
      "commit": "ad76cbc63b9db7c98da49af3182a783ca1c80a5d",
      "tree": "221d8d42842e693e5512764ff03a3b98f49cdfd7",
      "parents": [
        "6de24f0ed08054b2a202902e4d63beff27654db8"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Aug 28 06:26:23 2008 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:14 2008 -0400"
      },
      "message": "[PATCH 2/2] anondev: switch to IDA\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "6de24f0ed08054b2a202902e4d63beff27654db8",
      "tree": "91f378a0335b5b9756020d37e1c54bba4a2d6434",
      "parents": [
        "8966c5e0fc867f5a7da5756b4cd1b8bbbed3d5dd"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Aug 28 06:25:49 2008 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:13 2008 -0400"
      },
      "message": "[PATCH 1/2] anondev: init IDR statically\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "30c40d2c01f68c7eb1a41ab3552bdaf5dbf300d4",
      "tree": "38b69a80c4c0df13ef3b905f5195f6cadf930223",
      "parents": [
        "9a1c3542768b5a58e45a9216921cd10a3bae1205"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 22 19:50:45 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:49:00 2008 -0400"
      },
      "message": "[PATCH] propagate mode through open_bdev_excl/close_bdev_excl\n\nreplace open_bdev_excl/close_bdev_excl with variants taking fmode_t.\nsuperblock gets the value used to mount it stored in sb-\u003es_mode\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "da3bbdd4632c0171406b2677e31494afa5bde2f8",
      "tree": "6a1947b2a32041ef0d14044e659ba7d546d55483",
      "parents": [
        "3c82d0ce2c4f642b2f24ef98707a030543b06b90"
      ],
      "author": {
        "name": "Kentaro Makita",
        "email": "k-makita@np.css.fujitsu.com",
        "time": "Wed Jul 23 21:27:13 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:15 2008 -0700"
      },
      "message": "fix soft lock up at NFS mount via per-SB LRU-list of unused dentries\n\n[Summary]\n\n Split LRU-list of unused dentries to one per superblock to avoid soft\n lock up during NFS mounts and remounting of any filesystem.\n\n Previously I posted here:\n http://lkml.org/lkml/2008/3/5/590\n\n[Descriptions]\n\n- background\n\n  dentry_unused is a list of dentries which are not referenced.\n  dentry_unused grows up when references on directories or files are\n  released.  This list can be very long if there is huge free memory.\n\n- the problem\n\n  When shrink_dcache_sb() is called, it scans all dentry_unused linearly\n  under spin_lock(), and if dentry-\u003ed_sb is differnt from given\n  superblock, scan next dentry.  This scan costs very much if there are\n  many entries, and very ineffective if there are many superblocks.\n\n  IOW, When we need to shrink unused dentries on one dentry, but scans\n  unused dentries on all superblocks in the system.  For example, we scan\n  500 dentries to unmount a filesystem, but scans 1,000,000 or more unused\n  dentries on other superblocks.\n\n  In our case , At mounting NFS*, shrink_dcache_sb() is called to shrink\n  unused dentries on NFS, but scans 100,000,000 unused dentries on\n  superblocks in the system such as local ext3 filesystems.  I hear NFS\n  mounting took 1 min on some system in use.\n\n* : NFS uses virtual filesystem in rpc layer, so NFS is affected by\n  this problem.\n\n  100,000,000 is possible number on large systems.\n\n  Per-superblock LRU of unused dentried can reduce the cost in\n  reasonable manner.\n\n- How to fix\n\n  I found this problem is solved by David Chinner\u0027s \"Per-superblock\n  unused dentry LRU lists V3\"(1), so I rebase it and add some fix to\n  reclaim with fairness, which is in Andrew Morton\u0027s comments(2).\n\n  1) http://lkml.org/lkml/2006/5/25/318\n  2) http://lkml.org/lkml/2006/5/25/320\n\n  Split LRU-list of unused dentries to each superblocks.  Then, NFS\n  mounting will check dentries under a superblock instead of all.  But\n  this spliting will break LRU of dentry-unused.  So, I\u0027ve attempted to\n  make reclaim unused dentrins with fairness by calculate number of\n  dentries to scan on this sb based on following way\n\n  number of dentries to scan on this sb \u003d\n  count * (number of dentries on this sb / number of dentries in the machine)\n\n- ToDo\n - I have to measuring performance number and do stress tests.\n\n - When unmount occurs during prune_dcache(), scanning on same\n  superblock, It is unable to reach next superblock because it is gone\n  away.  We restart scannig superblock from first one, it causes\n  unfairness of reclaim unused dentries on first superblock.  But I think\n  this happens very rarely.\n\n- Test Results\n\n  Result on 6GB boxes with excessive unused dentries.\n\nWithout patch:\n\n$ cat /proc/sys/fs/dentry-state\n10181835        10180203        45      0       0       0\n# mount -t nfs 10.124.60.70:/work/kernel-src nfs\nreal    0m1.830s\nuser    0m0.001s\nsys     0m1.653s\n\n With this patch:\n$ cat /proc/sys/fs/dentry-state\n10236610        10234751        45      0       0       0\n# mount -t nfs 10.124.60.70:/work/kernel-src nfs\nreal    0m0.106s\nuser    0m0.002s\nsys     0m0.032s\n\n[akpm@linux-foundation.org: fix comments]\nSigned-off-by: Kentaro Makita \u003ck-makita@np.css.fujitsu.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6b09ae66922ca198e5830c0a4d74400a507a9170",
      "tree": "f434f8927f972e98637cc1cfdbc226d6f3c742de",
      "parents": [
        "8b1919a1e8b8968e0ac9030a4f14f0d2cd69e7cf"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Apr 29 00:58:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:00 2008 -0700"
      },
      "message": "make __put_super() static\n\nMake the needlessly global __put_super() static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@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": "0ff5af8340aa6be44220d7237ef4a654314cf795",
      "tree": "a9536ea573725931cd4eb3139f4885887e3f8bf8",
      "parents": [
        "03f6e92bdd467aed9d7571a571868563ae6ad288"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Apr 28 02:14:33 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:33 2008 -0700"
      },
      "message": "quota: quota core changes for quotaon on remount\n\nCurrently, we just turn quotas off on remount of filesystem to read-only\nstate.  The patch below adds necessary framework so that we can turn quotas\noff on remount RO but we are able to automatically reenable them again when\nfilesystem is remounted to RW state.  All we need to do is to keep references\nto inodes of quota files when remounting RO and using these references to\nreenable quotas when remounting RW.\n\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": "6d59e7f582ef1c1988542d0fc3b36d0087b757ce",
      "tree": "2e6e2e7d42af8f89f7b87aeaf5261d4cfbd9b625",
      "parents": [
        "807501475fce0ebe68baedf87f202c3e4ee0d12c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 22 15:48:17 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 21 23:11:01 2008 -0400"
      },
      "message": "[PATCH] move a bunch of declarations to fs/internal.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ad775f5a8faa5845377f093ca11caf577404add9",
      "tree": "f124ff1038672b8d2ef004d75c844f740d8fe52b",
      "parents": [
        "2e4b7fcd926006531935a4c79a5e9349fe51125b"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Fri Feb 15 14:38:01 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 19 00:29:28 2008 -0400"
      },
      "message": "[PATCH] r/o bind mounts: debugging for missed calls\n\nThere have been a few oopses caused by \u0027struct file\u0027s with NULL f_vfsmnts.\nThere was also a set of potentially missed mnt_want_write()s from\ndentry_open() calls.\n\nThis patch provides a very simple debugging framework to catch these kinds of\nbugs.  It will WARN_ON() them, but should stop us from having any oopses or\nmnt_writer count imbalances.\n\nI\u0027m quite convinced that this is a good thing because it found bugs in the\nstuff I was working on as soon as I wrote it.\n\n[hch: made it conditional on a debug option.\n      But it\u0027s still a little bit too ugly]\n\n[hch: merged forced remount r/o fix from Dave and akpm\u0027s fix for the fix]\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "49e0d02cf018d4edf24bfc8531a816a26367e4ce",
      "tree": "f1695d9ec2298b726ff39f42aaf8d4fd3ade8487",
      "parents": [
        "aceaf78da92a53f5e1b105649a1b8c0afdb2135c"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Fri Feb 15 14:37:32 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 19 00:25:33 2008 -0400"
      },
      "message": "[PATCH] r/o bind mounts: drop write during emergency remount\n\nThe emergency remount code forcibly removes FMODE_WRITE from\nfilps.  The r/o bind mount code notices that this was done\nwithout a proper mnt_drop_write() and properly gives a\nwarning.\n\nThis patch does a mnt_drop_write() to keep everything\nbalanced.\n\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7ed7fe5e82c9fc8473974fbd7389d169b8f17c77",
      "tree": "ff6ff57c88c887133f1585473e7d74981d0dc88c",
      "parents": [
        "a4083c9271e0a697278e089f2c0b9a95363ada0a",
        "a02f76c34d7d6d30b63ac64a8b34dea68593e8da"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 25 08:57:47 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 25 08:57:47 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  [PATCH] get stack footprint of pathname resolution back to relative sanity\n  [PATCH] double iput() on failure exit in hugetlb\n  [PATCH] double dput() on failure exit in tiny-shmem\n  [PATCH] fix up new filp allocators\n  [PATCH] check for null vfsmount in dentry_open()\n  [PATCH] reiserfs: eliminate private use of struct file in xattr\n  [PATCH] sanitize hppfs\n  hppfs pass vfsmount to dentry_open()\n  [PATCH] restore export of do_kern_mount()\n"
    },
    {
      "commit": "a6b91919e0881a0d0a4ae5211d5c879a8c7ca92b",
      "tree": "148aabc0a92a297f9220174435e822f30c951215",
      "parents": [
        "5366dc9fd1cb74023790a8edf29e4fe42c886dcf"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:01:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:36 2008 -0700"
      },
      "message": "fs: fix kernel-doc notation warnings\n\nFix kernel-doc notation warnings in fs/.\n\nWarning(mmotm-2008-0314-1449//fs/super.c:560): missing initial short description on line:\n *\tmark_files_ro\nWarning(mmotm-2008-0314-1449//fs/locks.c:1277): missing initial short description on line:\n *\tlease_get_mtime\nWarning(mmotm-2008-0314-1449//fs/locks.c:1277): missing initial short description on line:\n *\tlease_get_mtime\nWarning(mmotm-2008-0314-1449//fs/namei.c:1368): missing initial short description on line:\n * lookup_one_len:  filesystem helper to lookup single pathname component\nWarning(mmotm-2008-0314-1449//fs/buffer.c:3221): missing initial short description on line:\n * bh_uptodate_or_lock: Test whether the buffer is uptodate\nWarning(mmotm-2008-0314-1449//fs/buffer.c:3240): missing initial short description on line:\n * bh_submit_read: Submit a locked buffer for reading\nWarning(mmotm-2008-0314-1449//fs/fs-writeback.c:30): missing initial short description on line:\n * writeback_acquire: attempt to get exclusive writeback access to a device\nWarning(mmotm-2008-0314-1449//fs/fs-writeback.c:47): missing initial short description on line:\n * writeback_in_progress: determine whether there is writeback in progress\nWarning(mmotm-2008-0314-1449//fs/fs-writeback.c:58): missing initial short description on line:\n * writeback_release: relinquish exclusive writeback access against a device.\nWarning(mmotm-2008-0314-1449//include/linux/jbd.h:351): contents before sections\nWarning(mmotm-2008-0314-1449//include/linux/jbd.h:561): contents before sections\nWarning(mmotm-2008-0314-1449//fs/jbd/transaction.c:1935): missing initial short description on line:\n * void journal_invalidatepage()\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a4e98d9d758d0eb751916e906fae40bda151b11",
      "tree": "c7d94a18308b55cb9de1837f839af7fdfb8b624e",
      "parents": [
        "bde4f8fa8db2abd5ac9c542d76012d0fedab050f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Feb 24 01:43:03 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 17 22:58:04 2008 -0400"
      },
      "message": "[PATCH] restore export of do_kern_mount()\n\nvfs_kern_mount() requires having a reference to fs type, which\nmakes it impossible for module to create procfs, etc. private\nmount.  Open-coding is not an option, since e.g. put_filesystem()\nis _not_ exported, and for a good reason.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e0007529893c1c064be90bd21422ca0da4a0198e",
      "tree": "c2334ba940e682183a18d18972cf95bd3a3da46a",
      "parents": [
        "29e8c3c304b62f31b799565c9ee85d42bd163f80"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Mar 05 10:31:54 2008 -0500"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Mar 06 08:40:53 2008 +1100"
      },
      "message": "LSM/SELinux: Interfaces to allow FS to control mount options\n\nIntroduce new LSM interfaces to allow an FS to deal with their own mount\noptions.  This includes a new string parsing function exported from the\nLSM that an FS can use to get a security data blob and a new security\ndata blob.  This is particularly useful for an FS which uses binary\nmount data, like NFS, which does not pass strings into the vfs to be\nhandled by the loaded LSM.  Also fix a BUG() in both SELinux and SMACK\nwhen dealing with binary mount data.  If the binary mount data is less\nthan one page the copy_page() in security_sb_copy_data() can cause an\nillegal page fault and boom.  Remove all NFSisms from the SELinux code\nsince they were broken by past NFS changes.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nAcked-by: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "66191dc622f5ff0a541524c4e96fdacfacfda206",
      "tree": "6bd6c7402d5f71f43c161e694d04c535ffc98b57",
      "parents": [
        "28ae094c625a9b719c01cf5ec45b8640e6911f53"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Feb 08 04:22:13 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:44 2008 -0800"
      },
      "message": "quota: turn quotas off when remounting read-only\n\nTurn off quotas before filesystem is remounted read only.  Otherwise quota\nwill try to write to read-only filesystem which does no good...  We could\nalso just refuse to remount ro when quota is enabled but turning quota off\nis consistent with what we do on umount.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b3b304a23a8f7ae4c40c7b512ee45afae0010a70",
      "tree": "04ada9ae35e912b6c3d56c0aefdc297216f2e0a5",
      "parents": [
        "f84e3f521e1449300e0fdc314b7b43b418a66dc3"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Feb 08 04:21:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:39 2008 -0800"
      },
      "message": "mount options: add generic_show_options()\n\nAdd a new s_options field to struct super_block.  Filesystems can save\nmount options passed to them in mount or remount.  It is automatically\nfreed when the superblock is destroyed.\n\nA new helper function, generic_show_options() is introduced, which uses\nthis field to display the mount options in /proc/mounts.\n\nAnother helper function, save_mount_options() may be used by\nfilesystems to save the options in the super block.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@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": "96de0e252cedffad61b3cb5e05662c591898e69a",
      "tree": "e3eb7d3e65ec27d39e1da13a17f6f0f91b28f5e9",
      "parents": [
        "3f5b98a2a0cba3351f96fcaa6d79aa1a0d93ee78"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@gmx.de",
        "time": "Fri Oct 19 23:21:04 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Oct 19 23:21:04 2007 +0200"
      },
      "message": "Convert files to UTF-8 and some cleanups\n\n* Convert files to UTF-8.\n\n  * Also correct some people\u0027s names\n    (one example is Eißfeldt, which was found in a source file.\n    Given that the author used an ß at all in a source file\n    indicates that the real name has in fact a \u0027ß\u0027 and not an \u0027ss\u0027,\n    which is commonly used as a substitute for \u0027ß\u0027 when limited to\n    7bit.)\n\n  * Correct town names (Goettingen -\u003e Göttingen)\n\n  * Update Eberhard Mönkeberg\u0027s address (http://lkml.org/lkml/2007/1/8/313)\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "3a4fa0a25da81600ea0bcd75692ae8ca6050d165",
      "tree": "a4de1662e645c029cf3cf58f0646cbb1959861dc",
      "parents": [
        "18735dd8d2d37031b97f9e9e106acbaed01eb896"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Fri Oct 19 23:10:43 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Oct 19 23:10:43 2007 +0200"
      },
      "message": "Fix misspellings of \"system\", \"controller\", \"interrupt\" and \"necessary\".\n\nFix the various misspellings of \"system\", controller\", \"interrupt\" and\n\"[un]necessary\".\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "8bf9725c29f2589237dd696d06a204230add0ba3",
      "tree": "abe1a29924a592808250121435dcd12789336e8a",
      "parents": [
        "2e4a707269a409950c3f315010c20f9719c594e2"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:38 2007 -0700"
      },
      "message": "pid namespaces: introduce MS_KERNMOUNT flag\n\nThis flag tells the .get_sb callback that this is a kern_mount() call so that\nit can trust *data pointer to be valid in-kernel one.  If this flag is passed\nfrom the user process, it is cleared since the *data pointer is not a valid\nkernel object.\n\nRunning a few steps forward - this will be needed for proc to create the\nsuperblock and store a valid pid namespace on it during the namespace\ncreation.  The reason, why the namespace cannot live without proc mount is\ndescribed in the appropriate patch.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d473012710b815741043942bc41945d444abab40",
      "tree": "2659d02d710659a30f8244aeaf7dc70fd3d259ed",
      "parents": [
        "b70c394099851c1398e9fd0fd64cf13ef2d093a1"
      ],
      "author": {
        "name": "Matthias Kaehlcke",
        "email": "matthias.kaehlcke@gmail.com",
        "time": "Thu Oct 18 23:39:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:38 2007 -0700"
      },
      "message": "fs/super.c: use list_for_each_entry() instead of list_for_each()\n\nfs/super.c: use list_for_each_entry() instead of list_for_each() in\nsget()\n\n[akpm@linux-foundation.org: clean up some crap while we\u0027re there]\nSigned-off-by: Matthias Kaehlcke \u003cmatthias.kaehlcke@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": "c18479fe017b9d3b65b7682f2b9e711389441186",
      "tree": "510d56a218d4542e337368276ada7e2c5482cee3",
      "parents": [
        "50899561aa15b9227009ae40e58852c32fc81944"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Oct 18 23:39:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:33 2007 -0700"
      },
      "message": "put declaration of put_filesystem() in fs.h\n\nDeclarations go into headers.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e0f4fc22ece8e593167eccbb1a4154565c11faa",
      "tree": "564ab2eabb31ab945c334706662854bb227f45e9",
      "parents": [
        "670e4def6ef5f44315d62748134e535b479c784f"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Tue Oct 16 23:30:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: fix periodic superblock dirty inode flushing\n\nCurrent -mm tree has bucketful of bug fixes in periodic writeback path.\nHowever, we still hit a glitch where dirty pages on a given inode aren\u0027t\ncompletely flushed to the disk, and system will accumulate large amount of\ndirty pages beyond what dirty_expire_interval is designed for.\n\nThe problem is __sync_single_inode() will move an inode to sb-\u003es_dirty list\neven when there are more pending dirty pages on that inode.  If there is\nanother inode with a small number of dirty pages, we hit a case where the loop\niteration in wb_kupdate() terminates prematurely because wbc.nr_to_write \u003e 0.\nThus leaving the inode that has large amount of dirty pages behind and it has\nto wait for another dirty_writeback_interval before we flush it again.  We\neffectively only write out MAX_WRITEBACK_PAGES every dirty_writeback_interval.\nIf the rate of dirtying is sufficiently high, the system will start\naccumulate a large number of dirty pages.\n\nSo fix it by having another sb-\u003es_more_io list on which to park the inode\nwhile we iterate through sb-\u003es_io and to allow each dirty inode which resides\non that sb to have an equal chance of flushing some amount of dirty pages.\n\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4c07bce796833401317519e44075889c5fd4d5f",
      "tree": "569448b0cc6e0eb1516e38c98bc770ad73308880",
      "parents": [
        "e73a75fa7f062b52d015f1c961685dcaac57f710"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Sun Jul 15 23:40:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:46 2007 -0700"
      },
      "message": "hugetlbfs: handle empty options string\n\nI was seeing a null pointer deref in fs/super.c:vfs_kern_mount().\nSome file system get_sb() handler was returning NULL mnt_sb with\na non-negative return value.  I also noticed a \"hugetlbfs: Bad\nmount option:\" message in the log.\n\nTurns out that hugetlbfs_parse_options() was not checking for an\nempty option string after call to strsep().  On failure,\nhugetlbfs_parse_options() returns 1.  hugetlbfs_fill_super() just\npassed this return code back up the call stack where\nvfs_kern_mount() missed the error and proceeded with a NULL mnt_sb.\n\nApparently introduced by patch:\n\thugetlbfs-use-lib-parser-fix-docs.patch\n\nThe problem was exposed by this line in my fstab:\n\nnone        /huge       hugetlbfs   defaults    0 0\n\nIt can also be demonstrated by invoking mount of hugetlbfs\ndirectly with no options or a bogus option.\n\nThis patch:\n\n1) adds the check for empty option to hugetlbfs_parse_options(),\n2) enhances the error message to bracket any unrecognized\n   option with quotes ,\n3) modifies hugetlbfs_parse_options() to return -EINVAL on any\n   unrecognized option,\n4) adds a BUG_ON() to vfs_kern_mount() to catch any get_sb()\n   handler that returns a NULL mnt-\u003emnt_sb with a return value\n   \u003e\u003d 0.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "79c0b2df79eb56fc71e54c75cd7fb3acf84370f9",
      "tree": "f19be816fef3565b7f9cc746786e29fee0ac62e6",
      "parents": [
        "880afc4d76af452267174b5989943f081c1db2c0"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 08 00:25:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:01 2007 -0700"
      },
      "message": "add filesystem subtype support\n\nThere\u0027s a slight problem with filesystem type representation in fuse\nbased filesystems.\n\nFrom the kernel\u0027s view, there are just two filesystem types: fuse and\nfuseblk.  From the user\u0027s view there are lots of different filesystem\ntypes.  The user is not even much concerned if the filesystem is fuse based\nor not.  So there\u0027s a conflict of interest in how this should be\nrepresented in fstab, mtab and /proc/mounts.\n\nThe current scheme is to encode the real filesystem type in the mount\nsource.  So an sshfs mount looks like this:\n\n  sshfs#user@server:/   /mnt/server    fuse   rw,nosuid,nodev,...\n\nThis url-ish syntax works OK for sshfs and similar filesystems.  However\nfor block device based filesystems (ntfs-3g, zfs) it doesn\u0027t work, since\nthe kernel expects the mount source to be a real device name.\n\nA possibly better scheme would be to encode the real type in the type\nfield as \"type.subtype\".  So fuse mounts would look like this:\n\n  /dev/hda1       /mnt/windows   fuseblk.ntfs-3g   rw,...\n  user@server:/   /mnt/server    fuse.sshfs        rw,nosuid,nodev,...\n\nThis patch adds the necessary code to the kernel so that this can be\ncorrectly displayed in /proc/mounts.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@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": "3106d46f51a1a72fdbf071ebc0800a9bcfcbc544",
      "tree": "bd2045da6a476e942b1bbb004c3065124e856464",
      "parents": [
        "2753133eb3321feb81dcb9c88141dd2aa5973ee1"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Apr 06 12:21:45 2007 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Apr 27 10:57:31 2007 -0700"
      },
      "message": "the overdue removal of the mount/umount uevents\n\nThis patch contains the overdue removal of the mount/umount uevents.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "ee9b6d61a2a43c5952eb43283f8db284a4e70b8a",
      "tree": "afb0340e79d3e9d14f39df20e165ce2efe941b18",
      "parents": [
        "c5ef1c42c51b1b5b4a401a6517bdda30933ddbaf"
      ],
      "author": {
        "name": "Josef \u0027Jeff\u0027 Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Mon Feb 12 00:55:41 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:47 2007 -0800"
      },
      "message": "[PATCH] Mark struct super_operations const\n\nThis patch is inspired by Arjan\u0027s \"Patch series to mark struct\nfile_operations and struct inode_operations const\".\n\nCompile tested with gcc \u0026 sparse.\n\nSigned-off-by: Josef \u0027Jeff\u0027 Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f73ca1b76c6880b934d3ef566c1592efc80bb759",
      "tree": "c9384ef5ff0ba68817858afdcc330e8707b11ec9",
      "parents": [
        "88bf7b391dca840f03fe25e4ff8fe6b4319fa07b"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Wed Jan 10 23:15:41 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Jan 11 18:18:21 2007 -0800"
      },
      "message": "[PATCH] Revert bd_mount_mutex back to a semaphore\n\nRevert bd_mount_mutex back to a semaphore so that xfs_freeze -f /mnt/newtest;\nxfs_freeze -u /mnt/newtest works safely and doesn\u0027t produce lockdep warnings.\n\n(XFS unlocks the semaphore from a different task, by design.  The mutex\ncode warns about this)\n\nSigned-off-by: Dave Chinner \u003cdgc@sgi.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0f7fc9e4d03987fe29f6dd4aa67e4c56eb7ecb05",
      "tree": "51763269e44eb9bf4d0f8c529577489902850cf9",
      "parents": [
        "b65d34fd465f19fbe2f32f2205a9a06ca7c2bdeb"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] VFS: change struct file to use struct path\n\nThis patch changes struct file to use struct path instead of having\nindependent pointers to struct dentry and struct vfsmount, and converts all\nusers of f_{dentry,vfsmnt} in fs/ to use f_path.{dentry,mnt}.\n\nAdditionally, it adds two #define\u0027s to make the transition easier for users of\nthe f_dentry and f_vfsmnt.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "914e26379decf1fd984b22e51fd2e4209b7a7f1b",
      "tree": "4f20ee40e959699e344cdff0e117d309d238f6be",
      "parents": [
        "f6a570333e554b48ad589e7137c77c57809eee81"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Oct 18 13:55:46 2006 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 04 02:00:24 2006 -0500"
      },
      "message": "[PATCH] severing fs.h, radix-tree.h -\u003e sched.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c636ebdb186bf37f98d3839f69293597723edb36",
      "tree": "db1d54d355cd8030bf5d1645ce6bac8842f32690",
      "parents": [
        "6ce315234aefcbc599dea390c15672156ebf9e7b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Oct 11 01:22:19 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:25 2006 -0700"
      },
      "message": "[PATCH] VFS: Destroy the dentries contributed by a superblock on unmounting\n\nThe attached patch destroys all the dentries attached to a superblock in one go\nby:\n\n (1) Destroying the tree rooted at s_root.\n\n (2) Destroying every entry in the anon list, one at a time.\n\n (3) Each entry in the anon list has its subtree consumed from the leaves\n     inwards.\n\nThis reduces the amount of work generic_shutdown_super() does, and avoids\niterating through the dentry_unused list.\n\nNote that locking is almost entirely absent in the shrink_dcache_for_umount*()\nfunctions added by this patch.  This is because:\n\n (1) at the point the filesystem calls generic_shutdown_super(), it is not\n     permitted to further touch the superblock\u0027s set of dentries, and nor may\n     it remove aliases from inodes;\n\n (2) the dcache memory shrinker now skips dentries that are being unmounted;\n     and\n\n (3) the superblock no longer has any external references through which the VFS\n     can reach it.\n\nGiven these points, the only locking we need to do is when we remove dentries\nfrom the unused list and the name hashes, which we do a directory\u0027s worth at a\ntime.\n\nWe also don\u0027t need to guard against reference counts going to zero unexpectedly\nand removing bits of the tree we\u0027re working on as nothing else can call dput().\n\nA cut down version of dentry_iput() has been folded into\nshrink_dcache_for_umount_subtree() function.  Apart from not needing to unlock\nthings, it also doesn\u0027t need to check for inotify watches.\n\nIn this version of the patch, the complaint about a dentry still being in use\nhas been expanded from a single BUG_ON() and now gives much more information.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9361401eb7619c033e2394e4f9f6d410d6719ac7",
      "tree": "04b94a71f2366988c17740d1c16cfbdec41d5d2e",
      "parents": [
        "d366e40a1cabd453be6e2609caa7e12f9ca17b1f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Sep 30 20:45:40 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:52:31 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Make it possible to disable the block layer [try #6]\n\nMake it possible to disable the block layer.  Not all embedded devices require\nit, some can make do with just JFFS2, NFS, ramfs, etc - none of which require\nthe block layer to be present.\n\nThis patch does the following:\n\n (*) Introduces CONFIG_BLOCK to disable the block layer, buffering and blockdev\n     support.\n\n (*) Adds dependencies on CONFIG_BLOCK to any configuration item that controls\n     an item that uses the block layer.  This includes:\n\n     (*) Block I/O tracing.\n\n     (*) Disk partition code.\n\n     (*) All filesystems that are block based, eg: Ext3, ReiserFS, ISOFS.\n\n     (*) The SCSI layer.  As far as I can tell, even SCSI chardevs use the\n     \t block layer to do scheduling.  Some drivers that use SCSI facilities -\n     \t such as USB storage - end up disabled indirectly from this.\n\n     (*) Various block-based device drivers, such as IDE and the old CDROM\n     \t drivers.\n\n     (*) MTD blockdev handling and FTL.\n\n     (*) JFFS - which uses set_bdev_super(), something it could avoid doing by\n     \t taking a leaf out of JFFS2\u0027s book.\n\n (*) Makes most of the contents of linux/blkdev.h, linux/buffer_head.h and\n     linux/elevator.h contingent on CONFIG_BLOCK being set.  sector_div() is,\n     however, still used in places, and so is still available.\n\n (*) Also made contingent are the contents of linux/mpage.h, linux/genhd.h and\n     parts of linux/fs.h.\n\n (*) Makes a number of files in fs/ contingent on CONFIG_BLOCK.\n\n (*) Makes mm/bounce.c (bounce buffering) contingent on CONFIG_BLOCK.\n\n (*) set_page_dirty() doesn\u0027t call __set_page_dirty_buffers() if CONFIG_BLOCK\n     is not enabled.\n\n (*) fs/no-block.c is created to hold out-of-line stubs and things that are\n     required when CONFIG_BLOCK is not set:\n\n     (*) Default blockdev file operations (to give error ENODEV on opening).\n\n (*) Makes some /proc changes:\n\n     (*) /proc/devices does not list any blockdevs.\n\n     (*) /proc/diskstats and /proc/partitions are contingent on CONFIG_BLOCK.\n\n (*) Makes some compat ioctl handling contingent on CONFIG_BLOCK.\n\n (*) If CONFIG_BLOCK is not defined, makes sys_quotactl() return -ENODEV if\n     given command other than Q_SYNC or if a special device is specified.\n\n (*) In init/do_mounts.c, no reference is made to the blockdev routines if\n     CONFIG_BLOCK is not defined.  This does not prohibit NFS roots or JFFS2.\n\n (*) The bdflush, ioprio_set and ioprio_get syscalls can now be absent (return\n     error ENOSYS by way of cond_syscall if so).\n\n (*) The seclvl_bd_claim() and seclvl_bd_release() security calls do nothing if\n     CONFIG_BLOCK is not set, since they can\u0027t then happen.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "cf9a2ae8d49948f861b56e5333530e491a9da190",
      "tree": "21f0b0d781b3e60cc60464d39b6d95681201b37e",
      "parents": [
        "4090959aee403817ff386415f9bc602c1a0882ef"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 29 19:05:54 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:31:19 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Move functions out of buffer code [try #6]\n\nMove some functions out of the buffering code that aren\u0027t strictly buffering\nspecific.  This is a precursor to being able to disable the block layer.\n\n (*) Moved some stuff out of fs/buffer.c:\n\n     (*) The file sync and general sync stuff moved to fs/sync.c.\n\n     (*) The superblock sync stuff moved to fs/super.c.\n\n     (*) do_invalidatepage() moved to mm/truncate.c.\n\n     (*) try_to_release_page() moved to mm/filemap.c.\n\n (*) Moved some related declarations between header files:\n\n     (*) declarations for do_invalidatepage() and try_to_release_page() moved\n     \t to linux/mm.h.\n\n     (*) __set_page_dirty_buffers() moved to linux/buffer_head.h.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "9c4dbee79d3f46608bec3ac80d392ce6415d2f90",
      "tree": "af5206a2db7a81a94460fb2b36a000006a0a149d",
      "parents": [
        "db0b0ead60815155c791e8f479ee4777e7946369"
      ],
      "author": {
        "name": "Josh Triplett",
        "email": "josht@us.ibm.com",
        "time": "Fri Sep 29 01:59:29 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:08 2006 -0700"
      },
      "message": "[PATCH] fs: add lock annotation to grab_super\n\ngrab_super gets called with sb_lock held, and releases it.  Add a lock\nannotation to this function so that sparse can check callers for lock\npairing, and so that sparse will not complain about this function since it\nintentionally uses the lock in this manner.\n\nSigned-off-by: Josh Triplett \u003cjosh@freedesktop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fe2bbc4832659b7ffc867cac03e0a92ae81e11e4",
      "tree": "9c0ece0fd67295acb4230d1f9da729db26a00a48",
      "parents": [
        "6dba28379edc08327ede01ff41bd3c9dd46a7fa0"
      ],
      "author": {
        "name": "Henrik Kretzschmar",
        "email": "henne@nachtwindheim.de",
        "time": "Wed Sep 06 00:03:41 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 06 11:00:01 2006 -0700"
      },
      "message": "[PATCH] add missing desctiption in super.c\n\nAdds kernel-doc for alloc_super() type in fs/super.c.\n\nSigned-off-by: Henrik Kretzschmar \u003chenne@nachtwindheim.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "897c6ff9568bcb102ffc6b465ebe1def0cba829d",
      "tree": "05e0ea4e39fd5b064bdcab351a468b1f3cb963d5",
      "parents": [
        "cf51624999e56c88154b5f7d451a265db6aabff7"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Mon Jul 03 00:25:28 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:09 2006 -0700"
      },
      "message": "[PATCH] lockdep: annotate sb -\u003es_umount\n\nThe s_umount rwsem needs to be classified as per-superblock since it\u0027s\nperfectly legit to keep multiple of those recursively in the VFS locking\nrules.\n\nHas no effect on non-lockdep kernels.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cf51624999e56c88154b5f7d451a265db6aabff7",
      "tree": "eee3fd290f9d79b26c4b6a2f1041f596da896a3c",
      "parents": [
        "91ebe2a9320db7195d1e25152b5d158fc66dc133"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:25:27 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:09 2006 -0700"
      },
      "message": "[PATCH] lockdep: annotate -\u003es_lock\n\nTeach special (per-filesystem) locking code to the lock validator.\n\nMinimal effect on non-lockdep kernels: one extra parameter to alloc_super().\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "816724e65c72a90a44fbad0ef0b59b186c85fa90",
      "tree": "421fa29aedff988e392f92780637553e275d37a0",
      "parents": [
        "70ac4385a13f78bc478f26d317511893741b05bd",
        "d384ea691fe4ea8c2dd5b9b8d9042eb181776f18"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 08:41:41 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:07:53 2006 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/\n\nConflicts:\n\n\tfs/nfs/inode.c\n\tfs/super.c\n\nFix conflicts between patch \u0027NFS: Split fs/nfs/inode.c\u0027 and patch\n\u0027VFS: Permit filesystem to override root dentry on mount\u0027\n"
    },
    {
      "commit": "726c334223180e3c0197cc980a432681370d4baf",
      "tree": "8327b354bb3dc959a6606051ae6f8d4d035e38a2",
      "parents": [
        "454e2398be9b9fa30433fccc548db34d19aa9958"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:02:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:45 2006 -0700"
      },
      "message": "[PATCH] VFS: Permit filesystem to perform statfs with a known root dentry\n\nGive the statfs superblock operation a dentry pointer rather than a superblock\npointer.\n\nThis complements the get_sb() patch.  That reduced the significance of\nsb-\u003es_root, allowing NFS to place a fake root there.  However, NFS does\nrequire a dentry to use as a target for the statfs operation.  This permits\nthe root in the vfsmount to be used instead.\n\nlinux/mount.h has been added where necessary to make allyesconfig build\nsuccessfully.\n\nInterest has also been expressed for use with the FUSE and XFS filesystems.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "454e2398be9b9fa30433fccc548db34d19aa9958",
      "tree": "1f61cb0c3716a33b661cfc8977e9beeb480a322c",
      "parents": [
        "1ad5544098a69d7dc1fa508cbb17e13a7a952fd8"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:02:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:45 2006 -0700"
      },
      "message": "[PATCH] VFS: Permit filesystem to override root dentry on mount\n\nExtend the get_sb() filesystem operation to take an extra argument that\npermits the VFS to pass in the target vfsmount that defines the mountpoint.\n\nThe filesystem is then required to manually set the superblock and root dentry\npointers.  For most filesystems, this should be done with simple_set_mnt()\nwhich will set the superblock pointer and then set the root dentry to the\nsuperblock\u0027s s_root (as per the old default behaviour).\n\nThe get_sb() op now returns an integer as there\u0027s now no need to return the\nsuperblock pointer.\n\nThis patch permits a superblock to be implicitly shared amongst several mount\npoints, such as can be done with NFS to avoid potential inode aliasing.  In\nsuch a case, simple_set_mnt() would not be called, and instead the mnt_root\nand mnt_sb would be set directly.\n\nThe patch also makes the following changes:\n\n (*) the get_sb_*() convenience functions in the core kernel now take a vfsmount\n     pointer argument and return an integer, so most filesystems have to change\n     very little.\n\n (*) If one of the convenience function is not used, then get_sb() should\n     normally call simple_set_mnt() to instantiate the vfsmount. This will\n     always return 0, and so can be tail-called from get_sb().\n\n (*) generic_shutdown_super() now calls shrink_dcache_sb() to clean up the\n     dcache upon superblock destruction rather than shrink_dcache_anon().\n\n     This is required because the superblock may now have multiple trees that\n     aren\u0027t actually bound to s_root, but that still need to be cleaned up. The\n     currently called functions assume that the whole tree is rooted at s_root,\n     and that anonymous dentries are not the roots of trees which results in\n     dentries being left unculled.\n\n     However, with the way NFS superblock sharing are currently set to be\n     implemented, these assumptions are violated: the root of the filesystem is\n     simply a dummy dentry and inode (the real inode for \u0027/\u0027 may well be\n     inaccessible), and all the vfsmounts are rooted on anonymous[*] dentries\n     with child trees.\n\n     [*] Anonymous until discovered from another tree.\n\n (*) The documentation has been adjusted, including the additional bit of\n     changing ext2_* into foo_* in the documentation.\n\n[akpm@osdl.org: convert ipath_fs, do other stuff]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0feae5c47aabdde59cbbec32d150e17102de37f0",
      "tree": "244f742d943a0516921180b840419fdc329075f0",
      "parents": [
        "de047c1bcd7f7bcfbdc29eb5b439fb332594da3f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 22 14:47:28 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jun 22 15:05:57 2006 -0700"
      },
      "message": "[PATCH] Fix dcache race during umount\n\nThe race is that the shrink_dcache_memory shrinker could get called while a\nfilesystem is being unmounted, and could try to prune a dentry belonging to\nthat filesystem.\n\nIf it does, then it will call in to iput on the inode while the dentry is\nno longer able to be found by the umounting process.  If iput takes a\nwhile, generic_shutdown_super could get all the way though\nshrink_dcache_parent and shrink_dcache_anon and invalidate_inodes without\never waiting on this particular inode.\n\nEventually the superblock gets freed anyway and if the iput tried to touch\nit (which some filesystems certainly do), it will lose.  The promised\n\"Self-destruct in 5 seconds\" doesn\u0027t lead to a nice day.\n\nThe race is closed by holding s_umount while calling prune_one_dentry on\nsomeone else\u0027s dentry.  As a down_read_trylock is used,\nshrink_dcache_memory will no longer try to prune the dentry of a filesystem\nthat is being unmounted, and unmount will not be able to start until any\nsuch active prune_one_dentry completes.\n\nThis requires that prune_dcache *knows* which filesystem (if any) it is\ndoing the prune on behalf of so that it can be careful of other\nfilesystems.  shrink_dcache_memory isn\u0027t called it on behalf of any\nfilesystem, and so is careful of everything.\n\nshrink_dcache_anon is now passed a super_block rather than the s_anon list\nout of the superblock, so it can get the s_anon list itself, and can pass\nthe superblock down to prune_dcache.\n\nIf prune_dcache finds a dentry that it cannot free, it leaves it where it\nis (at the tail of the list) and exits, on the assumption that some other\nthread will be removing that dentry soon.  To try to make sure that some\nwork gets done, a limited number of dnetries which are untouchable are\nskipped over while choosing the dentry to work on.\n\nI believe this race was first found by Kirill Korotaev.\n\nCc: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Olaf Hering \u003colh@suse.de\u003e\nAcked-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1f5ce9e93aa96a867f195ed45f6f77935175f12e",
      "tree": "caa9b6635990f69d47c1729524bd127e968b23f5",
      "parents": [
        "bb4a58bf46473e3e83d84054bbc110db3a0f85e4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:16 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:16 2006 -0400"
      },
      "message": "VFS: Unexport do_kern_mount() and clean up simple_pin_fs()\n\nReplace all module uses with the new vfs_kern_mount() interface, and fix up\nsimple_pin_fs().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bb4a58bf46473e3e83d84054bbc110db3a0f85e4",
      "tree": "41ee38709c36f86d565c1a3f311b8fa9546b3c8e",
      "parents": [
        "da6d503aa0a75ec44f17d985a2b500077e7f6a74"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:15 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:15 2006 -0400"
      },
      "message": "VFS: Add GPL_EXPORTED function vfs_kern_mount()\n\ndo_kern_mount() does not allow the kernel to use private mount interfaces\nwithout exposing the same interfaces to userland. The problem is that the\nfilesystem is referenced by name, thus meaning that it and its mount\ninterface must be registered in the global filesystem list.\n\nvfs_kern_mount() passes the struct file_system_type as an explicit\nparameter in order to overcome this limitation.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "353ab6e97b8f209dbecc9f650f1f84e3da2a7bb1",
      "tree": "bffabd9a5a493ffd2b41dd825e71e848ca6ba6d7",
      "parents": [
        "e655a250d5fc12b6dfe0d436180ba4a3bfffdc9f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Mar 26 01:37:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:56:55 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: fs/\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Eric Van Hensbergen \u003cericvh@ericvh.myip.org\u003e\nCc: Robert Love \u003crml@tech9.net\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "11b0b5abb2097a63c1081d9b7e825b987b227972",
      "tree": "162c828c8d807a1b30869acbe11682dc9222dc16",
      "parents": [
        "656bde5728b824ca23fcab8bc5800b309ea48d64"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "neukum@fachschaft.cup.uni-muenchen.de",
        "time": "Sat Mar 25 03:08:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:23:00 2006 -0800"
      },
      "message": "[PATCH] use kzalloc and kcalloc in core fs code\n\nSigned-off-by: Oliver Neukum \u003coliver@neukum.name\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9b04c997b1120feefa1e6ee8e2902270bc055cd2",
      "tree": "09376b68d11ccce2a1ef53bac25a41a763ad36d0",
      "parents": [
        "6961ec8267d08e21011457b05d2263ec06bdcfe1"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 24 03:15:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:15 2006 -0800"
      },
      "message": "[PATCH] vfs: MS_VERBOSE should be MS_SILENT\n\nThe meaning of MS_VERBOSE is backwards; if the bit is set, it really means,\n\"don\u0027t be verbose\".  This is confusing and counter-intuitive.\n\nIn addition, there is also no way to set the MS_VERBOSE flag in the\nmount(8) program in util-linux, but interesting, it does define options\nwhich would do the right thing if MS_SILENT were defined, which\nunfortunately we do not:\n\n#ifdef MS_SILENT\n  { \"quiet\",    0, 0, MS_SILENT    },   /* be quiet  */\n  { \"loud\",     0, 1, MS_SILENT    },   /* print out messages. */\n#endif\n\nSo the obvious fix is to deprecate the use of MS_VERBOSE and replace it\nwith MS_SILENT.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a11f3a0574a5734db3e5de38922430d005d35118",
      "tree": "2f332f623463c5909dc37d20cbf44421854f775a",
      "parents": [
        "144efe3e3e5ad57af549bf800fa4560d7c74e9fe"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Thu Mar 23 03:00:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 23 07:38:12 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: vfs_rename_mutex\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d3be915fc5e7d19a2283ad9b0fe0782a74675d0a",
      "tree": "e03647affdee4e72dbff4a5da55bcf32bfa65901",
      "parents": [
        "c039e3134ae62863bbc8e8429b29e3c43cf21b2a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 23 03:00:29 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 23 07:38:11 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: quota\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c039e3134ae62863bbc8e8429b29e3c43cf21b2a",
      "tree": "b9bbf4fda0844e3173bf10a5bffbaaec94fb4246",
      "parents": [
        "6f87f0deebaff2716a3ce9232f948d702690562a"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Thu Mar 23 03:00:28 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 23 07:38:11 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: blockdev #2\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fa675765afed59bb89adba3369094ebd428b930b",
      "tree": "777a8c1bb48ef7de39073104f974209f4a462b6f",
      "parents": [
        "b00dc3ad74fdb676552d46ee573b88e927240d0c"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Feb 22 09:39:02 2006 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Feb 22 09:39:02 2006 -0800"
      },
      "message": "Revert mount/umount uevent removal\n\nThis change reverts the 033b96fd30db52a710d97b06f87d16fc59fee0f1 commit\nfrom Kay Sievers that removed the mount/umount uevents from the kernel.\nSome older versions of HAL still depend on these events to detect when a\nnew device has been mounted.  These events are not correctly emitted,\nand are broken by design, and so, should not be relied upon by any\nfuture program.  Instead, the /proc/mounts file should be polled to\nproperly detect this kind of event.\n\nA feature-removal-schedule.txt entry has been added, noting when this\ninterface will be removed from the kernel.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "7b4fe29e00a5ab4e778bb24be86d836a25570bc9",
      "tree": "3bdde16b7bcaab953674c24f358c6346829995c8",
      "parents": [
        "1fcbf053e55e961112f237dc690129f0858156f1"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Tue Feb 07 12:58:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 07 16:12:33 2006 -0800"
      },
      "message": "[PATCH] More informative message on umount failure\n\nWe had a user trigger this message on a box that had a lot of different\nmounts, all with different options.  It might help narrow down wtf happened\nif we print out which device failed.\n\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7892f2f48d165a34b0b8130c8a195dfd807b8cb6",
      "tree": "592b29350c168aa5758700820ab22fb56e72a567",
      "parents": [
        "1b1dcc1b57a49136f118a0f16367256ff9994a69"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 09 15:59:25 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:25 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, sb-\u003es_lock\n\nThis patch converts the superblock-lock semaphore to a mutex, affecting\nlock_super()/unlock_super(). Tested on ext3 and XFS.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e78c9a004aadebe22306c81d1a7f1d1278dc37f9",
      "tree": "abbe82c7f8ce8d3059619c7941de14e585859aa4",
      "parents": [
        "90f2447d08a5fbddc8b58f8a6425b0513807f919"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Jan 08 01:03:39 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:59 2006 -0800"
      },
      "message": "[PATCH] fs: remove s_old_blocksize from struct super_block\n\nThis patch inlines the single user of struct super_block field\ns_old_blocksize and removes the field.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "033b96fd30db52a710d97b06f87d16fc59fee0f1",
      "tree": "00fbccf2cf478307e213f298a221e330f3ba12ae",
      "parents": [
        "0f76e5acf9dc788e664056dda1e461f0bec93948"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@suse.de",
        "time": "Fri Nov 11 06:09:55 2005 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 04 16:18:07 2006 -0800"
      },
      "message": "[PATCH] remove mount/umount uevents from superblock handling\n\nThe names of these events have been confusing from the beginning\non, as they have been more like claim/release events. We needed these\nevents for noticing HAL if storage devices have been mounted.\n\nThanks to Al, we have the proper solution now and can poll()\n/proc/mounts instead to get notfied about mount tree changes.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "7b7b1ace2d9d06d76bce7481a045c22ed75e35dd",
      "tree": "458f9f16b855ed0347013048c13d3a29031f00ee",
      "parents": [
        "254ce8dc882f8d69e5d49ed4807c94a61976fb15"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Nov 07 17:13:39 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 18:18:09 2005 -0800"
      },
      "message": "[PATCH] saner handling of auto_acct_off() and DQUOT_OFF() in umount\n\nThe way we currently deal with quota and process accounting that might\nkeep vfsmount busy at umount time is inherently broken; we try to turn\nthem off just in case (not quite correctly, at that) and\n\n  a) pray umount doesn\u0027t fail (otherwise they\u0027ll stay turned off)\n  b) pray nobody doesn anything funny just as we turn quota off\n\nMoreover, LSM provides hooks for doing the same sort of broken logics.\n\nThe proper way to deal with that is to introduce the second kind of\nreference to vfsmount.  Semantics:\n\n - when the last normal reference is dropped, all special ones are\n   converted to normal ones and if there had been any, cleanup is done.\n - normal reference can be cloned into a special one\n - special reference can be converted to normal one; that\u0027s a no-op if\n   we\u0027d already passed the point of no return (i.e.  mntput() had\n   converted special references to normal and started cleanup).\n\nThe way it works: e.g. starting process accounting converts the vfsmount\nreference pinned by the opened file into special one and turns it back\nto normal when it gets shut down; acct_auto_close() is done when no\nnormal references are left.  That way it does *not* obstruct umount(2)\nand it silently gets turned off when the last normal reference to\nvfsmount is gone.  Which is exactly what we want...\n\nThe same should be done by LSM module that holds some internal\nreferences to vfsmount and wants to shut them down on umount - it should\nmake them special and security_sb_umount_close() will be called exactly\nwhen the last normal reference to vfsmount is gone.\n\nquota handling is even simpler - we don\u0027t use normal file IO anymore, so\nthere\u0027s no need to hold vfsmounts at all.  DQUOT_OFF() is done from\ndeactivate_super(), where it really belongs.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ],
  "next": "233c1234d36cd6f0a38d524f0655c7eca27113e4"
}
