)]}'
{
  "log": [
    {
      "commit": "f551e44ff11d3e2ec8f37907bb88ec2433cc8b74",
      "tree": "f86527c24391f70d72a28111df5c541959e8f293",
      "parents": [
        "a53a3c58fd83e572a7c768d88b4c4e9840a57e82"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Sep 20 14:33:04 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:05 2006 -0400"
      },
      "message": "NFS: add comments clarifying the use of nfs_post_op_update()\n\nComments-only change to clarify a detail of the NFS protocol and how it is\nimplemented in Linux.\n\nTest plan:\nNone.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "275a082fe9308e710324e26ccb5363c53d8fd45f",
      "tree": "e97df6e45f98ea2827f71dc749f8cd47f3f353cc",
      "parents": [
        "94a6d75320b3681e6e728b70e18bd186cb55e682"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 22 20:06:24 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:54 2006 -0400"
      },
      "message": "Add a real API for dealing with blk_congestion_wait()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "54ceac4515986030c2502960be620198dd8fe25b",
      "tree": "b4ae4305c5652c0fe883ef5ea3243da91dbd2b34",
      "parents": [
        "cf6d7b5de8535a9f0088c5cc28ee2dae87371b4a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:13 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:37 2006 -0400"
      },
      "message": "NFS: Share NFS superblocks per-protocol per-server per-FSID\n\nThe attached patch makes NFS share superblocks between mounts from the same\nserver and FSID over the same protocol.\n\nIt does this by creating each superblock with a false root and returning the\nreal root dentry in the vfsmount presented by get_sb(). The root dentry set\nstarts off as an anonymous dentry if we don\u0027t already have the dentry for its\ninode, otherwise it simply returns the dentry we already have.\n\nWe may thus end up with several trees of dentries in the superblock, and if at\nsome later point one of anonymous tree roots is discovered by normal filesystem\nactivity to be located in another tree within the superblock, the anonymous\nroot is named and materialises attached to the second tree at the appropriate\npoint.\n\nWhy do it this way? Why not pass an extra argument to the mount() syscall to\nindicate the subpath and then pathwalk from the server root to the desired\ndirectory? You can\u0027t guarantee this will work for two reasons:\n\n (1) The root and intervening nodes may not be accessible to the client.\n\n     With NFS2 and NFS3, for instance, mountd is called on the server to get\n     the filehandle for the tip of a path. mountd won\u0027t give us handles for\n     anything we don\u0027t have permission to access, and so we can\u0027t set up NFS\n     inodes for such nodes, and so can\u0027t easily set up dentries (we\u0027d have to\n     have ghost inodes or something).\n\n     With this patch we don\u0027t actually create dentries until we get handles\n     from the server that we can use to set up their inodes, and we don\u0027t\n     actually bind them into the tree until we know for sure where they go.\n\n (2) Inaccessible symbolic links.\n\n     If we\u0027re asked to mount two exports from the server, eg:\n\n\tmount warthog:/warthog/aaa/xxx /mmm\n\tmount warthog:/warthog/bbb/yyy /nnn\n\n     We may not be able to access anything nearer the root than xxx and yyy,\n     but we may find out later that /mmm/www/yyy, say, is actually the same\n     directory as the one mounted on /nnn. What we might then find out, for\n     example, is that /warthog/bbb was actually a symbolic link to\n     /warthog/aaa/xxx/www, but we can\u0027t actually determine that by talking to\n     the server until /warthog is made available by NFS.\n\n     This would lead to having constructed an errneous dentry tree which we\n     can\u0027t easily fix. We can end up with a dentry marked as a directory when\n     it should actually be a symlink, or we could end up with an apparently\n     hardlinked directory.\n\n     With this patch we need not make assumptions about the type of a dentry\n     for which we can\u0027t retrieve information, nor need we assume we know its\n     place in the grand scheme of things until we actually see that place.\n\nThis patch reduces the possibility of aliasing in the inode and page caches for\ninodes that may be accessed by more than one NFS export. It also reduces the\nnumber of superblocks required for NFS where there are many NFS exports being\nused from a server (home directory server + autofs for example).\n\nThis in turn makes it simpler to do local caching of network filesystems, as it\ncan then be guaranteed that there won\u0027t be links from multiple inodes in\nseparate superblocks to the same cache file.\n\nObviously, cache aliasing between different levels of NFS protocol could still\nbe a problem, but at least that gives us another key to use when indexing the\ncache.\n\nThis patch makes the following changes:\n\n (1) The server record construction/destruction has been abstracted out into\n     its own set of functions to make things easier to get right.  These have\n     been moved into fs/nfs/client.c.\n\n     All the code in fs/nfs/client.c has to do with the management of\n     connections to servers, and doesn\u0027t touch superblocks in any way; the\n     remaining code in fs/nfs/super.c has to do with VFS superblock management.\n\n (2) The sequence of events undertaken by NFS mount is now reordered:\n\n     (a) A volume representation (struct nfs_server) is allocated.\n\n     (b) A server representation (struct nfs_client) is acquired.  This may be\n     \t allocated or shared, and is keyed on server address, port and NFS\n     \t version.\n\n     (c) If allocated, the client representation is initialised.  The state\n     \t member variable of nfs_client is used to prevent a race during\n     \t initialisation from two mounts.\n\n     (d) For NFS4 a simple pathwalk is performed, walking from FH to FH to find\n     \t the root filehandle for the mount (fs/nfs/getroot.c).  For NFS2/3 we\n     \t are given the root FH in advance.\n\n     (e) The volume FSID is probed for on the root FH.\n\n     (f) The volume representation is initialised from the FSINFO record\n     \t retrieved on the root FH.\n\n     (g) sget() is called to acquire a superblock.  This may be allocated or\n     \t shared, keyed on client pointer and FSID.\n\n     (h) If allocated, the superblock is initialised.\n\n     (i) If the superblock is shared, then the new nfs_server record is\n     \t discarded.\n\n     (j) The root dentry for this mount is looked up from the root FH.\n\n     (k) The root dentry for this mount is assigned to the vfsmount.\n\n (3) nfs_readdir_lookup() creates dentries for each of the entries readdir()\n     returns; this function now attaches disconnected trees from alternate\n     roots that happen to be discovered attached to a directory being read (in\n     the same way nfs_lookup() is made to do for lookup ops).\n\n     The new d_materialise_unique() function is now used to do this, thus\n     permitting the whole thing to be done under one set of locks, and thus\n     avoiding any race between mount and lookup operations on the same\n     directory.\n\n (4) The client management code uses a new debug facility: NFSDBG_CLIENT which\n     is set by echoing 1024 to /proc/net/sunrpc/nfs_debug.\n\n (5) Clone mounts are now called xdev mounts.\n\n (6) Use the dentry passed to the statfs() op as the handle for retrieving fs\n     statistics rather than the root dentry of the superblock (which is now a\n     dummy).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5c2d97cb31fb77981797fec46230ca005b865799",
      "tree": "8393101586bc3ed4e7577eeae215fc305b1999de",
      "parents": [
        "76723de0cf5b186afe2f329eeef304c321d52bf8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Sep 18 23:20:35 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 19 11:59:10 2006 -0400"
      },
      "message": "NFS: Fix nfs_page use after free issues in fs/nfs/write.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e9f7bee1df223dcf83743b46cb06c08d95497ec0",
      "tree": "67beae4733ef0286645112a52623c81c8f8a19a9",
      "parents": [
        "016eb4a0ed06a3677d67a584da901f0e9a63c666"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 08 09:48:54 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 08 10:22:51 2006 -0700"
      },
      "message": "[PATCH] NFS: large non-page-aligned direct I/O clobbers memory\n\nThe logic in nfs_direct_read_schedule and nfs_direct_write_schedule can\nallow data-\u003enpages to be one larger than rpages.  This causes a page\npointer to be written beyond the end of the pagevec in nfs_read_data (or\nnfs_write_data).\n\nFix this by making nfs_(read|write)_alloc() calculate the size of the\npagevec array, and initialise data-\u003enpages.\n\nAlso get rid of the redundant argument to nfs_commit_alloc().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e4e20512cfe0bacec0764b4925889d1fa94644f9",
      "tree": "4926bdea3262685fe388d23e0f5bd50e5d9f42c2",
      "parents": [
        "ce510193272c295b891e45525a83b543ae3207c1"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Aug 03 15:07:47 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 03 16:55:41 2006 -0400"
      },
      "message": "NFS: make 2 functions static\n\nnfs_writedata_free() and nfs_readdata_free() can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from 5e1ce40f0c3c8f67591aff17756930d7a18ceb1a commit)\n"
    },
    {
      "commit": "83715ad54fad5a7ed330110f83e31ae92630e9d9",
      "tree": "3e8717ef9d168cbefd950bac544cb38542e6ee90",
      "parents": [
        "5e66dd6d66ffe758b39b6dcadf2330753ee1159b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:17:12 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:17:12 2006 -0400"
      },
      "message": "NFS: Fix NFS page_state usage\n\nThe introduction of the FLUSH_INVALIDATE argument to nfs_sync_inode_wait()\ndoes not clear the nr_unstable page state counter for pages that are being\nreleased.\n\nAlso fix a longstanding similar bug when nfs_commit_list() fails.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "22a3e233ca08a2ddc949ba1ae8f6e16ec7ef1a13",
      "tree": "7ef158ba2c30e0dde2dc103d1904fae243759a6b",
      "parents": [
        "39302175c26d74be35715c05a0f342c9e64c21bf",
        "6ab3d5624e172c553004ecc862bfeac16d9d68b7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 15:39:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 15:39:30 2006 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial:\n  Remove obsolete #include \u003clinux/config.h\u003e\n  remove obsolete swsusp_encrypt\n  arch/arm26/Kconfig typos\n  Documentation/IPMI typos\n  Kconfig: Typos in net/sched/Kconfig\n  v9fs: do not include linux/version.h\n  Documentation/DocBook/mtdnand.tmpl: typo fixes\n  typo fixes: specfic -\u003e specific\n  typo fixes in Documentation/networking/pktgen.txt\n  typo fixes: occuring -\u003e occurring\n  typo fixes: infomation -\u003e information\n  typo fixes: disadvantadge -\u003e disadvantage\n  typo fixes: aquire -\u003e acquire\n  typo fixes: mecanism -\u003e mechanism\n  typo fixes: bandwith -\u003e bandwidth\n  fix a typo in the RTC_CLASS help text\n  smb is no longer maintained\n\nManually merged trivial conflict in arch/um/kernel/vmlinux.lds.S\n"
    },
    {
      "commit": "fd39fc8561be33065306bdac0e30414e1e8ac8e1",
      "tree": "ae0740716eed3f850a8f7232c61caebe360bb5ae",
      "parents": [
        "ce866b34ae1b7f1ce60234cf65855886ac7e7d30"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:36 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_unstable to per zone counter\n\nConversion of nr_unstable to a per zone counter\n\nWe need to do some special modifications to the nfs code since there are\nmultiple cases of disposition and we need to have a page ref for proper\naccounting.\n\nThis converts the last critical page state of the VM and therefore we need to\nremove several functions that were depending on GET_PAGE_STATE_LAST in order\nto make the kernel compile again.  We are only left with event type counters\nin page state.\n\n[akpm@osdl.org: bugfixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\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": "b1e7a8fd854d2f895730e82137400012b509650e",
      "tree": "9fba87ff6b0146ebd4ee5bc7d5f0c8b037dbb3ad",
      "parents": [
        "df849a1529c106f7460e51479ca78fe07b07dc8c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:39 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:35 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_dirty to per zone counter\n\nThis makes nr_dirty a per zone counter.  Looping over all processors is\navoided during writeback state determination.\n\nThe counter aggregation for nr_dirty had to be undone in the NFS layer since\nwe summed up the page counts from multiple zones.  Someone more familiar with\nNFS should probably review what I have done.\n\n[akpm@osdl.org: bugfix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\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": "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": "266bee88699ddbde42ab303bbc426a105cc49809",
      "tree": "2d2b57f869321e177caf173af8d43b5d88c4a79d",
      "parents": [
        "e7374e48009a15a680d53bd1f9828b9b79a8aac9"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Tue Jun 27 12:59:15 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 14:07:19 2006 -0700"
      },
      "message": "[PATCH] fix static linking of NFS\n\nBuilds on ARM report link problems with common configurations like\nstatically linked NFS (for nfsroot).  The symptom is that __init\nsection code references __exit section code; that won\u0027t work since\nthe exit sections are discarded (since they can never be called).\n\nThe best fix for these particular cases would be an \"__init_or_exit\"\nsection annotation.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f7b422b17ee5ee4920e8ae24a6ad04bf3481ce72",
      "tree": "4ae8372762efc092ceb4f884b57cad1efe6594de",
      "parents": [
        "4e5ccf60c5aa79d325c123f47d288a068166f389"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "message": "NFS: Split fs/nfs/inode.c\n\nAs fs/nfs/inode.c is rather large, heterogenous and unwieldy, the attached\npatch splits it up into a number of files:\n\n (*) fs/nfs/inode.c\n\n     Strictly inode specific functions.\n\n (*) fs/nfs/super.c\n\n     Superblock management functions for NFS and NFS4, normal access, clones\n     and referrals.  The NFS4 superblock functions _could_ move out into a\n     separate conditionally compiled file, but it\u0027s probably not worth it as\n     there\u0027re so many common bits.\n\n (*) fs/nfs/namespace.c\n\n     Some namespace-specific functions have been moved here.\n\n (*) fs/nfs/nfs4namespace.c\n\n     NFS4-specific namespace functions (this could be merged into the previous\n     file).  This file is conditionally compiled.\n\n (*) fs/nfs/internal.h\n\n     Inter-file declarations, plus a few simple utility functions moved from\n     fs/nfs/inode.c.\n\n     Additionally, all the in-.c-file externs have been moved here, and those\n     files they were moved from now includes this file.\n\nFor the most part, the functions have not been changed, only some multiplexor\nfunctions have changed significantly.\n\nI\u0027ve also:\n\n (*) Added some extra banner comments above some functions.\n\n (*) Rearranged the function order within the files to be more logical and\n     better grouped (IMO), though someone may prefer a different order.\n\n (*) Reduced the number of #ifdefs in .c files.\n\n (*) Added missing __init and __exit directives.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "d2ccddf042c403b146159beea438c6bfc4a445e2",
      "tree": "e38f5faeccb73cacd442e899328ae44b75f15559",
      "parents": [
        "c04871e6345e4c6dfda564e302d7fd8c66420fd5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 31 01:13:38 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:14 2006 -0400"
      },
      "message": "NFS: Flesh out nfs_invalidate_page()\n\nIn the case of a call to truncate_inode_pages(), we should really try to\ncancel any pending writes on the page.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0d0b5cb36faf7002a11736032313f06d6f3d881c",
      "tree": "d767ae12fde00b553546aab9f5aa3e23cd86069d",
      "parents": [
        "bf3fcf89552f24657bcfb6a9d73cd167ebb496c6"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Thu May 25 01:40:53 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:07 2006 -0400"
      },
      "message": "NFS: Optimize allocation of nfs_read/write_data structures\n\nClean up use of page_array, and fix an off-by-one error noticed by Tom\nTalpey which causes kmalloc calls in cases where using the page_array\nis sufficient.\n\nTest plan:\nNormal client functional testing with r/wsize\u003d32768.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "93d2341c750cda0df48a6cc67b35fe25f1ec47df",
      "tree": "f098a3bbfae65ce967591ee94d605c6e6bea21c6",
      "parents": [
        "fec433aaaae32a02329ad7d71b0f3c91b7525077"
      ],
      "author": {
        "name": "Matthew Dobson",
        "email": "colpatch@us.ibm.com",
        "time": "Sun Mar 26 01:37:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:57:00 2006 -0800"
      },
      "message": "[PATCH] mempool: use mempool_create_slab_pool()\n\nModify well over a dozen mempool users to call mempool_create_slab_pool()\nrather than calling mempool_create() with extra arguments, saving about 30\nlines of code and increasing readability.\n\nSigned-off-by: Matthew Dobson \u003ccolpatch@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c42de9dd67250fe984e0e31c9b542d721af6454b",
      "tree": "a4079b25a044f7124837f572e5342dc7614ca75d",
      "parents": [
        "7d46a49f512e8d10b23353781a8ba85edd4fa640"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:51 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:51 2006 -0500"
      },
      "message": "NFS: Fix a race in nfs_sync_inode()\n\nKudos to Neil Brown for spotting the problem:\n\n\"in nfs_sync_inode, there is effectively the sequence:\n\n   nfs_wait_on_requests\n   nfs_flush_inode\n   nfs_commit_inode\n\n This seems a bit racy to me as if the only requests are on the\n -\u003ecommit list, and nfs_commit_inode is called separately after\n nfs_wait_on_requests completes, and before nfs_commit_inode start\n (say: by nfs_write_inode) then none of these function will return\n \u003e0, yet there will be some pending request that aren\u0027t waited for.\"\n\nThe solution is to search for requests to wait upon, search for dirty\nrequests, and search for uncommitted requests while holding the\nnfsi-\u003ereq_lock\n\nThe patch also cleans up nfs_sync_inode(), getting rid of the redundant\nFLUSH_WAIT flag. It turns out that we were always setting it.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7d46a49f512e8d10b23353781a8ba85edd4fa640",
      "tree": "8da455d9f2f80f6c8ee82ec85449d2eb0ea12aba",
      "parents": [
        "deb7d638262019cbac5d15ab74ffd1c29242c7cb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:50 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:50 2006 -0500"
      },
      "message": "NFS: Clean up nfs_flush_list()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "deb7d638262019cbac5d15ab74ffd1c29242c7cb",
      "tree": "88095acd2d455b594f4cec08702aa9691faff2a0",
      "parents": [
        "1dd761e9070aa2e543df3db41bd75ed4b8f2fab9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:50 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:50 2006 -0500"
      },
      "message": "NFS: Fix a race with PG_private and nfs_release_page()\n\nWe don\u0027t need to set PG_private for readahead pages, since they never get\nunlocked while I/O is in progress. However there is a small race in\nnfs_readpage_release() whereby the page may be unlocked, and have\nPG_private set.\n\nFix is to have PG_private set only for the case of writes...\n\nAlso fix a bug in nfs_clear_page_writeback(): Don\u0027t attempt to clear the\nradix_tree tag if we\u0027ve already deleted the radix tree entry.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3feb2d49394b7874348a6e43c076b780c1d222c5",
      "tree": "6d27d4170fd9435574bd804033793f9d0d69a355",
      "parents": [
        "5db3a7b2cabe8f0957683f798c4f8fa8605f9ebb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:37 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:37 2006 -0500"
      },
      "message": "NFS: Uninline nfs_writedata_(alloc|free) and nfs_readdata_(alloc|free)\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e17b1fc4b35399935f00a635206e183d9292fe4f",
      "tree": "950fd4a83d7b6ff89286fd89a9871b0da66a4435",
      "parents": [
        "a37ec012d7fd352648c8455d3396ea24001efcd3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:35 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:35 2006 -0500"
      },
      "message": "NFS: Make nfs_commit_alloc() extern\n\nWe need to use nfs_commit_alloc() in fs/nfs/direct.c.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "462d5b3296b56289efec426499a83faad4c08d9e",
      "tree": "eb4f9a0418e1190958603360cf9bcea0cbb67727",
      "parents": [
        "63ab46abc70b01cb0711301f5ddb08c1c0bb9b1c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:32 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:32 2006 -0500"
      },
      "message": "NFS: make direct write path generate write requests concurrently\n\nDuplicate infrastructure from direct read path that will allow write\npath to generate multiple write requests concurrently.  This will\nenable us to add support for aio in this path.\n\nTemporarily we will lose the ability to do UNSTABLE writes followed by\na COMMIT in the direct write path.  However, all applications I am\naware of that use NFS O_DIRECT currently write in relatively small\nchunks, so this should not be inconvenient in any way.\n\nTest plan:\nMillions of fsx-odirect ops. OraSim.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "788e7a89a03e364855583c0ab4649b94925efbb9",
      "tree": "4434c93af133a92f550ba0ecc8d3254cb222e72d",
      "parents": [
        "7117bf3dfb10b534a017260d9fc643bc1d0afd2a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "message": "NFS: Cleanup of NFS write code in preparation for asynchronous o_direct\n\nThis patch inverts the callback hierarchy for NFS write calls.\n\nInstead of having the NFSv2/v3/v4-specific code set up the RPC callback\nops, we allow the original caller to do so. This allows for more\nflexibility w.r.t. how to set up and tear down the nfs_write_data\nstructure while still allowing the NFSv3/v4 code to perform error\nhandling.\n\nThe greater flexibility is needed by the asynchronous O_DIRECT code, which\nwants to be able to hold on to the original nfs_write_data structures after\nthe WRITE RPC call has completed in order to be able to replay them if the\nCOMMIT call determines that the server has rebooted.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "91d5b47023b608227d605d1e916b29dd0215bff7",
      "tree": "31dbb285639ea68db3abc0c4129988f02d50f11a",
      "parents": [
        "d9ef5a8c26aab09762afce43df64736720b4860e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:14 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:14 2006 -0500"
      },
      "message": "NFS: add I/O performance counters\n\nInvoke the byte and event counter macros where we want to count bytes and\nevents.\n\nClean-up: fix a possible NULL dereference in nfs_lock, and simplify\nnfs_file_open.\n\nTest-plan:\nfsx and iozone on UP and SMP systems, with and without pre-emption.  Watch\nfor memory overwrite bugs, and performance loss (significantly more CPU\nrequired per op).\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bd6475454c774bd9dbe6078d94bbf72b1d3b65f4",
      "tree": "641c38589e2aa02a22db229be7d77c9c342a81cb",
      "parents": [
        "a162a6b804b48c605d1fd35e1861a5d32d00ad3f"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Mon Mar 20 13:44:10 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:10 2006 -0500"
      },
      "message": "NFS: kzalloc conversion in fs/nfs\n\nthis converts fs/nfs to kzalloc() usage.\ncompile tested with make allyesconfig\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1dd594b21b2d98e56f2b1fe92bb222276b28de41",
      "tree": "c11a062713429112f162dc986a1b4002b0da1c83",
      "parents": [
        "cd52ed35535ef443f08bf5cd3331d350272885b8"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 20 13:44:04 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:04 2006 -0500"
      },
      "message": "NFS: Fix buglet in fs/nfs/write.c\n\nI\u0027ve been reading through fs/nfs/write.c trying to track down a bug\nthat seems to be related to pages loosing a refcount and getting\nfreed too early (you interested in detail??) and I spotted a little\nbug which the following patch should fix.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "70b9ecbdb9c5fdc731f8780bffd45d9519020c4a",
      "tree": "4678182bd417945cd424a652396510bc53eff8b7",
      "parents": [
        "24174119c73983d5217da8f56a12c79a9b57e056"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:34 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:50 2006 -0500"
      },
      "message": "NFS: Make stat() return updated mtimes after a write()\n\n The SuS states that a call to write() will cause mtime to be updated on\n the file. In order to satisfy that requirement, we need to flush out\n any cached writes in nfs_getattr().\n Speed things up slightly by not committing the writes.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "40859d7ee64ed6bfad8a4e93f9bb5c1074afadff",
      "tree": "ed4069423c3d6551035d5b6116f50452cdac4103",
      "parents": [
        "325cfed9ae901320e9234b18c21434b783dbe342"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Wed Nov 30 18:09:02 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:49 2006 -0500"
      },
      "message": "NFS: support large reads and writes on the wire\n\n Most NFS server implementations allow up to 64KB reads and writes on the\n wire.  The Solaris NFS server allows up to a megabyte, for instance.\n\n Now the Linux NFS client supports transfer sizes up to 1MB, too.  This will\n help reduce protocol and context switch overhead on read/write intensive NFS\n workloads, and support larger atomic read and write operations on servers\n that support them.\n\n Test-plan:\n Connectathon and iozone on mount point with wsize\u003drsize\u003e32768 over TCP.\n Tests with NFS over UDP to verify the maximum RPC payload size cap.\n\n Signed-off-by: Chuck Lever \u003ccel@netapp.com\u003e\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "963d8fe53339128ee46a7701f2e36305f0ccff8c",
      "tree": "426736c70a8e05cb1d945d5c7f44ea6475edd113",
      "parents": [
        "abbcf28f23d53e8ec56a91f3528743913fa2694a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:04 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:39 2006 -0500"
      },
      "message": "RPC: Clean up RPC task structure\n\n Shrink the RPC task structure. Instead of storing separate pointers\n for task-\u003etk_exit and task-\u003etk_release, put them in a structure.\n\n Also pass the user data pointer as a parameter instead of passing it via\n task-\u003etk_calldata. This enables us to nest callbacks.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "abd3e641d5ef9f836ab2f2b04d80b8619b051531",
      "tree": "053c82b4c23a5fb419691154879acff3f487923b",
      "parents": [
        "22905f775dd6a8b73be99826dcad07ceec00244b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:02 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:39 2006 -0500"
      },
      "message": "NFS: Work correctly with single-page -\u003ewritepage() calls\n\n Ensure that we always initiate flushing of data before we exit\n a single-page -\u003ewritepage() call.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bb713d6d38f7be4f4e7d790cddb1b076e7da6699",
      "tree": "8b644138d771cf86599be4c1bd0f5bdcab09d39e",
      "parents": [
        "bb184f3356adbbb1605df2f7c570b4c92231fa3a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 03 15:20:14 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 03 15:20:14 2005 -0500"
      },
      "message": "NFS: use set_page_writeback() in the appropriate places\n\n Ensure that we use set_page_writeback() in the appropriate places\n to help the VM in keeping its page radix_tree in sync.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0bbacc402e67abca8794a8401c1621dc0c0202e9",
      "tree": "a0969978295b806b35c943eb16af34b1eacfa47a",
      "parents": [
        "c556b754967afd0878d65de2cfe0675577b0f62f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Nov 01 16:53:32 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:39:48 2005 -0500"
      },
      "message": "NFS,SUNRPC,NLM: fix unused variable warnings when CONFIG_SYSCTL is disabled\n\n Fix some dprintk\u0027s so that NLM, NFS client, and RPC client compile\n cleanly if CONFIG_SYSCTL is disabled.\n\n Test plan:\n Compile kernel with CONFIG_NFS enabled and CONFIG_SYSCTL disabled.\n\n Signed-off-by: Chuck Lever \u003ccel@netapp.com\u003e\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d530838bfa507d67b40d13b00d9cbd7a46a47e78",
      "tree": "f4b2be26c0a7b9ed3233a2be016b7e97427f8705",
      "parents": [
        "4cecb76ff86db46d2823550256c828b6597f418e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:33:38 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:33:38 2005 -0500"
      },
      "message": "NFSv4: Fix problem with OPEN_DOWNGRADE\n\n RFC 3530 states that for OPEN_DOWNGRADE \"The share_access and share_deny\n bits specified must be exactly equal to the union of the share_access and\n share_deny bits specified for some subset of the OPENs in effect for\n current openowner on the current file.\n\n Setattr is currently violating the NFSv4 rules for OPEN_DOWNGRADE in that\n it may cause a downgrade from OPEN4_SHARE_ACCESS_BOTH to\n OPEN4_SHARE_ACCESS_WRITE despite the fact that there exists no open file\n with O_WRONLY access mode.\n\n Fix the problem by replacing nfs4_find_state() with a modified version of\n nfs_find_open_context().\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0e574af1be5f569a5d7f2800333b0bfb358a5e34",
      "tree": "bb5b62dece21b8906222dfee022020ed6f81e34c",
      "parents": [
        "4c2cb58c552a34744979a99ccf01762d5eb7e288"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 27 22:12:38 2005 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 27 22:12:38 2005 -0400"
      },
      "message": "NFS: Cleanup initialisation of struct nfs_fattr\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3da28eb1c6545fe73263a24eba0996217490e1eb",
      "tree": "944ccf9418c75a5c0b121f2c554c92dc93de1efa",
      "parents": [
        "c6a556b88adfacd2af90be84357c8165d716c27d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:31 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:39 2005 -0400"
      },
      "message": "[PATCH] NFS: Replace nfs_page insertion sort with a radix sort\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c6a556b88adfacd2af90be84357c8165d716c27d",
      "tree": "b63d477180052d3d1edabffb51f3fdfe4f699866",
      "parents": [
        "ab0a3dbedc51037f3d2e22ef67717a987b3d15e2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:30 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:39 2005 -0400"
      },
      "message": "[PATCH] NFS: Make searching and waiting on busy writeback requests more efficient.\n\n Basically copies the VFS\u0027s method for tracking writebacks and applies\n it to the struct nfs_page.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ab0a3dbedc51037f3d2e22ef67717a987b3d15e2",
      "tree": "bda40d85d59a729fb7a9c2573a43d1820df9de3c",
      "parents": [
        "fe51beecc55d0b0dce289e4758e7c529a642f63e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:30 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:38 2005 -0400"
      },
      "message": "[PATCH] NFS: Write optimization for short files and small O_SYNC writes.\n\n Use stable writes if we can see that we are only going to put a single\n write on the wire.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "951a143b3fcf15cfa9d38250b7462f821db241db",
      "tree": "6e4ea13c5f48cc3e1ac1c8649dd0f9f20c502e20",
      "parents": [
        "08e9eac42edab63bce14b5c8419771f3c92aa3f4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:30 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:36 2005 -0400"
      },
      "message": "[PATCH] NFS: Fix the file size revalidation\n\n Instead of looking at whether or not the file is open for writes before\n we accept to update the length using the server value, we should rather\n be looking at whether or not we are currently caching any writes.\n\n Failure to do so means in particular that we\u0027re not updating the file\n length correctly after obtaining a POSIX or BSD lock.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\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"
    }
  ]
}
