• Coly Li's avatar
    bcache: add sysfs_strtoul_bool() for setting bit-field variables · e4db37fb
    Coly Li authored
    When setting bool values via sysfs interface, e.g. writeback_metadata,
    if writing 1 into writeback_metadata file, dc->writeback_metadata is
    set to 1, but if writing 2 into the file, dc->writeback_metadata is
    0. This is misleading, a better result should be 1 for all non-zero
    input value.
    
    It is because dc->writeback_metadata is a bit-field variable, and
    current code simply use d_strtoul() to convert a string into integer
    and takes the lowest bit value. To fix such error, we need a routine
    to convert the input string into unsigned integer, and set target
    variable to 1 if the converted integer is non-zero.
    
    This patch introduces a new macro called sysfs_strtoul_bool(), it can
    be used to convert input string into bool value, we can use it to set
    bool value for bit-field vairables.
    Signed-off-by: default avatarColy Li <colyli@suse.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    e4db37fb
sysfs.h 3.21 KB