• Mike Snitzer's avatar
    md: change mddev 'chunk_sectors' from int to unsigned · 6ffeb1c3
    Mike Snitzer authored
    Commit e2782f56 ("Revert "dm raid: remove unnecessary discard
    limits for raid10"") exposed compiler warnings introduced by commit
    e0910c8e ("dm raid: fix discard limits for raid1 and raid10"):
    
    In file included from ./include/linux/kernel.h:14,
                     from ./include/asm-generic/bug.h:20,
                     from ./arch/x86/include/asm/bug.h:93,
                     from ./include/linux/bug.h:5,
                     from ./include/linux/mmdebug.h:5,
                     from ./include/linux/gfp.h:5,
                     from ./include/linux/slab.h:15,
                     from drivers/md/dm-raid.c:8:
    drivers/md/dm-raid.c: In function ‘raid_io_hints’:
    ./include/linux/minmax.h:18:28: warning: comparison of distinct pointer types lacks a cast
      (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
                                ^~
    ./include/linux/minmax.h:32:4: note: in expansion of macro ‘__typecheck’
       (__typecheck(x, y) && __no_side_effects(x, y))
        ^~~~~~~~~~~
    ./include/linux/minmax.h:42:24: note: in expansion of macro ‘__safe_cmp’
      __builtin_choose_expr(__safe_cmp(x, y), \
                            ^~~~~~~~~~
    ./include/linux/minmax.h:51:19: note: in expansion of macro ‘__careful_cmp’
     #define min(x, y) __careful_cmp(x, y, <)
                       ^~~~~~~~~~~~~
    ./include/linux/minmax.h:84:39: note: in expansion of macro ‘min’
      __x == 0 ? __y : ((__y == 0) ? __x : min(__x, __y)); })
                                           ^~~
    drivers/md/dm-raid.c:3739:33: note: in expansion of macro ‘min_not_zero’
       limits->max_discard_sectors = min_not_zero(rs->md.chunk_sectors,
                                     ^~~~~~~~~~~~
    
    Fix this by changing the chunk_sectors member of 'struct mddev' from
    int to 'unsigned int' to match the type used for the 'chunk_sectors'
    member of 'struct queue_limits'.  Various MD code still uses 'int' but
    none of it appears to ever make use of signed int; and storing
    positive signed int in unsigned is perfectly safe.
    Reported-by: default avatarSong Liu <songliubraving@fb.com>
    Fixes: e2782f56 ("Revert "dm raid: remove unnecessary discard limits for raid10"")
    Fixes: e0910c8e ("dm raid: fix discard limits for raid1 and raid10")
    Cc: stable@vger,kernel.org # e0910c8e was marked for stable@
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    Reviewed-by: default avatarSong Liu <song@kernel.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    6ffeb1c3
md.h 27.7 KB