)]}'
{
  "commit": "fb4fa76a1fa59340154c42d998d700e1f8bf21e0",
  "tree": "c9d66f1bd9468708ad5a241aa818c075f93f071f",
  "parents": [
    "4e085e76cbe558b79b54cbab772f61185879bc64"
  ],
  "author": {
    "name": "Neil Horman",
    "email": "nhorman@tuxdriver.com",
    "time": "Mon Dec 06 09:05:50 2010 +0000"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Thu Dec 09 20:33:46 2010 -0800"
  },
  "message": "net: Convert netpoll blocking api in bonding driver to be a counter\n\nA while back I made some changes to enable netpoll in the bonding driver.  Among\nthem was a per-cpu flag that indicated we were in a path that held locks which\ncould cause the netpoll path to block in during tx, and as such the tx path\nshould queue the frame for later use.  This appears to have given rise to a\nregression.  If one of those paths on which we hold the per-cpu flag yields the\ncpu, its possible for us to come back on a different cpu, leading to us clearing\na different flag than we set.  This results in odd netpoll drops, and BUG\nbacktraces appearing in the log, as we check to make sure that we only clear set\nbits, and only set clear bits.  I had though briefly about changing the\noffending paths so that they wouldn\u0027t sleep, but looking at my origional work\nmore closely, it doesn\u0027t appear that a per-cpu flag is warranted.  We alrady\ngate the checking of this flag on IFF_IN_NETPOLL, so we don\u0027t hit this in the\nnormal tx case anyway.  And practically speaking, the normal use case for\nnetpoll is to only have one client anyway, so we\u0027re not going to erroneously\nqueue netpoll frames when its actually safe to do so.  As such, lets just\nconvert that per-cpu flag to an atomic counter.  It fixes the rescheduling bugs,\nis equivalent from a performance perspective and actually eliminates some code\nin the process.\n\nTested by the reporter and myself, successfully\n\nReported-by: Liang Zheng \u003clzheng@redhat.com\u003e\nCC: Jay Vosburgh \u003cfubar@us.ibm.com\u003e\nCC: Andy Gospodarek \u003candy@greyhouse.net\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2fee00a4c9ef426768cb940d614200554197a90e",
      "old_mode": 33188,
      "old_path": "drivers/net/bonding/bond_main.c",
      "new_id": "d0ea760ce419f0ae8040bf880cd80013c651a93a",
      "new_mode": 33188,
      "new_path": "drivers/net/bonding/bond_main.c"
    },
    {
      "type": "modify",
      "old_id": "4eedb12df6caf2e4676cbe11e2134e97ec01def1",
      "old_mode": 33188,
      "old_path": "drivers/net/bonding/bonding.h",
      "new_id": "c2f081352a037894d6e8238ccb70c39e796c4a69",
      "new_mode": 33188,
      "new_path": "drivers/net/bonding/bonding.h"
    }
  ]
}
