)]}'
{
  "log": [
    {
      "commit": "bfab36e81611e60573b84eb4e4b4c8d8545b2320",
      "tree": "acd151a4c85459dcd2f6575ceb385090ebaaf984",
      "parents": [
        "f26e51f67ae6a75ffc57b96cf5fe096f75e778cb"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cam.ac.uk",
        "time": "Fri Oct 12 09:37:15 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 12 09:16:30 2007 -0700"
      },
      "message": "NTFS: Fix a mount time deadlock.\n\nBig thanks go to Mathias Kolehmainen for reporting the bug, providing\ndebug output and testing the patches I sent him to get it working.\n\nThe fix was to stop calling ntfs_attr_set() at mount time as that causes\nbalance_dirty_pages_ratelimited() to be called which on systems with\nlittle memory actually tries to go and balance the dirty pages which tries\nto take the s_umount semaphore but because we are still in fill_super()\nacross which the VFS holds s_umount for writing this results in a\ndeadlock.\n\nWe now do the dirty work by hand by submitting individual buffers.  This\nhas the annoying \"feature\" that mounting can take a few seconds if the\njournal is large as we have clear it all.  One day someone should improve\non this by deferring the journal clearing to a helper kernel thread so it\ncan be done in the background but I don\u0027t have time for this at the moment\nand the current solution works fine so I am leaving it like this for now.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a982ac06b069f6ee9ea1b64f4ce68cdf2e138742",
      "tree": "fb120a416db15d09722e8780b7a09d0da1a9b94e",
      "parents": [
        "148e423f909e14564d8af13239c5d060f7df273e"
      ],
      "author": {
        "name": "Matt LaPlante",
        "email": "kernel1@cyberdogtech.com",
        "time": "Wed May 09 07:35:06 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 08:58:15 2007 +0200"
      },
      "message": "misc doc and kconfig typos\n\nFix various typos in kernel docs and Kconfigs, 2.6.21-rc4.\n\nSigned-off-by: Matt LaPlante \u003ckernel1@cyberdogtech.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "8331191e56802f0155772a3d56bc2a750acc38e1",
      "tree": "556f3b8f395d7c66b9eca9d35309644b9f1c027d",
      "parents": [
        "a8b3485287731978899ced11f24628c927890e78"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Thu Jan 18 09:42:48 2007 +0000"
      },
      "committer": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Thu Jan 18 09:42:48 2007 +0000"
      },
      "message": "NTFS: 2.1.28 - Fix deadlock reported by Sergey Vlasov due to ntfs_put_inode().\n\n- Fix deadlock in fs/ntfs/inode.c::ntfs_put_inode().  Thanks to Sergey\n  Vlasov for the report and detailed analysis of the deadlock.  The fix\n  involved getting rid of ntfs_put_inode() altogether and hence NTFS no\n  longer has a -\u003eput_inode super operation.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\n"
    },
    {
      "commit": "5d3f083d8f897ce2560bbd4dace483d5aa60d623",
      "tree": "2883a9a22171cb4d96518a8e02963762e8c1f50b",
      "parents": [
        "4ae0edc21b152c126e4a8c94ad5391f8ea051b31"
      ],
      "author": {
        "name": "Matt LaPlante",
        "email": "kernel1@cyberdogtech.com",
        "time": "Thu Nov 30 05:21:10 2006 +0100"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Nov 30 05:21:10 2006 +0100"
      },
      "message": "Fix typos in /Documentation : Misc\n\nThis patch fixes typos in various Documentation txts. The patch addresses some\nmisc words.\n\nSigned-off-by: Matt LaPlante \u003ckernel1@cyberdogtech.com\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "fa00e7e152690adc17fdc318e64909d4aff1763e",
      "tree": "8d22553cc2ff2505a8973b3b7a37c718cac8926b",
      "parents": [
        "98c4f0c336afe4318c12397bc74910d86ee036a2"
      ],
      "author": {
        "name": "Matt LaPlante",
        "email": "kernel1@cyberdogtech.com",
        "time": "Thu Nov 30 04:55:36 2006 +0100"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Nov 30 04:55:36 2006 +0100"
      },
      "message": "Fix typos in /Documentation : \u0027T\u0027\u0027\n\nThis patch fixes typos in various Documentation txts. The patch addresses some\n+words starting with the letter \u0027T\u0027.\n\nSigned-off-by: Matt LaPlante \u003ckernel1@cyberdogtech.com\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "2fe0ae78c6975d6fa2fc0c84f2b8944543054105",
      "tree": "005a185c1043f5b99f4cd851ad071d6e95025064",
      "parents": [
        "a2ffd2751683f4275d4d1aa5ce37e5a6a1ae21df"
      ],
      "author": {
        "name": "Matt LaPlante",
        "email": "kernel1@cyberdogtech.com",
        "time": "Tue Oct 03 22:50:39 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Oct 03 22:50:39 2006 +0200"
      },
      "message": "Fix typos in Documentation/: \u0027H\u0027-\u0027M\u0027\n\nThis patch fixes typos in various Documentation txts. The patch addresses\nsome words starting with the letters \u0027H\u0027-\u0027M\u0027.\n\nSigned-off-by: Matt LaPlante \u003ckernel1@cyberdogtech.com\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "fff9289b219f48cb2296714fea3d71f516991f9f",
      "tree": "47f597d038f7304ac32066c263c289135a52b0c6",
      "parents": [
        "6c28f2c0f2054865d82b5a6b2164eac956f15c94"
      ],
      "author": {
        "name": "Matt LaPlante",
        "email": "kernel1@cyberdogtech.com",
        "time": "Tue Oct 03 22:47:42 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Oct 03 22:47:42 2006 +0200"
      },
      "message": "Fix typos in Documentation/: \u0027D\u0027-\u0027E\u0027\n\nThis patch fixes typos in various Documentation txts. This patch addresses\nsome words starting with the letters \u0027D\u0027-\u0027E\u0027.\n\nSigned-off-by: Matt LaPlante \u003ckernel1@cyberdogtech.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "e750d1c7cc314b9ba1934b0b474b7d39f906f865",
      "tree": "2000783b74940454825f33f9fe6446c1321d3ce4",
      "parents": [
        "4e5e529ad684f1b3fba957f5dd4eb7c2b534ee92"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Thu Mar 23 17:04:12 2006 +0000"
      },
      "committer": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Thu Mar 23 17:04:12 2006 +0000"
      },
      "message": "NTFS: 2.1.27 - Various bug fixes and cleanups.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\n"
    },
    {
      "commit": "1cf3109ffb26a6ea572fd02436bd10458b4b2187",
      "tree": "446f6e1c2160565f8dd1bf4da0e211c00fcce284",
      "parents": [
        "78af34f03d33d2ba179c9d35685860170b94a285"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Fri Feb 24 10:48:14 2006 +0000"
      },
      "committer": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Fri Feb 24 10:48:14 2006 +0000"
      },
      "message": "NTFS: Do more detailed reporting of why we cannot mount read-write by\n     special casing the VOLUME_MODIFIED_BY_CHKDSK flag.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\n"
    },
    {
      "commit": "98b270362bb9ea6629732e7f5b65b8a6ce4743c7",
      "tree": "2ca1f46a426628a16cc8cef2a4d4fba657d7ac1f",
      "parents": [
        "29f5f3c141c58b0a4c0765c77da612271875bcce"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Tue Oct 11 15:40:40 2005 +0100"
      },
      "committer": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Tue Oct 11 15:40:40 2005 +0100"
      },
      "message": "NTFS: The big ntfs write(2) rewrite has arrived.  We now implement our own\n      file operations -\u003ewrite(), -\u003eaio_write(), and -\u003ewritev() for regular\n      files.  This replaces the old use of generic_file_write(), et al and\n      the address space operations -\u003eprepare_write and -\u003ecommit_write.\n      This means that both sparse and non-sparse (unencrypted and\n      uncompressed) files can now be extended using the normal write(2)\n      code path.  There are two limitations at present and these are that\n      we never create sparse files and that we only have limited support\n      for highly fragmented files, i.e. ones whose data attribute is split\n      across multiple extents.   When such a case is encountered,\n      EOPNOTSUPP is returned.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\n"
    },
    {
      "commit": "7d333d6c739a5cd6d60102ea1a9940cbbb0546ec",
      "tree": "aa8563971adea0f7b2bdb91cda07057e2a85722e",
      "parents": [
        "e604635c8bea16f6177e6133eb3efbfb4a029ef6"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Thu Sep 08 23:01:16 2005 +0100"
      },
      "committer": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Thu Sep 08 23:01:16 2005 +0100"
      },
      "message": "NTFS: 2.1.24 release and some minor final fixes.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\n"
    },
    {
      "commit": "ba6d2377c85c9b8a793f455d8c9b6cf31985d70f",
      "tree": "21e65c76db693869c84864af02e91c4b997a6ba5",
      "parents": [
        "af859a42d798f047fbfe198ed315a942662c39d2"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Sun Jun 26 22:12:02 2005 +0100"
      },
      "committer": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Sun Jun 26 22:12:02 2005 +0100"
      },
      "message": "NTFS: Fix a nasty deadlock that appeared in recent kernels.\n      The situation: VFS inode X on a mounted ntfs volume is dirty.  For\n      same inode X, the ntfs_inode is dirty and thus corresponding on-disk\n      inode, i.e. mft record, which is in a dirty PAGE_CACHE_PAGE belonging\n      to the table of inodes, i.e. $MFT, inode 0.\n      What happens:\n      Process 1: sys_sync()/umount()/whatever...  calls\n      __sync_single_inode() for $MFT -\u003e do_writepages() -\u003e write_page for\n      the dirty page containing the on-disk inode X, the page is now locked\n      -\u003e ntfs_write_mst_block() which clears PageUptodate() on the page to\n      prevent anyone else getting hold of it whilst it does the write out.\n      This is necessary as the on-disk inode needs \"fixups\" applied before\n      the write to disk which are removed again after the write and\n      PageUptodate is then set again.  It then analyses the page looking\n      for dirty on-disk inodes and when it finds one it calls\n      ntfs_may_write_mft_record() to see if it is safe to write this\n      on-disk inode.  This then calls ilookup5() to check if the\n      corresponding VFS inode is in icache().  This in turn calls ifind()\n      which waits on the inode lock via wait_on_inode whilst holding the\n      global inode_lock.\n      Process 2: pdflush results in a call to __sync_single_inode for the\n      same VFS inode X on the ntfs volume.  This locks the inode (I_LOCK)\n      then calls write-inode -\u003e ntfs_write_inode -\u003e map_mft_record() -\u003e\n      read_cache_page() for the page (in page cache of table of inodes\n      $MFT, inode 0) containing the on-disk inode.  This page has\n      PageUptodate() clear because of Process 1 (see above) so\n      read_cache_page() blocks when it tries to take the page lock for the\n      page so it can call ntfs_read_page().\n      Thus Process 1 is holding the page lock on the page containing the\n      on-disk inode X and it is waiting on the inode X to be unlocked in\n      ifind() so it can write the page out and then unlock the page.\n      And Process 2 is holding the inode lock on inode X and is waiting for\n      the page to be unlocked so it can call ntfs_readpage() or discover\n      that Process 1 set PageUptodate() again and use the page.\n      Thus we have a deadlock due to ifind() waiting on the inode lock.\n      The solution: The fix is to use the newly introduced\n      ilookup5_nowait() which does not wait on the inode\u0027s lock and hence\n      avoids the deadlock.  This is safe as we do not care about the VFS\n      inode and only use the fact that it is in the VFS inode cache and the\n      fact that the vfs and ntfs inodes are one struct in memory to find\n      the ntfs inode in memory if present.  Also, the ntfs inode has its\n      own locking so it does not matter if the vfs inode is locked.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\n"
    },
    {
      "commit": "af859a42d798f047fbfe198ed315a942662c39d2",
      "tree": "6c892cbd43284e98cc879f0518dde8efc09740c7",
      "parents": [
        "4757d7dff65b56f2115038ad1615725f31806787"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Sat Jun 25 21:07:27 2005 +0100"
      },
      "committer": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Sat Jun 25 21:07:27 2005 +0100"
      },
      "message": "NTFS: Prepare for 2.1.23 release: Update documentation and bump version.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\n"
    },
    {
      "commit": "c002f42543e155dd2b5b5039ea2637ab26c82513",
      "tree": "ea408493d2e0e9096166ab39a8657689c15c7dfa",
      "parents": [
        "f40661be038ce6ed9ef6a8b80307a9153bd95769"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Thu Feb 03 12:02:56 2005 +0000"
      },
      "committer": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cantab.net",
        "time": "Thu May 05 10:53:01 2005 +0100"
      },
      "message": "NTFS: - Add disable_sparse mount option together with a per volume sparse\n\tenable bit which is set appropriately and a per inode sparse disable\n\tbit which is preset on some system file inodes as appropriate.\n      - Enforce that sparse support is disabled on NTFS volumes pre 3.0.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\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"
    }
  ]
}
