Skip to content

Commit

Permalink
dm: always allow one page in dm_merge_bvec
Browse files Browse the repository at this point in the history
Some callers assume they can always add at least one page to an empty bio,
so dm_merge_bvec should not return 0 in this case: we'll reject the I/O
later after the bio is submitted.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
  • Loading branch information
Mikulas Patocka authored and Alasdair G Kergon committed Oct 1, 2008
1 parent d3a47e8 commit 5037108
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions drivers/md/dm.c
Original file line number Diff line number Diff line change
Expand Up @@ -837,10 +837,10 @@ static int dm_merge_bvec(struct request_queue *q,
struct dm_table *map = dm_get_table(md);
struct dm_target *ti;
sector_t max_sectors;
int max_size;
int max_size = 0;

if (unlikely(!map))
return 0;
goto out;

ti = dm_table_find_target(map, bvm->bi_sector);

Expand All @@ -861,14 +861,15 @@ static int dm_merge_bvec(struct request_queue *q,
if (max_size && ti->type->merge)
max_size = ti->type->merge(ti, bvm, biovec, max_size);

dm_table_put(map);

out:
/*
* Always allow an entire first page
*/
if (max_size <= biovec->bv_len && !(bvm->bi_size >> SECTOR_SHIFT))
max_size = biovec->bv_len;

dm_table_put(map);

return max_size;
}

Expand Down

0 comments on commit 5037108

Please sign in to comment.