)]}'
{
  "log": [
    {
      "commit": "7045f37b17ffa6e85435ca980122b46a74caa7e4",
      "tree": "bdf7544b9d6412199c4dec1b4897822c9b6daeab",
      "parents": [
        "99acf0442111cc452ac1b93868dde8f6ff37a989"
      ],
      "author": {
        "name": "Martin Waitz",
        "email": "tali@admingilde.org",
        "time": "Wed Feb 01 03:06:57 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:27 2006 -0800"
      },
      "message": "[PATCH] DocBook: fix some kernel-doc comments in fs and block\n\nUpdate some parameter descriptions to actually match the code.\n\nSigned-off-by: Martin Waitz \u003ctali@admingilde.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fc33a7bb9c6dd8f6e4a014976200f8fdabb3a45c",
      "tree": "26f4d676de476075545e58057aa5d8c57618741d",
      "parents": [
        "0d456fa4261f43433287a10fe3ec04a9818fac64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jan 09 20:52:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:34 2006 -0800"
      },
      "message": "[PATCH] per-mountpoint noatime/nodiratime\n\nTurn noatime and nodiratime into per-mount instead of per-sb flags.\n\nAfter all the preparations this is a rather trivial patch.  The mount code\nneeds to treat the two options as per-mount instead of per-superblock, and\ntouch_atime needs to be changed to check the new MNT_ flags in addition to\nthe MS_ flags that are kept for filesystems that are always\nnoatime/nodiratime but not user settable anymore.  Besides that core code\nonly nfs needed an update because it\u0027s leaving atime updates to the server\nand thus sets the S_NOATIME flag on every inode, but needs to know whether\nit\u0027s a real noatime mount for an getattr optimization.\n\nWhile we\u0027re at it I\u0027ve killed the IS_NOATIME/IS_NODIRATIME macros that were\nonly used by touch_atime.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "869243a0f6143f76e7c847e707eee6ece9cbf821",
      "tree": "bf14139c86988c40aa10587834141859049ec890",
      "parents": [
        "9cf6f4b3a3d24d8a41515b509b8fb6448f9201e9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jan 09 20:52:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:31 2006 -0800"
      },
      "message": "[PATCH] remove update_atime\n\nAll callers use touch_atime now which takes a vfsmount and allows us to\nimplement per-mount noatime.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "870f481793b585323fbda3e87c54efc116f46351",
      "tree": "08dce269f14c18ae1b1682d3cb0f149b938d40bb",
      "parents": [
        "3542c6e18f6470bad2bde1e94331e4f488a8d3f1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jan 09 20:52:01 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:30 2006 -0800"
      },
      "message": "[PATCH] replace inode_update_time with file_update_time\n\nTo allow various options to work per-mount instead of per-sb we need a\nstruct vfsmount when updating ctime and mtime.  This preparation patch\nreplaces the inode_update_time routine with a file_update_atime routine so\nwe can easily get at the vfsmount.  (and the file makes more sense in this\ncontext anyway).  Also get rid of the unused second argument - we always\nwant to update the ctime when calling this routine.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5d2bea4582d20cb24085152acaa29b95c05cdcf8",
      "tree": "0ac4e47c8e97ecd3d76507c57ed4346c04a4dba1",
      "parents": [
        "b01ec0ef63e95570e2463b26333d9c9c854cb941"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Sun Jan 08 01:05:21 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:14:10 2006 -0800"
      },
      "message": "[PATCH] tiny: Uninline some inode.c functions\n\nuninline a couple inode.c functions\n\nadd/remove: 2/0 grow/shrink: 0/5 up/down: 256/-428 (-172)\nfunction                                     old     new   delta\nifind                                          -     136    +136\nifind_fast                                     -     120    +120\nilookup5_nowait                              131      80     -51\nilookup                                      158      71     -87\nilookup5                                     171      80     -91\niget_locked                                  190      95     -95\niget5_locked                                 240     136    -104\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7f04c26d715a2467a49a2384268de8f70f787b51",
      "tree": "8507e9f705f063d996857789261b762b24fad94f",
      "parents": [
        "52303e8b5f8aa234865d40d76ea16b0ff4b27022"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@suse.de",
        "time": "Sun Oct 30 15:03:05 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:26 2005 -0800"
      },
      "message": "[PATCH] fix nr_unused accounting, and avoid recursing in iput with I_WILL_FREE set\n\n \t\t\tlist_move(\u0026inode-\u003ei_list, \u0026inode_in_use);\n \t\t} else {\n \t\t\tlist_move(\u0026inode-\u003ei_list, \u0026inode_unused);\n+\t\t\tinodes_stat.nr_unused++;\n \t\t}\n \t}\n \twake_up_inode(inode);\n\nAre you sure the above diff is correct? It was added somewhere between\n2.6.5 and 2.6.8. I think it\u0027s wrong.\n\nThe only way I can imagine the i_count to be zero in the above path, is\nthat I_WILL_FREE is set.  And if I_WILL_FREE is set, then we must not\nincrease nr_unused.  So I believe the above change is buggy and it will\ndefinitely overstate the number of unused inodes and it should be backed\nout.\n\nNote that __writeback_single_inode before calling __sync_single_inode, can\ndrop the spinlock and we can have both the dirty and locked bitflags clear\nhere:\n\n\t\tspin_unlock(\u0026inode_lock);\n\t\t__wait_on_inode(inode);\n\t\tiput(inode);\nXXXXXXX\n\t\tspin_lock(\u0026inode_lock);\n\t}\n\tuse inode again here\n\na construct like the above makes zero sense from a reference counting\nstandpoint.\n\nEither we don\u0027t ever use the inode again after the iput, or the\ninode_lock should be taken _before_ executing the iput (i.e. a __iput\nwould be required). Taking the inode_lock after iput means the iget was\nuseless if we keep using the inode after the iput.\n\nSo the only chance the 2.6 was safe to call __writeback_single_inode\nwith the i_count \u003d\u003d 0, is that I_WILL_FREE is set (I_WILL_FREE will\nprevent the VM to free the inode in XXXXX).\n\nPotentially calling the above iput with I_WILL_FREE was also wrong\nbecause it would recurse in iput_final (the second mainline bug).\n\nThe below (untested) patch fixes the nr_unused accounting, avoids recursing\nin iput when I_WILL_FREE is set and makes sure (with the BUG_ON) that we\ndon\u0027t corrupt memory and that all holders that don\u0027t set I_WILL_FREE, keeps\na reference on the inode!\n\nSigned-off-by: Andrea Arcangeli \u003candrea@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "27496a8c67bef4d789d8e3c8317ca35813a507ae",
      "tree": "fe99a34fe5a800e41af61853e7444ddddf45d014",
      "parents": [
        "7d877f3bda870ab5f001bd92528654471d5966b3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 21 03:20:48 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 28 08:16:47 2005 -0700"
      },
      "message": "[PATCH] gfp_t: fs/*\n\n - -\u003ereleasepage() annotated (s/int/gfp_t), instances updated\n - missing gfp_t in fs/* added\n - fixed misannotation from the original sweep caught by bitwise checks:\n   XFS used __nocast both for gfp_t and for flags used by XFS allocator.\n   The latter left with unsigned int __nocast; we might want to add a\n   different type for those but for now let\u0027s leave them alone.  That,\n   BTW, is a case when __nocast use had been actively confusing - it had\n   been used in the same code for two different and similar types, with\n   no way to catch misuses.  Switch of gfp_t to bitwise had caught that\n   immediately...\n\nOne tricky bit is left alone to be dealt with later - mapping-\u003eflags is\na mix of gfp_t and error indications.  Left alone for now.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e85b565233236a2a833adea73fb2f0e0f8fa2a61",
      "tree": "44c7cabcdc62b67b1acc89d74422ddf2af74d114",
      "parents": [
        "7f6fd5db2dbc28d475d67f9a6b041fefe1d6f7c8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Sep 09 13:01:29 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 13:57:26 2005 -0700"
      },
      "message": "[PATCH] move truncate_inode_pages() into -\u003edelete_inode()\n\nAllow file systems supporting -\u003edelete_inode() to call\ntruncate_inode_pages() on their own.  OCFS2 wants this so it can query the\ncluster before making a final decision on whether to wipe an inode from\ndisk or not.  In some corner cases an inode marked on the local node via\nvoting may not actually get orphaned.  A good example is node death before\nthe transaction moving the inode to the orphan dir commits to the journal.\nWithout this patch, the truncate_inode_pages() call in\ngeneric_delete_inode() would discard valid data for such inodes.\n\nDuring earlier discussion in the 2.6.13 merge plan thread, Christoph\nHellwig indicated that other file systems might also find this useful.\n\nIMHO, the best solution would be to just allow -\u003edrop_inode() to do the\ncluster query but it seems that would require a substantial reworking of\nthat section of the code.  Assuming it is safe to call write_inode_now() in\nocfs2_delete_inode() for those inodes which won\u0027t actually get wiped, this\nsolution should get us by for now.\n\nTrivial testing of this patch (and a related OCFS2 update) has shown this\nto avoid the corruption I\u0027m seeing.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5acd57936c3224fd86e838201e528e0169373e9b",
      "tree": "17ffd8eb4222ac954d9f82c7450f52dfae73fe71",
      "parents": [
        "6c9c0b52b8c6b68b05bb06efd7079a8fc5e9ba60"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Sep 06 15:17:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:31 2005 -0700"
      },
      "message": "[PATCH] fs: remove redundant timespec_equal test in update_atime()\n\nIn update_atime(), timespec_equal() test is done twice in succession and\nthe second is always false.  This patch removes the second test.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "88bd5121d635136e01369141367f315665534b3c",
      "tree": "33de8dda3d77ebf7bf48864c464a36665f66497c",
      "parents": [
        "9a556e89081b0c1c2f83cee915363b15a68a6f2d"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cam.ac.uk",
        "time": "Wed Jul 13 01:10:44 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jul 13 11:25:24 2005 -0700"
      },
      "message": "[PATCH] Fix soft lockup due to NTFS: VFS part and explanation\n\nSomething has changed in the core kernel such that we now get concurrent\ninode write outs, one e.g via pdflush and one via sys_sync or whatever.\nThis causes a nasty deadlock in ntfs.  The only clean solution\nunfortunately requires a minor vfs api extension.\n\nFirst the deadlock analysis:\n\nPrerequisive knowledge: NTFS has a file $MFT (inode 0) loaded at mount\ntime.  The NTFS driver uses the page cache for storing the file contents as\nusual.  More interestingly this file contains the table of on-disk inodes\nas a sequence of MFT_RECORDs.  Thus NTFS driver accesses the on-disk inodes\nby accessing the MFT_RECORDs in the page cache pages of the loaded inode\n$MFT.\n\nThe situation: VFS inode X on a mounted ntfs volume is dirty.  For same\ninode X, the ntfs_inode is dirty and thus corresponding on-disk inode,\nwhich is as explained above in a dirty PAGE_CACHE_PAGE belonging to the\ntable of inodes ($MFT, inode 0).\n\nWhat happens:\n\nProcess 1: sys_sync()/umount()/whatever...  calls __sync_single_inode() for\n$MFT -\u003e do_writepages() -\u003e write_page for the dirty page containing the\non-disk inode X, the page is now locked -\u003e ntfs_write_mst_block() which\nclears PageUptodate() on the page to prevent anyone else getting hold of it\nwhilst it does the write out (this is necessary as the on-disk inode needs\n\"fixups\" applied before the write to disk which are removed again after the\nwrite and PageUptodate is then set again).  It then analyses the page\nlooking for dirty on-disk inodes and when it finds one it calls\nntfs_may_write_mft_record() to see if it is safe to write this on-disk\ninode.  This then calls ilookup5() to check if the corresponding VFS inode\nis in icache().  This in turn calls ifind() which waits on the inode lock\nvia wait_on_inode whilst holding the global inode_lock.\n\nProcess 2: pdflush results in a call to __sync_single_inode for the same\nVFS inode X on the ntfs volume.  This locks the inode (I_LOCK) then calls\nwrite-inode -\u003e ntfs_write_inode -\u003e map_mft_record() -\u003e read_cache_page() of\nthe page (in page cache of table of inodes $MFT, inode 0) containing the\non-disk inode.  This page has PageUptodate() clear because of Process 1\n(see above) so read_cache_page() blocks when tries to take the page lock\nfor the page so it can call ntfs_read_page().\n\nThus Process 1 is holding the page lock on the page containing the on-disk\ninode X and it is waiting on the inode X to be unlocked in ifind() so it\ncan write the page out and then unlock the page.\n\nAnd Process 2 is holding the inode lock on inode X and is waiting for the\npage to be unlocked so it can call ntfs_readpage() or discover that\nProcess 1 set PageUptodate() again and use the page.\n\nThus we have a deadlock due to ifind() waiting on the inode lock.\n\nThe only sensible solution: NTFS does not care whether the VFS inode is\nlocked or not when it calls ilookup5() (it doesn\u0027t use the VFS inode at\nall, it just uses it to find the corresponding ntfs_inode which is of\ncourse attached to the VFS inode (both are one single struct); and it uses\nthe ntfs_inode which is subject to its own locking so I_LOCK is irrelevant)\nhence we want a modified ilookup5_nowait() which is the same as ilookup5()\nbut it does not wait on the inode lock.\n\nWithout such functionality I would have to keep my own ntfs_inode cache in\nthe NTFS driver just so I can find ntfs_inodes independent of their VFS\ninodes which would be slow, memory and cpu cycle wasting, and incredibly\nstupid given the icache already exists in the VFS.\n\nBelow is a patch that does the ilookup5_nowait() implementation in\nfs/inode.c and exports it.\n\nilookup5_nowait.diff:\n\nIntroduce ilookup5_nowait() which is basically the same as ilookup5() but\nit does not wait on the inode\u0027s lock (i.e. it omits the wait_on_inode()\ndone in ifind()).\n\nThis is needed to avoid a nasty deadlock in NTFS.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0eeca28300df110bd6ed54b31193c83b87921443",
      "tree": "7db42d8a18d80eca538f5b7d25e0532b8fa38b85",
      "parents": [
        "bd4c625c061c2a38568d0add3478f59172455159"
      ],
      "author": {
        "name": "Robert Love",
        "email": "rml@novell.com",
        "time": "Tue Jul 12 17:06:03 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 20:38:38 2005 -0700"
      },
      "message": "[PATCH] inotify\n\ninotify is intended to correct the deficiencies of dnotify, particularly\nits inability to scale and its terrible user interface:\n\n        * dnotify requires the opening of one fd per each directory\n          that you intend to watch. This quickly results in too many\n          open files and pins removable media, preventing unmount.\n        * dnotify is directory-based. You only learn about changes to\n          directories. Sure, a change to a file in a directory affects\n          the directory, but you are then forced to keep a cache of\n          stat structures.\n        * dnotify\u0027s interface to user-space is awful.  Signals?\n\ninotify provides a more usable, simple, powerful solution to file change\nnotification:\n\n        * inotify\u0027s interface is a system call that returns a fd, not SIGIO.\n\t  You get a single fd, which is select()-able.\n        * inotify has an event that says \"the filesystem that the item\n          you were watching is on was unmounted.\"\n        * inotify can watch directories or files.\n\nInotify is currently used by Beagle (a desktop search infrastructure),\nGamin (a FAM replacement), and other projects.\n\nSee Documentation/filesystems/inotify.txt.\n\nSigned-off-by: Robert Love \u003crml@novell.com\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\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": "4120db47198d21d8cd3b2cdbbe1ea6118a50bcd4",
      "tree": "b4e0b69dbf3d2da69aa49423227a1da6036e9566",
      "parents": [
        "168a9fd6a1bf91041adf9909f6c72cf747f0ca8c"
      ],
      "author": {
        "name": "Artem B. Bityuckiy",
        "email": "dedekind@infradead.org",
        "time": "Tue Jul 12 13:58:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 16:00:59 2005 -0700"
      },
      "message": "[PATCH] bugfix: two read_inode() calls without clear_inode() call between\n\nBug symptoms\n~~~~~~~~~~~~\nFor the same inode VFS calls read_inode() twice and doesn\u0027t call\nclear_inode() between the two read_inode() invocations.\n\nBug description\n~~~~~~~~~~~~~~~\nSuppose we have an inode which has zero reference count but is still in\nthe inode cache. Suppose kswapd invokes shrink_icache_memory() to free\nsome RAM. In prune_icache() inodes are removed from i_hash. prune_icache\n() is then going to call clear_inode(), but drops the inode_lock\nspinlock before this. If in this moment another task calls iget() for an\ninode which was just removed from i_hash by prune_icache(), then iget()\ninvokes read_inode() for this inode, because it is *already removed*\nfrom i_hash.\n\nThe end result is: we call iget(#N) then iput(#N); inode #N has zero\ni_count now and is in the inode cache; kswapd starts. kswapd removes the\ninode #N from i_hash ans is preempted; we call iget(#N) again;\nread_inode() is invoked as the result; but we expect clear_inode()\nbefore.\n\nFix\n~~~~~~~\nTo fix the bug I remove inodes from i_hash later, when clear_inode() is\nactually called. I remove them from i_hash under spinlock protection.\nSince the i_state is set to I_FREEING, it is safe to do this. The others\nwill sleep waiting for the inode state change.\n\nI also postpone removing inodes from i_sb_list. It is not compulsory to\ndo so but I do it for readability reasons. Inodes are added/removed to\nthe lists together everywhere in the code and there is no point to\nchange this rule. This is harmless because the only user of i_sb_list\nwhich somehow may interfere with me (invalidate_list()) is excluded by\nthe iprune_sem mutex.\n\nThe same race is possible in invalidate_list() so I do the same for it.\n\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "168a9fd6a1bf91041adf9909f6c72cf747f0ca8c",
      "tree": "65b4dc843f34f0837b10f4fbbc1763f5aae87b7b",
      "parents": [
        "3b6bfcdb116f2cc2cab921fcac6d39d4022952d2"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Jul 12 13:58:10 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 16:00:59 2005 -0700"
      },
      "message": "[PATCH] __wait_on_freeing_inode fix\n\nThis patch fixes queer behavior in __wait_on_freeing_inode().\n\nIf I_LOCK was not set it called yield(), effectively busy waiting for the\nremoval of the inode from the hash.  This change was introduced within\n\"[PATCH] eliminate inode waitqueue hashtable\" Changeset 1.1938.166.16 last\noctober by wli.\n\nThe solution is to restore the old behavior, of unconditionally waiting on\nthe waitqueue.  It doesn\u0027t matter if I_LOCK is not set initally, the task\nwill go to sleep, and wake up when wake_up_inode() is called from\ngeneric_delete_inode() after removing the inode from the hash chain.\n\nComment is also updated to better reflect current behavior.\n\nThis condition is very hard to trigger normally (simultaneous clear_inode()\nwith iget()) so probably only heavy stress testing can reveal any change of\nbehavior.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cb2c0233755429037462e16ea0d5497a0092738c",
      "tree": "49c5d19090986c71b59dd2fb4c57b1e1ae33062d",
      "parents": [
        "ca3f5a95b7d04eef0f88464f8d3299c1c01e8e13"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Jul 07 17:56:03 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jul 07 18:23:35 2005 -0700"
      },
      "message": "[PATCH] export generic_drop_inode() to modules\n\nOCFS2 wants to mark an inode which has been orphaned by another node so\nthat during final iput it takes the correct path through the VFS and can\npass through the OCFS2 delete_inode callback.  Since i_nlink can get out of\ndate with other nodes, the best way I see to accomplish this is by clearing\ni_nlink on those inodes at drop_inode time.  Other than this small amount\nof work, nothing different needs to happen, so I think it would be cleanest\nto be able to just call generic_drop_inode at the end of the OCFS2\ndrop_inode callback.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "991114c6fa6a21d1fa4d544abe78592352860c82",
      "tree": "cc81f871756a70a3312552409ee5cacd6625aa1d",
      "parents": [
        "f972be33ce6a08b5f096ba013c7459a3a82f5f39"
      ],
      "author": {
        "name": "Alexander Viro",
        "email": "aviro@redhat.com",
        "time": "Thu Jun 23 00:09:01 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:17 2005 -0700"
      },
      "message": "[PATCH] fix for prune_icache()/forced final iput() races\n\nBased on analysis and a patch from Russ Weight \u003crweight@us.ibm.com\u003e\n\nThere is a race condition that can occur if an inode is allocated and then\nreleased (using iput) during the -\u003efill_super functions.  The race\ncondition is between kswapd and mount.\n\nFor most filesystems this can only happen in an error path when kswapd is\nrunning concurrently.  For isofs, however, the error can occur in a more\ncommon code path (which is how the bug was found).\n\nThe logic here is \"we want final iput() to free inode *now* instead of\nletting it sit in cache if fs is going down or had not quite come up\".  The\nproblem is with kswapd seeing such inodes in the middle of being killed and\nhappily taking over.\n\nThe clean solution would be to tell kswapd to leave those inodes alone and\nlet our final iput deal with them.  I.e.  add a new flag\n(I_FORCED_FREEING), set it before write_inode_now() there and make\nprune_icache() leave those alone.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2ef41634def0fcb0def3e3c90220c651ca478cb3",
      "tree": "86fb9c439ad5043d38d69588975e84bd8b565619",
      "parents": [
        "91bb52416854dfd581efe6e2a0aca8dc655f043e"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu May 05 16:15:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:44 2005 -0700"
      },
      "message": "[PATCH] remove do_sync parameter from __invalidate_device\n\nThe only caller that ever sets it can call fsync_bdev itself easily.  Also\nupdate some comments.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003cviro@parcelfarce.linux.theplanet.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e422fd2c965ad1b0e4eadaabd0adb77e8a93e74e",
      "tree": "a29a10773141fb0da142abb45ac618f2913f981d",
      "parents": [
        "f48d9663f19afb88ac0e45b825da523180f1f9c0"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@suse.de",
        "time": "Thu May 05 16:15:04 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:30 2005 -0700"
      },
      "message": "[PATCH] avoid -ENOMEM due reclaimable slab caches\n\nThis makes sure that reclaimable buffer headers and reclaimable inodes\nare accounted properly during the overcommit checks.\n\nSigned-off-by: Andrea Arcangeli \u003candrea@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
