block: test-iosched error handling fixes

- Fix test-iosched crash when running multiple tests
- Free the BIOs memory when a request is not completed

Change-Id: I1baa916c04ae73c809dee7e67ec63f4546dc71aa
Signed-off-by: Maya Erez <merez@codeaurora.org>
mmc: card: Add eMMC4.5 packing control unit-tests

Expose the packing control test.
Test the packing control feature under these scenarios:
- Packing expected: entering write packing state,
  staying in write packing state.
- Packing not expected: not entering write packing state
  when not supposed to.
- Mixed states: test the ability to shift from packing
  to no-packing and back, and the opposite.

Change-Id: I5a93df8b5b7c48d355c3cc881699a3f9592914e6
Signed-off-by: Lee Susman <lsusman@codeaurora.org>

Conflicts:
	drivers/mmc/card/mmc_block_test.c
mmc: card: Add Sanitize unit test

This test write data to the card, then send DISCARD on random
addresses on the card, send SANITIZE to the card to erase all
the unmapped areas.

Change-Id: I2904023ccd258e64b99b004bacfbe576b0ead59a
Signed-off-by: Maya Erez <merez@codeaurora.org>
block: Adding ROW scheduling algorithm

This patch adds the implementation of a new scheduling algorithm - ROW.
The policy of this algorithm is to prioritize READ requests over WRITE
as much as possible without starving the WRITE requests.

Change-Id: I4ed52ea21d43b0e7c0769b2599779a3d3869c519
Signed-off-by: Tatyana Brokhman <tlinder@codeaurora.org>
mmc: block: do not query the sd card if a fault is injected

When the fault injection framework introduces an error to the data
block, the current code queries the SD card to find the number of
blocks actually programmed. This value would be as requested by the
generic block layer. So the entire request would be completed.

Say, request 0 is pulled from queue and submitted. When this is being
processed, request 1 is pulled from queue and prepared. Request 0
though is successful, fault-injection framework injects an error
and modifies the bytes_xferred variable to a random value less than
requested transfer. Request 1 is not processed and during the handling
of error, the SD card is queried for the actual bytes programmed. This
would be the correct value. Thus blk_end_request would complete
this request and the control would return to fetch request 2. In this
process, request 1 is not processed at all and the application waits
indefinitely for request 1 to be processed. No further requests are
issued to the queue.

This patch identifies, if the fault injection-framework has inserted an
error to this request and doesn't query the card and uses
bytes_xferred to complete the request.

Change-Id: I496802e244745bc7550402027a594d967cf7b756
Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>

Conflicts:
	drivers/mmc/card/block.c
	include/linux/mmc/core.h
defconfig: remove CONFIG_MMC_MSM_CARD_HW_DETECTION

CONFIG_MMC_MSM_CARD_HW_DETECTION is no longer used so this
patch removes it completely from kconfig as well as from
defconfigs.

Change-Id: I8e7220722e0e90296d379105c61787ca54a1afd4
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>

Conflicts:
	arch/arm/configs/msm7627a-perf_defconfig
	arch/arm/configs/msm7627a_defconfig
	arch/arm/configs/msm7630-perf_defconfig
	arch/arm/configs/msm7630_defconfig
	arch/arm/configs/msm8660-perf_defconfig
	arch/arm/configs/msm8660_defconfig
	arch/arm/configs/msm8960-perf_defconfig
	arch/arm/configs/msm8960_defconfig
	arch/arm/configs/msm9615_defconfig