Matthew Wilcox
2020-May-29 20:27 UTC
[Ocfs2-devel] [PATCH v2] blkdev: Replace blksize_bits() with ilog2()
On Fri, May 29, 2020 at 10:11:00PM +0800, Kaitao Cheng wrote:> There is a function named ilog2() exist which can replace blksize. > The generated code will be shorter and more efficient on some > architecture, such as arm64. And ilog2() can be optimized according > to different architecture.We'd get the same benefit from a smaller patch with just: --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1502,15 +1502,9 @@ static inline int blk_rq_aligned(struct request_queue *q, unsigned long addr, return !(addr & alignment) && !(len & alignment); } -/* assumes size > 256 */ static inline unsigned int blksize_bits(unsigned int size) { - unsigned int bits = 8; - do { - bits++; - size >>= 1; - } while (size > 256); - return bits; + return ilog2(size); } static inline unsigned int block_size(struct block_device *bdev)
Bart Van Assche
2020-May-29 22:27 UTC
[Ocfs2-devel] [PATCH v2] blkdev: Replace blksize_bits() with ilog2()
On 2020-05-29 13:27, Matthew Wilcox wrote:> On Fri, May 29, 2020 at 10:11:00PM +0800, Kaitao Cheng wrote: >> There is a function named ilog2() exist which can replace blksize. >> The generated code will be shorter and more efficient on some >> architecture, such as arm64. And ilog2() can be optimized according >> to different architecture. > > We'd get the same benefit from a smaller patch with just: > > --- a/include/linux/blkdev.h > +++ b/include/linux/blkdev.h > @@ -1502,15 +1502,9 @@ static inline int blk_rq_aligned(struct request_queue *q, unsigned long addr, > return !(addr & alignment) && !(len & alignment); > } > > -/* assumes size > 256 */ > static inline unsigned int blksize_bits(unsigned int size) > { > - unsigned int bits = 8; > - do { > - bits++; > - size >>= 1; > - } while (size > 256); > - return bits; > + return ilog2(size); > } > > static inline unsigned int block_size(struct block_device *bdev)Hi Matthew, I had suggested to change all blksize_bits() calls into ilog2() calls because I think that a single function to calculate the logarithm base 2 is sufficient. Thanks, Bart.