dm integrity: allow large ranges to be described
authorMikulas Patocka <mpatocka@redhat.com>
Mon, 29 Apr 2019 12:57:21 +0000 (14:57 +0200)
committerMike Snitzer <snitzer@redhat.com>
Tue, 7 May 2019 20:05:12 +0000 (16:05 -0400)
Change n_sectors data type from unsigned to sector_t.  Following commits
will need to lock large ranges.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-integrity.c

index ffd0d156c24ec0b51f1f57400fb3f5f9e26d81d2..0dcced588c42ed7aaeb5ae1529d7f8d968d2df51 100644 (file)
@@ -246,7 +246,7 @@ struct dm_integrity_c {
 
 struct dm_integrity_range {
        sector_t logical_sector;
-       unsigned n_sectors;
+       sector_t n_sectors;
        bool waiting;
        union {
                struct rb_node node;
@@ -1695,7 +1695,7 @@ retry:
                        unsigned ws, we, range_sectors;
 
                        dio->range.n_sectors = min(dio->range.n_sectors,
-                                                  ic->free_sectors << ic->sb->log2_sectors_per_block);
+                                                  (sector_t)ic->free_sectors << ic->sb->log2_sectors_per_block);
                        if (unlikely(!dio->range.n_sectors)) {
                                if (from_map)
                                        goto offload_to_thread;
@@ -2153,7 +2153,7 @@ next_chunk:
        get_area_and_offset(ic, range.logical_sector, &area, &offset);
        range.n_sectors = min((sector_t)RECALC_SECTORS, ic->provided_data_sectors - range.logical_sector);
        if (!ic->meta_dev)
-               range.n_sectors = min(range.n_sectors, (1U << ic->sb->log2_interleave_sectors) - (unsigned)offset);
+               range.n_sectors = min(range.n_sectors, ((sector_t)1U << ic->sb->log2_interleave_sectors) - (unsigned)offset);
 
        if (unlikely(!add_new_range(ic, &range, true)))
                wait_and_add_new_range(ic, &range);