)]}'
{
  "log": [
    {
      "commit": "571b46e40bebb0d57130ca24c4a84dfd553adb91",
      "tree": "8597a9f4ee7c0b00a7c62abe3bb6157d5d60ea7a",
      "parents": [
        "4d59bce4f9eaf26d6d9046b56a2f1c0c7f20981d"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Oct 30 09:17:52 2008 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:22 2009 -0800"
      },
      "message": "quota: Update version number\n\nIncrease reported version number of quota support since quota core has changed\nsignificantly. Also remove __DQUOT_NUM_VERSION__ since nobody uses it.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4d59bce4f9eaf26d6d9046b56a2f1c0c7f20981d",
      "tree": "8acb07cd2bf0ab360e6397dfa816feb009fc49af",
      "parents": [
        "db49d2df489f727096438706a5428115e84a3f0d"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Oct 02 16:48:10 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:22 2009 -0800"
      },
      "message": "quota: Keep which entries were set by SETQUOTA quotactl\n\nQuota in a clustered environment needs to synchronize quota information\namong cluster nodes. This means we have to occasionally update some\ninformation in dquot from disk / network. On the other hand we have to\nbe careful not to overwrite changes administrator did via SETQUOTA.\nSo indicate in dquot-\u003edq_flags which entries have been set by SETQUOTA\nand quota format can clear these flags when it properly propagated\nthe changes.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "db49d2df489f727096438706a5428115e84a3f0d",
      "tree": "4ba9837a5371bb4a84dc27614eaeb4e4772e3eb8",
      "parents": [
        "e3d4d56b9715e40ded2a84d0d4fa7f3b6c58983c"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Oct 01 18:21:39 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:21 2009 -0800"
      },
      "message": "quota: Allow negative usage of space and inodes\n\nFor clustered filesystems, it can happen that space / inode usage goes\nnegative temporarily (because some node is allocating another node\nis freeing and they are not completely in sync). So let quota code\nallow this and change qsize_t so a signed type so that we don\u0027t\nunderflow the variables.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e3d4d56b9715e40ded2a84d0d4fa7f3b6c58983c",
      "tree": "67648a89b3c9056d77caa6ef42776cf1053c5e70",
      "parents": [
        "1ccd14b9c271c1ac6eec5c5ec5def433100e7248"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Oct 02 18:44:14 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:21 2009 -0800"
      },
      "message": "quota: Convert union in mem_dqinfo to a pointer\n\nComing quota support for OCFS2 is going to need quite a bit\nof additional per-sb quota information. Moreover having fs.h\ninclude all the types needed for this structure would be a\npain in the a**. So remove the union from mem_dqinfo and add\na private pointer for filesystem\u0027s use.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1ccd14b9c271c1ac6eec5c5ec5def433100e7248",
      "tree": "959756aa5b68c568a18697464df3f0acdd0387cf",
      "parents": [
        "cf770c137122b78470a67ebd5498947869a09197"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Sep 22 05:54:49 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:21 2009 -0800"
      },
      "message": "quota: Split off quota tree handling into a separate file\n\nThere is going to be a new version of quota format having 64-bit\nquota limits and a new quota format for OCFS2. They are both\ngoing to use the same tree structure as VFSv0 quota format. So\nsplit out tree handling into a separate file and make size of\nleaf blocks, amount of space usable in each block (needed for\nchecksumming) and structures contained in them configurable\nso that the code can be shared.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "cf770c137122b78470a67ebd5498947869a09197",
      "tree": "c1f9af3927752e8aef3e0ca45facc39ae6945258",
      "parents": [
        "ca785ec66b991e9ca74dd9840fc014487ad095e1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Sep 21 23:17:53 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:58 2009 -0800"
      },
      "message": "quota: Move quotaio_v[12].h from include/linux/ to fs/\n\nSince these include files are used only by implementation of quota formats,\nthere\u0027s no need to have them in include/linux/.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ca785ec66b991e9ca74dd9840fc014487ad095e1",
      "tree": "271c7b36123e9c16f455ecd96352d24ecd20423c",
      "parents": [
        "dcb30695f2cac86b71417629a6fe8042b4fe2ab2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Sep 30 17:53:37 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:57 2009 -0800"
      },
      "message": "quota: Introduce DQUOT_QUOTA_SYS_FILE flag\n\nIf filesystem can handle quota files as system files hidden from users, we can\nskip a lot of cache invalidation, syncing, inode flags setting etc. when\nturning quotas on, off and quota_sync. Allow filesystem to indicate that it is\nhiding quota files from users by DQUOT_QUOTA_SYS_FILE flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "dcb30695f2cac86b71417629a6fe8042b4fe2ab2",
      "tree": "85a099a0314091fbc82bed07951c9c49a07a2ffc",
      "parents": [
        "6929f891241d3fe3af01d28503b645e63241e49a"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Aug 20 18:30:40 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:56 2009 -0800"
      },
      "message": "quota: Remove compatibility function sb_any_quota_enabled()\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "6929f891241d3fe3af01d28503b645e63241e49a",
      "tree": "f5c776b44a11f72a545b530d7ba2f908e2cd57cf",
      "parents": [
        "17bd13b31ce4fe7f789d8848e8cbc8cb42b10544"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Aug 20 18:16:36 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:56 2009 -0800"
      },
      "message": "reiserfs: Use sb_any_quota_loaded() instead of sb_any_quota_enabled().\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "17bd13b31ce4fe7f789d8848e8cbc8cb42b10544",
      "tree": "ced03fa069a1493421b6c0b0c11e5a163b5dbed6",
      "parents": [
        "ee0d5ffe0da2aa992004447113e28622621a983f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Aug 20 18:14:35 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:56 2009 -0800"
      },
      "message": "ext4: Use sb_any_quota_loaded() instead of sb_any_quota_enabled()\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ee0d5ffe0da2aa992004447113e28622621a983f",
      "tree": "602c66693af5f1cadbc4f6c3d1475ff048aa94f5",
      "parents": [
        "f55abc0fb9c3189de3da829adf3220322c0da43e"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Aug 20 18:11:50 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:56 2009 -0800"
      },
      "message": "ext3: Use sb_any_quota_loaded() instead of sb_any_quota_enabled()\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "f55abc0fb9c3189de3da829adf3220322c0da43e",
      "tree": "0db4b838b0b90f27401783e8e7e45842ec91f90a",
      "parents": [
        "e4bc7b4b7ff783779b6928d55a9308910bf180a3"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Aug 20 17:50:32 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:56 2009 -0800"
      },
      "message": "quota: Allow to separately enable quota accounting and enforcing limits\n\nSplit DQUOT_USR_ENABLED (and DQUOT_GRP_ENABLED) into DQUOT_USR_USAGE_ENABLED\nand DQUOT_USR_LIMITS_ENABLED. This way we are able to separately enable /\ndisable whether we should:\n1) ignore quotas completely\n2) just keep uptodate information about usage\n3) actually enforce quota limits\n\nThis is going to be useful when quota is treated as filesystem metadata - we\nthen want to keep quota information uptodate all the time and just enable /\ndisable limits enforcement.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e4bc7b4b7ff783779b6928d55a9308910bf180a3",
      "tree": "1cf54906c8686507f9cc127754210930d27a0471",
      "parents": [
        "1497d3ad487b64eeea83ac203263802755438949"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Aug 20 16:21:01 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:56 2009 -0800"
      },
      "message": "quota: Make _SUSPENDED just a flag\n\nUpto now, DQUOT_USR_SUSPENDED behaved like a state - i.e., either quota\nwas enabled or suspended or none. Now allowed states are 0, ENABLED,\nENABLED | SUSPENDED. This will be useful later when we implement separate\nenabling of quota usage tracking and limits enforcement because we need to\nkeep track of a state which has been suspended.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1497d3ad487b64eeea83ac203263802755438949",
      "tree": "8862803a3b25a829985351608ccc9460f056c33f",
      "parents": [
        "12095460f7f315f8ef67a55b2194195d325d48d7"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Aug 20 15:49:59 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:56 2009 -0800"
      },
      "message": "quota: Remove bogus \u0027optimization\u0027 in check_idq() and check_bdq()\n\nChecks like \u003c\u003d 0 for an unsigned type do not make much sence. The value\ncould be only 0 and that does not happen often enough for the check\nto be worth it.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "12095460f7f315f8ef67a55b2194195d325d48d7",
      "tree": "4e878139ccd29a2adeb2a9fa6fcd9c279e8ce6f4",
      "parents": [
        "74f783af95c982aef6d3a1415275650dcf511666"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Aug 20 14:45:12 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:55 2009 -0800"
      },
      "message": "quota: Increase size of variables for limits and inode usage\n\nSo far quota was fine with quota block limits and inode limits/numbers in\na 32-bit type. Now with rapid increase in storage sizes there are coming\nrequests to be able to handle quota limits above 4TB / more that 2^32 inodes.\nSo bump up sizes of types in mem_dqblk structure to 64-bits to be able to\nhandle this. Also update inode allocation / checking functions to use qsize_t\nand make global structure keep quota limits in bytes so that things are\nconsistent.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "74f783af95c982aef6d3a1415275650dcf511666",
      "tree": "594e978641d31e05e170a56ec68f8c65b37bb649",
      "parents": [
        "9f868f16e40e9ad8e39aebff94a4be0d96520734"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Aug 19 14:51:22 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:55 2009 -0800"
      },
      "message": "quota: Add callbacks for allocating and destroying dquot structures\n\nSome filesystems would like to keep private information together with each\ndquot. Add callbacks alloc_dquot and destroy_dquot allowing filesystem to\nallocate larger dquots from their private slab in a similar fashion we\ncurrently allocate inodes.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9f868f16e40e9ad8e39aebff94a4be0d96520734",
      "tree": "1099a634a2cc283ca523947a816bd746ee3768a9",
      "parents": [
        "97aff52ae13d3c11a074bbbfc80ad0b59cb8cdeb"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Nov 19 16:48:42 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:55 2009 -0800"
      },
      "message": "ocfs2/xattr: Restore not_found in xis\n\nDuring an xattr set, when we move a xattr which was stored in inode to the\noutside bucket, we have to delete it and it will use the old value of\nxis-\u003enot_found. xis-\u003enot_found is removed by ocfs2_calc_xattr_set_need\nthough, so we must restore it.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "97aff52ae13d3c11a074bbbfc80ad0b59cb8cdeb",
      "tree": "2ac3992a8dfe6c7b94653f47548975503c3998f4",
      "parents": [
        "53ef99cad9878f02f27bb30bc304fc42af8bdd6e"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Nov 19 16:48:41 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:55 2009 -0800"
      },
      "message": "ocfs2/xattr: Fix a bug in xattr allocation estimation\n\nWhen we extend one xattr\u0027s value to a large size, the old value size might\nbe smaller than the size of a value root. In those cases, we still need to\nguess the metadata allocation.\n\nReported-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "53ef99cad9878f02f27bb30bc304fc42af8bdd6e",
      "tree": "bb5dcb223666197cf737d24e4cc87506c4473a79",
      "parents": [
        "511308d90b53479b194cd067715f44dc99d39b08"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Nov 18 16:53:43 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:55 2009 -0800"
      },
      "message": "ocfs2: Remove JBD compatibility layer\n\nJBD2 is fully backwards compatible with JBD and it\u0027s been tested enough with\nOcfs2 that we can clean this code up now.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "511308d90b53479b194cd067715f44dc99d39b08",
      "tree": "7f8597ce83fe6543871fab3df4c4a21b11875ea4",
      "parents": [
        "a8549fb5abb2b372e46d5de0d23ff8b24f4a61af"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:21 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:55 2009 -0800"
      },
      "message": "ocfs2: Convert ocfs2_read_dir_block() to ocfs2_read_virt_blocks()\n\nNow that we\u0027ve centralized the ocfs2_read_virt_blocks() code, let\u0027s use\nit in ocfs2_read_dir_block().\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a8549fb5abb2b372e46d5de0d23ff8b24f4a61af",
      "tree": "b35c565519fec6827b4bd76938dcfd39e762caf4",
      "parents": [
        "970e4936d7d15f35d00fd15a14f5343ba78b2fc8"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:20 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:54 2009 -0800"
      },
      "message": "ocfs2: Wrap virtual block reads in ocfs2_read_virt_blocks()\n\nThe ocfs2_read_dir_block() function really maps an inode\u0027s virtual\nblocks to physical ones before calling ocfs2_read_blocks().  Let\u0027s\nextract that to common code, because other places might want to do that.\n\nOther than the block number being virtual, ocfs2_read_virt_blocks()\ntakes the same arguments as ocfs2_read_blocks().  It converts those\nvirtual block numbers to physical before calling ocfs2_read_blocks()\ndirectly.  If the blocks asked for are discontiguous, this can mean\nmultiple calls to ocfs2_read_blocks(), but this is mostly hidden from\nthe caller.\n\nLike ocfs2_read_blocks(), the caller can pass in an existing\nbuffer_head.  This is usually done to pick up some readahead I/O.\nocfs2_read_virt_blocks() checks the buffer_head\u0027s block number\nagainst the extent map - it must match.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "970e4936d7d15f35d00fd15a14f5343ba78b2fc8",
      "tree": "92057c7deab6b9d8e5c3889d6a354b5989a3b68d",
      "parents": [
        "4ae1d69bedc8d174cb8a558694607e013157cde1"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:19 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Validate metadata only when it\u0027s read from disk.\n\nAdd an optional validation hook to ocfs2_read_blocks().  Now the\nvalidation function is only called when a block was actually read off of\ndisk.  It is not called when the buffer was in cache.\n\nWe add a buffer state bit BH_NeedsValidate to flag these buffers.  It\nmust always be one higher than the last JBD2 buffer state bit.\n\nThe dinode, dirblock, extent_block, and xattr_block validators are\nlifted to this scheme directly.  The group_descriptor validator needs to\nbe split into two pieces.  The first part only needs the gd buffer and\nis passed to ocfs2_read_block().  The second part requires the dinode as\nwell, and is called every time.  It\u0027s only 3 compares, so it\u0027s tiny.\nThis also allows us to clean up the non-fatal gd check used by resize.c.\nIt now has no magic argument.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4ae1d69bedc8d174cb8a558694607e013157cde1",
      "tree": "ce5c599415435d24ddc5cae88207f5f26c0a18b4",
      "parents": [
        "a22305cc693254a2aa651e797875669112ef8635"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:18 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Wrap xattr block reads in a dedicated function\n\nWe weren\u0027t consistently checking xattr blocks after we read them.\nMost places checked the signature, but none checked xb_blkno or\nxb_fs_signature.  Create a toplevel ocfs2_read_xattr_block() that does\nthe read and the validation.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a22305cc693254a2aa651e797875669112ef8635",
      "tree": "6beabdffc91bec297824f2049293c14bb05daadb",
      "parents": [
        "5e96581a377fc6bd76e9b112da9aeb8a7ae8bf22"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:17 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Wrap dirblock reads in a dedicated function.\n\nWe have ocfs2_bread() as a vestige of the original ext-based dir code.\nIt\u0027s only used by directories, though.  Turn it into\nocfs2_read_dir_block(), with a prototype matching the other metadata\nread functions.  It\u0027s set up to validate dirblocks when the time comes.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "5e96581a377fc6bd76e9b112da9aeb8a7ae8bf22",
      "tree": "ce2e1d8819b6020567828ca9021438c0824aa8d4",
      "parents": [
        "4203530613280281868b3ca36c817530bca3825c"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:16 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Wrap extent block reads in a dedicated function.\n\nWe weren\u0027t consistently checking extent blocks after we read them.\nMost places checked the signature, but none checked h_blkno or\nh_fs_signature.  Create a toplevel ocfs2_read_extent_block() that does\nthe read and the validation.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4203530613280281868b3ca36c817530bca3825c",
      "tree": "57acc14e07bd97491a3781eb61e8c83c3c6e0151",
      "parents": [
        "68f64d471be38631d7196b938d9809802dd467fa"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:15 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Morph the haphazard OCFS2_IS_VALID_GROUP_DESC() checks.\n\nRandom places in the code would check a group descriptor bh to see if it\nwas valid. The previous commit unified descriptor block reads,\nvalidating all block reads in the same place.  Thus, these checks are no\nlonger necessary.  Rather than eliminate them, however, we change them\nto BUG_ON() checks.  This ensures the assumptions remain true.  All of\nthe code paths to these checks have been audited to ensure they come\nfrom a validated descriptor read.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "68f64d471be38631d7196b938d9809802dd467fa",
      "tree": "b94f14b3a8b093dc52f2b034e7666b14c536f0d6",
      "parents": [
        "57e3e7971136003c96766346049aa73b82cab079"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:14 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Wrap group descriptor reads in a dedicated function.\n\nWe have a clean call for validating group descriptors, but every place\nthat wants the always does a read_block()+validate() call pair.  Create\na toplevel ocfs2_read_group_descriptor() that does the right\nthing.  This allows us to leverage the single call point later for\nfancier handling.  We also add validation of gd-\u003ebg_generation against\nthe superblock and gd-\u003ebg_blkno against the block we thought we read.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "57e3e7971136003c96766346049aa73b82cab079",
      "tree": "4ba192d7507c77bc1bebd20ba6d82fbbe3da5428",
      "parents": [
        "10995aa2451afa20b721cc7de856cae1a13dba57"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:13 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Consolidate validation of group descriptors.\n\nCurrently the validation of group descriptors is directly duplicated so\nthat one version can error the filesystem and the other (resize) can\njust report the problem.  Consolidate to one function that takes a\nboolean.  Wrap that function with the old call for the old users.\n\nThis is in preparation for lifting the read+validate step into a\nsingle function.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "10995aa2451afa20b721cc7de856cae1a13dba57",
      "tree": "63129e7d752fb018dc76aa42de136baa4a8a4232",
      "parents": [
        "b657c95c11088d77fc1bfc9c84d940f778bf9d12"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:12 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:52 2009 -0800"
      },
      "message": "ocfs2: Morph the haphazard OCFS2_IS_VALID_DINODE() checks.\n\nRandom places in the code would check a dinode bh to see if it was\nvalid.  Not only did they do different levels of validation, they\nhandled errors in different ways.\n\nThe previous commit unified inode block reads, validating all block\nreads in the same place.  Thus, these haphazard checks are no longer\nnecessary.  Rather than eliminate them, however, we change them to\nBUG_ON() checks.  This ensures the assumptions remain true.  All of the\ncode paths to these checks have been audited to ensure they come from a\nvalidated inode read.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "b657c95c11088d77fc1bfc9c84d940f778bf9d12",
      "tree": "7e52e73aabbdbc55f644ad26735edc25a652ac32",
      "parents": [
        "a68979b857283daf4acc405e476dcc8812a3ff2b"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:11 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:52 2009 -0800"
      },
      "message": "ocfs2: Wrap inode block reads in a dedicated function.\n\nThe ocfs2 code currently reads inodes off disk with a simple\nocfs2_read_block() call.  Each place that does this has a different set\nof sanity checks it performs.  Some check only the signature.  A couple\nvalidate the block number (the block read vs di-\u003ei_blkno).  A couple\nothers check for VALID_FL.  Only one place validates i_fs_generation.  A\ncouple check nothing.  Even when an error is found, they don\u0027t all do\nthe same thing.\n\nWe wrap inode reading into ocfs2_read_inode_block().  This will validate\nall the above fields, going readonly if they are invalid (they never\nshould be).  ocfs2_read_inode_block_full() is provided for the places\nthat want to pass read_block flags.  Every caller is passing a struct\ninode with a valid ip_blkno, so we don\u0027t need a separate blkno argument\neither.\n\nWe will remove the validation checks from the rest of the code in a\nlater commit, as they are no longer necessary.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a68979b857283daf4acc405e476dcc8812a3ff2b",
      "tree": "6bbf9d235e1ae38f4263f92d4075df6913befc8a",
      "parents": [
        "89c38bd0ade3c567707ed8fce088b253b0369c50"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:52 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:52 2009 -0800"
      },
      "message": "ocfs2: add mount option and Kconfig option for acl\n\nThis patch adds the Kconfig option \"CONFIG_OCFS2_FS_POSIX_ACL\"\nand mount options \"acl\" to enable acls in Ocfs2.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "89c38bd0ade3c567707ed8fce088b253b0369c50",
      "tree": "ffc5bf6a8871efa8e7793c552d16ac9fb92f1334",
      "parents": [
        "060bc66dd5017460076d9e808e2198cd532c943d"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:41 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_init_acl in mknod\n\nWe need to get the parent directories acls and let the new child inherit it.\nTo this, we add additional calculations for data/metadata allocation.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "060bc66dd5017460076d9e808e2198cd532c943d",
      "tree": "11b4919c11c6529b783ae553a27a722e22b522b6",
      "parents": [
        "23fc2702bea686569281708ad519b41a11d0a2f4"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:29 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_acl_chmod\n\nThis function is used to update acl xattrs during file mode changes.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "23fc2702bea686569281708ad519b41a11d0a2f4",
      "tree": "a567f38647047836332d1cfc17d7ad0be05c55ef",
      "parents": [
        "929fb014e041c6572c5e8c3686f1e32742b5b953"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:18 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_check_acl\n\nThis function is used to enhance permission checking with POSIX ACLs.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "929fb014e041c6572c5e8c3686f1e32742b5b953",
      "tree": "149328875787dab63ec873cfa06364f4a23ac06d",
      "parents": [
        "4e3e9d027f63488e676bf7700ec515a192e54f69"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:04 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add POSIX ACL API\n\nThis patch adds POSIX ACL(access control lists) APIs in ocfs2. We convert\nstruct posix_acl to many ocfs2_acl_entry and regard them as an extended\nattribute entry.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4e3e9d027f63488e676bf7700ec515a192e54f69",
      "tree": "5726c86a7460dcb8acbc9effe3236050105495da",
      "parents": [
        "534eadddc1de8754a227202c0e747af4973f82ce"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:16:53 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_xattr_get_nolock\n\nThis function does the work of ocfs2_xattr_get under an open lock.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "534eadddc1de8754a227202c0e747af4973f82ce",
      "tree": "e044976da3644f020ed1da420211cc433dbc0a92",
      "parents": [
        "923f7f3102b80403152e05aee3d55ecfce240440"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:16:41 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_init_security in during file create\n\nSecurity attributes must be set when creating a new inode.\n\nWe do this in three steps.\n\n- First, get security xattr\u0027s name and value by security_operation\n\n- Calculate and reserve the meta data and clusters needed by this security\n  xattr before starting transaction\n\n- Finally, we set it before add_entry\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "923f7f3102b80403152e05aee3d55ecfce240440",
      "tree": "54184688eb9dcc4ff4521348a31fd8313470d33a",
      "parents": [
        "6c3faba4421e230d77a181c260972229c542dec9"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:16:27 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add security xattr API\n\nThis patch add security xattr set/get/list APIs to\nsupport security attributes in Ocfs2.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "6c3faba4421e230d77a181c260972229c542dec9",
      "tree": "a36c271b5cd82a696cac6b3c774d62fddb997801",
      "parents": [
        "f5d362022a947e84b0a3dd656d09c6b2322e234f"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:16:03 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:19 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_xattr_set_handle\n\nThis function is used to set xattr\u0027s in a started transaction. It is only\ncalled during inode creation inode for initial security/acl xattrs of the\nnew inode. These xattrs could be put into ibody or extent block, so xattr\nbucket would not be use in this case.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "f5d362022a947e84b0a3dd656d09c6b2322e234f",
      "tree": "eb9772da46c5e2566618414eba11845ed13482dc",
      "parents": [
        "fecc01126d7a244b7e9b563c80663ffdca35343b"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:15:44 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:19 2009 -0800"
      },
      "message": "ocfs2: move new inode allocation out of the transaction\n\nMove out inode allocation from ocfs2_mknod_locked() because\nvfs_dq_init() must be called outside of a transaction.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "fecc01126d7a244b7e9b563c80663ffdca35343b",
      "tree": "dbc9144a0f4b6e6997928b2fa2ddeb483f8fd2d7",
      "parents": [
        "85db90e77806d48a19fda77dabe8897d369a1710"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Nov 12 15:16:38 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:19 2009 -0800"
      },
      "message": "ocfs2: turn __ocfs2_remove_inode_range() into ocfs2_remove_btree_range()\n\nThis patch genericizes the high level handling of extent removal.\nocfs2_remove_btree_range() is nearly identical to\n__ocfs2_remove_inode_range(), except that extent tree operations have been\nused where necessary. We update ocfs2_remove_inode_range() to use the\ngeneric helper. Now extent tree based structures have an easy way to\ntruncate ranges.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "85db90e77806d48a19fda77dabe8897d369a1710",
      "tree": "daaceb3943214b83b7784e8f4170c5321d69ea5f",
      "parents": [
        "78f30c314a74b9dc5d7368d96fe4be883d9a3a04"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Nov 12 08:27:01 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:19 2009 -0800"
      },
      "message": "ocfs2/xattr: Merge xattr set transaction.\n\nIn current ocfs2/xattr, the whole xattr set is divided into\nmany steps are many transaction are used, this make the\nxattr set process isn\u0027t like a real transaction, so this\npatch try to merge all the transaction into one. Another\nbenefit is that acl can use it easily now.\n\nI don\u0027t merge the transaction of deleting xattr when we\nremove an inode. The reason is that if we have a large number\nof xattrs and every xattrs has large values(large enough\nfor outside storage), the whole transaction will be very\nhuge and it looks like jbd can\u0027t handle it(I meet with a\njbd complain once). And the old inode removal is also divided\ninto many steps, so I\u0027d like to leave as it is.\n\nNote:\nIn xattr set, I try to avoid ocfs2_extend_trans since if\nthe credits aren\u0027t enough for the extension, it will commit\nall the dirty blocks and create a new transaction which may\nlead to inconsistency in metadata. All ocfs2_extend_trans\nremained are safe now.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "78f30c314a74b9dc5d7368d96fe4be883d9a3a04",
      "tree": "07904e23f2d2c1287869daecc9f27052b71d67a5",
      "parents": [
        "c73f60f900ddf73ec4ea2a143829ab97242c4e8c"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Nov 12 08:27:00 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:19 2009 -0800"
      },
      "message": "ocfs2/xattr: Reserve meta/data at the beginning of ocfs2_xattr_set.\n\nIn ocfs2 xattr set, we reserve metadata and clusters in any place\nthey are needed. It is time-consuming and ineffective, so this\npatch try to reserve metadata and clusters at the beginning of\nocfs2_xattr_set.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "c73f60f900ddf73ec4ea2a143829ab97242c4e8c",
      "tree": "6216b45e3bbc2b105b8a54c3db4f5cdd796dcb02",
      "parents": [
        "2891d290aa6eee0821f7e4ad0b1c4ae4d964b0f1"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Nov 12 08:26:59 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:19 2009 -0800"
      },
      "message": "ocfs2/xattr: Move clusters free into dealloc.\n\nMove clusters free process into dealloc context so that\nthey can be freed after the transaction.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "2891d290aa6eee0821f7e4ad0b1c4ae4d964b0f1",
      "tree": "2f06b8d3afcf1986d0f041319a8ec08395acdf83",
      "parents": [
        "976331d8789d4d84a11b45b87c520ade83715343"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Nov 12 08:26:58 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:18 2009 -0800"
      },
      "message": "ocfs2: Add clusters free in dealloc_ctxt.\n\nNow in ocfs2 xattr set, the whole process are divided into many small\nparts and they are wrapped into diffrent transactions and it make the\nset doesn\u0027t look like a real transaction. So we want to integrate it\ninto a real one.\n\nIn some cases we will allocate some clusters and free some in just one\ntransaction. e.g, one xattr is larger than inline size, so it and its\nvalue root is stored within the inode while the value is outside in a\ncluster. Then we try to update it with a smaller value(larger than the\nsize of root but smaller than inline size), we may need to free the\noutside cluster while allocate a new bucket(one cluster) since now the\ninode may be full. The old solution will lock the global_bitmap(if the\nlocal alloc failed in stress test) and then the truncate log. This will\ncause a ABBA lock with truncate log flush.\n\nThis patch add the clusters free in dealloc_ctxt, so that we can record\nthe free clusters during the transaction and then free it after we\nrelease the global_bitmap in xattr set.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "976331d8789d4d84a11b45b87c520ade83715343",
      "tree": "c167f7655162e6ddbf62a3680c3272b101f06a45",
      "parents": [
        "757055adc5d41b910bdead925060f077dd2d9169"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Nov 12 08:26:57 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:18 2009 -0800"
      },
      "message": "ocfs2/xattr: Only extend xattr bucket in need.\n\nWhen the first block of a bucket is filled up with xattr\nentries, we normally extend the bucket. But if we are\njust replace one xattr with small length, we don\u0027t need\nto extend it. This is important since we will calculate\nwhat we need before the transaction and in this situation\nno resources will be allocated.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "757055adc5d41b910bdead925060f077dd2d9169",
      "tree": "ac7032ec0d8fec4ec762fa9a0dc6d02a66453e25",
      "parents": [
        "1c32a2fd46ddc01bd86bff56a8f5d98c815750f4"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Nov 06 08:10:48 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:18 2009 -0800"
      },
      "message": "ocfs2/xattr: Only set buffer update if it doesn\u0027t exist in cache.\n\nWhen we call ocfs2_init_xattr_bucket, we deem that the new buffer head\nwill be written to disk immediately, so we just use sb_getblk. But in\nsome cases the buffer may have already been in ocfs2 uptodate cache,\nso we only call ocfs2_set_buffer_uptodate if the buffer head isn\u0027t\nin the cache.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1c32a2fd46ddc01bd86bff56a8f5d98c815750f4",
      "tree": "6451cd228d95d3c07dd5c557b286a7eec9a71614",
      "parents": [
        "02dbf38d19c19016f558fe0dc0c44f8041d3eb8e"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Nov 06 08:10:47 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:18 2009 -0800"
      },
      "message": "ocfs2/xattr: Remove additional bucket allocation in bucket defragment.\n\nJoel has refactored xattr bucket and make xattr bucket a general\nwrapper. So in ocfs2_defrag_xattr_bucket, we have already passed the\nbucket in, so there is no need to allocate a new one and read it.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "02dbf38d19c19016f558fe0dc0c44f8041d3eb8e",
      "tree": "a0342ca55b1c39a835a0425e3f8ca13560299776",
      "parents": [
        "161d6f30f18c4a7e2b24705b6690cce3ff276eb9"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Oct 27 18:07:45 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:18 2009 -0800"
      },
      "message": "ocfs2: Use buckets in ocfs2_xattr_set_entry_in_bucket().\n\nThe ocfs2_xattr_set_entry_in_bucket() function is already working on an\nocfs2_xattr_bucket structure, so let\u0027s use the bucket API.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "161d6f30f18c4a7e2b24705b6690cce3ff276eb9",
      "tree": "62c392076a86aa752e4fbc3c2611affad50b22ff",
      "parents": [
        "178eeac354ea28828d5e94a3a7b51368c171d6a5"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Oct 27 15:25:18 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:18 2009 -0800"
      },
      "message": "ocfs2: Use buckets in ocfs2_defrag_xattr_bucket().\n\nUse the ocfs2_xattr_bucket abstraction for reading and writing the\nbucket in ocfs2_defrag_xattr_bucket().\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "178eeac354ea28828d5e94a3a7b51368c171d6a5",
      "tree": "8e3d7b2c923ea2260344dbe76d0b128031ba93c9",
      "parents": [
        "e2356a3f02cfdbce735465a2b40b6dc72a764c26"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Oct 27 15:18:29 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:18 2009 -0800"
      },
      "message": "ocfs2: Use buckets in ocfs2_xattr_create_index_block().\n\nUse the ocfs2_xattr_bucket abstraction in\nocfs2_xattr_create_index_block() and its helpers.  We get more efficient\nreads, a lot less buffer_head munging, and nicer code to boot.  While\nwe\u0027re at it, ocfs2_xattr_update_xattr_search() becomes void.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e2356a3f02cfdbce735465a2b40b6dc72a764c26",
      "tree": "e4824c8d19dc2772beb56a134498a3e88acb9923",
      "parents": [
        "ba937127596ec2c61437006741f7d29999284de4"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Oct 27 15:01:54 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:17 2009 -0800"
      },
      "message": "ocfs2: Use buckets in ocfs2_xattr_bucket_find().\n\nChange the ocfs2_xattr_bucket_find() function to use ocfs2_xattr_bucket\nas its abstraction.  This makes for more efficient reads, as buckets are\nlinear blocks, and also has improved caching characteristics.  It also\nreads better.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ba937127596ec2c61437006741f7d29999284de4",
      "tree": "e5be4c76939ed4d87c256ff17f30e58bbebfb413",
      "parents": [
        "4980c6daba967124ed6420032960abd2b48412e2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 24 19:13:20 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:17 2009 -0800"
      },
      "message": "ocfs2: Take ocfs2_xattr_bucket structures off of the stack.\n\nThe ocfs2_xattr_bucket structure is a nice abstraction, but it is a bit\nlarge to have on the stack.  Just like ocfs2_path, let\u0027s allocate it\nwith a ocfs2_xattr_bucket_new() function.\n\nWe can now store the inode on the bucket, cleaning up all the other\nbucket functions.  While we\u0027re here, we catch another place or two that\nwasn\u0027t using ocfs2_read_xattr_bucket().\n\nUpdates:\n- No longer allocating xis.bucket, as it will never be used.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4980c6daba967124ed6420032960abd2b48412e2",
      "tree": "c5220ec03222db04972ddba0daaca6c112f51b57",
      "parents": [
        "1224be020f62ada3e19822feeac3840abf80de3e"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 24 18:54:43 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:17 2009 -0800"
      },
      "message": "ocfs2: Copy xattr buckets with a dedicated function.\n\nNow that the places that copy whole buckets are using struct\nocfs2_xattr_bucket, we can do the copy in a dedicated function.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1224be020f62ada3e19822feeac3840abf80de3e",
      "tree": "914ea36d842ef33c444b4bd11dfd5e21dbef6af4",
      "parents": [
        "784b816a9198dc3782c97cde8ddcf52fecdf1797"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 24 18:47:33 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:17 2009 -0800"
      },
      "message": "ocfs2: Wrap journal_access/journal_dirty for xattr buckets.\n\nA common action is to call ocfs2_journal_access() and\nocfs2_journal_dirty() on the buffer heads of an xattr bucket.  Let\u0027s\ncreate nice wrappers.\n\nWhile we\u0027re there, let\u0027s drop the places that try to be smart by writing\nonly the first and last blocks of a bucket.  A bucket is contiguous, so\nwriting the whole thing is actually more efficient.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "784b816a9198dc3782c97cde8ddcf52fecdf1797",
      "tree": "8b6629535ab822a069449118d8925d479d58fdd3",
      "parents": [
        "6dde41d9e7ba62f84cd7e91c0e993500af32ceb6"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 24 17:33:40 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:17 2009 -0800"
      },
      "message": "ocfs2: Improve ocfs2_read_xattr_bucket().\n\nThe ocfs2_read_xattr_bucket() function would read an xattr bucket into a\nlist of buffer heads.  However, we have a nice ocfs2_xattr_bucket\nstructure.  Let\u0027s have it fill that out instead.\n\nIn addition, ocfs2_read_xattr_bucket() would initialize buffer heads for\na bucket that\u0027s never been on disk before.  That\u0027s confusing.  Let\u0027s\ncall that functionality ocfs2_init_xattr_bucket().\n\nThe functions ocfs2_cp_xattr_bucket() and ocfs2_half_xattr_bucket() are\nupdated to use the ocfs2_xattr_bucket structure rather than raw bh\nlists.  That way they can use the new read/init calls.  In addition,\nthey drop the wasted read of an existing target bucket.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "6dde41d9e7ba62f84cd7e91c0e993500af32ceb6",
      "tree": "631cd131bf627a63883a0eca5d612d1472998688",
      "parents": [
        "3e6329463e3a5c311e1d607ff3db735a18b6d67a"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 24 17:16:48 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:17 2009 -0800"
      },
      "message": "ocfs2: Provide a wrapper to brelse() xattr bucket buffers.\n\nA common theme is walking all the buffer heads on an ocfs2_xattr_bucket\nand releasing them.  Let\u0027s wrap that.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "3e6329463e3a5c311e1d607ff3db735a18b6d67a",
      "tree": "9c27f3e08be43e93f69103561f197d2beee22c97",
      "parents": [
        "51def39f0cabd46131c7c4df08751cb0cb9433d1"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 24 17:04:49 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:16 2009 -0800"
      },
      "message": "ocfs2: Convenient access to an xattr bucket\u0027s header.\n\nThe xattr code often wants to access the ocfs2_xattr_header at the start\nof an bucket.  Rather than walk the pointer chains, let\u0027s just create\nanother nice macro.  As a side benefit, we can get rid of the mostly\nspurious -\u003ebu_xh element on the bucket structure.  The idea is ripped\nfrom the ocfs2_path code.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "51def39f0cabd46131c7c4df08751cb0cb9433d1",
      "tree": "d4845849f9e6bdee106c06453161e0c28f1fd429",
      "parents": [
        "9c7759aa670918a48f0c6e06779cd20f2781a2ac"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 24 16:57:21 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:16 2009 -0800"
      },
      "message": "ocfs2: Convenient access to xattr bucket data blocks.\n\nThe xattr code often wants to access the data pointer for blocks in an\nxattr bucket.  This is usually found by dereferencing the bh array\nhanging off of the ocfs2_xattr_bucket structure.  Rather than do this\nall the time, let\u0027s provide a nice little macro.  The idea is ripped\nfrom the ocfs2_path code.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9c7759aa670918a48f0c6e06779cd20f2781a2ac",
      "tree": "da91ec1b046904504b53f9d356c899321ec3f382",
      "parents": [
        "4ac6032d6c92f0ac65cf5bc56b68557b3f099b66"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 24 16:21:03 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:16 2009 -0800"
      },
      "message": "ocfs2: Convenient access to an xattr bucket\u0027s block number.\n\nThe xattr code often wants to know the block number of an xattr bucket.\nThis is usually found by dereferencing the first bh hanging off of the\nocfs2_xattr_bucket structure.  Rather than do this all the time, let\u0027s\nprovide a nice little macro.  The idea is ripped from the ocfs2_path\ncode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4ac6032d6c92f0ac65cf5bc56b68557b3f099b66",
      "tree": "6625e9d2fe6cd777507023d1dbfac4311aa32192",
      "parents": [
        "fe0bdec68b77020281dc814805edfe594ae89e0f"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Sat Oct 18 19:11:42 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:16 2009 -0800"
      },
      "message": "ocfs2: Field prefixes for the xattr_bucket structure\n\nThe ocfs2_xattr_bucket structure keeps track of the buffers for one\nxattr bucket.  Let\u0027s prefix the fields for easier code navigation.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "fe0bdec68b77020281dc814805edfe594ae89e0f",
      "tree": "aeef34a49594cb0478b1104b58ba2dc933c481c5",
      "parents": [
        "099e657625e801adf82054c8050dde5aceb68452",
        "5af75d8d58d0f9f7b7c0515b35786b22892d5f12"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 16:32:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 16:32:11 2009 -0800"
      },
      "message": "Merge branch \u0027audit.b61\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current\n\n* \u0027audit.b61\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current:\n  audit: validate comparison operations, store them in sane form\n  clean up audit_rule_{add,del} a bit\n  make sure that filterkey of task,always rules is reported\n  audit rules ordering, part 2\n  fixing audit rule ordering mess, part 1\n  audit_update_lsm_rules() misses the audit_inode_hash[] ones\n  sanitize audit_log_capset()\n  sanitize audit_fd_pair()\n  sanitize audit_mq_open()\n  sanitize AUDIT_MQ_SENDRECV\n  sanitize audit_mq_notify()\n  sanitize audit_mq_getsetattr()\n  sanitize audit_ipc_set_perm()\n  sanitize audit_ipc_obj()\n  sanitize audit_socketcall\n  don\u0027t reallocate buffer in every audit_sockaddr()\n"
    },
    {
      "commit": "099e657625e801adf82054c8050dde5aceb68452",
      "tree": "d6c28df68ab390fa237b8339c6081e4db380aa5f",
      "parents": [
        "54566b2c1594c2326a645a3551f9d989f7ba3c5e"
      ],
      "author": {
        "name": "Alessandro Zummo",
        "email": "a.zummo@towertech.it",
        "time": "Sun Jan 04 12:00:54 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "rtc: add alarm/update irq interfaces\n\nAdd standard interfaces for alarm/update irqs enabling.  Drivers are no\nmore required to implement equivalent ioctl code as rtc-dev will provide\nit.\n\nUIE emulation should now be handled correctly and will work even for those\nRTC drivers who cannot be configured to do both UIE and AIE.\n\nSigned-off-by: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Atsushi Nemoto \u003canemo@mba.ocn.ne.jp\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54566b2c1594c2326a645a3551f9d989f7ba3c5e",
      "tree": "b373f3283fe5e197d0df29cd6b645c35adf1076c",
      "parents": [
        "e687d691cb3790d25e31c74f5941fd7c565e9df5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun Jan 04 12:00:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "fs: symlink write_begin allocation context fix\n\nWith the write_begin/write_end aops, page_symlink was broken because it\ncould no longer pass a GFP_NOFS type mask into the point where the\nallocations happened.  They are done in write_begin, which would always\nassume that the filesystem can be entered from reclaim.  This bug could\ncause filesystem deadlocks.\n\nThe funny thing with having a gfp_t mask there is that it doesn\u0027t really\nallow the caller to arbitrarily tinker with the context in which it can be\ncalled.  It couldn\u0027t ever be GFP_ATOMIC, for example, because it needs to\ntake the page lock.  The only thing any callers care about is __GFP_FS\nanyway, so turn that into a single flag.\n\nAdd a new flag for write_begin, AOP_FLAG_NOFS.  Filesystems can now act on\nthis flag in their write_begin function.  Change __grab_cache_page to\naccept a nofs argument as well, to honour that flag (while we\u0027re there,\nchange the name to grab_cache_page_write_begin which is more instructive\nand does away with random leading underscores).\n\nThis is really a more flexible way to go in the end anyway -- if a\nfilesystem happens to want any extra allocations aside from the pagecache\nones in ints write_begin function, it may now use GFP_KERNEL (rather than\nGFP_NOFS) for common case allocations (eg.  ocfs2_alloc_write_ctxt, for a\nrandom example).\n\n[kosaki.motohiro@jp.fujitsu.com: fix ubifs]\n[kosaki.motohiro@jp.fujitsu.com: fix fuse]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ Cleaned up the calling convention: just pass in the AOP flags\n  untouched to the grab_cache_page_write_begin() function.  That\n  just simplifies everybody, and may even allow future expansion of the\n  logic.   - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e687d691cb3790d25e31c74f5941fd7c565e9df5",
      "tree": "d606511c734e99fb6e4786d20ab42a8cf1b2232f",
      "parents": [
        "c644f0e4b56f9a2fc066cd0d75a18074d130e4a3"
      ],
      "author": {
        "name": "Bruno Prémont",
        "email": "bonbons@linux-vserver.org",
        "time": "Sun Jan 04 13:11:54 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "viafb: fix crashes due to 4k stack overflow\n\nThe function viafb_cursor() uses 2 stack-variables of CURSOR_SIZE bits;\nCURSOR_SIZE is defined as (8 * 1024).  Using up twice 1k on stack is too\nmuch for 4k-stack (though it works with 8k-stacks).  Make those two\nvariables kzalloc\u0027ed to preserve stack space.\n\nAlso merge the whole lot of local struct\u0027s in viafb_ioctl into a union so\nthe stack usage gets minimized here as well.  (struct\u0027s are only accessed\nin their indicidual IOCTL case) This second part is only compile-tested as\nI know of no userspace app using the IOCTLs.\n\nSigned-off-by: Bruno Prémont \u003cbonbons@linux-vserver.org\u003e\nCc: \u003cJosephChan@via.com.tw\u003e\nCc: Krzysztof Helt \u003ckrzysztof.h1@poczta.fm\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c644f0e4b56f9a2fc066cd0d75a18074d130e4a3",
      "tree": "96f5954d7e72a2bf56f4165f4e7569364562f04f",
      "parents": [
        "0a30c5cefa53cbac429dcb2de906c0637b646253"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Jan 04 12:00:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "fs: introduce bgl_lock_ptr()\n\nAs suggested by Andreas Dilger, introduce a bgl_lock_ptr() helper in\n\u003clinux/blockgroup_lock.h\u003e and add separate sb_bgl_lock() helpers to\nfilesystem specific header files to break the hidden dependency to\nstruct ext[234]_sb_info.\n\nAlso, while at it, convert the macros to static inlines to try make up\nfor all the times I broke Andrew Morton\u0027s tree.\n\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a30c5cefa53cbac429dcb2de906c0637b646253",
      "tree": "b0babe6f5e3b320f4f168975d798180d3be7e3c7",
      "parents": [
        "2e4e27c7d082b2198b63041310609d7191185a9d"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sun Jan 04 12:00:47 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "spi.h uses/needs device.h\n\nInclude header files as used/needed:\n\n  In file included from drivers/leds/leds-dac124s085.c:16:\n  include/linux/spi/spi.h:66: error: field \u0027dev\u0027 has incomplete type\n  include/linux/spi/spi.h: In function \u0027to_spi_device\u0027:\n  include/linux/spi/spi.h:100: warning: type defaults to \u0027int\u0027 in declaration of \u0027__mptr\u0027\n  ...\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e4e27c7d082b2198b63041310609d7191185a9d",
      "tree": "4b994ab4569e4510ff4dd4d357807121ab802782",
      "parents": [
        "7b574b7b0124ed344911f5d581e9bc2d83bbeb19"
      ],
      "author": {
        "name": "Adam Lackorzynski",
        "email": "adam@os.inf.tu-dresden.de",
        "time": "Sun Jan 04 12:00:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "vmalloc.c: fix flushing in vmap_page_range()\n\nThe flush_cache_vmap in vmap_page_range() is called with the end of the\nrange twice.  The following patch fixes this for me.\n\nSigned-off-by: Adam Lackorzynski \u003cadam@os.inf.tu-dresden.de\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b574b7b0124ed344911f5d581e9bc2d83bbeb19",
      "tree": "6511203310d77359017accb466f3f5e1e90abe13",
      "parents": [
        "7d3b56ba37a95f1f370f50258ed3954c304c524b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Jan 04 12:00:45 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:19 2009 -0800"
      },
      "message": "cgroups: fix a race between cgroup_clone and umount\n\nThe race is calling cgroup_clone() while umounting the ns cgroup subsys,\nand thus cgroup_clone() might access invalid cgroup_fs, or kill_sb() is\ncalled after cgroup_clone() created a new dir in it.\n\nThe BUG I triggered is BUG_ON(root-\u003enumber_of_cgroups !\u003d 1);\n\n  ------------[ cut here ]------------\n  kernel BUG at kernel/cgroup.c:1093!\n  invalid opcode: 0000 [#1] SMP\n  ...\n  Process umount (pid: 5177, ti\u003de411e000 task\u003de40c4670 task.ti\u003de411e000)\n  ...\n  Call Trace:\n   [\u003cc0493df7\u003e] ? deactivate_super+0x3f/0x51\n   [\u003cc04a3600\u003e] ? mntput_no_expire+0xb3/0xdd\n   [\u003cc04a3ab2\u003e] ? sys_umount+0x265/0x2ac\n   [\u003cc04a3b06\u003e] ? sys_oldumount+0xd/0xf\n   [\u003cc0403911\u003e] ? sysenter_do_call+0x12/0x31\n  ...\n  EIP: [\u003cc0456e76\u003e] cgroup_kill_sb+0x23/0xe0 SS:ESP 0068:e411ef2c\n  ---[ end trace c766c1be3bf944ac ]---\n\nCc: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: \"Serge E. Hallyn\" \u003cserue@us.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5af75d8d58d0f9f7b7c0515b35786b22892d5f12",
      "tree": "65707c5309133a33140c39145ae91b7c1679a877",
      "parents": [
        "36c4f1b18c8a7d0adb4085e7f531860b837bb6b0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 16 05:59:26 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:42 2009 -0500"
      },
      "message": "audit: validate comparison operations, store them in sane form\n\nDon\u0027t store the field-\u003eop in the messy (and very inconvenient for e.g.\naudit_comparator()) form; translate to dense set of values and do full\nvalidation of userland-submitted value while we are at it.\n\n-\u003eaudit_init_rule() and -\u003eaudit_match_rule() get new values now; in-tree\ninstances updated.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "36c4f1b18c8a7d0adb4085e7f531860b837bb6b0",
      "tree": "2cb0b2d5c77af294c6ff885f4b8190a1377e638a",
      "parents": [
        "e048e02c89db7bd49d1a5fac77a11c8fb3603087"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 15 01:50:28 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:42 2009 -0500"
      },
      "message": "clean up audit_rule_{add,del} a bit\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e048e02c89db7bd49d1a5fac77a11c8fb3603087",
      "tree": "6141e7646cd7c5b1b1334f0f86fbad6ef1bcc6d8",
      "parents": [
        "e45aa212ea81d39b38ba158df344dc3a500153e5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 16 03:51:22 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:42 2009 -0500"
      },
      "message": "make sure that filterkey of task,always rules is reported\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e45aa212ea81d39b38ba158df344dc3a500153e5",
      "tree": "c4d55cda9e8f976d15b6b01a775a3437f932db27",
      "parents": [
        "0590b9335a1c72a3f0defcc6231287f7817e07c8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 15 01:17:50 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:42 2009 -0500"
      },
      "message": "audit rules ordering, part 2\n\nFix the actual rule listing; add per-type lists _not_ used for matching,\nwith all exit,... sitting on one such list.  Simplifies \"do something\nfor all rules\" logics, while we are at it...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0590b9335a1c72a3f0defcc6231287f7817e07c8",
      "tree": "289fa4668ae304f79f7484ac31b2cab0ab8894c1",
      "parents": [
        "1a9d0797b8977d413435277bf9661efbbd584693"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Dec 14 23:45:27 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:41 2009 -0500"
      },
      "message": "fixing audit rule ordering mess, part 1\n\nProblem: ordering between the rules on exit chain is currently lost;\nall watch and inode rules are listed after everything else _and_\nexit,never on one kind doesn\u0027t stop exit,always on another from\nbeing matched.\n\nSolution: assign priorities to rules, keep track of the current\nhighest-priority matching rule and its result (always/never).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1a9d0797b8977d413435277bf9661efbbd584693",
      "tree": "86a99d0d28ef027fc4e6f21054ce8fa05c7ca82e",
      "parents": [
        "57f71a0af4244d9ba3c0bce74b1d2e66e8d520bd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Dec 14 12:04:02 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:41 2009 -0500"
      },
      "message": "audit_update_lsm_rules() misses the audit_inode_hash[] ones\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "57f71a0af4244d9ba3c0bce74b1d2e66e8d520bd",
      "tree": "c089a97949fc1d459e137b18739c04e9217913d1",
      "parents": [
        "157cf649a735a2f7e8dba0ed08e6e38b6c30d886"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 14:52:57 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:41 2009 -0500"
      },
      "message": "sanitize audit_log_capset()\n\n* no allocations\n* return void\n* don\u0027t duplicate checked for dummy context\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "157cf649a735a2f7e8dba0ed08e6e38b6c30d886",
      "tree": "85895367c24023d363d5ee7b5ed2fb16eaf08721",
      "parents": [
        "564f6993ffef656aebaf46cf2f1f6cb4f5c97207"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Dec 14 04:57:47 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:41 2009 -0500"
      },
      "message": "sanitize audit_fd_pair()\n\n* no allocations\n* return void\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "564f6993ffef656aebaf46cf2f1f6cb4f5c97207",
      "tree": "0bf1ee553ab1241338fe522ffbaed8cd48e10c99",
      "parents": [
        "c32c8af43b9adde8d6f938d8e6328c13b8de79ac"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Dec 14 04:02:26 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:41 2009 -0500"
      },
      "message": "sanitize audit_mq_open()\n\n* don\u0027t bother with allocations\n* don\u0027t do double copy_from_user()\n* don\u0027t duplicate parts of check for audit_dummy_context()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c32c8af43b9adde8d6f938d8e6328c13b8de79ac",
      "tree": "6377079bba7530d2aa8a688ebf9ba3e09ae085a7",
      "parents": [
        "20114f71b27cafeb7c7e41d2b0f0b68c3fbb022b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Dec 14 03:46:48 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:40 2009 -0500"
      },
      "message": "sanitize AUDIT_MQ_SENDRECV\n\n* logging the original value of *msg_prio in mq_timedreceive(2)\n  is insane - the argument is write-only (i.e. syscall always\n  ignores the original value and only overwrites it).\n* merge __audit_mq_timed{send,receive}\n* don\u0027t do copy_from_user() twice\n* don\u0027t mess with allocations in auditsc part\n* ... and don\u0027t bother checking !audit_enabled and !context in there -\n  we\u0027d already checked for audit_dummy_context().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "20114f71b27cafeb7c7e41d2b0f0b68c3fbb022b",
      "tree": "fcbb481cfec8c11f103ba07dbb08819de3822d80",
      "parents": [
        "7392906ea915b9a2c14dea32b3604b4e178f82f7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 10 07:16:12 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:40 2009 -0500"
      },
      "message": "sanitize audit_mq_notify()\n\n* don\u0027t copy_from_user() twice\n* don\u0027t bother with allocations\n* don\u0027t duplicate parts of audit_dummy_context()\n* make it return void\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7392906ea915b9a2c14dea32b3604b4e178f82f7",
      "tree": "1e4fbe56e3738fade213ef805ec274ea74ac6a1b",
      "parents": [
        "e816f370cbadd2afea9f1a42f232d0636137d563"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 10 06:58:59 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:40 2009 -0500"
      },
      "message": "sanitize audit_mq_getsetattr()\n\n* get rid of allocations\n* make it return void\n* don\u0027t duplicate parts of audit_dummy_context()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e816f370cbadd2afea9f1a42f232d0636137d563",
      "tree": "8a9fe488ced59cd9864fcbf15292641c3b95143c",
      "parents": [
        "a33e6751003c5ade603737d828b1519d980ce392"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 10 03:47:15 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:40 2009 -0500"
      },
      "message": "sanitize audit_ipc_set_perm()\n\n* get rid of allocations\n* make it return void\n* simplify callers\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a33e6751003c5ade603737d828b1519d980ce392",
      "tree": "aa484d033e886945aed78172dbdd4d2fd928bacf",
      "parents": [
        "f3298dc4f2277874d40cb4fc3a6e277317d6603b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 10 03:40:06 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:39 2009 -0500"
      },
      "message": "sanitize audit_ipc_obj()\n\n* get rid of allocations\n* make it return void\n* simplify callers\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f3298dc4f2277874d40cb4fc3a6e277317d6603b",
      "tree": "8ba8f7e7a0597965b2f6c7106718a59cc164eab1",
      "parents": [
        "4f6b434fee2402b3decdeae9d16eb648725ae426"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 10 03:16:51 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:39 2009 -0500"
      },
      "message": "sanitize audit_socketcall\n\n* don\u0027t bother with allocations\n* now that it can\u0027t fail, make it return void\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4f6b434fee2402b3decdeae9d16eb648725ae426",
      "tree": "2b82a9d220509e2fe42c365de5083eb8032880e4",
      "parents": [
        "7d3b56ba37a95f1f370f50258ed3954c304c524b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 09 19:50:34 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:39 2009 -0500"
      },
      "message": "don\u0027t reallocate buffer in every audit_sockaddr()\n\nNo need to do that more than once per process lifetime; allocating/freeing\non each sendto/accept/etc. is bloody pointless.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7d3b56ba37a95f1f370f50258ed3954c304c524b",
      "tree": "86102527b92f02450aa245f084ffb491c18d2e0a",
      "parents": [
        "269b012321f2f1f8e4648c43a93bf432b42c6668",
        "ab14398abd195af91a744c320a52a1bce814dd1e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:04:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:04:39 2009 -0800"
      },
      "message": "Merge branch \u0027cpus4096-for-linus-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027cpus4096-for-linus-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (77 commits)\n  x86: setup_per_cpu_areas() cleanup\n  cpumask: fix compile error when CONFIG_NR_CPUS is not defined\n  cpumask: use alloc_cpumask_var_node where appropriate\n  cpumask: convert shared_cpu_map in acpi_processor* structs to cpumask_var_t\n  x86: use cpumask_var_t in acpi/boot.c\n  x86: cleanup some remaining usages of NR_CPUS where s/b nr_cpu_ids\n  sched: put back some stack hog changes that were undone in kernel/sched.c\n  x86: enable cpus display of kernel_max and offlined cpus\n  ia64: cpumask fix for is_affinity_mask_valid()\n  cpumask: convert RCU implementations, fix\n  xtensa: define __fls\n  mn10300: define __fls\n  m32r: define __fls\n  h8300: define __fls\n  frv: define __fls\n  cris: define __fls\n  cpumask: CONFIG_DISABLE_OBSOLETE_CPUMASK_FUNCTIONS\n  cpumask: zero extra bits in alloc_cpumask_var_node\n  cpumask: replace for_each_cpu_mask_nr with for_each_cpu in kernel/time/\n  cpumask: convert mm/\n  ...\n"
    },
    {
      "commit": "269b012321f2f1f8e4648c43a93bf432b42c6668",
      "tree": "e30ec565db50d4aec570cb52e9b29bd584beb2fd",
      "parents": [
        "f60a0a79846abed04ad5abddb5dafd14b66e1ab0",
        "065a6d68c71af2a3bdd080fa5aa353b76eede8f5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:03:52 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:03:52 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu: (89 commits)\n  AMD IOMMU: remove now unnecessary #ifdefs\n  AMD IOMMU: prealloc_protection_domains should be static\n  kvm/iommu: fix compile warning\n  AMD IOMMU: add statistics about total number of map requests\n  AMD IOMMU: add statistics about allocated io memory\n  AMD IOMMU: add stats counter for domain tlb flushes\n  AMD IOMMU: add stats counter for single iommu domain tlb flushes\n  AMD IOMMU: add stats counter for cross-page request\n  AMD IOMMU: add stats counter for free_coherent requests\n  AMD IOMMU: add stats counter for alloc_coherent requests\n  AMD IOMMU: add stats counter for unmap_sg requests\n  AMD IOMMU: add stats counter for map_sg requests\n  AMD IOMMU: add stats counter for unmap_single requests\n  AMD IOMMU: add stats counter for map_single requests\n  AMD IOMMU: add stats counter for completion wait events\n  AMD IOMMU: add init code for statistic collection\n  AMD IOMMU: add necessary header defines for stats counting\n  AMD IOMMU: add Kconfig entry for statistic collection code\n  AMD IOMMU: use dev_name in iommu_enable function\n  AMD IOMMU: use calc_devid in prealloc_protection_domains\n  ...\n"
    },
    {
      "commit": "f60a0a79846abed04ad5abddb5dafd14b66e1ab0",
      "tree": "4c4e3bc4692e6e8f08d2289f3bcab28035a571a1",
      "parents": [
        "2f983570010a0dcb26d988da02d7ccfad00c807c",
        "b15dd79ea06b04a7ecee95f62ce7b6a3547dbb0a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:02:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:02:18 2009 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (34 commits)\n  V4L/DVB (10173): Missing v4l2_prio_close in radio_release\n  V4L/DVB (10172): add DVB_DEVICE_TYPE\u003d to uevent\n  V4L/DVB (10171): Use usb_set_intfdata\n  V4L/DVB (10170): tuner-simple: prevent possible OOPS caused by divide by zero error\n  V4L/DVB (10168): sms1xxx: fix inverted gpio for lna control on tiger r2\n  V4L/DVB (10167): sms1xxx: add support for inverted gpio\n  V4L/DVB (10166): dvb frontend: stop using non-C99 compliant comments\n  V4L/DVB (10165): Add FE_CAN_2G_MODULATION flag to frontends that support DVB-S2\n  V4L/DVB (10164): Add missing S2 caps flag to S2API\n  V4L/DVB (10163): em28xx: allocate adev together with struct em28xx dev\n  V4L/DVB (10162): tuner-simple: Fix tuner type set message\n  V4L/DVB (10161): saa7134: fix autodetection for AVer TV GO 007 FM Plus\n  V4L/DVB (10160): em28xx: update chip id for em2710\n  V4L/DVB (10157): Add USB ID for the Sil4701 radio from DealExtreme\n  V4L/DVB (10156): saa7134: Add support for Avermedia AVer TV GO 007 FM Plus\n  V4L/DVB (10155): Add TEA5764 radio driver\n  V4L/DVB (10154): saa7134: fix a merge conflict on Behold H6 board\n  V4L/DVB (10153): Add the Beholder H6 card to DVB-T part of sources.\n  V4L/DVB (10152): Change configuration of the Beholder H6 card\n  V4L/DVB (10151): Fix I2C bridge error in zl10353\n  ...\n"
    },
    {
      "commit": "2f983570010a0dcb26d988da02d7ccfad00c807c",
      "tree": "39fd89fd04d940306c02425927fc1308b26357b0",
      "parents": [
        "e9e67a8b579d9605a3d06f7430dbb40465c97bf1"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Sat Jan 03 00:06:34 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:01:23 2009 -0800"
      },
      "message": "sparseirq: move set/get_timer_rand_state back to .c\n\nthose two functions only used in that C file\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e9e67a8b579d9605a3d06f7430dbb40465c97bf1",
      "tree": "cd90f29814359440b0f46995216d523ff5d26730",
      "parents": [
        "ad6b646fe55c40ec193240b974561f0a3775d68d",
        "418f19ea17a99421b22a64e101e14b6a16bed66d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:00:07 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:00:07 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc:\n  mmc: warn about voltage mismatches\n  mmc_spi: Add support for OpenFirmware bindings\n  pxamci: fix dma_unmap_sg length\n  mmc_block: ensure all sectors that do not have errors are read\n  drivers/mmc: Move a dereference below a NULL test\n  sdhci: handle built-in sdhci with modular leds class\n  mmc: balanc pci_iomap with pci_iounmap\n  mmc_block: print better error messages\n  mmc: Add mmc_vddrange_to_ocrmask() helper function\n  ricoh_mmc: Handle newer models of Ricoh controllers\n  mmc: Add 8-bit bus width support\n  sdhci: activate led support also when module\n  mmc: trivial annotation of \u0027blocks\u0027\n  pci: use pci_ioremap_bar() in drivers/mmc\n  sdricoh_cs: Add support for Bay Controller devices\n  mmc: at91_mci: reorder timer setup and mmc_add_host() call\n"
    },
    {
      "commit": "ad6b646fe55c40ec193240b974561f0a3775d68d",
      "tree": "d285d0396e9f7b9496976c6845910c04472e159c",
      "parents": [
        "61420f59a589c0668f70cbe725785837c78ece90",
        "006948bafece27265dce72d3158b12af3ff67fce"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:59:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:59:13 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog:\n  [WATCHDOG] Add support for the WM8350 watchdog\n  [WATCHDOG] Add SMSC SCH311x Watchdog Timer.\n  [WATCHDOG] ib700wdt - add timeout parameter\n"
    },
    {
      "commit": "61420f59a589c0668f70cbe725785837c78ece90",
      "tree": "79ae77d731cd2425677b9527d50079d8cf34c3b2",
      "parents": [
        "d97106ab53f812910a62d18afb9dbe882819c1ba",
        "c742b31c03f37c5c499178f09f57381aa6c70131"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:56:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:56:24 2009 -0800"
      },
      "message": "Merge branch \u0027cputime\u0027 of git://git390.osdl.marist.edu/pub/scm/linux-2.6\n\n* \u0027cputime\u0027 of git://git390.osdl.marist.edu/pub/scm/linux-2.6:\n  [PATCH] fast vdso implementation for CLOCK_THREAD_CPUTIME_ID\n  [PATCH] improve idle cputime accounting\n  [PATCH] improve precision of idle time detection.\n  [PATCH] improve precision of process accounting.\n  [PATCH] idle cputime accounting\n  [PATCH] fix scaled \u0026 unscaled cputime accounting\n"
    },
    {
      "commit": "d97106ab53f812910a62d18afb9dbe882819c1ba",
      "tree": "edd1a2c287b7d98ee7b62e7ea6457c8a10abe016",
      "parents": [
        "3bfacef412b4bc993a8992217e50f1245f2fd3a6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:46:17 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:46:17 2009 -0800"
      },
      "message": "Make %p print \u0027(null)\u0027 for NULL pointers\n\nBefore, when we only ever printed out the pointer value itself, a NULL\npointer would never cause issues and might as well be printed out as\njust its numeric value.\n\nHowever, with the extended %p formats, especially %pR, we might validly\nwant to print out resources for debugging.  And sometimes they don\u0027t\neven exist, and the resource pointer is just NULL.  Print it out as\nsuch, rather than oopsing.\n\nThis is a more generic version of a patch done by Trent Piepho (catching\nall %p cases rather than just %pR, and using \"(null)\" instead of\n\"[NULL]\" to match glibc).\n\nRequested-by: Trent Piepho \u003cxyzzy@speakeasy.org\u003e\nAcked-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3bfacef412b4bc993a8992217e50f1245f2fd3a6",
      "tree": "bcf92bc34b30383dfc542f9850f59858681556cb",
      "parents": [
        "17580d7f2f632ff8c9786d609508c35c9f56e1f3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Jan 03 07:16:33 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:45:54 2009 -0800"
      },
      "message": "get rid of special-casing the /sbin/loader on alpha\n\n... just make it a binfmt handler like #! one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "17580d7f2f632ff8c9786d609508c35c9f56e1f3",
      "tree": "488abddb16d4640f4c27fdcf2c36186c6b70bdcc",
      "parents": [
        "fe30af971d896c144ef4708f97cf9d3186303c42"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Jan 03 07:16:23 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:45:54 2009 -0800"
      },
      "message": "sanitize ifdefs in binfmt_aout\n\nThey are actually alpha vs.  i386/arm/m68k i.e. ecoff vs. aout.\n\nIn the only place where we actually tried to handle arm and i386/m68k in\ndifferent ways (START_DATA() in coredump handling), the arm variant\nworks for all of them (i386 and m68k have u.start_code set to 0).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe30af971d896c144ef4708f97cf9d3186303c42",
      "tree": "c69bd377e0144708415a4967ced8469250acd6ef",
      "parents": [
        "e0b685d39a0404e7f87fb7b7808c3b37a115fe11"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Jan 03 07:16:13 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:45:54 2009 -0800"
      },
      "message": "remove the rudiment of a.out for sparc\n\nit\u0027s been used only in sunos compat\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0b685d39a0404e7f87fb7b7808c3b37a115fe11",
      "tree": "5ccdc48228cac967fc7ff5cc76d9890f73bcd663",
      "parents": [
        "8e3bda0863c1578ddf47a015eac7dc6efb1ef48b"
      ],
      "author": {
        "name": "Hugh Blemings",
        "email": "hugh@blemings.org",
        "time": "Sat Jan 03 16:48:44 2009 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:45:54 2009 -0800"
      },
      "message": "Updated contact info for CREDITS file\n\nThis updates some personal info in the CREDITS file.\n\nI\u0027m no longer actively involved in Keyspan driver work so shouldn\u0027t\nreally be listed as a Maintainer here.\n\nI do however field the occasional question on them and as I\u0027m dropping\nthe misc.nu domain, want to ensure people can find me should they need\nto.\n\nSigned-off-by: Hugh Blemings \u003chugh@blemings.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab14398abd195af91a744c320a52a1bce814dd1e",
      "tree": "5b0284af973e7a3d7d5c648d93965b6434d5c7e6",
      "parents": [
        "8fd2d2d5aaf086cfa3b2e2e58cab96b7afdc9e51"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@gmail.com",
        "time": "Fri Jan 02 21:51:32 2009 +0300"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 03 19:15:42 2009 +0100"
      },
      "message": "x86: setup_per_cpu_areas() cleanup\n\nImpact: cleanup\n\n__alloc_bootmem and __alloc_bootmem_node do panic\nfor us in case of fail so no need for additional\nchecks here.\n\nAlso lets use pr_*() macros for printing.\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8fd2d2d5aaf086cfa3b2e2e58cab96b7afdc9e51",
      "tree": "769492a15566e8c5ec4d7f611af378aee3d1e08f",
      "parents": [
        "80855f7361eb68205e6bc1981928629d9b02d5c9"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Wed Dec 31 18:08:48 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 03 19:15:41 2009 +0100"
      },
      "message": "cpumask: fix compile error when CONFIG_NR_CPUS is not defined\n\nCONFIG_NR_CPUS will be defined for all arch\u0027s whether SMP or not, but\nit may not have made it into all arches yet.\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "80855f7361eb68205e6bc1981928629d9b02d5c9",
      "tree": "029e78df08989c8d335b67a8031c784136a57539",
      "parents": [
        "2fdf66b491ac706657946442789ec644cc317e1a"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Wed Dec 31 18:08:47 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 03 19:15:40 2009 +0100"
      },
      "message": "cpumask: use alloc_cpumask_var_node where appropriate\n\nImpact: Reduce inter-node memory traffic.\n\nReduces inter-node memory traffic (offloading the global system bus)\nby allocating referenced struct cpumasks on the same node as the\nreferring struct.\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ],
  "next": "2fdf66b491ac706657946442789ec644cc317e1a"
}
