diff options
author | Martin K. Petersen <martin.petersen@oracle.com> | 2016-02-04 00:52:12 -0500 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2016-02-04 22:42:58 -0500 |
commit | 0fb5b1fb30fba3671dd5b1489d78e93e08d62e4e (patch) | |
tree | 090ebf83b190bff02e29a43f8611503d066e33c5 /block/noop-iosched.c | |
parent | 82c43310508eb19eb41fe7862e89afeb74030b84 (diff) | |
download | talos-op-linux-0fb5b1fb30fba3671dd5b1489d78e93e08d62e4e.tar.gz talos-op-linux-0fb5b1fb30fba3671dd5b1489d78e93e08d62e4e.zip |
block/sd: Return -EREMOTEIO when WRITE SAME and DISCARD are disabled
When a storage device rejects a WRITE SAME command we will disable write
same functionality for the device and return -EREMOTEIO to the block
layer. -EREMOTEIO will in turn prevent DM from retrying the I/O and/or
failing the path.
Yiwen Jiang discovered a small race where WRITE SAME requests issued
simultaneously would cause -EIO to be returned. This happened because
any requests being prepared after WRITE SAME had been disabled for the
device caused us to return BLKPREP_KILL. The latter caused the block
layer to return -EIO upon completion.
To overcome this we introduce BLKPREP_INVALID which indicates that this
is an invalid request for the device. blk_peek_request() is modified to
return -EREMOTEIO in that case.
Reported-by: Yiwen Jiang <jiangyiwen@huawei.com>
Suggested-by: Mike Snitzer <snitzer@redhat.com>
Reviewed-by: Hannes Reinicke <hare@suse.de>
Reviewed-by: Ewan Milne <emilne@redhat.com>
Reviewed-by: Yiwen Jiang <jiangyiwen@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'block/noop-iosched.c')
0 files changed, 0 insertions, 0 deletions