• Linus Torvalds's avatar
    blk: rq_data_dir() should not return a boolean · 10fbd36e
    Linus Torvalds authored
    rq_data_dir() returns either READ or WRITE (0 == READ, 1 == WRITE), not
    a boolean value.
    Now, admittedly the "!= 0" doesn't really change the value (0 stays as
    zero, 1 stays as one), but it's not only redundant, it confuses gcc, and
    causes gcc to warn about the construct
        switch (rq_data_dir(req)) {
            case READ:
            case WRITE:
    that we have in a few drivers.
    Now, the gcc warning is silly and stupid (it seems to warn not about the
    switch value having a different type from the case statements, but about
    _any_ boolean switch value), but in this case the code itself is silly
    and stupid too, so let's just change it, and get rid of warnings like
      drivers/block/hd.c: In function ‘hd_request’:
      drivers/block/hd.c:630:11: warning: switch condition has boolean value [-Wswitch-bool]
         switch (rq_data_dir(req)) {
    The odd '!= 0' came in when "cmd_flags" got turned into a "u64" in
    commit 5953316d ("block: make rq->cmd_flags be 64-bit") and is
    presumably because the old code (that just did a logical 'and' with 1)
    would then end up making the type of rq_data_dir() be u64 too.
    But if we want to retain the old regular integer type, let's just cast
    the result to 'int' rather than use that rather odd '!= 0'.
    Signed-off-by: default avatarLinus Torvalds <[email protected]>
blkdev.h 46.4 KB