dm: fix write same requests counting
When processing write same requests, fix dm to send the configured
number of WRITE SAME requests to the target rather than the number of
discards, which is not always the same.
Device-mapper WRITE SAME support was introduced by commit
23508a96cd
("dm: add WRITE SAME support").
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Acked-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
parent
0f640dca08
commit
fe7af2d3ba
1 changed files with 4 additions and 2 deletions
|
@ -1188,6 +1188,7 @@ static int __clone_and_map_changing_extent_only(struct clone_info *ci,
|
|||
{
|
||||
struct dm_target *ti;
|
||||
sector_t len;
|
||||
unsigned num_requests;
|
||||
|
||||
do {
|
||||
ti = dm_table_find_target(ci->map, ci->sector);
|
||||
|
@ -1200,7 +1201,8 @@ static int __clone_and_map_changing_extent_only(struct clone_info *ci,
|
|||
* reconfiguration might also have changed that since the
|
||||
* check was performed.
|
||||
*/
|
||||
if (!get_num_requests || !get_num_requests(ti))
|
||||
num_requests = get_num_requests ? get_num_requests(ti) : 0;
|
||||
if (!num_requests)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (is_split_required && !is_split_required(ti))
|
||||
|
@ -1208,7 +1210,7 @@ static int __clone_and_map_changing_extent_only(struct clone_info *ci,
|
|||
else
|
||||
len = min(ci->sector_count, max_io_len(ci->sector, ti));
|
||||
|
||||
__issue_target_requests(ci, ti, ti->num_discard_requests, len);
|
||||
__issue_target_requests(ci, ti, num_requests, len);
|
||||
|
||||
ci->sector += len;
|
||||
} while (ci->sector_count -= len);
|
||||
|
|
Loading…
Add table
Reference in a new issue