)]}'
{
  "log": [
    {
      "commit": "8ebe34731a0d1a9d89b536430afd98d0fadec99b",
      "tree": "bb378645318ce7c9b1b5a389a5e522835916cbed",
      "parents": [
        "9390ef0c85fd065f01045fef708b046c98cda04c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Dec 17 16:01:38 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 17:15:18 2012 -0800"
      },
      "message": "percpu_rw_semaphore: add lockdep annotations\n\nAdd lockdep annotations.  Not only this can help to find the potential\nproblems, we do not want the false warnings if, say, the task takes two\ndifferent percpu_rw_semaphore\u0027s for reading.  IOW, at least -\u003erw_sem\nshould not use a single class.\n\nThis patch exposes this internal lock to lockdep so that it represents the\nwhole percpu_rw_semaphore.  This way we do not need to add another \"fake\"\n-\u003elockdep_map and lock_class_key.  More importantly, this also makes the\noutput from lockdep much more understandable if it finds the problem.\n\nIn short, with this patch from lockdep pov percpu_down_read() and\npercpu_up_read() acquire/release -\u003erw_sem for reading, this matches the\nactual semantics.  This abuses __up_read() but I hope this is fine and in\nfact I\u0027d like to have down_read_no_lockdep() as well,\npercpu_down_read_recursive_readers() will need it.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Michal Marek \u003cmmarek@suse.cz\u003e\nCc: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9390ef0c85fd065f01045fef708b046c98cda04c",
      "tree": "22ae17e0d07a9386cd494a869f60df757cfc56d7",
      "parents": [
        "a1fd3e24d8a484b3265a6d485202afe093c058f3"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Dec 17 16:01:36 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 17:15:18 2012 -0800"
      },
      "message": "percpu_rw_semaphore: kill -\u003ewriter_mutex, add -\u003ewrite_ctr\n\npercpu_rw_semaphore-\u003ewriter_mutex was only added to simplify the initial\nrewrite, the only thing it protects is clear_fast_ctr() which otherwise\ncould be called by multiple writers.  -\u003erw_sem is enough to serialize the\nwriters.\n\nKill this mutex and add \"atomic_t write_ctr\" instead.  The writers\nincrement/decrement this counter, the readers check it is zero instead of\nmutex_is_locked().\n\nMove atomic_add(clear_fast_ctr(), slow_read_ctr) under down_write() to\navoid the race with other writers.  This is a bit sub-optimal, only the\nfirst writer needs this and we do not need to exclude the readers at this\nstage.  But this is simple, we do not want another internal lock until we\nadd more features.\n\nAnd this speeds up the write-contended case.  Before this patch the racing\nwriters sleep in synchronize_sched_expedited() sequentially, with this\npatch multiple synchronize_sched_expedited\u0027s can \"overlap\" with each\nother.  Note: we can do more optimizations, this is only the first step.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Michal Marek \u003cmmarek@suse.cz\u003e\nCc: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1fd3e24d8a484b3265a6d485202afe093c058f3",
      "tree": "472f6480a81abbc04b27eccdb798d80b1685bee0",
      "parents": [
        "53809751ac230a3611b5cdd375f3389f3207d471"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Dec 17 16:01:32 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 17:15:18 2012 -0800"
      },
      "message": "percpu_rw_semaphore: reimplement to not block the readers unnecessarily\n\nCurrently the writer does msleep() plus synchronize_sched() 3 times to\nacquire/release the semaphore, and during this time the readers are\nblocked completely.  Even if the \"write\" section was not actually started\nor if it was already finished.\n\nWith this patch down_write/up_write does synchronize_sched() twice and\ndown_read/up_read are still possible during this time, just they use the\nslow path.\n\npercpu_down_write() first forces the readers to use rw_semaphore and\nincrement the \"slow\" counter to take the lock for reading, then it\ntakes that rw_semaphore for writing and blocks the readers.\n\nAlso.  With this patch the code relies on the documented behaviour of\nsynchronize_sched(), it doesn\u0027t try to pair synchronize_sched() with\nbarrier.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
