diff options
author | zhendong chen <alex.chen@huawei.com> | 2014-12-17 07:37:04 +0100 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2014-12-17 18:31:13 +0100 |
commit | 5164bece1673cdf04782f8ed3fba70743700f5da (patch) | |
tree | 98355028eac1fb5f41623c95a6f1382154a240af /drivers/md/dm.c | |
parent | dm thin: fix crash by initializing thin device's refcount and completion earlier (diff) | |
download | linux-5164bece1673cdf04782f8ed3fba70743700f5da.tar.xz linux-5164bece1673cdf04782f8ed3fba70743700f5da.zip |
dm: fix missed error code if .end_io isn't implemented by target_type
In bio-based DM's clone_endio(), when target_type doesn't implement
.end_io (e.g. linear) r will be always be initialized 0. So if a
WRITE SAME bio fails WRITE SAME will not be disabled as intended.
Fix this by initializing r to error, rather than 0, in clone_endio().
Signed-off-by: Alex Chen <alex.chen@huawei.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Fixes: 7eee4ae2db ("dm: disable WRITE SAME if it fails")
Cc: stable@vger.kernel.org
Diffstat (limited to 'drivers/md/dm.c')
-rw-r--r-- | drivers/md/dm.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 4c06585bf165..b98cd9d84435 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -899,7 +899,7 @@ static void disable_write_same(struct mapped_device *md) static void clone_endio(struct bio *bio, int error) { - int r = 0; + int r = error; struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone); struct dm_io *io = tio->io; struct mapped_device *md = tio->io->md; |