MRP-971 kernel: port rwsem changes form upstream

This patch includes following commits:

commit 91af70814105f4c05e6e11b51c3269907b71794b
rwsem: Test for no active locks in __rwsem_do_wake undo code

commit 345af7bf3304410634c21ada4664fda83d4d9a16
rwsem: fully separate code paths to wake writers vs readers

commit 70bdc6e0644f3535e93bac5c364ca199397e507e
rwsem: lighter active count checks when waking up readers

commit fd41b33435ada87323cc86b50959fbffe35192c8
rwsem: let RWSEM_WAITING_BIAS represent any number of waiting threads

commit 424acaaeb3a3932d64a9b4bd59df6cf72c22d8f3
rwsem: wake queued readers when writer blocks on active read lock

commit a8618a0e8a06f75c6efec2a5477861d704d48b28
rwsem: smaller wrappers around rwsem_down_failed_common

commit ce6711f3d196f09ca0ed29a24dfad42d83912b20
rwsem: Implement writer lock-stealing for better scalability

Change-Id: Id55dd9d33f191d7863bfdf04850b05c4b6142554
Signed-off-by: Andriy Skulysh <Andriy_Skulysh@xyratex.com>
Reviewed-on: http://es-gerrit.xyus.xyratex.com:8080/3940
Tested-by: Jenkins
Tested-by: Alexander Lezhoev <alexander.lezhoev@seagate.com>
Reviewed-by: Alexey Lyashkov <alexey_lyashkov@xyratex.com>
Reviewed-by: Vitaly Fertman <vitaly.fertman@seagate.com>