)]}'
{
  "log": [
    {
      "commit": "fc9a07e7bf1a76e710f5df017abb07628db1781d",
      "tree": "bf2a288f97cbf9cfd82a4306a7d9c615abc7c887",
      "parents": [
        "45426812d6b601430d560cb6049757b5b0bc71c4"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Sun Jul 15 23:38:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:36 2007 -0700"
      },
      "message": "invalidate_mapping_pages(): add cond_resched\n\ninvalidate_mapping_pages() can sometimes take a long time (millions of pages\nto free).  Long enough for the softlockup detector to trigger.\n\nWe used to have a cond_resched() in there but I took it out because the\ndrop_caches code calls invalidate_mapping_pages() under inode_lock.\n\nThe patch adds a nasty flag and puts the cond_resched() back.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f89b779508f457b2af05dd5ac82a425db4a56ee3",
      "tree": "868baf5eb5cdb8ddce1b8e0512238b596c83c438",
      "parents": [
        "fe28e42b99173ba088b1d8448e53029e100bff27"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Jul 15 23:37:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:34 2007 -0700"
      },
      "message": "jbd2 commit: fix transaction dropping\n\nWe have to check that also the second checkpoint list is non-empty before\ndropping the transaction.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Chuck Ebbert \u003ccebbert@redhat.com\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: \u003clinux-ext4@vger.kernel.org\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": "fe28e42b99173ba088b1d8448e53029e100bff27",
      "tree": "d9bb33ea624fb5bde8fa2e5be0db17848f108f85",
      "parents": [
        "09561f44c75bc462ae86590b9c089d01c4e94a74"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Jul 15 23:37:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:34 2007 -0700"
      },
      "message": "jbd commit: fix transaction dropping\n\nWe have to check that also the second checkpoint list is non-empty before\ndropping the transaction.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Chuck Ebbert \u003ccebbert@redhat.com\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: \u003clinux-ext4@vger.kernel.org\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": "d2a9a8ded48bec153f08ee87a40626c8d0737f79",
      "tree": "e4a90a4f2f65632506e3e04613891cb602843523",
      "parents": [
        "2d896c780db9cda5dc102bf7a0a2cd4394c1342e",
        "0af8887ebf4556a76680a61b0bb156d934702c63"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 15 16:44:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 15 16:44:53 2007 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:\n  9p: fix a race condition bug in umount which caused a segfault\n  9p: re-enable mount time debug option\n  9p: cache meta-data when cache\u003dloose\n  net/9p: set error to EREMOTEIO if trans-\u003ewrite returns zero\n  net/9p: change net/9p module name to 9pnet\n  9p: Reorganization of 9p file system code\n"
    },
    {
      "commit": "2d896c780db9cda5dc102bf7a0a2cd4394c1342e",
      "tree": "db58116f4b5c1539bdac1e3c680587784396037f",
      "parents": [
        "2a9915c8a2e532f6c9b435e5f90008d601a87b90",
        "0f1145cc18e970ebe37da114fc34c297f135e062"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 15 16:43:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 15 16:43:43 2007 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com:8090/xfs/xfs-2.6\n\n* \u0027for-linus\u0027 of git://oss.sgi.com:8090/xfs/xfs-2.6: (37 commits)\n  [XFS] Fix lockdep annotations for xfs_lock_inodes\n  [LIB]: export radix_tree_preload()\n  [XFS] Fix XFS_IOC_FSBULKSTAT{,_SINGLE} \u0026 XFS_IOC_FSINUMBERS in compat mode\n  [XFS] Compat ioctl handler for handle operations\n  [XFS] Compat ioctl handler for XFS_IOC_FSGEOMETRY_V1.\n  [XFS] Clean up function name handling in tracing code\n  [XFS] Quota inode has no parent.\n  [XFS] Concurrent Multi-File Data Streams\n  [XFS] Use uninitialized_var macro to stop warning about rtx\n  [XFS] XFS should not be looking at filp reference counts\n  [XFS] Use is_power_of_2 instead of open coding checks\n  [XFS] Reduce shouting by removing unnecessary macros from dir2 code.\n  [XFS] Simplify XFS min/max macros.\n  [XFS] Kill off xfs_count_bits\n  [XFS] Cancel transactions on xfs_itruncate_start error.\n  [XFS] Use do_div() on 64 bit types.\n  [XFS] Fix remount,readonly path to flush everything correctly.\n  [XFS] Cleanup inode extent size hint extraction\n  [XFS] Prevent ENOSPC from aborting transactions that need to succeed\n  [XFS] Prevent deadlock when flushing inodes on unmount\n  ...\n"
    },
    {
      "commit": "7c9e3c2e3b0437d10a09b77769baf325b94aa436",
      "tree": "0ea71980c092f323fe339a2c60454a927fd517c9",
      "parents": [
        "53b67950026ee642b43615f46df22ec3d36b4a53"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sun Jul 15 20:59:31 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 15 16:40:51 2007 -0700"
      },
      "message": "wrong order of arguments of -\u003ereaddir()\n\nShows how many people are testing coda - the bug had been there for 5 years\nand results of stepping on it are not subtle.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e2f6688c0b52882496aff576b009bc1f7eea0b8",
      "tree": "78192b3dec61c112ff89c60e81111cd98bf4ab68",
      "parents": [
        "9523a841b109765f8779236d28be6458ee3a6824"
      ],
      "author": {
        "name": "Eric Van Hensbergen",
        "email": "ericvh@ericvh-desktop.austin.ibm.com",
        "time": "Fri Jul 13 13:05:21 2007 -0500"
      },
      "committer": {
        "name": "Eric Van Hensbergen",
        "email": "ericvh@ericvh-desktop.austin.ibm.com",
        "time": "Sat Jul 14 15:14:14 2007 -0500"
      },
      "message": "9p: re-enable mount time debug option\n\nDuring reorganization, the mount time debug option was removed in favor\nof module-load-time parameters.  However, the mount time option is still\na useful for feature during debug and for user-fault isolation when the\nmodule is compiled into the kernel.\n\nSigned-off-by: Eric Van Hensbergen \u003cericvh@gmail.com\u003e\n"
    },
    {
      "commit": "9523a841b109765f8779236d28be6458ee3a6824",
      "tree": "3701f26715eae8dcfb7610984051720a6f588019",
      "parents": [
        "1d6b5602381524c339af2c2fdfe42ad0a01464a4"
      ],
      "author": {
        "name": "Eric Van Hensbergen",
        "email": "ericvh@ericvh-desktop.austin.ibm.com",
        "time": "Fri Jul 13 13:01:27 2007 -0500"
      },
      "committer": {
        "name": "Eric Van Hensbergen",
        "email": "ericvh@ericvh-desktop.austin.ibm.com",
        "time": "Sat Jul 14 15:14:08 2007 -0500"
      },
      "message": "9p: cache meta-data when cache\u003dloose\n\nThis patch expands the impact of the loose cache mode to allow for cached\nmetadata increasing the performance of directory listings and other metadata\nread operations.\n\nSigned-off-by: Eric Van Hensbergen \u003cericvh@gmail.com\u003e\n"
    },
    {
      "commit": "bd238fb431f31989898423c8b6496bc8c4204a86",
      "tree": "f85a536383cbf360125ecb0592f6c515e0ecf0ff",
      "parents": [
        "8d9107e8c50e1c4ff43c91c8841805833f3ecfb9"
      ],
      "author": {
        "name": "Latchesar Ionkov",
        "email": "lucho@ionkov.net",
        "time": "Tue Jul 10 17:57:28 2007 -0500"
      },
      "committer": {
        "name": "Eric Van Hensbergen",
        "email": "ericvh@ericvh-desktop.austin.ibm.com",
        "time": "Sat Jul 14 15:13:40 2007 -0500"
      },
      "message": "9p: Reorganization of 9p file system code\n\nThis patchset moves non-filesystem interfaces of v9fs from fs/9p to net/9p.\nIt moves the transport, packet marshalling and connection layers to net/9p\nleaving only the VFS related files in fs/9p.  This work is being done in\npreparation for in-kernel 9p servers as well as alternate 9p clients (other\nthan VFS).\n\nSigned-off-by: Latchesar Ionkov \u003clucho@ionkov.net\u003e\nSigned-off-by: Eric Van Hensbergen \u003cericvh@gmail.com\u003e\n"
    },
    {
      "commit": "0f1145cc18e970ebe37da114fc34c297f135e062",
      "tree": "eb6c8b1b1a53d24eed981910422f0ec3066333fe",
      "parents": [
        "d7f0923d83dcabfc063257a281529cdbcd5eedb5"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Fri Jun 29 17:26:09 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 18:09:42 2007 +1000"
      },
      "message": "[XFS] Fix lockdep annotations for xfs_lock_inodes\n\nSGI-PV: 967035\nSGI-Modid: xfs-linux-melb:xfs-kern:29026a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "faa63e9584df41020440756b8b90b7b63f95e4f6",
      "tree": "9b0369a028d682e36ab91396bcebb1ecfb298e29",
      "parents": [
        "1fa503df66f7bffc0ff62662626897eec79446c2"
      ],
      "author": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Wed Jul 11 11:10:19 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:42:50 2007 +1000"
      },
      "message": "[XFS] Fix XFS_IOC_FSBULKSTAT{,_SINGLE} \u0026 XFS_IOC_FSINUMBERS in compat mode\n\n* 32bit struct xfs_fsop_bulkreq has different size and layout of\nmembers, no matter the alignment. Move the code out of the #else\nbranch (why was it there in the first place?). Define _32 variants of\nthe ioctl constants.\n* 32bit struct xfs_bstat is different because of time_t and on\ni386 because of different padding. Make xfs_bulkstat_one() accept a\ncustom \"output formatter\" in the private_data argument which takes care\nof the xfs_bulkstat_one_compat() that takes care of the different\nlayout in the compat case.\n* i386 struct xfs_inogrp has different padding.\nAdd a similar \"output formatter\" mecanism to xfs_inumbers().\n\nSGI-PV: 967354\nSGI-Modid: xfs-linux-melb:xfs-kern:29102a\n\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "1fa503df66f7bffc0ff62662626897eec79446c2",
      "tree": "c9aa19af1b3268c8d6c3e4361b7f0951decbfd3a",
      "parents": [
        "547e00c3c681265b1fe5e34c7643f3ddac748ba0"
      ],
      "author": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Wed Jul 11 11:10:09 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:41:49 2007 +1000"
      },
      "message": "[XFS] Compat ioctl handler for handle operations\n\n32bit struct xfs_fsop_handlereq has different size and offsets (due to\npointers). TODO: case XFS_IOC_{FSSETDM,ATTRLIST,ATTRMULTI}_BY_HANDLE still\nnot handled.\n\nSGI-PV: 967354\nSGI-Modid: xfs-linux-melb:xfs-kern:29101a\n\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "547e00c3c681265b1fe5e34c7643f3ddac748ba0",
      "tree": "fa72774cb123ad45230399d508aa11e80cbbd770",
      "parents": [
        "3a59c94c4b48878c6af047cdfc8c137d0fa7a0f0"
      ],
      "author": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Wed Jul 11 11:09:57 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:41:39 2007 +1000"
      },
      "message": "[XFS] Compat ioctl handler for XFS_IOC_FSGEOMETRY_V1.\n\ni386 struct xfs_fsop_geom_v1 has no padding after the last member, so the\nsize is different.\n\nSGI-PV: 967354\nSGI-Modid: xfs-linux-melb:xfs-kern:29100a\n\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "3a59c94c4b48878c6af047cdfc8c137d0fa7a0f0",
      "tree": "6945590171040dfa6eba6335fd8312a9fbf0baf1",
      "parents": [
        "b11f94d537e6b69f13770143fd7ded3d09fdbaab"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Wed Jul 11 11:09:47 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:41:24 2007 +1000"
      },
      "message": "[XFS] Clean up function name handling in tracing code\n\nRemove the hardcoded \"fnames\" for tracing, and just embed them in tracing\nmacros via __FUNCTION__. Kills a lot of #ifdefs too.\n\nSGI-PV: 967353\nSGI-Modid: xfs-linux-melb:xfs-kern:29099a\n\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "b11f94d537e6b69f13770143fd7ded3d09fdbaab",
      "tree": "f0c485c71824285e23e7c4fe1835be6b82ba7183",
      "parents": [
        "2a82b8be8a8dacb48cb7371449a7a9daa558b4a8"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Wed Jul 11 11:09:33 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:41:12 2007 +1000"
      },
      "message": "[XFS] Quota inode has no parent.\n\nAvoid using a special \"zero inode\" as the parent of the quota inode as\nthis can confuse the filestreams code into thinking the quota inode has a\nparent. We do not want the quota inode to follow filestreams allocation\nrules, so pass a NULL as the parent inode and detect this condition when\ndoing stream associations.\n\nSGI-PV: 964469\nSGI-Modid: xfs-linux-melb:xfs-kern:29098a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "2a82b8be8a8dacb48cb7371449a7a9daa558b4a8",
      "tree": "44e6a81dd0e7d7dc634e04b9230b5262a254c5ee",
      "parents": [
        "0892ccd6fe13e08ad9e57007afbb78fe02d66005"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Wed Jul 11 11:09:12 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:40:53 2007 +1000"
      },
      "message": "[XFS] Concurrent Multi-File Data Streams\n\nIn media spaces, video is often stored in a frame-per-file format. When\ndealing with uncompressed realtime HD video streams in this format, it is\ncrucial that files do not get fragmented and that multiple files a placed\ncontiguously on disk.\n\nWhen multiple streams are being ingested and played out at the same time,\nit is critical that the filesystem does not cross the streams and\ninterleave them together as this creates seek and readahead cache miss\nlatency and prevents both ingest and playout from meeting frame rate\ntargets.\n\nThis patch set creates a \"stream of files\" concept into the allocator to\nplace all the data from a single stream contiguously on disk so that RAID\narray readahead can be used effectively. Each additional stream gets\nplaced in different allocation groups within the filesystem, thereby\nensuring that we don\u0027t cross any streams. When an AG fills up, we select a\nnew AG for the stream that is not in use.\n\nThe core of the functionality is the stream tracking - each inode that we\ncreate in a directory needs to be associated with the directories\u0027 stream.\nHence every time we create a file, we look up the directories\u0027 stream\nobject and associate the new file with that object.\n\nOnce we have a stream object for a file, we use the AG that the stream\nobject point to for allocations. If we can\u0027t allocate in that AG (e.g. it\nis full) we move the entire stream to another AG. Other inodes in the same\nstream are moved to the new AG on their next allocation (i.e. lazy\nupdate).\n\nStream objects are kept in a cache and hold a reference on the inode.\nHence the inode cannot be reclaimed while there is an outstanding stream\nreference. This means that on unlink we need to remove the stream\nassociation and we also need to flush all the associations on certain\nevents that want to reclaim all unreferenced inodes (e.g. filesystem\nfreeze).\n\nSGI-PV: 964469\nSGI-Modid: xfs-linux-melb:xfs-kern:29096a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Barry Naujok \u003cbnaujok@sgi.com\u003e\nSigned-off-by: Donald Douwsma \u003cdonaldd@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\nSigned-off-by: Vlad Apostolov \u003cvapo@sgi.com\u003e\n"
    },
    {
      "commit": "0892ccd6fe13e08ad9e57007afbb78fe02d66005",
      "tree": "ea9ee48df07cd725e4aa6ecc05fd66aad5b76c8f",
      "parents": [
        "fbf3ce8d8ec508f6bd99b36de034d2ae3e1ae7ac"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Jun 28 16:46:56 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:40:02 2007 +1000"
      },
      "message": "[XFS] Use uninitialized_var macro to stop warning about rtx\n\nAppease gcc in regards to \"warning: \u0027rtx\u0027 is used uninitialized in\nthis function\".\n\nSGI-PV: 907752\nSGI-Modid: xfs-linux-melb:xfs-kern:29007a\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "fbf3ce8d8ec508f6bd99b36de034d2ae3e1ae7ac",
      "tree": "5b10e8948c422b85f7e19da711d2b4d5c9b5e244",
      "parents": [
        "16a087d8e1af9b974125870dceb9e4a35249ad1d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 28 16:46:47 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:37:37 2007 +1000"
      },
      "message": "[XFS] XFS should not be looking at filp reference counts\n\nA check for file_count is always a bad idea. Linux has the -\u003erelease\nmethod to deal with cleanups on last close and -\u003eflush is only for the\nvery rare case where we want to perform an operation on every drop of a\nreference to a file struct.\n\nThis patch gets rid of vop_close and surrounding code in favour of simply\ndoing the page flushing from -\u003erelease.\n\nSGI-PV: 966562\nSGI-Modid: xfs-linux-melb:xfs-kern:28952a\n\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "16a087d8e1af9b974125870dceb9e4a35249ad1d",
      "tree": "259314c4fc03782a2792a93bc5fd25cce5277c56",
      "parents": [
        "bbaaf53808c778bda24f8245a440c5ceacc1a37d"
      ],
      "author": {
        "name": "Vignesh Babu",
        "email": "vignesh.babu@wipro.com",
        "time": "Thu Jun 28 16:46:37 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:37:12 2007 +1000"
      },
      "message": "[XFS] Use is_power_of_2 instead of open coding checks\n\nSGI-PV: 966576\nSGI-Modid: xfs-linux-melb:xfs-kern:28950a\n\nSigned-off-by: Vignesh Babu \u003cvignesh.babu@wipro.com\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "bbaaf53808c778bda24f8245a440c5ceacc1a37d",
      "tree": "8539cec4777f2a20681bf46c224907f661923a39",
      "parents": [
        "54aa8e26e90da882b145fcd33ed752431d6b318b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 28 16:43:50 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:37:02 2007 +1000"
      },
      "message": "[XFS] Reduce shouting by removing unnecessary macros from dir2 code.\n\nSGI-PV: 966505\nSGI-Modid: xfs-linux-melb:xfs-kern:28947a\n\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "54aa8e26e90da882b145fcd33ed752431d6b318b",
      "tree": "0db6ef3be233bea122b90af9c2db03c3e0a12f39",
      "parents": [
        "24ad33ff714bd117cab30e71e2ad41e4e1185108"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Thu Jun 28 16:43:39 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:36:53 2007 +1000"
      },
      "message": "[XFS] Simplify XFS min/max macros.\n\nSGI-PV: 964547\nSGI-Modid: xfs-linux-melb:xfs-kern:28945a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Nathan Scott \u003cnscott@aconex.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "24ad33ff714bd117cab30e71e2ad41e4e1185108",
      "tree": "301cf623394254fcf224bee4cdd13a9c07586d39",
      "parents": [
        "87ae3c2411cfd280e8289e232b718fae9f63950b"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Thu Jun 28 16:43:30 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:36:43 2007 +1000"
      },
      "message": "[XFS] Kill off xfs_count_bits\n\nxfs_count_bits is only called once, and is then compared to 0. IOW, what\nit really wants to know is, is the bitmap empty. This can be done more\nsimply, certainly.\n\nSGI-PV: 966503\nSGI-Modid: xfs-linux-melb:xfs-kern:28944a\n\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "87ae3c2411cfd280e8289e232b718fae9f63950b",
      "tree": "2d19a572a2ab205265306e420fbe4ca1b94fc135",
      "parents": [
        "39726be2a2e6e61f352852da2c3a807773e33346"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Thu Jun 28 16:43:14 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:36:17 2007 +1000"
      },
      "message": "[XFS] Cancel transactions on xfs_itruncate_start error.\n\nSGI-PV: 966502\nSGI-Modid: xfs-linux-melb:xfs-kern:28943a\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "39726be2a2e6e61f352852da2c3a807773e33346",
      "tree": "83d73ec037347aee0808a9407b0c9d7c587bd8f8",
      "parents": [
        "516b2e7c2661615ba5d5ad9fb584f068363502d3"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Jun 18 17:57:45 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:36:08 2007 +1000"
      },
      "message": "[XFS] Use do_div() on 64 bit types.\n\nSGI-PV: 966145\nSGI-Modid: xfs-linux-melb:xfs-kern:28889a\n\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "516b2e7c2661615ba5d5ad9fb584f068363502d3",
      "tree": "984aed9e4dd27cb2acb547dd587525b5e4bf53d9",
      "parents": [
        "957d0ebed04239b734552c7da3fae9094b6f090c"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Mon Jun 18 16:50:48 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:35:58 2007 +1000"
      },
      "message": "[XFS] Fix remount,readonly path to flush everything correctly.\n\nThe remount readonly path can fail to writeback properly because we still\nhave active transactions after calling xfs_quiesce_fs(). Further\ninvestigation shows that this path is broken in the same ways that the xfs\nfreeze path was broken so fix it the same way.\n\nSGI-PV: 964464\nSGI-Modid: xfs-linux-melb:xfs-kern:28869a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "957d0ebed04239b734552c7da3fae9094b6f090c",
      "tree": "6f5034b22028a03e31771d1a3fa5ad8d59557c09",
      "parents": [
        "84e1e99f112dead8f9ba036c02d24a9f5ce7f544"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Mon Jun 18 16:50:37 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:35:36 2007 +1000"
      },
      "message": "[XFS] Cleanup inode extent size hint extraction\n\nSGI-PV: 966004\nSGI-Modid: xfs-linux-melb:xfs-kern:28866a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "84e1e99f112dead8f9ba036c02d24a9f5ce7f544",
      "tree": "e903589be98c05b45586908171d795a1a466357d",
      "parents": [
        "641c56fbfeae85d5ec87fee90a752f7b7224f236"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Mon Jun 18 16:50:27 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:35:19 2007 +1000"
      },
      "message": "[XFS] Prevent ENOSPC from aborting transactions that need to succeed\n\nDuring delayed allocation extent conversion or unwritten extent\nconversion, we need to reserve some blocks for transactions reservations.\nWe need to reserve these blocks in case a btree split occurs and we need\nto allocate some blocks.\n\nUnfortunately, we\u0027ve only ever reserved the number of data blocks we are\nallocating, so in both the unwritten and delalloc case we can get ENOSPC\nto the transaction reservation. This is bad because in both cases we\ncannot report the failure to the writing application.\n\nThe fix is two-fold:\n\n1 - leverage the reserved block infrastructure XFS already\nhas to reserve a small pool of blocks by default to allow\nspecially marked transactions to dip into when we are at\nENOSPC.\nDefault setting is min(5%, 1024 blocks).\n\n2 - convert critical transaction reservations to be allowed\nto dip into this pool. Spots changed are delalloc\nconversion, unwritten extent conversion and growing a\nfilesystem at ENOSPC.\nThis also allows growing the filesytsem to succeed at ENOSPC.\n\nSGI-PV: 964468\nSGI-Modid: xfs-linux-melb:xfs-kern:28865a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "641c56fbfeae85d5ec87fee90a752f7b7224f236",
      "tree": "c626d0f48ef54031f3af502e75308c9087e4592f",
      "parents": [
        "0164af51cedf46e1d58fd53854373f544150c597"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Mon Jun 18 16:50:17 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:33:38 2007 +1000"
      },
      "message": "[XFS] Prevent deadlock when flushing inodes on unmount\n\nWhen we are unmounting the filesystem, we flush all the inodes to disk.\nUnfortunately, if we have an inode cluster that has just been freed and\nmarked stale sitting in an incore log buffer (i.e. hasn\u0027t been flushed to\ndisk), it will be holding all the flush locks on the inodes in that\ncluster.\n\nxfs_iflush_all() which is called during unmount walks all the inodes\ntrying to reclaim them, and it doing so calls xfs_finish_reclaim() on each\ninode. If the inode is dirty, if grabs the flush lock and flushes it.\nUnfortunately, find dirty inodes that already have their flush lock held\nand so we sleep.\n\nAt this point in the unmount process, we are running single-threaded.\nThere is nothing more that can push on the log to force the transaction\nholding the inode flush locks to disk and hence we deadlock.\n\nThe fix is to issue a log force before flushing the inodes on unmount so\nthat all the flush locks will be released before we start flushing the\ninodes.\n\nSGI-PV: 964538\nSGI-Modid: xfs-linux-melb:xfs-kern:28862a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "0164af51cedf46e1d58fd53854373f544150c597",
      "tree": "f52692b23866ce03fdf5752b26ec5415ee82a59d",
      "parents": [
        "effd120edb7609069cca9f3d1cb4bfae464b2f85"
      ],
      "author": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Mon Jun 18 16:50:08 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:32:59 2007 +1000"
      },
      "message": "[XFS] Log the agf_length change in xfs_growfs_data_private().\n\nSGI-PV: 963528\nSGI-Modid: xfs-linux-melb:xfs-kern:28856a\n\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "effd120edb7609069cca9f3d1cb4bfae464b2f85",
      "tree": "3183077b16d0af765bce44a4a3df5e6d37f78fc8",
      "parents": [
        "45c34141126a89da07197d5b89c04c6847f1171a"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Mon Jun 18 16:49:58 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:32:49 2007 +1000"
      },
      "message": "[XFS] Map unwritten extents correctly for I/o completion processing\n\nIf we have multiple unwritten extents within a single page, we fail to\ntell the I/o completion construction handlers we need a new handle for the\nsecond and subsequent blocks in the page. While we still issue the I/O\ncorrectly, we do not have the correct ranges recorded in the ioend\nstructures and hence when we go to convert the unwritten extents we screw\nit up.\n\nMake sure we start a new ioend every time the mapping changes so that we\nconvert the correct ranges on I/O completion.\n\nSGI-PV: 964647\nSGI-Modid: xfs-linux-melb:xfs-kern:28797a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "45c34141126a89da07197d5b89c04c6847f1171a",
      "tree": "b5418b397602fc0ab131ed4a56a90f215628d776",
      "parents": [
        "b2826136a1fc3ea451bcbb73a75ca50b3231aa8f"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Mon Jun 18 16:49:44 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:32:09 2007 +1000"
      },
      "message": "[XFS] Apply transaction delta counts atomically to incore counters\n\nWith the per-cpu superblock counters, batch updates are no longer atomic\nacross the entire batch of changes. This is not an issue if each\nindividual change in the batch is applied atomically. Unfortunately, free\nblock count changes are not applied atomically, and they are applied in a\nmanner guaranteed to cause problems.\n\nEssentially, the free block count reservation that the transaction took\ninitially is returned to the in core counters before a second delta takes\naway what is used. because these two operations are not atomic, we can\nrace with another thread that can use the returned transaction reservation\nbefore the transaction takes the space away again and we can then get\nENOSPC being reported in a spot where we don\u0027t have an ENOSPC condition,\nnor should we ever see one there.\n\nFix it up by rolling the two deltas into the one so it can be applied\nsafely (i.e. atomically) to the incore counters.\n\nSGI-PV: 964465\nSGI-Modid: xfs-linux-melb:xfs-kern:28796a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "b2826136a1fc3ea451bcbb73a75ca50b3231aa8f",
      "tree": "32cd3b0a8d1ec64d0b752162581dfff89f71ab95",
      "parents": [
        "e927af90aaa7d75543edbbd9c2810e6963d0443f"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Tue Jun 05 16:24:44 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:31:03 2007 +1000"
      },
      "message": "[XFS] Handle null returned from xfs_vtoi() in xfs_setfilesize().\n\nSGI-PV: 965636\nSGI-Modid: xfs-linux-melb:xfs-kern:28777a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Olaf Weber \u003colaf@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "e927af90aaa7d75543edbbd9c2810e6963d0443f",
      "tree": "56da842111210cd39bd45365a42f52f3c50eaf14",
      "parents": [
        "f4a9f28a909debe97cd3f6ca30e82e5811125bff"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Tue Jun 05 16:24:36 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:30:52 2007 +1000"
      },
      "message": "[XFS] Block on unwritten extent conversion during synchronous direct I/O.\n\nCurrently we do not wait on extent conversion to occur, and hence we can\nreturn to userspace from a synchronous direct I/O write without having\ncompleted all the actions in the write. Hence a read after the write may\nsee zeroes (unwritten extent) rather than the data that was written.\n\nBlock the I/O completion by triggering a synchronous workqueue flush to\nensure that the conversion has occurred before we return to userspace.\n\nSGI-PV: 964092\nSGI-Modid: xfs-linux-melb:xfs-kern:28775a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "f4a9f28a909debe97cd3f6ca30e82e5811125bff",
      "tree": "5c82c929cca07ad3df692ca11c6ac4871fa840b1",
      "parents": [
        "4e5ae8386b55677bde05bbd38b8fc82c67ad4564"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Tue Jun 05 16:24:27 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:30:05 2007 +1000"
      },
      "message": "[XFS] Flush the block device before closing it on unmount.\n\nSGI-PV: 965630\nSGI-Modid: xfs-linux-melb:xfs-kern:28774a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "4e5ae8386b55677bde05bbd38b8fc82c67ad4564",
      "tree": "eb28b9003453d55c21b81da63ce1fb4a897023ed",
      "parents": [
        "210c6f1caa451623e14a7cd71000d2c2e0d9cc43"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Tue Jun 05 16:24:15 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:29:37 2007 +1000"
      },
      "message": "[XFS] xfs_bmapi fails to update the previous extent pointer\n\nWhen processing multiple extent maps, xfs_bmapi needs to keep track of the\nextent behind the one it is currently working on to be able to trim extent\nranges correctly. Failing to update the previous pointer can result in\ncorrupted extent lists in memory and this will result in panics or assert\nfailures.\n\nUpdate the previous pointer correctly when we move to the next extent to\nprocess.\n\nSGI-PV: 965631\nSGI-Modid: xfs-linux-melb:xfs-kern:28773a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Vlad Apostolov \u003cvapo@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "210c6f1caa451623e14a7cd71000d2c2e0d9cc43",
      "tree": "ec4ac003d854adabf1db2f9c4fcbd7b5b3813033",
      "parents": [
        "92821e2ba4ae26887223326fb0b95cdab963b768"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Thu May 24 15:26:51 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:29:02 2007 +1000"
      },
      "message": "[XFS] Fix the transaction flags to make lazy superblock counters work.\n\nSGI-PV: 964999\nSGI-Modid: xfs-linux-melb:xfs-kern:28653a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "92821e2ba4ae26887223326fb0b95cdab963b768",
      "tree": "a40a2ef10e5b0791df3e522f3139193d39bf2454",
      "parents": [
        "3260f78ad6d5b788e78ea709d377f58e569bee41"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Thu May 24 15:26:31 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:28:50 2007 +1000"
      },
      "message": "[XFS] Lazy Superblock Counters\n\nWhen we have a couple of hundred transactions on the fly at once, they all\ntypically modify the on disk superblock in some way.\ncreate/unclink/mkdir/rmdir modify inode counts, allocation/freeing modify\nfree block counts.\n\nWhen these counts are modified in a transaction, they must eventually lock\nthe superblock buffer and apply the mods. The buffer then remains locked\nuntil the transaction is committed into the incore log buffer. The result\nof this is that with enough transactions on the fly the incore superblock\nbuffer becomes a bottleneck.\n\nThe result of contention on the incore superblock buffer is that\ntransaction rates fall - the more pressure that is put on the superblock\nbuffer, the slower things go.\n\nThe key to removing the contention is to not require the superblock fields\nin question to be locked. We do that by not marking the superblock dirty\nin the transaction. IOWs, we modify the incore superblock but do not\nmodify the cached superblock buffer. In short, we do not log superblock\nmodifications to critical fields in the superblock on every transaction.\nIn fact we only do it just before we write the superblock to disk every\nsync period or just before unmount.\n\nThis creates an interesting problem - if we don\u0027t log or write out the\nfields in every transaction, then how do the values get recovered after a\ncrash? the answer is simple - we keep enough duplicate, logged information\nin other structures that we can reconstruct the correct count after log\nrecovery has been performed.\n\nIt is the AGF and AGI structures that contain the duplicate information;\nafter recovery, we walk every AGI and AGF and sum their individual\ncounters to get the correct value, and we do a transaction into the log to\ncorrect them. An optimisation of this is that if we have a clean unmount\nrecord, we know the value in the superblock is correct, so we can avoid\nthe summation walk under normal conditions and so mount/recovery times do\nnot change under normal operation.\n\nOne wrinkle that was discovered during development was that the blocks\nused in the freespace btrees are never accounted for in the AGF counters.\nThis was once a valid optimisation to make; when the filesystem is full,\nthe free space btrees are empty and consume no space. Hence when it\nmatters, the \"accounting\" is correct. But that means the when we do the\nAGF summations, we would not have a correct count and xfs_check would\ncomplain. Hence a new counter was added to track the number of blocks used\nby the free space btrees. This is an *on-disk format change*.\n\nAs a result of this, lazy superblock counters are a mkfs option and at the\nmoment on linux there is no way to convert an old filesystem. This is\npossible - xfs_db can be used to twiddle the right bits and then\nxfs_repair will do the format conversion for you. Similarly, you can\nconvert backwards as well. At some point we\u0027ll add functionality to\nxfs_admin to do the bit twiddling easily....\n\nSGI-PV: 964999\nSGI-Modid: xfs-linux-melb:xfs-kern:28652a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "3260f78ad6d5b788e78ea709d377f58e569bee41",
      "tree": "9ba46ac087769061b0cc3f0fec67be863c4a28b7",
      "parents": [
        "92dfe8d266eaf35a50607a0e0dcf525e1d367c80"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu May 24 15:25:42 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:23:53 2007 +1000"
      },
      "message": "[XFS] Use generic shrinker interfaces in XFS.\n\nSGI-PV: 964986\nSGI-Modid: xfs-linux-melb:xfs-kern:28642a\n\nSigned-Off-By: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "92dfe8d266eaf35a50607a0e0dcf525e1d367c80",
      "tree": "a9149b1bcad2142b14b8b25c06c64a0ae7399f64",
      "parents": [
        "511105b3d7c2440ee84fc3f90d200569aac88162"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Thu May 24 15:22:19 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:23:40 2007 +1000"
      },
      "message": "[XFS] Make hole punching at EOF atomic.\n\nIf hole punching at EOF is done as two steps (i.e. truncate then extend)\nthe file is in a transient state between the two steps where an\napplication can see the incorrect file size. Punching a hole to EOF needs\nto be treated in teh same way as all other hole punching cases so that the\nfile size is never seen to change.\n\nSGI-PV: 962012\nSGI-Modid: xfs-linux-melb:xfs-kern:28641a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Vlad Apostolov \u003cvapo@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "511105b3d7c2440ee84fc3f90d200569aac88162",
      "tree": "cca4cec4d200931a7f7d3e9701c1d651d1208255",
      "parents": [
        "ca165b88927e41ad18908d7b37f08ef81eae0bf8"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Thu May 24 15:21:57 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:23:23 2007 +1000"
      },
      "message": "[XFS] Fix vmalloc leak on mount/unmount.\n\nWhen setting the length of the iclogbuf to write out we should just be\nchanging the desired byte count rather completely reassociating the buffer\nmemory with the buffer. Reassociating the buffer memory changes the\napparent length of the buffer and hence when we free the buffer, we don\u0027t\nfree all the vmap()d space we originally allocated.\n\nSGI-PV: 964983\nSGI-Modid: xfs-linux-melb:xfs-kern:28640a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "ca165b88927e41ad18908d7b37f08ef81eae0bf8",
      "tree": "dbe4595d1e14fef288d321cd4137bc402a4ce334",
      "parents": [
        "3db296f341b5902c4f9317022ae5d4da2d59d598"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu May 24 15:21:11 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:22:50 2007 +1000"
      },
      "message": "[XFS] Fix double free in xfs_buf_get_noaddr error handling path\n\nSGI-PV: 964983\nSGI-Modid: xfs-linux-melb:xfs-kern:28639a\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "3db296f341b5902c4f9317022ae5d4da2d59d598",
      "tree": "f351eb33c6bac70d82d9f3adf0836d4c424bad92",
      "parents": [
        "40095b64f5da601a8ab61fbe4b40feb46830052e"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Mon May 14 18:24:16 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:22:34 2007 +1000"
      },
      "message": "[XFS] Fix use-after-free during log unmount.\n\nDon\u0027t reference the log buffer after running the callbacks as the callback\ncan trigger the log buffers to be freed during unmount.\n\nSGI-PV: 964545\nSGI-Modid: xfs-linux-melb:xfs-kern:28567a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "40095b64f5da601a8ab61fbe4b40feb46830052e",
      "tree": "114402c9280f5677bf1d47f4a933847912e3c314",
      "parents": [
        "4cc929ee305c69573cb842aade059dbe2a93940c"
      ],
      "author": {
        "name": "David Chinner",
        "email": "dgc@sgi.com",
        "time": "Mon May 14 18:24:09 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:22:18 2007 +1000"
      },
      "message": "[XFS] Sleeping with the ilock waiting for I/O completion is Bad.\n\nRecent fixes to the filesystem freezing code introduced a vn_iowait call\nin the middle of the sync code. Unfortunately, at the point where this\ncall was added we are holding the ilock. The ilock is needed by I/O\ncompletion for unwritten extent conversion and now updating the file size.\nHence I/o cannot complete if we hold the ilock while waiting for I/O\ncompletion.\n\nFix up the bug and clean the code up around it.\n\nSGI-PV: 963674\nSGI-Modid: xfs-linux-melb:xfs-kern:28566a\n\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "4cc929ee305c69573cb842aade059dbe2a93940c",
      "tree": "bf6cee68d7ca81296864576f27e68900e122d04f",
      "parents": [
        "1fa40b01ae4d1b00e366d4949edcc230f5cd6d99"
      ],
      "author": {
        "name": "Nathan Scott",
        "email": "nscott@aconex.com",
        "time": "Mon May 14 18:24:02 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:21:29 2007 +1000"
      },
      "message": "[XFS] Don\u0027t grow filesystems past the size they can index.\n\nWhen growing a filesystem we don\u0027t check to see if the new size overflows\nthe page cache index range, so we can do silly things like grow a\nfilesystem page 16TB on a 32bit. Check new filesystem sizes against the\nlimits the kernel can support.\n\nSGI-PV: 957886\nSGI-Modid: xfs-linux-melb:xfs-kern:28563a\n\nSigned-Off-By: Nathan Scott \u003cnscott@aconex.com\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "1fa40b01ae4d1b00e366d4949edcc230f5cd6d99",
      "tree": "66059d8f37bfafc6cce57509829ee253b3269252",
      "parents": [
        "4eb6bf6bfb580afaf1e1a1d30cba17a078530cf4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon May 14 18:23:50 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@chook.melbourne.sgi.com",
        "time": "Sat Jul 14 15:21:14 2007 +1000"
      },
      "message": "[XFS] Only use refcounted pages for I/O\n\nMany block drivers (aoe, iscsi) really want refcountable pages in bios,\nwhich is what almost everyone send down. XFS unfortunately has a few\nplaces where it sends down buffers that may come from kmalloc, which\nbreaks them.\n\nFix the places that use kmalloc()d buffers.\n\nSGI-PV: 964546\nSGI-Modid: xfs-linux-melb:xfs-kern:28562a\n\nSigned-Off-By: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "16cefa8c3863721fd40445a1b34dea18cd16ccfe",
      "tree": "c8e58ca06e2edfd667d3e6062a642b80cc58e5e7",
      "parents": [
        "4fbef206daead133085fe33905f5e842d38fb8da",
        "d8558f99fbc5ef5d4ae76b893784005056450f82"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jul 13 16:46:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jul 13 16:46:18 2007 -0700"
      },
      "message": "Merge git://git.linux-nfs.org/pub/linux/nfs-2.6\n\n* git://git.linux-nfs.org/pub/linux/nfs-2.6: (122 commits)\n  sunrpc: drop BKL around wrap and unwrap\n  NFSv4: Make sure unlock is really an unlock when cancelling a lock\n  NLM: fix source address of callback to client\n  SUNRPC client: add interface for binding to a local address\n  SUNRPC server: record the destination address of a request\n  SUNRPC: cleanup transport creation argument passing\n  NFSv4: Make the NFS state model work with the nosharedcache mount option\n  NFS: Error when mounting the same filesystem with different options\n  NFS: Add the mount option \"nosharecache\"\n  NFS: Add support for mounting NFSv4 file systems with string options\n  NFS: Add final pieces to support in-kernel mount option parsing\n  NFS: Introduce generic mount client API\n  NFS: Add enums and match tables for mount option parsing\n  NFS: Improve debugging output in NFS in-kernel mount client\n  NFS: Clean up in-kernel NFS mount\n  NFS: Remake nfsroot_mount as a permanent part of NFS client\n  SUNRPC: Add a convenient default for the hostname when calling rpc_create()\n  SUNRPC: Rename rpcb_getport to be consistent with new rpcb_getport_sync name\n  SUNRPC: Rename rpcb_getport_external routine\n  SUNRPC: Allow rpcbind requests to be interrupted by a signal.\n  ...\n"
    },
    {
      "commit": "4fbef206daead133085fe33905f5e842d38fb8da",
      "tree": "94689f4fc018e0a599db08a6902fbc079d33c07e",
      "parents": [
        "4fd885170bf13841ada921495b7b00c4b9971cf9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 13 22:42:20 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jul 13 16:45:43 2007 -0700"
      },
      "message": "nfsd: fix nfsd_vfs_read() splice actor setup\n\nWhen nfsd was transitioned to use splice instead of sendfile() for data\ntransfers, a line setting the page index was lost. Restore it, so that\nnfsd is functional when that path is used.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "51a92c0f6ce8fa85fa0e18ecda1d847e606e8066",
      "tree": "b944b46d3856948931160c8a75ee27be3417c515",
      "parents": [
        "29ce20586be54ceba49c55ae049541398cd2c416"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 13 14:11:43 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 13 14:14:31 2007 +0200"
      },
      "message": "splice: fix offset mangling with direct splicing (sendfile)\n\nIf the output actor doesn\u0027t transfer the full amount of data, we will\nincrement ppos too much. Two related bugs in there:\n\n- We need to break out and return actor() retval if it is shorted than\n  what we spliced into the pipe.\n\n- Adjust ppos only according to actor() return.\n\nAlso fix loop problem in generic_file_splice_read(), it should not keep\ngoing when data has already been transferred.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "29ce20586be54ceba49c55ae049541398cd2c416",
      "tree": "5ac0ef4c9debefff4fdacfdebab481985eb7341a",
      "parents": [
        "d3f35d98b3b87d2506289320375687c6e9bc53ed"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Jul 13 11:44:32 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 13 14:14:29 2007 +0200"
      },
      "message": "security: revalidate rw permissions for sys_splice and sys_vmsplice\n\nRevalidate read/write permissions for splice(2) and vmslice(2), in case\nsecurity policy has changed since the files were opened.\n\nAcked-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "91a6902958f052358899f58683d44e36228d85c2",
      "tree": "a713792cf3bb09bdbd2ac6906aa44b3da3e49250",
      "parents": [
        "51225039f3cf9d250596d1344494b293274b9169"
      ],
      "author": {
        "name": "Zhang Rui",
        "email": "rui.zhang@intel.com",
        "time": "Sat Jun 09 13:57:22 2007 +0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:09 2007 -0700"
      },
      "message": "sysfs: add parameter \"struct bin_attribute *\" in .read/.write methods for sysfs binary attributes\n\nWell, first of all, I don\u0027t want to change so many files either.\n\nWhat I do:\nAdding a new parameter \"struct bin_attribute *\" in the\n.read/.write methods for the sysfs binary attributes.\n\nIn fact, only the four lines change in fs/sysfs/bin.c and\ninclude/linux/sysfs.h do the real work.\nBut I have to update all the files that use binary attributes\nto make them compatible with the new .read and .write methods.\nI\u0027m not sure if I missed any. :(\n\nWhy I do this:\nFor a sysfs attribute, we can get a pointer pointing to the\nstruct attribute in the .show/.store method,\nwhile we can\u0027t do this for the binary attributes.\nI don\u0027t know why this is different, but this does make it not\nso handy to use the binary attributes as the regular ones.\nSo I think this patch is reasonable. :)\n\nWho benefits from it:\nThe patch that exposes ACPI tables in sysfs\nrequires such an improvement.\nAll the table binary attributes share the same .read method.\nParameter \"struct bin_attribute *\" is used to get\nthe table signature and instance number which are used to\ndistinguish different ACPI table binary attributes.\n\nWithout this parameter, we need to offer different .read methods\nfor different ACPI table binary attributes.\nThis is impossible as there are various ACPI tables on different\nplatforms, and we don\u0027t know what they are until they are loaded.\n\nSigned-off-by: Zhang Rui \u003crui.zhang@intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "51225039f3cf9d250596d1344494b293274b9169",
      "tree": "4e646ab37043068824a146c7353c6242a4eb72df",
      "parents": [
        "53e0ae92690c52eceb997905d85fbb42de5fff63"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 04:27:25 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:09 2007 -0700"
      },
      "message": "sysfs: make directory dentries and inodes reclaimable\n\nThis patch makes dentries and inodes for sysfs directories\nreclaimable.\n\n* sysfs_notify() is modified to walk sysfs_dirent tree instead of\n  dentry tree.\n\n* sysfs_update_file() and sysfs_chmod_file() use sysfs_get_dentry() to\n  grab the victim dentry.\n\n* sysfs_rename_dir() and sysfs_move_dir() grab all dentries using\n  sysfs_get_dentry() on startup.\n\n* Dentries for all shadowed directories are pinned in memory to serve\n  as lookup start point.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "53e0ae92690c52eceb997905d85fbb42de5fff63",
      "tree": "b3bccd211bb09d43c29a751793ac50d8860b8303",
      "parents": [
        "a0edd7c848945a75e2f41673f43bc37d0a5fed15"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 04:27:25 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:09 2007 -0700"
      },
      "message": "sysfs: implement sysfs_get_dentry()\n\nSome sysfs operations require dentry and inode.  sysfs_get_dentry()\nlooks up and gets dentry for the specified sysfs_dirent.  It finds the\nfirst ancestor with dentry attached and starts looking up dentries\nfrom there.\n\nLooking up from the nearest ancestor is necessary to support shadowed\ndirectories because we can\u0027t reliably lookup dentry for one of the\nshadows.  Dentries for each shadow will be pinned in memory such that\nthey can serve as the starting point for dentry lookup.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "a0edd7c848945a75e2f41673f43bc37d0a5fed15",
      "tree": "c74ea7d7dbc814faef126f97601a16c7118b3099",
      "parents": [
        "fb6896da37f19be4b75154c14d1cd79231255b17"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 04:27:24 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:09 2007 -0700"
      },
      "message": "sysfs: move sysfs_drop_dentry() to dir.c and make it static\n\nAfter add/remove path restructuring, the only user of\nsysfs_drop_dentry() is sysfs_addrm_finish().  Move sysfs_drop_dentry()\nto dir.c and make it static.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "fb6896da37f19be4b75154c14d1cd79231255b17",
      "tree": "d1480206694a0642067dc7dc5b40bd63b038cac0",
      "parents": [
        "3007e997de91ec59af39a3f9c91595b31ae6e08b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 04:27:24 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:09 2007 -0700"
      },
      "message": "sysfs: restructure add/remove paths and fix inode update\n\nThe original add/remove code had the following problems.\n\n* parent\u0027s timestamps are updated on dentry instantiation.  this is\n  incorrect with reclaimable files.\n\n* updating parent\u0027s timestamps isn\u0027t synchronized.\n\n* parent nlink update assumes the inode is accessible which won\u0027t be\n  true once directory dentries are made reclaimable.\n\nThis patch restructures add/remove paths to resolve the above\nproblems.  Add/removal are done in the following steps.\n\n1. sysfs_addrm_start() : acquire locks including sysfs_mutex and other\n   resources.\n\n2-a. sysfs_add_one() : add new sd.  linking the new sd into the\n     children list is caller\u0027s responsibility.\n\n2-b. sysfs_remove_one() : remove a sd.  unlinking the sd from the\n     children list is caller\u0027s responsibility.\n\n3. sysfs_addrm_finish() : release all resources and clean up.\n\nSteps 2-a and/or 2-b can be repeated multiple times.\n\nParent\u0027s inode is looked up during sysfs_addrm_start().  If available\n(always at the moment), it\u0027s pinned and nlink is updated as sd\u0027s are\nadded and removed.  Timestamps are updated during finish if any sd has\nbeen added or removed.  If parent\u0027s inode is not available during\nstart, sysfs_mutex ensures that parent inode is not created till\nadd/remove is complete.\n\nAll the complexity is contained inside the helper functions.\nEspecially, dentry/inode handling is properly hidden from the rest of\nsysfs which now mostly operate on sysfs_dirents.  As an added bonus,\ncodes which use these helpers to add and remove sysfs_dirents are now\nmore structured and simpler.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3007e997de91ec59af39a3f9c91595b31ae6e08b",
      "tree": "4ed4df3ef3a249d2a4b562e36876fc8d4a3fabd9",
      "parents": [
        "5f9953237f684ea1778adb9d26162da00b282225"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 04:27:23 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:08 2007 -0700"
      },
      "message": "sysfs: use sysfs_mutex to protect the sysfs_dirent tree\n\nAs kobj sysfs dentries and inodes are gonna be made reclaimable,\ni_mutex can\u0027t be used to protect sysfs_dirent tree.  Use sysfs_mutex\nglobally instead.  As the whole tree is protected with sysfs_mutex,\nthere is no reason to keep sysfs_rename_sem.  Drop it.\n\nWhile at it, add docbook comments to functions which require\nsysfs_mutex locking.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "5f9953237f684ea1778adb9d26162da00b282225",
      "tree": "962bbe5fe2483876caa74943875cbef432db6945",
      "parents": [
        "608e266a2d4e62c1b98c1c573064b6afe8c06a58"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 04:27:23 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:08 2007 -0700"
      },
      "message": "sysfs: consolidate sysfs spinlocks\n\nReplace sysfs_lock and kobj_sysfs_assoc_lock with sysfs_assoc_lock.\nsysfs_lock was originally to be used to protect sysfs_dirent tree but\nmutex seems better choice, so there is no reason to keep sysfs_lock\nseparate.  Merge the two spinlocks into one.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "608e266a2d4e62c1b98c1c573064b6afe8c06a58",
      "tree": "73d670ab6c315b42273bc9d2731ec2b8e7c199af",
      "parents": [
        "f0b0af4792d751106e2003f96af76fa95e10c68d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 04:27:22 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:08 2007 -0700"
      },
      "message": "sysfs: make kobj point to sysfs_dirent instead of dentry\n\nAs kobj sysfs dentries and inodes are gonna be made reclaimable,\ndentry can\u0027t be used as naming token for sysfs file/directory, replace\nkobj-\u003edentry with kobj-\u003esd.  The only external interface change is\nshadow directory handling.  All other changes are contained in kobj\nand sysfs.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "f0b0af4792d751106e2003f96af76fa95e10c68d",
      "tree": "09483c5b34009cc815897d885f310d0704d0c396",
      "parents": [
        "380e6fbb729a55b73d5d8409551474884e0d93fc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 04:27:22 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:08 2007 -0700"
      },
      "message": "sysfs: implement sysfs_find_dirent() and sysfs_get_dirent()\n\nImplement sysfs_find_dirent() and sysfs_get_dirent().\nsysfs_dirent_exist() is replaced by sysfs_find_dirent().  These will\nbe used to make directory entries reclamiable.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "380e6fbb729a55b73d5d8409551474884e0d93fc",
      "tree": "38922357a91869f0d8c9769fa5afa504f1175fc0",
      "parents": [
        "b402d72cf7b338a074e3c12b305ec79284e18845"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 04:27:22 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:08 2007 -0700"
      },
      "message": "sysfs: implement SYSFS_FLAG_REMOVED flag\n\nImplement SYSFS_FLAG_REMOVED flag which currently is used only to\nimprove sanity check in sysfs_deactivate().  The flag will be used to\nmake directory entries reclamiable.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "b402d72cf7b338a074e3c12b305ec79284e18845",
      "tree": "0724d40180eb78212be81c7ff2d909ec3fb3f306",
      "parents": [
        "d0bcb5689a521df98bff7549fcb8b17499660a99"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 04:27:21 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:08 2007 -0700"
      },
      "message": "sysfs: rename sysfs_dirent-\u003es_type to s_flags and make room for flags\n\nRename sysfs_dirent-\u003es_type to s_flags, pack type into lower eight\nbits and reserve the rest for flags.  sysfs_type() can used to access\nthe type.  All existing sd-\u003es_type accesses are converted to use\nsysfs_type().  While at it, type test is changed to equality test\ninstead of bit-and test where appropriate.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "d0bcb5689a521df98bff7549fcb8b17499660a99",
      "tree": "6f9deb74f4facc5e638b71ba8b99ac2baeed9859",
      "parents": [
        "9d9307dabb3de8140fb3801bf6eb01f231dbd83d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 04:27:21 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:08 2007 -0700"
      },
      "message": "sysfs: make sysfs_drop_dentry() access inodes using ilookup()\n\nsysfs_drop_dentry() used to go through sd-\u003es_dentry and\nsd-\u003es_parent-\u003es_dentry to access the inodes.  This is incorrect\nbecause inode can be cached without dentry.\n\nThis patch makes sysfs_drop_dentry() access inodes using ilookup() on\nsd-\u003es_ino.  This is both correct and simpler.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "9d9307dabb3de8140fb3801bf6eb01f231dbd83d",
      "tree": "55cecd0eaefe5e3cc89f2aaf8542607f7d43ae8e",
      "parents": [
        "0c73f18b7d95de8a007039337063a770b5fc8e7a"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jun 14 03:45:18 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:07 2007 -0700"
      },
      "message": "sysfs: Fix oops in sysfs_drop_dentry on x86_64\n\nFix oops on x86_64 caused by the dereference of dir in\nsysfs_drop_dentry() made before checking if dir is not NULL\n(cf. http://marc.info/?l\u003dlinux-kernel\u0026m\u003d118151626704924\u0026w\u003d2).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "0c73f18b7d95de8a007039337063a770b5fc8e7a",
      "tree": "cf3b6f274139b170136219918dd679f2397e69f6",
      "parents": [
        "8619f979898397582e366877fd5feeba7560d70c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:18 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:07 2007 -0700"
      },
      "message": "sysfs: use singly-linked list for sysfs_dirent tree\n\nMake sysfs_dirent use singly linked list for its tree structure.\nsysfs_link_sibling() and sysfs_unlink_sibling() functions are added to\nhandle simpler cases.  It adds some complexity and cpu cycle overhead\nbut reduced memory footprint is worthwhile on big machines.\n\nThis change reduces the sizeof sysfs_dirent from 104 to 88 on 64bit\nand from 60 to 52 on 32bit.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "8619f979898397582e366877fd5feeba7560d70c",
      "tree": "7d0e92d4c17d92a00dfeba2b840bf89657b30607",
      "parents": [
        "b6b4a4399c2a83d1af77c99dee0d0b5cc15ec268"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:18 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:07 2007 -0700"
      },
      "message": "sysfs: slim down sysfs_dirent-\u003es_active\n\nMake sysfs_dirent-\u003es_active an atomic_t instead of rwsem.  This\nreduces the size of sysfs_dirent from 136 to 104 on 64bit and from 76\nto 60 on 32bit with lock debugging turned off.  With lock debugging\nturned on the reduction is much larger.\n\ns_active starts at zero and each active reference increments s_active.\nPutting a reference decrements s_active.  Deactivation subtracts\nSD_DEACTIVATED_BIAS which is currently INT_MIN and assumed to be small\nenough to make s_active negative.  If s_active is negative,\nsysfs_get() no longer grants new references.  Deactivation succeeds\nimmediately if there is no active user; otherwise, it waits using a\ncompletion for the last put.\n\nDue to the removal of lockdep tricks, this change makes things less\ntrickier in release_sysfs_dirent().  As all the complexity is\ncontained in three s_active functions, I think it\u0027s more readable this\nway.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "b6b4a4399c2a83d1af77c99dee0d0b5cc15ec268",
      "tree": "7a5d3134a338f03ab813024d5501bde1d434c98b",
      "parents": [
        "0b8ead82f5d9d8f08c0d1236f2e350b70a977753"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:18 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:07 2007 -0700"
      },
      "message": "sysfs: move s_active functions to fs/sysfs/dir.c\n\nThese functions are about to receive more complexity and doesn\u0027t\nreally need to be inlined in the first place.  Move them from\nfs/sysfs/sysfs.h to fs/sysfs/dir.c.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "0b8ead82f5d9d8f08c0d1236f2e350b70a977753",
      "tree": "d725dd9ee12498c84e5efd9da23c9170d3e3400e",
      "parents": [
        "8312a8d7c1d19d31027bd4ca127ce671962c23d4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:18 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:07 2007 -0700"
      },
      "message": "sysfs: fix root sysfs_dirent -\u003e root dentry association\n\nThe root sysfs_dirent didn\u0027t point to the root dentry fix it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "8312a8d7c1d19d31027bd4ca127ce671962c23d4",
      "tree": "ee28a44611ac2192b265f5f85a74f7da98d2fdef",
      "parents": [
        "fc9f54b9982e14e6dbe023425c87ffbfd6992c45"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:17 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:07 2007 -0700"
      },
      "message": "sysfs: use iget_locked() instead of new_inode()\n\nAfter dentry is reclaimed, sysfs always used to allocate new dentry\nand inode if the file is accessed again.  This causes problem with\noperations which only pin the inode.  For example, if inotify watch is\nadded to a sysfs file and the dentry for the file is reclaimed, the\nnext update event creates new dentry and new inode making the inotify\nwatch miss all the events from there on.\n\nThis patch fixes it by using iget_locked() instead of new_inode().\nsysfs_new_inode() is renamed to sysfs_get_inode() and inode is\ninitialized iff the inode is newly allocated.  sysfs_instantiate() is\nresponsible for unlocking new inodes.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "fc9f54b9982e14e6dbe023425c87ffbfd6992c45",
      "tree": "61b828ac694d9e8decb02022a1056a5367bb1bef",
      "parents": [
        "7f7cfffe60ed6271c4028ec79ae1c297b44bcb14"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:17 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:07 2007 -0700"
      },
      "message": "sysfs: reorganize sysfs_new_indoe() and sysfs_create()\n\nReorganize/clean up sysfs_new_inode() and sysfs_create().\n\n* sysfs_init_inode() is separated out from sysfs_new_inode() and is\n  responsible for basic initialization.\n* sysfs_instantiate() replaces the last step of sysfs_create() and is\n  responsible for dentry instantitaion.\n* type-specific initialization is moved out to the callers.\n* mode is specified only once when creating a sysfs_dirent.\n* spurious list_del_init(\u0026sd-\u003es_sibling) dropped from create_dir()\n\nThis change is to\n\n* prepare for inode allocation fix.\n* separate alloc and init code for synchronization update.\n* make dentry/inode initialization more flexible for later changes.\n\nThis patch doesn\u0027t introduce visible behavior change.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "7f7cfffe60ed6271c4028ec79ae1c297b44bcb14",
      "tree": "b2d0f1228f9b6cc0cc262cd1be6d950ec4816291",
      "parents": [
        "42b37df6abb42ae021e15bf865b43f3629c7f3ab"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:17 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:07 2007 -0700"
      },
      "message": "sysfs: fix parent refcounting during rename and move\n\nParent reference wasn\u0027t properly transferred during rename and move.\nFix it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "42b37df6abb42ae021e15bf865b43f3629c7f3ab",
      "tree": "a6757acacf4e590318485df0e282f163a9cb1439",
      "parents": [
        "ad6a1e1c66009ba9dcd2f5c90ffa1fb4ce72fce0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:17 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:06 2007 -0700"
      },
      "message": "sysfs: make sysfs_alloc_ino() static\n\nsysfs_alloc_ino() isn\u0027t used out side of fs/sysfs/dir.c.  Make it\nstatic.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "7b595756ec1f49e0049a9e01a1298d53a7faaa15",
      "tree": "cd06687ab3e5c7a5a4ef91903dff207a18c4db76",
      "parents": [
        "dbde0fcf9f8f6d477af3c32d9979e789ee680cde"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:17 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:06 2007 -0700"
      },
      "message": "sysfs: kill unnecessary attribute-\u003eowner\n\nsysfs is now completely out of driver/module lifetime game.  After\ndeletion, a sysfs node doesn\u0027t access anything outside sysfs proper,\nso there\u0027s no reason to hold onto the attribute owners.  Note that\noften the wrong modules were accounted for as owners leading to\naccessing removed modules.\n\nThis patch kills now unnecessary attribute-\u003eowner.  Note that with\nthis change, userland holding a sysfs node does not prevent the\nbacking module from being unloaded.\n\nFor more info regarding lifetime rule cleanup, please read the\nfollowing message.\n\n  http://article.gmane.org/gmane.linux.kernel/510293\n\n(tweaked by Greg to not delete the field just yet, to make it easier to\nmerge things properly.)\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "dbde0fcf9f8f6d477af3c32d9979e789ee680cde",
      "tree": "12a1240213d59c061fec60325c7d5ebb1edebcd7",
      "parents": [
        "198a2a847015805c6f57d8cc732bdaaccb494007"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:16 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:06 2007 -0700"
      },
      "message": "sysfs: reimplement sysfs_drop_dentry()\n\nThis patch reimplements sysfs_drop_dentry() such that remove_dir() can\nuse it to drop dentry instead of using a separate mechanism.  With\nthis change, making directories reclaimable is much easier.\n\nThis patch used to contain fixes for two race conditions around\nsd-\u003es_dentry but that part has been separated out and included into\nmainline early as commit 6aa054aadfea613a437ad0b15d38eca2b963fc0a and\ndd14cbc994709a1c5a64ed3621f583c49a27e521.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "198a2a847015805c6f57d8cc732bdaaccb494007",
      "tree": "614aa44e1bd1ab31a5baaab717c3af95773bd06b",
      "parents": [
        "73107cb3ad3963c0f929ae681c05081eafb1c079"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:16 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:05 2007 -0700"
      },
      "message": "sysfs: separate out sysfs_attach_dentry()\n\nConsolidate sd \u003c-\u003e dentry association into sysfs_attach_dentry() and\ncall it after dentry and inode are properly set up.  This is in\npreparation of sysfs_drop_dentry() updates.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "73107cb3ad3963c0f929ae681c05081eafb1c079",
      "tree": "78c9647d5e6a0d9c89cb8c37b7533aad8f805302",
      "parents": [
        "0ab66088c855eca68513bdd7442a426c4b374ced"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:16 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:05 2007 -0700"
      },
      "message": "sysfs: kill attribute file orphaning\n\nNow that sysfs_dirent can be disconnected from kobject on deletion,\nthere is no need to orphan each attribute files.  All [bin_]attribute\nnodes are automatically orphaned when the parent node is deleted.\nKill attribute file orphaning.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "0ab66088c855eca68513bdd7442a426c4b374ced",
      "tree": "7f931f7f984ac14701a33d123fa9e03d9048bf8f",
      "parents": [
        "eb36165353d0e5ac32b063f555acedcbaf6d3b75"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:16 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:05 2007 -0700"
      },
      "message": "sysfs: implement sysfs_dirent active reference and immediate disconnect\n\nsysfs: implement sysfs_dirent active reference and immediate disconnect\n\nOpening a sysfs node references its associated kobject, so userland\ncan arbitrarily prolong lifetime of a kobject which complicates\nlifetime rules in drivers.  This patch implements active reference and\nmakes the association between kobject and sysfs immediately breakable.\n\nNow each sysfs_dirent has two reference counts - s_count and s_active.\ns_count is a regular reference count which guarantees that the\ncontaining sysfs_dirent is accessible.  As long as s_count reference\nis held, all sysfs internal fields in sysfs_dirent are accessible\nincluding s_parent and s_name.\n\nThe newly added s_active is active reference count.  This is acquired\nby invoking sysfs_get_active() and it\u0027s the caller\u0027s responsibility to\nensure sysfs_dirent itself is accessible (should be holding s_count\none way or the other).  Dereferencing sysfs_dirent to access objects\nout of sysfs proper requires active reference.  This includes access\nto the associated kobjects, attributes and ops.\n\nThe active references can be drained and denied by calling\nsysfs_deactivate().  All active sysfs_dirents must be deactivated\nafter deletion but before the default reference is dropped.  This\nenables immediate disconnect of sysfs nodes.  Once a sysfs_dirent is\ndeleted, it won\u0027t access any entity external to sysfs proper.\n\nBecause attr/bin_attr ops access both the node itself and its parent\nfor kobject, they need to hold active references to both.\nsysfs_get/put_active_two() helpers are provided to help grabbing both\nreferences.  Parent\u0027s is acquired first and released last.\n\nUnlike other operations, mmapped area lingers on after mmap() is\nfinished and the module implement implementing it and kobj need to\nstay referenced till all the mapped pages are gone.  This is\naccomplished by holding one set of active references to the bin_attr\nand its parent if there have been any mmap during lifetime of an\nopenfile.  The references are dropped when the openfile is released.\n\nThis change makes sysfs lifetime rules independent from both kobject\u0027s\nand module\u0027s.  It not only fixes several race conditions caused by\nsysfs not holding onto the proper module when referencing kobject, but\nalso helps fixing and simplifying lifetime management in driver model\nand drivers by taking sysfs out of the equation.\n\nPlease read the following message for more info.\n\n  http://article.gmane.org/gmane.linux.kernel/510293\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "eb36165353d0e5ac32b063f555acedcbaf6d3b75",
      "tree": "b9ce2b45fb972921aa9f02bbe1149d2d85f3ed36",
      "parents": [
        "2b29ac252afff87b8465b064ca2d9740cf1f6e52"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:16 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:04 2007 -0700"
      },
      "message": "sysfs: implement bin_buffer\n\nImplement bin_buffer which contains a mutex and pointer to PAGE_SIZE\nbuffer to properly synchronize accesses to per-openfile buffer and\nprepare for immediate-kobj-disconnect.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "2b29ac252afff87b8465b064ca2d9740cf1f6e52",
      "tree": "9f4930db68ace50adc7c11feba12aafe34e2cdbe",
      "parents": [
        "aecdcedaab49ca40620dc7dd70f67ee7269a66c9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:15 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:04 2007 -0700"
      },
      "message": "sysfs: reimplement symlink using sysfs_dirent tree\n\nsysfs symlink is implemented by referencing dentry and kobject from\nsysfs_dirent - symlink entry references kobject, dentry is used to\nwalk the tree.  This complicates object lifetimes rules and is\ndangerous - for example, there is no way to tell to which module the\ntarget of a symlink belongs and referencing that kobject can make it\nlinger after the module is gone.\n\nThis patch reimplements symlink using only sysfs_dirent tree.  sd for\na symlink points and holds reference to the target sysfs_dirent and\nall walking is done using sysfs_dirent tree.  Simpler and safer.\n\nPlease read the following message for more info.\n\n  http://article.gmane.org/gmane.linux.kernel/510293\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "aecdcedaab49ca40620dc7dd70f67ee7269a66c9",
      "tree": "df1faa0302e6fb428b7ae0a14d443626fd73b121",
      "parents": [
        "3e5190380ebef77f2b015c9e7a4ca225a3d75021"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:15 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:04 2007 -0700"
      },
      "message": "sysfs: implement kobj_sysfs_assoc_lock\n\nkobj-\u003edentry can go away anytime unless the user controls when the\nassociated sysfs node is deleted.  This patch implements\nkobj_sysfs_assoc_lock which protects kobj-\u003edentry.  This will be used\nto maintain kobj based API when converting sysfs to use sysfs_dirent\ntree instead of dentry/kobject.\n\nNote that this lock belongs to kobject/driver-model not sysfs.  Once\nsysfs is converted to not use kobject in its interface, this can be\nremoved from sysfs.\n\nThis is in preparation of object reference simplification.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3e5190380ebef77f2b015c9e7a4ca225a3d75021",
      "tree": "08d17cd0562acf5101063e93c649f5f71f80b3b9",
      "parents": [
        "0c096b507f15397da890051ee73de4266d3941fb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:15 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:04 2007 -0700"
      },
      "message": "sysfs: make sysfs_dirent-\u003es_element a union\n\nMake sd-\u003es_element a union of sysfs_elem_{dir|symlink|attr|bin_attr}\nand rename it to s_elem.  This is to achieve...\n\n* some level of type checking : changing symlink to point to\n  sysfs_dirent instead of kobject is much safer and less painful now.\n* easier / standardized dereferencing\n* allow sysfs_elem_* to contain more than one entry\n\nWhere possible, pointer is obtained by directly deferencing from sd\ninstead of going through other entities.  This reduces dependencies to\ndentry, inode and kobject.  to_attr() and to_bin_attr() are unused now\nand removed.\n\nThis is in preparation of object reference simplification.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "0c096b507f15397da890051ee73de4266d3941fb",
      "tree": "c6b7d204a493157b3926bdb46500313eee9f9690",
      "parents": [
        "13b3086d2ea483cbcae5a4236446cecc082a72cf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:15 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:04 2007 -0700"
      },
      "message": "sysfs: add sysfs_dirent-\u003es_name\n\nAdd s_name to sysfs_dirent.  This is to further reduce dependency to\nthe associated dentry.  Name is copied for directories and symlinks\nbut not for attributes.\n\nWhere possible, name dereferences are converted to use sd-\u003es_name.\nsysfs_symlink-\u003elink_name and sysfs_get_name() are unused now and\nremoved.\n\nThis change allows symlink to be implemented using sysfs_dirent tree\nproper, which is the last remaining dentry-dependent sysfs walk.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "13b3086d2ea483cbcae5a4236446cecc082a72cf",
      "tree": "f6932aaf486a302aa7b03857d780bafda33db2d6",
      "parents": [
        "a26cd7226c24c3be5dd5f48a74832fe64beb8489"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:14 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:04 2007 -0700"
      },
      "message": "sysfs: add sysfs_dirent-\u003es_parent\n\nAdd sysfs_dirent-\u003es_parent.  With this patch, each sd points to and\nholds a reference to its parent.  This allows walking sysfs tree\nwithout referencing sd-\u003es_dentry which can go away anytime if the user\ndoesn\u0027t control when it\u0027s deleted.\n\nsd-\u003es_parent is initialized and parent is referenced in\nsysfs_attach_dirent().  Reference to parent is released when the sd is\nreleased, so as long as reference to a sd is held, s_parent can be\nfollowed.\n\ndentry walk in sysfs_readdir() is convereted to s_parent walk.\n\nThis will be used to reimplement symlink such that it uses only\nsysfs_dirent tree.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "a26cd7226c24c3be5dd5f48a74832fe64beb8489",
      "tree": "0dfb4a15d800494a06a4ddf83c4d33812c404fac",
      "parents": [
        "996b73764e9bb9d5e751fd15b130ba38637d66a8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:14 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:04 2007 -0700"
      },
      "message": "sysfs: consolidate sysfs_dirent creation functions\n\nCurrently there are four functions to create sysfs_dirent -\n__sysfs_new_dirent(), sysfs_new_dirent(), __sysfs_make_dirent() and\nsysfs_make_dirent().  Other than sysfs_make_dirent(), no function has\ntwo users if calls to implement other functions are excluded.\n\nThis patch consolidates sysfs_dirent creation functions into the\nfollowing two.\n\n* sysfs_new_dirent() : allocate and initialize\n* sysfs_attach_dirent() : attach to sysfs_dirent hierarchy and/or\n\t\t\t  associate with dentry\n\nThis simplifies interface and gives callers more flexibility.  This is\nin preparation of object reference simplification.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "996b73764e9bb9d5e751fd15b130ba38637d66a8",
      "tree": "b8fe0310d1d37da2c2434d1398c12b5ae82b929f",
      "parents": [
        "dfeb9fb0343363aadc3ee00a9347d120bc2a26b1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:14 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:03 2007 -0700"
      },
      "message": "sysfs: flatten and fix sysfs_rename_dir() error handling\n\nError handling in sysfs_rename_dir() was broken.\n\n* When lookup_one_len() fails, 0 is returned.\n\n* If parent inode check fails, returns with inode mutex and rename\n  rwsem held.\n\nThis patch fixes the above bugs and flattens error handling such that\nit\u0027s more readable and easier to modify.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "dfeb9fb0343363aadc3ee00a9347d120bc2a26b1",
      "tree": "f9bbba921409d021da1730b8edc95614504583cd",
      "parents": [
        "93e3cd8270d036953120eca83610f95d3f7374c6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:14 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:03 2007 -0700"
      },
      "message": "sysfs: flatten cleanup paths in sysfs_add_link() and create_dir()\n\nFlatten cleanup paths in sysfs_add_link() and create_dir() to improve\nreadability and ease further changes to these functions.  This is in\npreparation of object reference simplification.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "93e3cd8270d036953120eca83610f95d3f7374c6",
      "tree": "8f5bc27cd1d7b28cafd4dd2bdbaabf0f16feb6c8",
      "parents": [
        "7a23ad44047b1084a032bc0d127fe08af024593a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:13 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:03 2007 -0700"
      },
      "message": "sysfs: fix error handling in binattr write()\n\nError handling in fs/sysfs/bin.c:write() was wrong because size_t\ncount is used to receive return value from flush_write() which is\nnegative on failure.\n\nThis patch updates write() such that int variable is used instead.\nread() is updated the same way for consistency.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "7a23ad44047b1084a032bc0d127fe08af024593a",
      "tree": "1f1819b0897fdd8e0237f22d8eebeb55b75894b9",
      "parents": [
        "2b611bb7abdcc08278453fc9f6517401fd69ef95"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:13 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:03 2007 -0700"
      },
      "message": "sysfs: make sysfs_put() ignore NULL sd\n\nMake sysfs_put() ignore NULL sd instead of oopsing.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "2b611bb7abdcc08278453fc9f6517401fd69ef95",
      "tree": "a236b9090d541ed2c24e4fa9e3ee19c1237fc33f",
      "parents": [
        "fa7f912ad4ae0ed7591add52422e48282389652d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:13 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:03 2007 -0700"
      },
      "message": "sysfs: allocate inode number using ida\n\nsysfs used simple incrementing allocator which is not guaranteed to be\nunique.  This patch makes sysfs use ida to give each sd a unique and\npacked inode number.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "fa7f912ad4ae0ed7591add52422e48282389652d",
      "tree": "2f986dbf55002e32d6d296a1b5b96d55135ad28f",
      "parents": [
        "72dba584b695d8bc8c1a50ed54ad4cba7c62314d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:13 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:03 2007 -0700"
      },
      "message": "sysfs: move release_sysfs_dirent() to dir.c\n\nThere is no reason this function should be inlined and soon to follow\nsysfs object reference simplification will make it heavier.  Move it\nto dir.c.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "cfc94cdf8e0f14e692a5a40ef3cc10f464b2511b",
      "tree": "041391e492d909e41e70ac67da53a1025ecf629d",
      "parents": [
        "46336009b5009e9fab3bd623a3beb9c7421545ac"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed May 09 13:19:52 2007 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:00 2007 -0700"
      },
      "message": "debugfs: add rename for debugfs files\n\nImplement debugfs_rename() to allow renaming files/directories in debugfs.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "137d6acaa64afa4cf3d977417424e731ea04705a",
      "tree": "ffafcc606d8b76c07873abd87ec176b75d79b870",
      "parents": [
        "c98451bdb2f3e6d6cc1e03adad641e9497512b49"
      ],
      "author": {
        "name": "Frank Filz",
        "email": "ffilzlnx@us.ibm.com",
        "time": "Mon Jul 09 15:32:29 2007 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:49 2007 -0400"
      },
      "message": "NFSv4: Make sure unlock is really an unlock when cancelling a lock\n\nI ran into a curious issue when a lock is being canceled. The\ncancellation results in a lock request to the vfs layer instead of an\nunlock request. This is particularly insidious when the process that\nowns the lock is exiting. In that case, sometimes the erroneous lock is\napplied AFTER the process has entered zombie state, preventing the lock\nfrom ever being released. Eventually other processes block on the lock\ncausing a slow degredation of the system. In the 2.6.16 kernel this was\ninvestigated on, the problem is compounded by the fact that the cl_sem\nis held while blocking on the vfs lock, which results in most processes\naccessing the nfs file system in question hanging.\n\nIn more detail, here is how the situation occurs:\n\nfirst _nfs4_do_setlk():\n\nstatic int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *fl, int reclaim)\n...\n        ret \u003d nfs4_wait_for_completion_rpc_task(task);\n        if (ret \u003d\u003d 0) {\n...\n        } else\n                data-\u003ecancelled \u003d 1;\n\nthen nfs4_lock_release():\n\nstatic void nfs4_lock_release(void *calldata)\n...\n        if (data-\u003ecancelled !\u003d 0) {\n                struct rpc_task *task;\n                task \u003d nfs4_do_unlck(\u0026data-\u003efl, data-\u003ectx, data-\u003elsp,\n                                data-\u003earg.lock_seqid);\n\nThe problem is the same file_lock that was passed in to _nfs4_do_setlk()\ngets passed to nfs4_do_unlck() from nfs4_lock_release(). So the type is\nstill F_RDLCK or FWRLCK, not F_UNLCK. At some point, when cancelling the\nlock, the type needs to be changed to F_UNLCK. It seemed easiest to do\nthat in nfs4_do_unlck(), but it could be done in nfs4_lock_release().\nThe concern I had with doing it there was if something still needed the\noriginal file_lock, though it turns out the original file_lock still\nneeds to be modified by nfs4_do_unlck() because nfs4_do_unlck() uses the\noriginal file_lock to pass to the vfs layer, and a copy of the original\nfile_lock for the RPC request.\n\nIt seems like the simplest solution is to force all situations where\nnfs4_do_unlck() is being used to result in an unlock, so with that in\nmind, I made the following change:\n\nSigned-off-by: Frank Filz \u003cffilzlnx@us.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c98451bdb2f3e6d6cc1e03adad641e9497512b49",
      "tree": "e5e2aa60dd308fc5fa2b641d84798e6b93376949",
      "parents": [
        "d3bc9a1deb8964d774af8535814cb91bf8f6def0"
      ],
      "author": {
        "name": "Frank van Maarseveen",
        "email": "frankvm@frankvm.com",
        "time": "Mon Jul 09 22:25:29 2007 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:49 2007 -0400"
      },
      "message": "NLM: fix source address of callback to client\n\nUse the destination address of the original NLM request as the\nsource address in callbacks to the client.\n\nSigned-off-by: Frank van Maarseveen \u003cfrankvm@frankvm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6f2e64d3e1f661095e274c9d9d47e3f39a6cf1c0",
      "tree": "59bb802bfe2df34ef5666a3d9b7a8f7c21b7247b",
      "parents": [
        "275a5d24bf56b2d9dd4644c54a56366b89a028f1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 06 10:53:21 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:48 2007 -0400"
      },
      "message": "NFSv4: Make the NFS state model work with the nosharedcache mount option\n\nConsider the case where the user has mounted the remote filesystem\nserver:/foo on the two local directories /bar and /baz using the\nnosharedcache mount option. The files /bar/file and /baz/file are\nrepresented by different inodes in the local namespace, but refer to the\nsame file /foo/file on the server.\nConsider the case where a process opens both /bar/file and /baz/file, then\ncloses /bar/file: because the nfs4_state is not shared between /bar/file\nand /baz/file, the kernel will see that the nfs4_state for /bar/file is no\nlonger referenced, so it will send off a CLOSE rpc call. Unless the\nopen_owners differ, then that CLOSE call will invalidate the open state on\n/baz/file too.\n\nConclusion: we cannot share open state owners between two different\nnon-shared mount instances of the same filesystem.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "275a5d24bf56b2d9dd4644c54a56366b89a028f1",
      "tree": "2c429fc9480ef292b8cfdc81be05f3ff2b2c02a5",
      "parents": [
        "75180df2ed467866ada839fe73cf7cc7d75c0a22"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 16 16:53:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:48 2007 -0400"
      },
      "message": "NFS: Error when mounting the same filesystem with different options\n\nUnless the user sets the NFS_MOUNT_NOSHAREDCACHE mount flag, we should\nreturn EBUSY if the filesystem is already mounted on a superblock that\nhas set conflicting mount options.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "75180df2ed467866ada839fe73cf7cc7d75c0a22",
      "tree": "35966d0b22e58cc49ddee5b5f8d0e64c577dc576",
      "parents": [
        "8007122520f0a3599bdc4df47358a5d83b2574aa"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 16 16:53:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:48 2007 -0400"
      },
      "message": "NFS: Add the mount option \"nosharecache\"\n\nPrior to David Howell\u0027s mount changes in 2.6.18, users who mounted\ndifferent directories which happened to be from the same filesystem on the\nserver would get different super blocks, and hence could choose different\nmount options. As long as there were no hard linked files that crossed from\none subtree to another, this was quite safe.\nPost the changes, if the two directories are on the same filesystem (have\nthe same \u0027fsid\u0027), they will share the same super block, and hence the same\nmount options.\n\nAdd a flag to allow users to elect not to share the NFS super block with\nanother mount point, even if the fsids are the same. This will allow\nusers to set different mount options for the two different super blocks, as\nwas previously possible. It is still up to the user to ensure that there\nare no cache coherency issues when doing this, however the default\nbehaviour will be to share super blocks whenever two paths result in\nthe same fsid.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8007122520f0a3599bdc4df47358a5d83b2574aa",
      "tree": "d2d0def406e081ac32f487b54d2ad347f4f28e81",
      "parents": [
        "136d558ce766967fe3cbf54c3351aba261b5d53b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Jul 01 12:13:59 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:48 2007 -0400"
      },
      "message": "NFS: Add support for mounting NFSv4 file systems with string options\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "136d558ce766967fe3cbf54c3351aba261b5d53b",
      "tree": "c1c66b7478149fc2f3ef3cf1a04bd1e22324eedc",
      "parents": [
        "0076d7b7bab580ca2e94637d351fa7cd357743a8"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Jul 01 12:13:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:48 2007 -0400"
      },
      "message": "NFS: Add final pieces to support in-kernel mount option parsing\n\nHook in final components required for supporting in-kernel mount option\nparsing for NFSv2 and NFSv3 mounts.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0076d7b7bab580ca2e94637d351fa7cd357743a8",
      "tree": "ff41168c86b1ee4c5030c67bf2ca754b6fbe53e8",
      "parents": [
        "bf0fd7680f1cf31b9cbabcc037a204548e2c866d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Jul 01 12:13:49 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:47 2007 -0400"
      },
      "message": "NFS: Introduce generic mount client API\n\nFor NFSv2 and v3 mounts, the first step is to contact the server\u0027s MOUNTD\nand request the file handle for the root of the mounted share.  Add a\nfunction to the NFS client that handles this operation.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bf0fd7680f1cf31b9cbabcc037a204548e2c866d",
      "tree": "928e908559377a0489f8b4004d821d8f61c761bf",
      "parents": [
        "013a8c1ab5a214c608e12b602770449fb6b15a81"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Jul 01 12:13:44 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:47 2007 -0400"
      },
      "message": "NFS: Add enums and match tables for mount option parsing\n\nThis generic infrastructure works for both NFS and NFSv4 mounts.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "013a8c1ab5a214c608e12b602770449fb6b15a81",
      "tree": "d13059ebbaa2efd1ff72fa438d861f4efd4685c7",
      "parents": [
        "19207231c9874899e7511507ebb1b88d648a5743"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Jul 01 12:13:38 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:47 2007 -0400"
      },
      "message": "NFS: Improve debugging output in NFS in-kernel mount client\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "19207231c9874899e7511507ebb1b88d648a5743",
      "tree": "50942ddd79d25b24d81b9e2690be1b37e4ee0b43",
      "parents": [
        "3ea97309e6b18bce200211b3f9188e8023321adc"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Jul 01 12:13:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:46 2007 -0400"
      },
      "message": "NFS: Clean up in-kernel NFS mount\n\nClean up white space and coding conventions.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "3ea97309e6b18bce200211b3f9188e8023321adc"
}
