)]}'
{
  "log": [
    {
      "commit": "296c2d86635bd6ecd8f282dfff18bb68fb4fc512",
      "tree": "1a8cd312d4e624f3b4b1d93086630dd0e75465bd",
      "parents": [
        "ee1ec32903fc3139af00ebc7ee483dabca3f4fa5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 06:02:01 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:03 2009 -0400"
      },
      "message": "constify dentry_operations: configfs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "436443f0f77f730f9f700095799c485356695c08",
      "tree": "d699084a975af202efd62590f20b0b9579e5a4aa",
      "parents": [
        "dcf6a79dda5cc2a2bec183e50d829030c0972aaa"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Feb 03 23:12:34 2009 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Feb 04 09:46:25 2009 -0800"
      },
      "message": "Revert \"configfs: Silence lockdep on mkdir(), rmdir() and configfs_depend_item()\"\n\nThis reverts commit 0e0333429a6280e6eb3c98845e4eed90d5f8078a.\n\nI committed this by accident - Joel and Louis are working with the lockdep\nmaintainer to provide a better solution than just turning lockdep off.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: \u003cJoel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "0e0333429a6280e6eb3c98845e4eed90d5f8078a",
      "tree": "5c04f9892c52faedfaa5b879a23f96bf77d02953",
      "parents": [
        "f8afead7169f0f28a4b421bcbdb510e52a2d094d"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "Joel.Becker@oracle.com",
        "time": "Wed Dec 17 14:23:52 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Feb 02 14:20:18 2009 -0800"
      },
      "message": "configfs: Silence lockdep on mkdir(), rmdir() and configfs_depend_item()\n\nWhen attaching default groups (subdirs) of a new group (in mkdir() or\nin configfs_register()), configfs recursively takes inode\u0027s mutexes\nalong the path from the parent of the new group to the default\nsubdirs. This is needed to ensure that the VFS will not race with\noperations on these sub-dirs. This is safe for the following reasons:\n\n- the VFS allows one to lock first an inode and second one of its\n  children (The lock subclasses for this pattern are respectively\n  I_MUTEX_PARENT and I_MUTEX_CHILD);\n- from this rule any inode path can be recursively locked in\n  descending order as long as it stays under a single mountpoint and\n  does not follow symlinks.\n\nUnfortunately lockdep does not know (yet?) how to handle such\nrecursion.\n\nI\u0027ve tried to use Peter Zijlstra\u0027s lock_set_subclass() helper to\nupgrade i_mutexes from I_MUTEX_CHILD to I_MUTEX_PARENT when we know\nthat we might recursively lock some of their descendant, but this\nusage does not seem to fit the purpose of lock_set_subclass() because\nit leads to several i_mutex locked with subclass I_MUTEX_PARENT by\nthe same task.\n\n\u003eFrom inside configfs it is not possible to serialize those recursive\nlocking with a top-level one, because mkdir() and rmdir() are already\ncalled with inodes locked by the VFS. So using some\nmutex_lock_nest_lock() is not an option.\n\nI am proposing two solutions:\n1) one that wraps recursive mutex_lock()s with\n   lockdep_off()/lockdep_on().\n2) (as suggested earlier by Peter Zijlstra) one that puts the\n   i_mutexes recursively locked in different classes based on their\n   depth from the top-level config_group created. This\n   induces an arbitrary limit (MAX_LOCK_DEPTH - 2 \u003d\u003d 46) on the\n   nesting of configfs default groups whenever lockdep is activated\n   but this limit looks reasonably high. Unfortunately, this alos\n   isolates VFS operations on configfs default groups from the others\n   and thus lowers the chances to detect locking issues.\n\nThis patch implements solution 1).\n\nSolution 2) looks better from lockdep\u0027s point of view, but fails with\nconfigfs_depend_item(). This needs to rework the locking\nscheme of configfs_depend_item() by removing the variable lock recursion\ndepth, and I think that it\u0027s doable thanks to the configfs_dirent_lock.\nFor now, let\u0027s stick to solution 1).\n\nSigned-off-by: Louis Rilling \u003clouis.rilling@kerlabs.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4591dabe27ec0f7928fb73d93694698e21dc769e",
      "tree": "46e23f750b2bf66f3f77b7cf9cb1ba11d542a2b3",
      "parents": [
        "5f3a211a8b02222498f134ea961fe29c97a4801f"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Jan 22 10:42:52 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Jan 22 13:15:56 2009 +0300"
      },
      "message": "fs/Kconfig: move configfs out\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "56ff5efad96182f4d3cb3dc6b07396762c658f16",
      "tree": "cb91f93aa2324573527165d56d230b606a3111ed",
      "parents": [
        "acfa4380efe77e290d3a96b11cd4c9f24f4fbb18"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 09 09:34:39 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 05 11:54:28 2009 -0500"
      },
      "message": "zero i_uid/i_gid on inode allocation\n\n... and don\u0027t bother in callers.  Don\u0027t bother with zeroing i_blocks,\nwhile we are at it - it\u0027s already been zeroed.\n\ni_mode is not worth the effort; it has no common default value.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "421748ecde8e69a6364e5ae66eb3bf87e1f995c0",
      "tree": "50ef878f8c46b1ec729625ed678d04aaeaaee6dd",
      "parents": [
        "a63bb99660d82dfe7c51588e1f9aadefb756ba51"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Aug 02 01:04:36 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:12:52 2008 -0400"
      },
      "message": "[PATCH] assorted path_lookup() -\u003e kern_path() conversions\n\nmore nameidata eviction\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "de6bf18e9ce0df807dab08cff08751cac383429d",
      "tree": "3e60e9f88b4da4711a34df273c99a348bdc10236",
      "parents": [
        "9780eb6cfaf7d2d5ccc061eaf94e7aec6a17791e"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "louis.rilling@kerlabs.com",
        "time": "Fri Aug 15 12:37:23 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Aug 22 11:09:02 2008 -0700"
      },
      "message": "[PATCH] configfs: Consolidate locking around configfs_detach_prep() in configfs_rmdir()\n\nIt appears that configfs_rmdir() can protect configfs_detach_prep() retries with\nless calls to {spin,mutex}_{lock,unlock}, and a cleaner code.\n\nThis patch does not change any behavior, except that it removes two useless\nlock/unlock pairs having nothing inside to protect and providing a useless\nbarrier.\n\nSigned-off-by: Louis Rilling \u003clouis.rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "70526b67443a980d5029d9cf06903bef731a4e96",
      "tree": "af4558619eeeda7f0075017881d8274d03854ca9",
      "parents": [
        "99cefda42ac550863b5ae1df9e60322e377decf9"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Jun 17 15:34:32 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:13 2008 -0700"
      },
      "message": "[PATCH] configfs: Pin configfs subsystems separately from new config_items.\n\nconfigfs_mkdir() creates a new item by calling its parent\u0027s\n-\u003emake_item/group() functions.  Once that object is created,\nconfigfs_mkdir() calls try_module_get() on the new item\u0027s module.  If it\nsucceeds, the module owning the new item cannot be unloaded, and\nconfigfs is safe to reference the item.\n\nIf the item and the subsystem it belongs to are part of the same module,\nthe subsystem is also pinned.  This is the common case.\n\nHowever, if the subsystem is made up of multiple modules, this may not\npin the subsystem.  Thus, it would be possible to unload the toplevel\nsubsystem module while there is still a child item.  Thus, we now\ntry_module_get() the subsystem\u0027s module.  This only really affects\nchildren of the toplevel subsystem group.  Deeper children already have\ntheir parents pinned.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "99cefda42ac550863b5ae1df9e60322e377decf9",
      "tree": "20926e04d7d5ff770edf337e0e4493a1b0b6a9cc",
      "parents": [
        "2e2ce171c3ba6f2753fb1fd2706b63683394da2d"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "louis.rilling@kerlabs.com",
        "time": "Fri Jun 27 13:10:25 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:13 2008 -0700"
      },
      "message": "[PATCH] configfs: Fix open directory making rmdir() fail\n\nWhen checking for user-created elements under an item to be removed by rmdir(),\nconfigfs_detach_prep() counts fake configfs_dirents created by dir_open() as\nuser-created and fails when finding one. It is however perfectly valid to remove\na directory that is open.\n\nSimply make configfs_detach_prep() skip fake configfs_dirent, like it already\ndoes for attributes, and like detach_groups() does.\n\nSigned-off-by: Louis Rilling \u003clouis.rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "2e2ce171c3ba6f2753fb1fd2706b63683394da2d",
      "tree": "b3b75b6b140ab6807754fd500c5a55b0cb7324f8",
      "parents": [
        "2a109f2a4155f168047aa2f5b3a170e279bef89a"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "louis.rilling@kerlabs.com",
        "time": "Fri Jul 04 16:56:06 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:13 2008 -0700"
      },
      "message": "[PATCH] configfs: Lock new directory inodes before removing on cleanup after failure\n\nOnce a new configfs directory is created by configfs_attach_item() or\nconfigfs_attach_group(), a failure in the remaining initialization steps leads\nto removing a directory which inode the VFS may have already accessed.\n\nThis commit adds the necessary inode locking to safely remove configfs\ndirectories while cleaning up after a failure. As an advantage, the locking\nrules of populate_groups() and detach_groups() become the same: the caller must\nhave the group\u0027s inode mutex locked.\n\nSigned-off-by: Louis Rilling \u003clouis.rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "2a109f2a4155f168047aa2f5b3a170e279bef89a",
      "tree": "8e9a080046fb1abdba10e288b89e92cc4c39f6ea",
      "parents": [
        "9a73d78cda750f12e25eb811878f2d9dbab1bc6e"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "louis.rilling@kerlabs.com",
        "time": "Fri Jul 04 16:56:05 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:13 2008 -0700"
      },
      "message": "[PATCH] configfs: Prevent userspace from creating new entries under attaching directories\n\nprocess 1: \t\t\t\t\tprocess 2:\nconfigfs_mkdir(\"A\")\n  attach_group(\"A\")\n    attach_item(\"A\")\n      d_instantiate(\"A\")\n    populate_groups(\"A\")\n      mutex_lock(\"A\")\n      attach_group(\"A/B\")\n        attach_item(\"A\")\n          d_instantiate(\"A/B\")\n\t\t\t\t\t\tmkdir(\"A/B/C\")\n\t\t\t\t\t\t  do_path_lookup(\"A/B/C\", LOOKUP_PARENT)\n\t\t\t\t\t\t    ok\n\t\t\t\t\t\t  lookup_create(\"A/B/C\")\n\t\t\t\t\t\t    mutex_lock(\"A/B\")\n\t\t\t\t\t\t    ok\n\t\t\t\t\t\t  configfs_mkdir(\"A/B/C\")\n\t\t\t\t\t\t    ok\n      attach_group(\"A/C\")\n        attach_item(\"A/C\")\n          d_instantiate(\"A/C\")\n        populate_groups(\"A/C\")\n          mutex_lock(\"A/C\")\n          attach_group(\"A/C/D\")\n            attach_item(\"A/C/D\")\n              failure\n          mutex_unlock(\"A/C\")\n          detach_groups(\"A/C\")\n            nothing to do\n\t\t\t\t\t\tmkdir(\"A/C/E\")\n\t\t\t\t\t\t  do_path_lookup(\"A/C/E\", LOOKUP_PARENT)\n\t\t\t\t\t\t    ok\n\t\t\t\t\t\t  lookup_create(\"A/C/E\")\n\t\t\t\t\t\t    mutex_lock(\"A/C\")\n\t\t\t\t\t\t    ok\n\t\t\t\t\t\t  configfs_mkdir(\"A/C/E\")\n\t\t\t\t\t\t    ok\n        detach_item(\"A/C\")\n        d_delete(\"A/C\")\n      mutex_unlock(\"A\")\n      detach_groups(\"A\")\n        mutex_lock(\"A/B\")\n        detach_group(\"A/B\")\n\t  detach_groups(\"A/B\")\n\t    nothing since no _default_ group\n          detach_item(\"A/B\")\n        mutex_unlock(\"A/B\")\n        d_delete(\"A/B\")\n    detach_item(\"A\")\n    d_delete(\"A\")\n\nTwo bugs:\n\n1/ \"A/B/C\" and \"A/C/E\" are created, but never removed while their parent are\nremoved in the end. The same could happen with symlink() instead of mkdir().\n\n2/ \"A\" and \"A/C\" inodes are not locked while detach_item() is called on them,\n   which may probably confuse VFS.\n\nThis commit fixes 1/, tagging new directories with CONFIGFS_USET_CREATING before\nbuilding the inode and instantiating the dentry, and validating the whole\ngroup+default groups hierarchy in a second pass by clearing\nCONFIGFS_USET_CREATING.\n\tmkdir(), symlink(), lookup(), and dir_open() simply return -ENOENT if\ncalled in (or linking to) a directory tagged with CONFIGFS_USET_CREATING. This\ndoes not prevent userspace from calling stat() successfuly on such directories,\nbut this prevents userspace from adding (children to | symlinking from/to |\nread/write attributes of | listing the contents of) not validated items. In\nother words, userspace will not interact with the subsystem on a new item until\nthe new item creation completes correctly.\n\tIt was first proposed to re-use CONFIGFS_USET_IN_MKDIR instead of a new\nflag CONFIGFS_USET_CREATING, but this generated conflicts when checking the\ntarget of a new symlink: a valid target directory in the middle of attaching\na new user-created child item could be wrongly detected as being attached.\n\n2/ is fixed by next commit.\n\nSigned-off-by: Louis Rilling \u003clouis.rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9a73d78cda750f12e25eb811878f2d9dbab1bc6e",
      "tree": "abdc6537d51ee4faeb41c452428f2bde72abc9c8",
      "parents": [
        "4768e9b18dc63719209c68920d4ae52dc49b6161"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "louis.rilling@kerlabs.com",
        "time": "Fri Jun 20 14:09:22 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:13 2008 -0700"
      },
      "message": "[PATCH] configfs: Fix failing symlink() making rmdir() fail\n\nOn a similar pattern as mkdir() vs rmdir(), a failing symlink() may make rmdir()\nfail for the symlink\u0027s parent and the symlink\u0027s target as well.\n\nfailing symlink() making target\u0027s rmdir() fail:\n\n\tprocess 1:\t\t\t\tprocess 2:\n\tsymlink(\"A/S\" -\u003e \"B\")\n\t  allow_link()\n\t  create_link()\n\t    attach to \"B\" links list\n\t\t\t\t\t\trmdir(\"B\")\n\t\t\t\t\t\t  detach_prep(\"B\")\n\t\t\t\t\t\t    error because of new link\n\t    configfs_create_link(\"A\", \"S\")\n\t      error (eg -ENOMEM)\n\nfailing symlink() making parent\u0027s rmdir() fail:\n\n\tprocess 1:\t\t\t\tprocess 2:\n\tsymlink(\"A/D/S\" -\u003e \"B\")\n\t  allow_link()\n\t  create_link()\n\t    attach to \"B\" links list\n\t    configfs_create_link(\"A/D\", \"S\")\n\t      make_dirent(\"A/D\", \"S\")\n\t\t\t\t\t\trmdir(\"A\")\n\t\t\t\t\t\t  detach_prep(\"A\")\n\t\t\t\t\t\t    detach_prep(\"A/D\")\n\t\t\t\t\t\t      error because of \"S\"\n\t      create(\"S\")\n\t        error (eg -ENOMEM)\n\nWe cannot use the same solution as for mkdir() vs rmdir(), since rmdir() on the\ntarget cannot wait on the i_mutex of the new symlink\u0027s parent without risking a\ndeadlock (with other symlink() or sys_rename()). Instead we define a global\nmutex protecting all configfs symlinks attachment, so that rmdir() can avoid the\nraces above.\n\nSigned-off-by: Louis Rilling \u003clouis.rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4768e9b18dc63719209c68920d4ae52dc49b6161",
      "tree": "ee9e805c405ea6a6cdf44ba30fd66047bc522b1b",
      "parents": [
        "dacdd0e04768da1fd2b24a6ee274c582b40d0c5b"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "louis.rilling@kerlabs.com",
        "time": "Mon Jun 23 14:16:17 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:12 2008 -0700"
      },
      "message": "[PATCH] configfs: Fix symlink() to a removing item\n\nThe rule for configfs symlinks is that symlinks always point to valid\nconfig_items, and prevent the target from being removed. However,\nconfigfs_symlink() only checks that it can grab a reference on the target item,\nwithout ensuring that it remains alive until the symlink is correctly attached.\n\nThis patch makes configfs_symlink() fail whenever the target is being removed,\nusing the CONFIGFS_USET_DROPPING flag set by configfs_detach_prep() and\nprotected by configfs_dirent_lock.\n\nThis patch introduces a similar (weird?) behavior as with mkdir failures making\nrmdir fail: if symlink() races with rmdir() of the parent directory (or its\nyoungest user-created ancestor if parent is a default group) or rmdir() of the\ntarget directory, and then fails in configfs_create(), this can make the racing\nrmdir() fail despite the concerned directory having no user-created entry (resp.\nno symlink pointing to it or one of its default groups) in the end.\nThis behavior is fixed in later patches.\n\nSigned-off-by: Louis Rilling \u003clouis.rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "dacdd0e04768da1fd2b24a6ee274c582b40d0c5b",
      "tree": "45b559bb14e9f968943bbc98b23b1489823898e0",
      "parents": [
        "94ad374a0751f40d25e22e036c37f7263569d24c"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 17 16:54:19 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:12 2008 -0700"
      },
      "message": "[PATCH] configfs: Include linux/err.h in linux/configfs.h\n\nWe now use PTR_ERR() in the -\u003emake_item() and -\u003emake_group() operations.\nFolks including configfs.h need err.h.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a6795e9ebb420d87af43789174689af0d66d1d35",
      "tree": "fb2a86ad010015fdd311f3b7f6ef30f60c14b8f7",
      "parents": [
        "f89ab8619e5320cc9c2576f5f8dcbaf6c0ba3950"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 17 15:21:29 2008 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 17 15:21:29 2008 -0700"
      },
      "message": "configfs: Allow -\u003emake_item() and -\u003emake_group() to return detailed errors.\n\nThe configfs operations -\u003emake_item() and -\u003emake_group() currently\nreturn a new item/group.  A return of NULL signifies an error.  Because\nof this, -ENOMEM is the only return code bubbled up the stack.\n\nMultiple folks have requested the ability to return specific error codes\nwhen these operations fail.  This patch adds that ability by changing the\n-\u003emake_item/group() ops to return ERR_PTR() values.  These errors are\nbubbled up appropriately.  NULL returns are changed to -ENOMEM for\ncompatibility.\n\nAlso updated are the in-kernel users of configfs.\n\nThis is a rework of reverted commit 11c3b79218390a139f2d474ee1e983a672d5839a.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "f89ab8619e5320cc9c2576f5f8dcbaf6c0ba3950",
      "tree": "e703050b232c76de7cb25afd63a2b4dd885c4bb9",
      "parents": [
        "5b664cb235e97afbf34db9c4d77f08ebd725335e"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 17 14:53:48 2008 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 17 14:53:48 2008 -0700"
      },
      "message": "Revert \"configfs: Allow -\u003emake_item() and -\u003emake_group() to return detailed errors.\"\n\nThis reverts commit 11c3b79218390a139f2d474ee1e983a672d5839a.  The code\nwill move to PTR_ERR().\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "e75206517504461778c283b942440ef312e437d5",
      "tree": "a0acb0d8cc4527fc00560d7b78a971100fba7f57",
      "parents": [
        "11c3b79218390a139f2d474ee1e983a672d5839a"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "Louis.Rilling@kerlabs.com",
        "time": "Thu Jun 12 17:26:47 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:16 2008 -0700"
      },
      "message": "configfs: call drop_link() to cleanup after create_link() failure\n\nWhen allow_link() succeeds but create_link() fails, the subsystem is not\ninformed of the failure.\n\nThis patch fixes this by calling drop_link() on create_link() failures.\n\nSigned-off-by: Louis Rilling \u003cLouis.Rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "11c3b79218390a139f2d474ee1e983a672d5839a",
      "tree": "03fa1a4927f2d9856ee45a64d522424478058b6f",
      "parents": [
        "6d8344baee99402de58b5fa5dfea197242955c15"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jun 12 14:00:18 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:16 2008 -0700"
      },
      "message": "configfs: Allow -\u003emake_item() and -\u003emake_group() to return detailed errors.\n\nThe configfs operations -\u003emake_item() and -\u003emake_group() currently\nreturn a new item/group.  A return of NULL signifies an error.  Because\nof this, -ENOMEM is the only return code bubbled up the stack.\n\nMultiple folks have requested the ability to return specific error codes\nwhen these operations fail.  This patch adds that ability by changing the\n-\u003emake_item/group() ops to return an int.\n\nAlso updated are the in-kernel users of configfs.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "6d8344baee99402de58b5fa5dfea197242955c15",
      "tree": "6be890feb8063bdaac6efaff1044980cb76ee961",
      "parents": [
        "b3e76af87441fc36eef3516d73ab2314e7b2d911"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "Louis.Rilling@kerlabs.com",
        "time": "Mon Jun 16 19:01:02 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:16 2008 -0700"
      },
      "message": "configfs: Fix failing mkdir() making racing rmdir() fail\n\nWhen fixing the rename() vs rmdir() deadlock, we stopped locking default groups\u0027\ninodes in configfs_detach_prep(), letting racing mkdir() in default groups\nproceed concurrently. This enables races like below happen, which leads to a\nfailing mkdir() making rmdir() fail, despite the group to remove having no\nuser-created directory under it in the end.\n\n\tprocess A: \t\t\tprocess B:\n\t/* PWD\u003dA/B */\n\tmkdir(\"C\")\n\t  make_item(\"C\")\n\t  attach_group(\"C\")\n\t\t\t\t\trmdir(\"A\")\n\t\t\t\t\t  detach_prep(\"A\")\n\t\t\t\t\t    detach_prep(\"B\")\n\t\t\t\t\t      error because of \"C\"\n\t\t\t\t\t  return -ENOTEMPTY\n\t    attach_group(\"C/D\")\n\t      error (eg -ENOMEM)\n\t  return -ENOMEM\n\nThis patch prevents such scenarii by making rmdir() wait as long as\ndetach_prep() fails because a racing mkdir() is in the middle of attach_group().\nTo achieve this, mkdir() sets a flag CONFIGFS_USET_IN_MKDIR in parent\u0027s\nconfigfs_dirent before calling attach_group(), and clears the flag once\nattach_group() is done. detach_prep() fails with -EAGAIN whenever the flag is\nhit and returns the guilty inode\u0027s mutex so that rmdir() can wait on it.\n\nSigned-off-by: Louis Rilling \u003cLouis.Rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "b3e76af87441fc36eef3516d73ab2314e7b2d911",
      "tree": "36c6c6a21ac16b609302845a7dcb91749a972e4c",
      "parents": [
        "107ed40bd070df5e4a0a012042c45c40963dc574"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "Louis.Rilling@kerlabs.com",
        "time": "Mon Jun 16 19:01:01 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:16 2008 -0700"
      },
      "message": "configfs: Fix deadlock with racing rmdir() and rename()\n\nThis patch fixes the deadlock between racing sys_rename() and configfs_rmdir().\n\nThe idea is to avoid locking i_mutexes of default groups in\nconfigfs_detach_prep(), and rely instead on the new configfs_dirent_lock to\nprotect against configfs_dirent\u0027s linkage mutations. To ensure that an mkdir()\nracing with rmdir() will not create new items in a to-be-removed default group,\nwe make configfs_new_dirent() check for the CONFIGFS_USET_DROPPING flag right\nbefore linking the new dirent, and return error if the flag is set. This makes\nracing mkdir()/symlink()/dir_open() fail in places where errors could already\nhappen, resp. in (attach_item()|attach_group())/create_link()/new_dirent().\n\nconfigfs_depend() remains safe since it locks all the path from configfs root,\nand is thus mutually exclusive with rmdir().\n\nAn advantage of this is that now detach_groups() unconditionnaly takes the\ndefault groups i_mutex, which makes it more consistent with populate_groups().\n\nSigned-off-by: Louis Rilling \u003cLouis.Rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "107ed40bd070df5e4a0a012042c45c40963dc574",
      "tree": "d3b8c1799083c0e7d4f1af3e1b84f0a86372eaee",
      "parents": [
        "5301a77da2da1e4c22573e0e8d394a653b8ad9f9"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "Louis.Rilling@kerlabs.com",
        "time": "Mon Jun 16 19:01:00 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:16 2008 -0700"
      },
      "message": "configfs: Make configfs_new_dirent() return error code instead of NULL\n\nThis patch makes configfs_new_dirent return negative error code instead of NULL,\nwhich will be useful in the next patch to differentiate ENOMEM from ENOENT.\n\nSigned-off-by: Louis Rilling \u003cLouis.Rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "5301a77da2da1e4c22573e0e8d394a653b8ad9f9",
      "tree": "c2a6186510c3a4502d923cf3f5d445fa821cb277",
      "parents": [
        "6f61076406251626be39651d114fac412b1e0c39"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "Louis.Rilling@kerlabs.com",
        "time": "Mon Jun 16 19:00:59 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:16 2008 -0700"
      },
      "message": "configfs: Protect configfs_dirent s_links list mutations\n\nSymlinks to a config_item are listed under its configfs_dirent s_links, but the\nlist mutations are not protected by any common lock.\n\nThis patch uses the configfs_dirent_lock spinlock to add the necessary\nprotection.\n\nNote: we should also protect the list_empty() test in configfs_detach_prep() but\n1/ the lock should not be released immediately because nothing would prevent the\nlist from being filled after a successful list_empty() test, making the problem\ntricky,\n2/ this will be solved by the rmdir() vs rename() deadlock bugfix.\n\nSigned-off-by: Louis Rilling \u003cLouis.Rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "6f61076406251626be39651d114fac412b1e0c39",
      "tree": "d7adb1de212cfb7ead490b448bf75ce3b3b91c9c",
      "parents": [
        "fe9f387740ac7cb3b7c2fffa76807e997e6c6292"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "Louis.Rilling@kerlabs.com",
        "time": "Mon Jun 16 19:00:58 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:15 2008 -0700"
      },
      "message": "configfs: Introduce configfs_dirent_lock\n\nThis patch introduces configfs_dirent_lock spinlock to protect configfs_dirent\ntraversals against linkage mutations (add/del/move). This will allow\nconfigfs_detach_prep() to avoid locking i_mutexes.\n\nLocking rules for configfs_dirent linkage mutations are the same plus the\nrequirement of taking configfs_dirent_lock. For configfs_dirent walking, one can\neither take appropriate i_mutex as before, or take configfs_dirent_lock.\n\nThe spinlock could actually be a mutex, but the critical sections are either\nO(1) or should not be too long (default groups walking in last patch).\n\nChangeLog:\n  - Clarify the comment on configfs_dirent_lock usage\n  - Move sd-\u003es_element init before linking the new dirent\n  - In lseek(), do not release configfs_dirent_lock before the dirent is\n    relinked.\n\nSigned-off-by: Louis Rilling \u003cLouis.Rilling@kerlabs.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "8e24eea728068bbeb6a3c500b848f883a20bf225",
      "tree": "93e79da649723e2766237505b22725fec395f139",
      "parents": [
        "530b6412786d7f83592c1a8e2445541ed73fca76"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Apr 30 00:55:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:54 2008 -0700"
      },
      "message": "fs: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e4ad08fe64afca4ef79ecc4c624e6e871688da0d",
      "tree": "5b8b390b874700041dc0c095e8ba9ac3ed42ea77",
      "parents": [
        "76f1418b485da2707531178e517bbb5cf06b3c76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 30 00:54:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: bdi: add separate writeback accounting capability\n\nAdd a new BDI capability flag: BDI_CAP_NO_ACCT_WB.  If this flag is\nset, then don\u0027t update the per-bdi writeback stats from\ntest_set_page_writeback() and test_clear_page_writeback().\n\nMisc cleanups:\n\n - convert bdi_cap_writeback_dirty() and friends to static inline functions\n - create a flag that includes all three dirty/writeback related flags,\n   since almst all users will want to have them toghether\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d957f9bf87da74f420424d16ece005202bbebd3",
      "tree": "363d4770c0c74a536524c99ccd2762ce96ee9bbe",
      "parents": [
        "4ac9137858e08a19f29feac4e1f4df7c268b0ba5"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Introduce path_put()\n\n* Add path_put() functions for releasing a reference to the dentry and\n  vfsmount of a struct path in the right order\n\n* Switch from path_release(nd) to path_put(\u0026nd-\u003epath)\n\n* Rename dput_path() to path_put_conditional()\n\n[akpm@linux-foundation.org: fix cifs]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003clinux-fsdevel@vger.kernel.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ac9137858e08a19f29feac4e1f4df7c268b0ba5",
      "tree": "f5b5d84fd12fcc2b0ba0e7ce1a79ff381ad8f5dd",
      "parents": [
        "c5e725f33b733a77de622e91b6ba5645fcf070be"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Embed a struct path into struct nameidata instead of nd-\u003e{dentry,mnt}\n\nThis is the central patch of a cleanup series. In most cases there is no good\nreason why someone would want to use a dentry for itself. This series reflects\nthat fact and embeds a struct path into nameidata.\n\nTogether with the other patches of this series\n- it enforced the correct order of getting/releasing the reference count on\n  \u003cdentry,vfsmount\u003e pairs\n- it prepares the VFS for stacking support since it is essential to have a\n  struct path in every place where the stack can be traversed\n- it reduces the overall code size:\n\nwithout patch series:\n   text    data     bss     dec     hex filename\n5321639  858418  715768 6895825  6938d1 vmlinux\n\nwith patch series:\n   text    data     bss     dec     hex filename\n5320026  858418  715768 6894212  693284 vmlinux\n\nThis patch:\n\nSwitch from nd-\u003e{dentry,mnt} to nd-\u003epath.{dentry,mnt} everywhere.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix cifs]\n[akpm@linux-foundation.org: fix smack]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "116ba5d5ea1a5789a8c14b1087014007cada363b",
      "tree": "d63c0812f81b1d0bb1e28b726a4d9eae493b3c79",
      "parents": [
        "ba611edfe406be745be95c332990c8e908c026c3"
      ],
      "author": {
        "name": "Joonwoo Park",
        "email": "joonwpark81@gmail.com",
        "time": "Wed Dec 26 12:09:57 2007 +0900"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Jan 25 15:05:47 2008 -0800"
      },
      "message": "configfs: file.c fix possible recursive locking\n\nconfigfs_register_subsystem() with default_groups triggers recursive locking.\nit seems that mutex_lock_nested is needed.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible recursive locking detected ]\n2.6.24-rc6 #145\n---------------------------------------------\nswapper/1 is trying to acquire lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#3){--..}, at: [\u003cc40c9a9e\u003e] configfs_add_file+0x2e/0x70\n\nbut task is already holding lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#3){--..}, at: [\u003cc40ca985\u003e] configfs_register_subsystem+0x55/0x130\n\nother info that might help us debug this:\n1 lock held by swapper/1:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#3){--..}, at: [\u003cc40ca985\u003e] configfs_register_subsystem+0x55/0x130\n\nstack backtrace:\nPid: 1, comm: swapper Not tainted 2.6.24-rc6 #145\n [\u003cc40053ba\u003e] show_trace_log_lvl+0x1a/0x30\n [\u003cc4005e82\u003e] show_trace+0x12/0x20\n [\u003cc400687e\u003e] dump_stack+0x6e/0x80\n [\u003cc404ec72\u003e] __lock_acquire+0xe62/0x1120\n [\u003cc404efb2\u003e] lock_acquire+0x82/0xa0\n [\u003cc43fda88\u003e] mutex_lock_nested+0x98/0x2e0\n [\u003cc40c9a9e\u003e] configfs_add_file+0x2e/0x70\n [\u003cc40c9b0c\u003e] configfs_create_file+0x2c/0x40\n [\u003cc40ca639\u003e] configfs_attach_item+0x139/0x220\n [\u003cc40ca734\u003e] configfs_attach_group+0x14/0x140\n [\u003cc40ca7e9\u003e] configfs_attach_group+0xc9/0x140\n [\u003cc40ca9f6\u003e] configfs_register_subsystem+0xc6/0x130\n [\u003cc45c8186\u003e] init_netconsole+0x2b6/0x300\n [\u003cc45a75f2\u003e] kernel_init+0x142/0x320\n [\u003cc4004fb3\u003e] kernel_thread_helper+0x7/0x14\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Joonwoo Park \u003cjoonwpark81@gmail.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "ba611edfe406be745be95c332990c8e908c026c3",
      "tree": "c343d9dbbc86379414b7976bfbe507763d376611",
      "parents": [
        "02ac0499c0e3c62f2e2bf61a13870b36ea103564"
      ],
      "author": {
        "name": "Joonwoo Park",
        "email": "joonwpark81@gmail.com",
        "time": "Wed Dec 26 12:09:57 2007 +0900"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Jan 25 15:05:47 2008 -0800"
      },
      "message": "configfs: dir.c fix possible recursive locking\n\nconfigfs_register_subsystem() with default_groups triggers recursive locking.\nit seems that mutex_lock_nested is needed.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible recursive locking detected ]\n2.6.24-rc6 #141\n---------------------------------------------\nswapper/1 is trying to acquire lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#3){--..}, at: [\u003cc40ca76f\u003e] configfs_attach_group+0x4f/0x190\n\nbut task is already holding lock:\n (\u0026sb-\u003es_type-\u003ei_mutex_key#3){--..}, at: [\u003cc40ca9d5\u003e] configfs_register_subsystem+0x55/0x130\n\nother info that might help us debug this:\n1 lock held by swapper/1:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#3){--..}, at: [\u003cc40ca9d5\u003e] configfs_register_subsystem+0x55/0x130\n\nstack backtrace:\nPid: 1, comm: swapper Not tainted 2.6.24-rc6 #141\n [\u003cc40053ba\u003e] show_trace_log_lvl+0x1a/0x30\n [\u003cc4005e82\u003e] show_trace+0x12/0x20\n [\u003cc400687e\u003e] dump_stack+0x6e/0x80\n [\u003cc404ec72\u003e] __lock_acquire+0xe62/0x1120\n [\u003cc404efb2\u003e] lock_acquire+0x82/0xa0\n [\u003cc43fdad8\u003e] mutex_lock_nested+0x98/0x2e0\n [\u003cc40ca76f\u003e] configfs_attach_group+0x4f/0x190\n [\u003cc40caa46\u003e] configfs_register_subsystem+0xc6/0x130\n [\u003cc45c8186\u003e] init_netconsole+0x2b6/0x300\n [\u003cc45a75f2\u003e] kernel_init+0x142/0x320\n [\u003cc4004fb3\u003e] kernel_thread_helper+0x7/0x14\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Joonwoo Park \u003cjoonwpark81@gmail.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "197b12d6796a3bca187f22a8978a33d51e2bcd79",
      "tree": "706ff3454f03d4aa8ca4d76010479d7f9d2b36f4",
      "parents": [
        "c10997f6575f476ff38442fa18fd4a0d80345f9d"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Dec 20 08:13:05 2007 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:40 2008 -0800"
      },
      "message": "Kobject: convert fs/* from kobject_unregister() to kobject_put()\n\nThere is no need for kobject_unregister() anymore, thanks to Kay\u0027s\nkobject cleanup changes, so replace all instances of it with\nkobject_put().\n\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "0ff21e46630abce11fdaaffabd72bbd4eed5ac2c",
      "tree": "cc49671622ef90775bf12a91d20b8286aa346e6f",
      "parents": [
        "5c03c7ab886859eb195440dbb6ccb8c30c4e84cc"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Nov 06 10:36:58 2007 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:24 2008 -0800"
      },
      "message": "kobject: convert kernel_kset to be a kobject\n\nkernel_kset does not need to be a kset, but a much simpler kobject now\nthat we have kobj_attributes.\n\nWe also rename kernel_kset to kernel_kobj to catch all users of this\nsymbol with a build error instead of an easy-to-ignore build warning.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "bd35b93d8049ab47b5bfaf6b10ba39badf21d1c3",
      "tree": "bac82e14d960b2c7011b7f660a93f07e922f8a97",
      "parents": [
        "e5e38a86c0bbe8475543f10f0a48393a45df5182"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Oct 29 20:13:17 2007 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:14 2008 -0800"
      },
      "message": "kset: convert kernel_subsys to use kset_create\n\nDynamically create the kset instead of declaring it statically.  We also\nrename kernel_subsys to kernel_kset to catch all users of this symbol\nwith a build error instead of an easy-to-ignore build warning.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3794491d0c4b6355c55b0379f003900e57666a97",
      "tree": "11ca4434fd718cd5fcde2b4916887f683ba50d33",
      "parents": [
        "191e186bd0589e28496745275157323a6f7902ca"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Oct 29 20:13:17 2007 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:11 2008 -0800"
      },
      "message": "kobject: convert configfs to use kobject_create\n\nWe don\u0027t need a kset here, a simple kobject will do just fine, so\ndynamically create the kobject and use it.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3514faca19a6fdc209734431c509631ea92b094e",
      "tree": "f6d102e6dec276f8e8d1044b47c74a02b901554f",
      "parents": [
        "c11c4154e7ff4cebfadad849b1e22689d759c3f4"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Oct 16 10:11:44 2007 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:10 2008 -0800"
      },
      "message": "kobject: remove struct kobj_type from struct kset\n\nWe don\u0027t need a \"default\" ktype for a kset.  We should set this\nexplicitly every time for each kset.  This change is needed so that we\ncan make ksets dynamic, and cleans up one of the odd, undocumented\nassumption that the kset/kobject/ktype model has.\n\nThis patch is based on a lot of help from Kay Sievers.\n\nNasty bug in the block code was found by Dave Young\n\u003chidave.darkstar@gmail.com\u003e\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Dave Young \u003chidave.darkstar@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "ce8d2cdf3d2b73e346c82e6f0a46da331df6364c",
      "tree": "bf3597f2d4f57d6e30a7703d7fce0dbf8c757962",
      "parents": [
        "348366b963e4e1462c8354827a9cb910aa865bf2"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Tue Oct 16 23:31:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:04 2007 -0700"
      },
      "message": "r/o bind mounts: filesystem helpers for custom \u0027struct file\u0027s\n\nWhy do we need r/o bind mounts?\n\nThis feature allows a read-only view into a read-write filesystem.  In the\nprocess of doing that, it also provides infrastructure for keeping track of\nthe number of writers to any given mount.\n\nThis has a number of uses.  It allows chroots to have parts of filesystems\nwritable.  It will be useful for containers in the future because users may\nhave root inside a container, but should not be allowed to write to\nsomefilesystems.  This also replaces patches that vserver has had out of the\ntree for several years.\n\nIt allows security enhancement by making sure that parts of your filesystem\nread-only (such as when you don\u0027t trust your FTP server), when you don\u0027t want\nto have entire new filesystems mounted, or when you want atime selectively\nupdated.  I\u0027ve been using the following script to test that the feature is\nworking as desired.  It takes a directory and makes a regular bind and a r/o\nbind mount of it.  It then performs some normal filesystem operations on the\nthree directories, including ones that are expected to fail, like creating a\nfile on the r/o mount.\n\nThis patch:\n\nSome filesystems forego the vfs and may_open() and create their own \u0027struct\nfile\u0027s.\n\nThis patch creates a couple of helper functions which can be used by these\nfilesystems, and will provide a unified place which the r/o bind mount code\nmay patch.\n\nAlso, rename an existing, static-scope init_file() to a less generic name.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0bf68ddec4f4f90e5871404be4f1854c17f3120",
      "tree": "36203a3558cbe26d698bed18be69b3822fb5eef2",
      "parents": [
        "dc62a30e274d003a4d08fb888f1520add4b21373"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 16 23:25:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "mm: bdi init hooks\n\nprovide BDI constructor/destructor hooks\n\n[akpm@linux-foundation.org: compile fix]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "800d15a53e7d14fa26495b7b95d3bfe7877dd69d",
      "tree": "09a59e32043f1b601b73ad6105e7634679337884",
      "parents": [
        "674b892ede247ef4fb8d00918f02e29c32b9bbaf"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:25:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:55 2007 -0700"
      },
      "message": "implement simple fs aops\n\nImplement new aops for some of the simpler filesystems.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "631d1febab8e546e3bb800bdfe2c212b8adf87de",
      "tree": "7399384371f3c32a9458907f14ec73c9ccf51d7c",
      "parents": [
        "299894cc9001b09e3e9685f2709b49e7e1092ccc"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Jun 18 18:06:09 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:18:59 2007 -0700"
      },
      "message": "configfs: config item dependancies.\n\nSometimes other drivers depend on particular configfs items.  For\nexample, ocfs2 mounts depend on a heartbeat region item.  If that\nregion item is removed with rmdir(2), the ocfs2 mount must BUG or go\nreadonly.  Not happy.\n\nThis provides two additional API calls: configfs_depend_item() and\nconfigfs_undepend_item().  A client driver can call\nconfigfs_depend_item() on an existing item to tell configfs that it is\ndepended on.  configfs will then return -EBUSY from rmdir(2) for that\nitem.  When the item is no longer depended on, the client driver calls\nconfigfs_undepend_item() on it.\n\nThese API cannot be called underneath any configfs callbacks, as\nthey will conflict.  They can block and allocate.  A client driver\nprobably shouldn\u0027t calling them of its own gumption.  Rather it should\nbe providing an API that external subsystems call.\n\nHow does this work?  Imagine the ocfs2 mount process.  When it mounts,\nit asks for a heart region item.  This is done via a call into the\nheartbeat code.  Inside the heartbeat code, the region item is looked\nup.  Here, the heartbeat code calls configfs_depend_item().  If it\nsucceeds, then heartbeat knows the region is safe to give to ocfs2.\nIf it fails, it was being torn down anyway, and heartbeat can gracefully\npass up an error.\n\n[ Fixed some bad whitespace in configfs.txt. --Mark ]\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "299894cc9001b09e3e9685f2709b49e7e1092ccc",
      "tree": "2a2e9bb69d2393bf620a34daea17e52ed9f9e5d7",
      "parents": [
        "6d748924b753d63a57dad130fdf11f64c27ff54b"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 06 17:33:23 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:11:01 2007 -0700"
      },
      "message": "configfs: accessing item hierarchy during rmdir(2)\n\nAdd a notification callback, ops-\u003edisconnect_notify(). It has the same\nprototype as -\u003edrop_item(), but it will be called just before the item\nlinkage is broken. This way, configfs users who want to do work while\nthe object is still in the heirarchy have a chance.\n\nClient drivers will still need to config_item_put() in their\n-\u003edrop_item(), if they implement it.  They need do nothing in\n-\u003edisconnect_notify().  They don\u0027t have to provide it if they don\u0027t\ncare.  But someone who wants to be notified before ci_parent is set to\nNULL can now be notified.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "6d748924b753d63a57dad130fdf11f64c27ff54b",
      "tree": "93af23c4329ffb16de923ab84f63669b2423ea29",
      "parents": [
        "e6bd07aee739566803425acdbf5cdb29919164e1"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Jun 22 11:20:00 2007 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:10:58 2007 -0700"
      },
      "message": "[PATCH] configsfs buffer: use mutex\n\nSeems copied from sysfs, but I don\u0027t see a reason here nor there to use\na semaphore instead of a mutex. Convert.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "e6bd07aee739566803425acdbf5cdb29919164e1",
      "tree": "e085a5065d06af2b7c0cab8bcd8fb4eb289344be",
      "parents": [
        "3fe6c5ce1176cf661dbe71fc43b627c1a742a89a"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Jul 06 23:33:17 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:10:56 2007 -0700"
      },
      "message": "configfs: Convert subsystem semaphore to mutex\n\nConvert the su_sem member of struct configfs_subsystem to a struct\nmutex, as that\u0027s what it is. Also convert all the users and update\nDocumentation/configfs.txt and Documentation/configfs_example.c\naccordingly.\n\n[ Conflict in fs/dlm/config.c with commit\n  3168b0780d06ace875696f8a648d04d6089654e5 manually resolved. --Mark ]\n\nInspired-by: Satyam Sharma \u003cssatyam@cse.iitk.ac.in\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "3fe6c5ce1176cf661dbe71fc43b627c1a742a89a",
      "tree": "be94563e2ba49f7116e866e57253b5ed82fb85ee",
      "parents": [
        "9b1d9aa4e9c5cafe73b9df21d758b50b5d75264d"
      ],
      "author": {
        "name": "Satyam Sharma",
        "email": "ssatyam@cse.iitk.ac.in",
        "time": "Wed Jul 04 16:37:16 2007 +0530"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:02:31 2007 -0700"
      },
      "message": "[PATCH] configfs+dlm: Rename config_group_find_obj and state semantics clearly\n\nConfigfs being based upon sysfs code, config_group_find_obj() is probably\nso named because of the similar kset_find_obj() in sysfs. However,\n\"kobject\"s in sysfs become \"config_item\"s in configfs, so let\u0027s call it\nconfig_group_find_item() instead, for sake of uniformity, and make\ncorresponding change in the users of this function.\n\nBTW a crucial difference between kset_find_obj and config_group_find_item\nis in locking expectations. kset_find_obj does its locking by itself, but\nconfig_group_find_item expects the *caller* to do the locking. The reason\nfor this: kset\u0027s have their own locks, config_group\u0027s don\u0027t but instead\nrely on the subsystem mutex. And, subsystem needn\u0027t necessarily be around\nwhen config_group_find_item() is called.\n\nSo let\u0027s state these locking semantics explicitly, and rectify the comment,\notherwise bugs could continue to occur in future, as they did in the past\n(refer commit d82b8191e238 in gfs2-2.6-fixes.git).\n\n[ I also took the opportunity to fix some bad whitespace and\ndouble-empty lines. --Joel ]\n\n[ Conflict in fs/dlm/config.c with commit\n  3168b0780d06ace875696f8a648d04d6089654e5 manually resolved. --Mark ]\n\nSigned-off-by: Satyam Sharma \u003cssatyam@cse.iitk.ac.in\u003e\nCc: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "4c62b53454a83178676e5ecae6665447d363c7b4",
      "tree": "77e5ba7c4afa788500b3a5aed71577cd5d1fc397",
      "parents": [
        "b23cdde4c6240d70bb3d2e3c4046b60d6f6c8451"
      ],
      "author": {
        "name": "Satyam Sharma",
        "email": "ssatyam@cse.iitk.ac.in",
        "time": "Wed Jun 27 16:02:14 2007 +0530"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 16:52:25 2007 -0700"
      },
      "message": "configfs: misc cleanups\n\n1. item.c:config_item_cleanup() is a private function (only called by\nconfig_item_release() in same file). However, it is spuriously\nexported in include/linux/configfs.h, so remove that export and make\nit static in item.c. Also, it is no longer exported / interface\nfunction, so no need to give comment for this function (the comment\nwas stating obvious thing, anyway).\n\n2. Kernel-doc comment format does not allow empty line between end of\ncomment and start of function (declaration line). There were several\nsuch spurious empty lines in item.c, so fix them.\n\n  fs/configfs/item.c       |   15 +++------------\n  include/linux/configfs.h |    1 -\n  2 files changed, 3 insertions(+), 13 deletions(-)\n\nSigned-off-by: Satyam Sharma \u003cssatyam@cse.iitk.ac.in\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "b23cdde4c6240d70bb3d2e3c4046b60d6f6c8451",
      "tree": "ed1965f424197194def20aa1ed10867f9fac6836",
      "parents": [
        "4c75f7416f51b0c6855952467a5db04f9c598f09"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Jun 22 13:07:02 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 16:52:22 2007 -0700"
      },
      "message": "configfs: consistent attribute size\n\nThe attribute store/show code currently limits attributes at PAGE_SIZE.\nThis code comes from sysfs, where it still works that way.\n\nHowever, PAGE_SIZE is not constant.  A 16k attribute string works on\nia64 but not on x86.  Really a subsystem shouldn\u0027t allow different\nattribute sizes based on platform.\n\nAs such, limit all simple attributes to 4k.  This works on all\nplatforms, and is consistent with all current code.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "e8edc6e03a5c8562dc70a6d969f732bdb355a7e7",
      "tree": "fc86c863655128a7041dfe613d14393d761fa7b9",
      "parents": [
        "ff1be9ad61e3e17ba83702d8ed0b534e5b8ee15c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 21 01:22:52 2007 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 21 09:18:19 2007 -0700"
      },
      "message": "Detach sched.h from mm.h\n\nFirst thing mm.h does is including sched.h solely for can_do_mlock() inline\nfunction which has \"current\" dereference inside. By dealing with can_do_mlock()\nmm.h can be detached from sched.h which is good. See below, why.\n\nThis patch\na) removes unconditional inclusion of sched.h from mm.h\nb) makes can_do_mlock() normal function in mm/mlock.c\nc) exports can_do_mlock() to not break compilation\nd) adds sched.h inclusions back to files that were getting it indirectly.\ne) adds less bloated headers to some files (asm/signal.h, jiffies.h) that were\n   getting them indirectly\n\nNet result is:\na) mm.h users would get less code to open, read, preprocess, parse, ... if\n   they don\u0027t need sched.h\nb) sched.h stops being dependency for significant number of files:\n   on x86_64 allmodconfig touching sched.h results in recompile of 4083 files,\n   after patch it\u0027s only 3744 (-8.3%).\n\nCross-compile tested on\n\n\tall arm defconfigs, all mips defconfigs, all powerpc defconfigs,\n\talpha alpha-up\n\tarm\n\ti386 i386-up i386-defconfig i386-allnoconfig\n\tia64 ia64-up\n\tm68k\n\tmips\n\tparisc parisc-up\n\tpowerpc powerpc-up\n\ts390 s390-up\n\tsparc sparc-up\n\tsparc64 sparc64-up\n\tum-x86_64\n\tx86_64 x86_64-up x86_64-defconfig x86_64-allnoconfig\n\nas well as my two usual configs.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "92f4c701aad794de9e4cf7341d0a486aed027c46",
      "tree": "59a47427d43670a50409fc91d68a325e7cfa0ab7",
      "parents": [
        "884c3d751093446918c2f7a4b2c745f28cf91c39"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed May 09 02:33:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:49 2007 -0700"
      },
      "message": "use simple_read_from_buffer() in fs/\n\nCleanup using simple_read_from_buffer() in binfmt_misc, configfs, and sysfs.\n\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "823bccfc4002296ba88c3ad0f049e1abd8108d30",
      "tree": "5338ae0b32409446af4cd00c5107d9405d5bf0b6",
      "parents": [
        "2609e7b9bebfd433254c02538ba803dc516ff674"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Apr 13 13:15:19 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed May 02 18:57:59 2007 -0700"
      },
      "message": "remove \"struct subsystem\" as it is no longer needed\n\nWe need to work on cleaning up the relationship between kobjects, ksets and\nktypes.  The removal of \u0027struct subsystem\u0027 is the first step of this,\nespecially as it is not really needed at all.\n\nThanks to Kay for fixing the bugs in this patch.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "afdf04ea098139e86147f63aad9c383cad3b6f37",
      "tree": "2050cfea8aeea2280182cc0263efbd3ad0505b34",
      "parents": [
        "03f981cf2ec95dd8bc43d2ecccaec4e83c8375e2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Mar 05 15:49:49 2007 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed Mar 14 14:37:21 2007 -0700"
      },
      "message": "configfs: add missing mutex_unlock()\n\nd_alloc() failure in configfs_register_subsystem() would fail to unlock\nthe mutex taken above.  Reorganize the exit path to ensure the unlock\nhappens.\n\nReported-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "ee9b6d61a2a43c5952eb43283f8db284a4e70b8a",
      "tree": "afb0340e79d3e9d14f39df20e165ce2efe941b18",
      "parents": [
        "c5ef1c42c51b1b5b4a401a6517bdda30933ddbaf"
      ],
      "author": {
        "name": "Josef \u0027Jeff\u0027 Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Mon Feb 12 00:55:41 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:47 2007 -0800"
      },
      "message": "[PATCH] Mark struct super_operations const\n\nThis patch is inspired by Arjan\u0027s \"Patch series to mark struct\nfile_operations and struct inode_operations const\".\n\nCompile tested with gcc \u0026 sparse.\n\nSigned-off-by: Josef \u0027Jeff\u0027 Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "754661f143e70d66eae6c48532ca245aa05dec0e",
      "tree": "c3ed0f7f96061931e497ed92d2b21294756b4831",
      "parents": [
        "9c2e08c592cd357a8330c34def1e8ecfdcf53275"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Feb 12 00:55:38 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:46 2007 -0800"
      },
      "message": "[PATCH] mark struct inode_operations const 1\n\nMany struct inode_operations in the kernel can be \"const\".  Marking them const\nmoves these to the .rodata section, which avoids false sharing with potential\ndirty data.  In addition it\u0027ll catch accidental writes at compile time to\nthese shared resources.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c376222960ae91d5ffb9197ee36771aaed1d9f90",
      "tree": "7f431c42529fec77433d33490bd9f2a8c47ba091",
      "parents": [
        "1b135431abf5ea92e61bf4e91d93726c7b96da5f"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sat Feb 10 01:45:03 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:27 2007 -0800"
      },
      "message": "[PATCH] Transform kmem_cache_alloc()+memset(0) -\u003e kmem_cache_zalloc().\n\nReplace appropriate pairs of \"kmem_cache_alloc()\" + \"memset(0)\" with the\ncorresponding \"kmem_cache_zalloc()\" call.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@steeleye.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nAcked-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff05d1c4643dd4260eb699396043d7e8009c0de4",
      "tree": "fe3c601c3c8a2498c434a2d2c08e0192b4233299",
      "parents": [
        "b559292e066f6d570cd5aa5dbd41de61dd04bdce"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Jan 23 17:00:45 2007 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed Feb 07 12:17:08 2007 -0800"
      },
      "message": "configfs: Zero terminate data in configfs attribute writes.\n\nAttributes in configfs are text files.  As such, most handlers expect to be\nable to call functions like simple_strtoul() without checking the bounds\nof the buffer.  Change the call to zero terminate the buffer before calling\nthe client\u0027s -\u003estore() method.  This does reduce the attribute size from\nPAGE_SIZE to PAGE_SIZE-1.\n\nAlso, change get_zeroed_page() to alloc_page(), as we are handling the\ntermination.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "867fa491a2722cee6964a30dfda86e0e02dcb400",
      "tree": "ade467137c5a7b93e3e6562bd2ca4a397bf7b49f",
      "parents": [
        "a4669ed8ed982dab494c5d4f2b32921e5a6531d8"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:47 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:43 2006 -0800"
      },
      "message": "[PATCH] configfs: change uses of f_{dentry, vfsmnt} to use f_path\n\nChange all the uses of f_{dentry,vfsmnt} to f_path.{dentry,mnt} in the\nconfigfs filesystem.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "58d206c2fa5cc0b35bf3ca48324d7633aa7d0412",
      "tree": "f0c9fe91c970734f17a35d22bd722d85b30b9986",
      "parents": [
        "25899deef46c226c49c53b42c00e0f032379c04b"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Nov 20 03:24:00 2006 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Dec 01 18:29:12 2006 -0800"
      },
      "message": "configfs: make configfs_dirent_exists() static\n\nThis patch makes the needlessly global configfs_dirent_exists() static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "55ed16029d597622db8121270e687373b5e31722",
      "tree": "a8ffbd1fe4d867f48eada13fc24b6bbfc70f245d",
      "parents": [
        "1fabe1481fac9e01bf8bffa60a2307ef379aa5de"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 20 14:55:54 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Dec 01 18:28:34 2006 -0800"
      },
      "message": "configfs: mutex_lock_nested() fix\n\nconfigfs_unregister_subsystem() nests a pair of inode i_mutex acquisitions,\nand thus needs annotation via mutex_lock_nested().\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "559c9ac391c046710bdeee5581dc5d9dda794881",
      "tree": "78cdf1ebc1027028b7e1e01d4ed34f2cf18742c9",
      "parents": [
        "e2057c5a63821e17c8a54dab6db680c77ce7ee6c"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Tue Oct 10 15:15:55 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 20 15:29:00 2006 -0700"
      },
      "message": "configfs: handle kzalloc() failure in check_perm()\n\ncheck_perm() does not drop the reference to the module when kzalloc()\nfailure occurs.\n\nSigned-Off-By: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "4a61f17378c2cdd9bd8f34ef8bd7422861d0c1f1",
      "tree": "a2054556900af8c16fd9f5419f012dcf1ee2995a",
      "parents": [
        "d002ec481c24f325ed6cfcb7810d317c015dd1b5",
        "7ecdb70a0ea436c06540140242bfac6ac3babfc0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 09:06:16 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 09:06:16 2006 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6: (292 commits)\n  [GFS2] Fix endian bug for de_type\n  [GFS2] Initialize SELinux extended attributes at inode creation time.\n  [GFS2] Move logging code into log.c (mostly)\n  [GFS2] Mark nlink cleared so VFS sees it happen\n  [GFS2] Two redundant casts removed\n  [GFS2] Remove uneeded endian conversion\n  [GFS2] Remove duplicate sb reading code\n  [GFS2] Mark metadata reads for blktrace\n  [GFS2] Remove iflags.h, use FS_\n  [GFS2] Fix code style/indent in ops_file.c\n  [GFS2] streamline-generic_file_-interfaces-and-filemap gfs fix\n  [GFS2] Remove readv/writev methods and use aio_read/aio_write instead (gfs bits)\n  [GFS2] inode-diet: Eliminate i_blksize from the inode structure\n  [GFS2] inode_diet: Replace inode.u.generic_ip with inode.i_private (gfs)\n  [GFS2] Fix typo in last patch\n  [GFS2] Fix direct i/o logic in filemap.c\n  [GFS2] Fix bug in Makefiles for lock modules\n  [GFS2] Remove (extra) fs_subsys declaration\n  [GFS2/DLM] Fix trailing whitespace\n  [GFS2] Tidy up meta_io code\n  ...\n"
    },
    {
      "commit": "4779efca147475a708e84d902e096bbd20e613b7",
      "tree": "95d0b4950b652120c5e07fc1adea30fcf18504d8",
      "parents": [
        "691578cd558e647dd89ae5bc74a2307bce821186"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue Oct 03 01:16:05 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:19 2006 -0700"
      },
      "message": "[PATCH] pr_debug: configfs: use size_t length modifier in pr_debug format argument\n\nconfigfs: use size_t length modifier in pr_debug format argument\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "59458f40e25915a355d8b1d701425fe9f4f9ea23",
      "tree": "f1c9a2934df686e36d75f759ab7313b6f0e0e5f9",
      "parents": [
        "825f9075d74028d11d7f5932f04e1b5db3022b51",
        "d834c16516d1ebec4766fc58c059bf01311e6045"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Oct 02 08:45:08 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Oct 02 08:45:08 2006 -0400"
      },
      "message": "Merge branch \u0027master\u0027 into gfs2\n"
    },
    {
      "commit": "d8c76e6f45c111c32a4b3e50a2adc9210737b0d8",
      "tree": "25521b59d48c6d8c9aec1af54dbe5008ad4b215b",
      "parents": [
        "9a53c3a783c2fa9b969628e65695c11c3e51e673"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Sat Sep 30 23:29:04 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:30 2006 -0700"
      },
      "message": "[PATCH] r/o bind mount prepwork: inc_nlink() helper\n\nThis is mostly included for parity with dec_nlink(), where we will have some\nmore hooks.  This one should stay pretty darn straightforward for now.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "185a257f2f73bcd89050ad02da5bedbc28fc43fa",
      "tree": "5e32586114534ed3f2165614cba3d578f5d87307",
      "parents": [
        "3f1a9aaeffd8d1cbc5ab9776c45cbd66af1c9699",
        "a77c64c1a641950626181b4857abb701d8f38ccc"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 28 08:29:59 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 28 08:29:59 2006 -0400"
      },
      "message": "Merge branch \u0027master\u0027 into gfs2\n"
    },
    {
      "commit": "ba52de123d454b57369f291348266d86f4b35070",
      "tree": "3973f3f3c853b5857b6b64a027cadd4fe954e3b9",
      "parents": [
        "577c4eb09d1034d0739e3135fd2cff50588024be"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 27 01:50:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:18 2006 -0700"
      },
      "message": "[PATCH] inode-diet: Eliminate i_blksize from the inode structure\n\nThis eliminates the i_blksize field from struct inode.  Filesystems that want\nto provide a per-inode st_blksize can do so by providing their own getattr\nroutine instead of using the generic_fillattr() function.\n\nNote that some filesystems were providing pretty much random (and incorrect)\nvalues for i_blksize.\n\n[bunk@stusta.de: cleanup]\n[akpm@osdl.org: generic_fillattr() fix]\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f8314dc60ccba7e41f425048c4160dc7f63377d5",
      "tree": "4e361a6e93dc7f64da0244e5a0dfef1fface0ddb",
      "parents": [
        "32c2d2bc4bed61323f14f2a7d69ccbd567253d8a"
      ],
      "author": {
        "name": "Panagiotis Issaris",
        "email": "takis@issaris.org",
        "time": "Wed Sep 27 01:49:37 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:10 2006 -0700"
      },
      "message": "[PATCH] fs: Conversions from kmalloc+memset to k(z|c)alloc\n\nConversions from kmalloc+memset to kzalloc.\n\nSigned-off-by: Panagiotis Issaris \u003ctakis@issaris.org\u003e\nJffs2-bit-acked-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "363e065c02b1273364d5356711a83e7f548fc0c8",
      "tree": "0df0e65da403ade33ade580c2770c97437b1b1af",
      "parents": [
        "907b9bceb41fa46beae93f79cc4a2247df502c0f",
        "7c250413e5b7c3dfae89354725b70c76d7621395"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 25 12:26:59 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 25 12:26:59 2006 -0400"
      },
      "message": "[GFS2] Fix up merge of Linus\u0027 kernel into GFS2\n\nThis fixes up a couple of conflicts when merging up with\nLinus\u0027 latest kernel. This will hopefully allow GFS2 to\nbe more easily merged into forthcoming -mm and FC kernels\ndue to the \"one line per header\" format now used for the\nkernel headers.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\nConflicts:\n\n\tinclude/linux/Kbuild\n\tinclude/linux/kernel.h\n"
    },
    {
      "commit": "b4c98f625fffee3a6f633082e9e4be3e952ca2ab",
      "tree": "ff7832706aeab7b16cbe18dd7976be7b56c49e55",
      "parents": [
        "e478bec0ba0a83a48a0f6982934b6de079e7e6b3"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 13 11:01:19 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed Sep 20 15:46:14 2006 -0700"
      },
      "message": "configfs: Prevent duplicate subsystem names.\n\nFor all child objects, creation comes through mkdir(2), so duplicate names\nare prevented.\n\nSubsystems, though, are registered by client drivers at init_module()/__init\ntime.  This patch prevents duplicate subsystem names.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "0a1340c185734a57fbf4775927966ad4a1347b02",
      "tree": "d9ed8f0dd809a7c542a3356601125ea5b5aaa804",
      "parents": [
        "af18ddb8864b096e3ed4732e2d4b21c956dcfe3a",
        "29454dde27d8e340bb1987bad9aa504af7081eba"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 03 10:25:08 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 03 10:25:08 2006 -0400"
      },
      "message": "Merge rsync://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n\nConflicts:\n\n\tinclude/linux/kernel.h\n"
    },
    {
      "commit": "e7515d065d09f6450c996a8fa206ad66569e183c",
      "tree": "fe9c2514c555b79c67ed29b7393b6c853b9d70f4",
      "parents": [
        "22dd0e88b70f5faa3a0101081e290431c3439189"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 10 11:42:30 2006 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Jun 29 14:43:01 2006 -0700"
      },
      "message": "configfs: Clear up a few extra spaces where there should be TABs.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "f5e54d6e53a20cef45af7499e86164f0e0d16bb2",
      "tree": "cb92acbb89b84796261bf5563182261ec5654127",
      "parents": [
        "a052b68b1e7a31f1e6a721290035e9deb0f6fed9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jun 28 04:26:44 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jun 28 14:59:04 2006 -0700"
      },
      "message": "[PATCH] mark address_space_operations const\n\nSame as with already do with the file operations: keep them in .rodata and\nprevents people from doing runtime patching.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f116629d03655adaf7832b93b03c99391d09d4a7",
      "tree": "526f689619817df3c23ab00e3228b4776bde2190",
      "parents": [
        "179e09172ab663b8587ecc46bb18a56a770304a9"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "mita@miraclelinux.com",
        "time": "Mon Jun 26 00:24:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:18 2006 -0700"
      },
      "message": "[PATCH] fs: use list_move()\n\nThis patch converts the combination of list_del(A) and list_add(A, B) to\nlist_move(A, B) under fs/.\n\nCc: Ian Kent \u003craven@themaw.net\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nCc: Hans Reiser \u003creiserfs-dev@namesys.com\u003e\nCc: Urban Widmark \u003curban@teststation.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Akinobu Mita \u003cmita@miraclelinux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "816724e65c72a90a44fbad0ef0b59b186c85fa90",
      "tree": "421fa29aedff988e392f92780637553e275d37a0",
      "parents": [
        "70ac4385a13f78bc478f26d317511893741b05bd",
        "d384ea691fe4ea8c2dd5b9b8d9042eb181776f18"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 08:41:41 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:07:53 2006 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/\n\nConflicts:\n\n\tfs/nfs/inode.c\n\tfs/super.c\n\nFix conflicts between patch \u0027NFS: Split fs/nfs/inode.c\u0027 and patch\n\u0027VFS: Permit filesystem to override root dentry on mount\u0027\n"
    },
    {
      "commit": "454e2398be9b9fa30433fccc548db34d19aa9958",
      "tree": "1f61cb0c3716a33b661cfc8977e9beeb480a322c",
      "parents": [
        "1ad5544098a69d7dc1fa508cbb17e13a7a952fd8"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:02:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:45 2006 -0700"
      },
      "message": "[PATCH] VFS: Permit filesystem to override root dentry on mount\n\nExtend the get_sb() filesystem operation to take an extra argument that\npermits the VFS to pass in the target vfsmount that defines the mountpoint.\n\nThe filesystem is then required to manually set the superblock and root dentry\npointers.  For most filesystems, this should be done with simple_set_mnt()\nwhich will set the superblock pointer and then set the root dentry to the\nsuperblock\u0027s s_root (as per the old default behaviour).\n\nThe get_sb() op now returns an integer as there\u0027s now no need to return the\nsuperblock pointer.\n\nThis patch permits a superblock to be implicitly shared amongst several mount\npoints, such as can be done with NFS to avoid potential inode aliasing.  In\nsuch a case, simple_set_mnt() would not be called, and instead the mnt_root\nand mnt_sb would be set directly.\n\nThe patch also makes the following changes:\n\n (*) the get_sb_*() convenience functions in the core kernel now take a vfsmount\n     pointer argument and return an integer, so most filesystems have to change\n     very little.\n\n (*) If one of the convenience function is not used, then get_sb() should\n     normally call simple_set_mnt() to instantiate the vfsmount. This will\n     always return 0, and so can be tail-called from get_sb().\n\n (*) generic_shutdown_super() now calls shrink_dcache_sb() to clean up the\n     dcache upon superblock destruction rather than shrink_dcache_anon().\n\n     This is required because the superblock may now have multiple trees that\n     aren\u0027t actually bound to s_root, but that still need to be cleaned up. The\n     currently called functions assume that the whole tree is rooted at s_root,\n     and that anonymous dentries are not the roots of trees which results in\n     dentries being left unculled.\n\n     However, with the way NFS superblock sharing are currently set to be\n     implemented, these assumptions are violated: the root of the filesystem is\n     simply a dummy dentry and inode (the real inode for \u0027/\u0027 may well be\n     inaccessible), and all the vfsmounts are rooted on anonymous[*] dentries\n     with child trees.\n\n     [*] Anonymous until discovered from another tree.\n\n (*) The documentation has been adjusted, including the additional bit of\n     changing ext2_* into foo_* in the documentation.\n\n[akpm@osdl.org: convert ipath_fs, do other stuff]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1f5ce9e93aa96a867f195ed45f6f77935175f12e",
      "tree": "caa9b6635990f69d47c1729524bd127e968b23f5",
      "parents": [
        "bb4a58bf46473e3e83d84054bbc110db3a0f85e4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:16 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:16 2006 -0400"
      },
      "message": "VFS: Unexport do_kern_mount() and clean up simple_pin_fs()\n\nReplace all module uses with the new vfs_kern_mount() interface, and fix up\nsimple_pin_fs().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c6a756795d5ba0637aae8da89dd11bb7e3a1ee74",
      "tree": "1c19f951f2604dbb6b867a6dcdf94d20c204cc5c",
      "parents": [
        "382066da251132f768380f4852ed5afb72d88f80",
        "a8bd60705aa17a998516837d9c1e503ad4cbd7fc"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 25 12:40:08 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 25 12:40:08 2006 -0400"
      },
      "message": "Merge branch \u0027master\u0027\n"
    },
    {
      "commit": "eed7a0db460595b139428d252798a83f1e1ce1d3",
      "tree": "129db180cb8bac9810b6168802914c5ae2f619a3",
      "parents": [
        "84efad1a53dd05969094f9a2562b4e6666571c00"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Apr 11 21:37:20 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed May 17 14:38:51 2006 -0700"
      },
      "message": "configfs: configfs_mkdir() failed to cleanup linkage.\n\nIf configfs_mkdir() errored in certain ways after the parent\u003c-\u003echild\nlinkage was already created, it would not undo the linkage.  Also,\ncomment the reference counting for clarity.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "84efad1a53dd05969094f9a2562b4e6666571c00",
      "tree": "15ddfe0250f5d59d56e989cd89c682096139c1f5",
      "parents": [
        "afae00ab45ea71d89086f924ebee6ca51c81e48e"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Mar 27 18:46:09 2006 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed May 17 14:38:50 2006 -0700"
      },
      "message": "configfs: Fix a reference leak in configfs_mkdir().\n\nconfigfs_mkdir() failed to release the working parent reference in most\nexit paths.  Also changed the exit path for readability.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "a748422ee45725e04e1d3792fa19dfa90ddfd116",
      "tree": "978e12895468baaa9f7ab2747b9f7d50beaf1717",
      "parents": [
        "c63e31c2cc1ec67372920b5e1aff8204d04dd172",
        "f4ffaa452e71495a06376f12f772342bc57051fc"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Apr 21 12:52:36 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Apr 21 12:52:36 2006 -0400"
      },
      "message": "Merge branch \u0027master\u0027\n"
    },
    {
      "commit": "cbca692c246874a3cc1b5a9b694add4c39e8bc18",
      "tree": "fd9ac8ed8387c72f444c7c78e57a1ff07427f0fb",
      "parents": [
        "a9e2ae39170d01937725e1fff2e606baaa71346c"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Thu Mar 23 00:36:54 2006 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Apr 10 11:16:17 2006 -0700"
      },
      "message": "[PATCH] Bogus NULL pointer check in fs/configfs/dir.c\n\nWe check the \"group\" pointer after we dereference it.  This check is\nbogus, as it cannot be NULL coming in.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "86579dd06deecfa6ac88d5e84e4d63c397cd6f6d",
      "tree": "b4475d3ccde53015ad84a06e4e55e64591171b75",
      "parents": [
        "7ea9ea832212c4a755650f7c7cc1ff0b63292a41",
        "a0f067802576d4eb4c65d40b8ee7d6ea3c81dd61"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Mar 31 15:34:58 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Mar 31 15:34:58 2006 -0500"
      },
      "message": "Merge branch \u0027master\u0027\n"
    },
    {
      "commit": "4b6f5d20b04dcbc3d888555522b90ba6d36c4106",
      "tree": "420f271eaef7d3def7d4433b151c3cb6d7a54770",
      "parents": [
        "99ac48f54a91d02140c497edc31dc57d4bc5c85d"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Tue Mar 28 01:56:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:06 2006 -0800"
      },
      "message": "[PATCH] Make most file operations structs in fs/ const\n\nThis is a conversion to make the various file_operations structs in fs/\nconst.  Basically a regexp job, with a few manual fixups\n\nThe goal is both to increase correctness (harder to accidentally write to\nshared datastructures) and reducing the false sharing of cachelines with\nthings that get dirty in .data (while .rodata is nicely read only and thus\ncache clean)\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d35462b4bb847b68321c55e95c926aa485aecce2",
      "tree": "b08e18bf6e672633402871ee763102fdb5e63229",
      "parents": [
        "91ffd7db71e7451f89941a8f428b4daa2a7c1e38",
        "9e956c2dac9bec602ed1ba29181b45ba6d2b6448"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "steve@men-an-tol.chygwyn.com",
        "time": "Thu Feb 23 09:49:43 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Feb 23 09:49:43 2006 +0000"
      },
      "message": "Merge branch \u0027master\u0027\n"
    },
    {
      "commit": "1a1974fd4533afdb73873cdacb942d9a79ff7c9b",
      "tree": "2ca6e62b007f54a4b4d755bb98ad9692e4547395",
      "parents": [
        "3d0f89bb169482d26d5aa4e82e763077e7e9bc4d"
      ],
      "author": {
        "name": "Eric Sesterhenn / snakebyte",
        "email": "snakebyte@gmx.de",
        "time": "Fri Jan 27 10:32:24 2006 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Feb 03 14:03:09 2006 -0800"
      },
      "message": "[PATCH] BUG_ON() Conversion in fs/configfs/\n\nthis changes if() BUG(); constructs to BUG_ON() which is\ncleaner, contains unlikely() and can better optimized away.\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "3d0f89bb169482d26d5aa4e82e763077e7e9bc4d",
      "tree": "2d2317ce1417202322e3f715534fab80394bd5d2",
      "parents": [
        "62ca3d2603571dc2b1b4c1368e19d44b599062e2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Jan 25 13:31:07 2006 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Feb 03 14:01:05 2006 -0800"
      },
      "message": "configfs: Add permission and ownership to configfs objects.\n\nconfigfs always made item and attribute ownership root.root and\npermissions based on a umask of 022.  Add -\u003esetattr() to allow\nchown(2)/chmod(2), and persist the changes for the lifetime of the\nitems and attributes.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "ec5800246607183a1d7fd0bae5f087c12439e9e7",
      "tree": "deb01d6118494cb0a401b65779781ea60a654bda",
      "parents": [
        "a98ab2204f8ed414c5e95fbca28a9f001c53bc7b"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Wed Jan 18 14:21:40 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "steve@chygwyn.com",
        "time": "Wed Jan 18 14:21:40 2006 +0000"
      },
      "message": "[DLM] Export config_group_find_obj for use by the DLM\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
      "tree": "7bfe4eeab8ce784b767cf30886623d456c384718",
      "parents": [
        "88026842b0a760145aa71d69e74fbc9ec118ca44"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Dec 15 14:29:43 2005 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Jan 03 11:45:28 2006 -0800"
      },
      "message": "[PATCH] configfs: User-driven configuration filesystem\n\nConfigfs, a file system for userspace-driven kernel object configuration.\nThe OCFS2 stack makes extensive use of this for propagation of cluster\nconfiguration information into kernel.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    }
  ]
}
