Re: [PATCH] bcache: fix incorrect sysfs output value of strip size
LGTM, applied. On 02/10/2018 06:30 PM, tang.jun...@zte.com.cn wrote: > From: Tang Junhui> > Stripe size is shown as zero when no strip in back end device: > [root@ceph132 ~]# cat /sys/block/sdd/bcache/stripe_size > 0.0k > > Actually it should be 1T Bytes (1 << 31 sectors), but in sysfs > interface, stripe_size was changed from sectors to bytes, and move > 9 bits left, so the 32 bits variable overflows. > > This patch change the variable to a 64 bits type before moving bits. > > Signed-off-by: Tang Junhui > --- > drivers/md/bcache/sysfs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/md/bcache/sysfs.c b/drivers/md/bcache/sysfs.c > index b418409..240cbec 100644 > --- a/drivers/md/bcache/sysfs.c > +++ b/drivers/md/bcache/sysfs.c > @@ -170,7 +170,7 @@ > sysfs_hprint(dirty_data, >bcache_dev_sectors_dirty(>disk) << 9); > > - sysfs_hprint(stripe_size, dc->disk.stripe_size << 9); > + sysfs_hprint(stripe_size,((uint64_t)dc->disk.stripe_size) << 9); > var_printf(partial_stripes_expensive, "%u"); > > var_hprint(sequential_cutoff); >
[PATCH] bcache: fix incorrect sysfs output value of strip size
From: Tang JunhuiStripe size is shown as zero when no strip in back end device: [root@ceph132 ~]# cat /sys/block/sdd/bcache/stripe_size 0.0k Actually it should be 1T Bytes (1 << 31 sectors), but in sysfs interface, stripe_size was changed from sectors to bytes, and move 9 bits left, so the 32 bits variable overflows. This patch change the variable to a 64 bits type before moving bits. Signed-off-by: Tang Junhui --- drivers/md/bcache/sysfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/md/bcache/sysfs.c b/drivers/md/bcache/sysfs.c index b418409..240cbec 100644 --- a/drivers/md/bcache/sysfs.c +++ b/drivers/md/bcache/sysfs.c @@ -170,7 +170,7 @@ sysfs_hprint(dirty_data, bcache_dev_sectors_dirty(>disk) << 9); - sysfs_hprint(stripe_size, dc->disk.stripe_size << 9); + sysfs_hprint(stripe_size,((uint64_t)dc->disk.stripe_size) << 9); var_printf(partial_stripes_expensive, "%u"); var_hprint(sequential_cutoff); -- 1.8.3.1