From patchwork Fri May 29 14:11:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: chengkaitao X-Patchwork-Id: 11579293 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D19B213B4 for ; Fri, 29 May 2020 16:29:43 +0000 (UTC) Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id ABF612075A for ; Fri, 29 May 2020 16:29:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ABF612075A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=ocfs2-devel-bounces@oss.oracle.com Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 04TGBw4T127855; Fri, 29 May 2020 16:29:30 GMT Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2120.oracle.com with ESMTP id 318xbkbc5m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 29 May 2020 16:29:29 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 04TGD1K5102109; Fri, 29 May 2020 16:27:29 GMT Received: from oss.oracle.com (oss-old-reserved.oracle.com [137.254.22.2]) by userp3030.oracle.com with ESMTP id 317ds4hejc-1 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO); Fri, 29 May 2020 16:27:28 +0000 Received: from localhost ([127.0.0.1] helo=lb-oss.oracle.com) by oss.oracle.com with esmtp (Exim 4.63) (envelope-from ) id 1jehnv-0000In-0P; Fri, 29 May 2020 09:24:19 -0700 Received: from userp3020.oracle.com ([156.151.31.79]) by oss.oracle.com with esmtp (Exim 4.63) (envelope-from ) id 1jefjL-0001A2-3g for ocfs2-devel@oss.oracle.com; Fri, 29 May 2020 07:11:27 -0700 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 04TE7qnG169563 for ; Fri, 29 May 2020 14:11:26 GMT Received: from userp2040.oracle.com (userp2040.oracle.com [156.151.31.90]) by userp3020.oracle.com with ESMTP id 31a9ku9qdk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 29 May 2020 14:11:26 +0000 Received: from pps.filterd (userp2040.oracle.com [127.0.0.1]) by userp2040.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 04TE2QsI009410 for ; Fri, 29 May 2020 14:11:26 GMT Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) by userp2040.oracle.com with ESMTP id 31avwbybpr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=OK) for ; Fri, 29 May 2020 14:11:25 +0000 Received: by mail-pl1-f194.google.com with SMTP id y11so1194856plt.12 for ; Fri, 29 May 2020 07:11:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=xgMt8/Ap5gvlX6ynibkokY447a53n7PgRJd4O0S9s1g=; b=V1lQD7eErZwfz7EMi24C+4AXGU40zd2SZaeivlA3UafnUWx8uy2hpEZlF4D80KwG3N QiL1Kkrde0g/BWFZog+3LxLl9qpFGrf6GxJfza5n/kCb3DWgOvjkled1BXECzKC9r4bp Bp0Ratpec22/5d6oNhiqrQCCaO9J/KXpSZ9J+MUWUcXK3jMfyzXGhT/ED9o/gahWXCf0 JAZ1BsWgkGje4aYAquOBGTTGGqJovv4a0aBTYjEGzKDlbGjDh5xlHNakP06y3HLy6/Hj G0z1UcWYsVysAaPo7W84kBO8b+sdb/1PwBW1M+XYhvzURsJxTdc7fYVsJJHNv1BEwBxD rJDg== X-Gm-Message-State: AOAM53199nL0+X2hW3MbreOsdf0V1Cuc5s8uNTKRNg97QN2dVURrg3+p pfam+5Dm1X7D8KRVij+/6L8= X-Google-Smtp-Source: ABdhPJzFMCwkzDp3IkhKL3lk0R3scS2Yh0i7BgzdBQ154tbip+aLEfVcaO1NgL+5iytcLq+RymuMpA== X-Received: by 2002:a17:90a:2622:: with SMTP id l31mr1765843pje.18.1590761483912; Fri, 29 May 2020 07:11:23 -0700 (PDT) Received: from localhost.localdomain ([103.136.221.67]) by smtp.gmail.com with ESMTPSA id o25sm7048777pgn.84.2020.05.29.07.11.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 May 2020 07:11:23 -0700 (PDT) From: Kaitao Cheng To: axboe@kernel.dk, hch@lst.de, sth@linux.ibm.com, viro@zeniv.linux.org.uk, clm@fb.com, jaegeuk@kernel.org, hch@infradead.org, mark@fasheh.com, dhowells@redhat.com, balbi@kernel.org Date: Fri, 29 May 2020 22:11:00 +0800 Message-Id: <20200529141100.37519-1-pilgrimtao@gmail.com> X-Mailer: git-send-email 2.21.0 (Apple Git-122) MIME-Version: 1.0 X-PDR: PASS X-Source-IP: 209.85.214.194 X-ServerName: mail-pl1-f194.google.com X-Proofpoint-SPF-Result: pass X-Proofpoint-SPF-Record: v=spf1 redirect=_spf.google.com X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9635 signatures=668686 X-Proofpoint-Spam-Details: rule=tap_notspam policy=tap score=0 cotscore=-2147483648 bulkscore=0 adultscore=0 mlxlogscore=975 clxscore=244 suspectscore=0 mlxscore=0 phishscore=0 priorityscore=332 impostorscore=0 lowpriorityscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2005290110 X-Spam: Clean X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxscore=0 adultscore=0 mlxlogscore=999 malwarescore=0 spamscore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2005290112 X-Mailman-Approved-At: Fri, 29 May 2020 09:24:17 -0700 Cc: hoeppner@linux.ibm.com, heiko.carstens@de.ibm.com, linux-nvme@lists.infradead.org, deepa.kernel@gmail.com, houtao1@huawei.com, Kaitao Cheng , linux-s390@vger.kernel.org, bvanassche@acm.org, chaitanya.kulkarni@wdc.com, satyat@google.com, borntraeger@de.ibm.com, ajay.joshi@wdc.com, gor@linux.ibm.com, chao@kernel.org, josef@toxicpanda.com, ming.lei@redhat.com, songmuchun@bytedance.com, dsterba@suse.com, sagi@grimberg.me, damien.lemoal@wdc.com, gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-xfs@vger.kernel.org, ocfs2-devel@oss.oracle.com, linux-fsdevel@vger.kernel.org, asml.silence@gmail.com, linux-btrfs@vger.kernel.org Subject: [Ocfs2-devel] [PATCH v2] blkdev: Replace blksize_bits() with ilog2() X-BeenThere: ocfs2-devel@oss.oracle.com X-Mailman-Version: 2.1.9 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ocfs2-devel-bounces@oss.oracle.com Errors-To: ocfs2-devel-bounces@oss.oracle.com X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9636 signatures=668686 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 malwarescore=0 mlxlogscore=999 adultscore=0 suspectscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2005290124 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9636 signatures=668686 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 spamscore=0 mlxscore=0 lowpriorityscore=0 priorityscore=1501 phishscore=0 cotscore=-2147483648 suspectscore=0 bulkscore=0 clxscore=1034 impostorscore=0 malwarescore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2005290124 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. Signed-off-by: Kaitao Cheng --- changes in v2: Remove all blksize_bits drivers/nvme/target/io-cmd-bdev.c | 2 +- drivers/s390/block/dasd_ioctl.c | 2 +- drivers/usb/gadget/function/storage_common.c | 2 +- fs/block_dev.c | 6 +++--- fs/btrfs/disk-io.c | 4 ++-- fs/buffer.c | 2 +- fs/direct-io.c | 2 +- fs/f2fs/data.c | 2 +- fs/iomap/direct-io.c | 2 +- fs/ocfs2/super.c | 2 +- fs/romfs/super.c | 2 +- include/linux/blkdev.h | 11 ----------- 12 files changed, 14 insertions(+), 25 deletions(-) diff --git a/drivers/nvme/target/io-cmd-bdev.c b/drivers/nvme/target/io-cmd-bdev.c index bcf979eb8e83..58bd947e232e 100644 --- a/drivers/nvme/target/io-cmd-bdev.c +++ b/drivers/nvme/target/io-cmd-bdev.c @@ -63,7 +63,7 @@ int nvmet_bdev_ns_enable(struct nvmet_ns *ns) return ret; } ns->size = i_size_read(ns->bdev->bd_inode); - ns->blksize_shift = blksize_bits(bdev_logical_block_size(ns->bdev)); + ns->blksize_shift = ilog2(bdev_logical_block_size(ns->bdev)); return 0; } diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c index 777734d1b4e5..55adb134451b 100644 --- a/drivers/s390/block/dasd_ioctl.c +++ b/drivers/s390/block/dasd_ioctl.c @@ -228,7 +228,7 @@ dasd_format(struct dasd_block *block, struct format_data_t *fdata) */ if (fdata->start_unit == 0) { struct block_device *bdev = bdget_disk(block->gdp, 0); - bdev->bd_inode->i_blkbits = blksize_bits(fdata->blksize); + bdev->bd_inode->i_blkbits = ilog2(fdata->blksize); bdput(bdev); } diff --git a/drivers/usb/gadget/function/storage_common.c b/drivers/usb/gadget/function/storage_common.c index f7e6c42558eb..eada3e801dd7 100644 --- a/drivers/usb/gadget/function/storage_common.c +++ b/drivers/usb/gadget/function/storage_common.c @@ -233,7 +233,7 @@ int fsg_lun_open(struct fsg_lun *curlun, const char *filename) blkbits = 11; } else if (inode->i_bdev) { blksize = bdev_logical_block_size(inode->i_bdev); - blkbits = blksize_bits(blksize); + blkbits = ilog2(blksize); } else { blksize = 512; blkbits = 9; diff --git a/fs/block_dev.c b/fs/block_dev.c index a333a648244e..d18496dfc6e7 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -115,7 +115,7 @@ static void set_init_blocksize(struct block_device *bdev) bsize <<= 1; } bdev->bd_block_size = bsize; - bdev->bd_inode->i_blkbits = blksize_bits(bsize); + bdev->bd_inode->i_blkbits = ilog2(bsize); } int set_blocksize(struct block_device *bdev, int size) @@ -132,7 +132,7 @@ int set_blocksize(struct block_device *bdev, int size) if (bdev->bd_block_size != size) { sync_blockdev(bdev); bdev->bd_block_size = size; - bdev->bd_inode->i_blkbits = blksize_bits(size); + bdev->bd_inode->i_blkbits = ilog2(size); kill_bdev(bdev); } return 0; @@ -147,7 +147,7 @@ int sb_set_blocksize(struct super_block *sb, int size) /* If we get here, we know size is power of two * and it's value is between 512 and PAGE_SIZE */ sb->s_blocksize = size; - sb->s_blocksize_bits = blksize_bits(size); + sb->s_blocksize_bits = ilog2(size); return sb->s_blocksize; } diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 7c6f0bbb54a5..711b9fc31c94 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -2765,7 +2765,7 @@ static int init_mount_fs_info(struct btrfs_fs_info *fs_info, struct super_block fs_info->sb = sb; sb->s_blocksize = BTRFS_BDEV_BLOCKSIZE; - sb->s_blocksize_bits = blksize_bits(BTRFS_BDEV_BLOCKSIZE); + sb->s_blocksize_bits = ilog2(BTRFS_BDEV_BLOCKSIZE); ret = percpu_counter_init(&fs_info->dio_bytes, 0, GFP_KERNEL); if (ret) @@ -3059,7 +3059,7 @@ int __cold open_ctree(struct super_block *sb, struct btrfs_fs_devices *fs_device sb->s_bdi->ra_pages = max(sb->s_bdi->ra_pages, SZ_4M / PAGE_SIZE); sb->s_blocksize = sectorsize; - sb->s_blocksize_bits = blksize_bits(sectorsize); + sb->s_blocksize_bits = ilog2(sectorsize); memcpy(&sb->s_uuid, fs_info->fs_devices->fsid, BTRFS_FSID_SIZE); mutex_lock(&fs_info->chunk_mutex); diff --git a/fs/buffer.c b/fs/buffer.c index fc8831c392d7..fa92e0afe349 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -907,7 +907,7 @@ static sector_t blkdev_max_block(struct block_device *bdev, unsigned int size) loff_t sz = i_size_read(bdev->bd_inode); if (sz) { - unsigned int sizebits = blksize_bits(size); + unsigned int sizebits = ilog2(size); retval = (sz >> sizebits); } return retval; diff --git a/fs/direct-io.c b/fs/direct-io.c index 1543b5af400e..7ea2cd3effcc 100644 --- a/fs/direct-io.c +++ b/fs/direct-io.c @@ -1148,7 +1148,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, if (align & blocksize_mask) { if (bdev) - blkbits = blksize_bits(bdev_logical_block_size(bdev)); + blkbits = ilog2(bdev_logical_block_size(bdev)); blocksize_mask = (1 << blkbits) - 1; if (align & blocksize_mask) goto out; diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index cb05f71cf850..b896da27942a 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -3458,7 +3458,7 @@ static int check_direct_IO(struct inode *inode, struct iov_iter *iter, if (align & blocksize_mask) { if (bdev) - blkbits = blksize_bits(bdev_logical_block_size(bdev)); + blkbits = ilog2(bdev_logical_block_size(bdev)); blocksize_mask = (1 << blkbits) - 1; if (align & blocksize_mask) return -EINVAL; diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c index ec7b78e6feca..2a807657d544 100644 --- a/fs/iomap/direct-io.c +++ b/fs/iomap/direct-io.c @@ -203,7 +203,7 @@ static loff_t iomap_dio_bio_actor(struct inode *inode, loff_t pos, loff_t length, struct iomap_dio *dio, struct iomap *iomap) { - unsigned int blkbits = blksize_bits(bdev_logical_block_size(iomap->bdev)); + unsigned int blkbits = ilog2(bdev_logical_block_size(iomap->bdev)); unsigned int fs_block_size = i_blocksize(inode), pad; unsigned int align = iov_iter_alignment(dio->submit.iter); struct bio *bio; diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 71ea9ce71a6b..9b5622881d34 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c @@ -2054,7 +2054,7 @@ static int ocfs2_initialize_super(struct super_block *sb, osb->osb_dx_seed[3] = le32_to_cpu(di->id2.i_super.s_uuid_hash); osb->sb = sb; - osb->s_sectsize_bits = blksize_bits(sector_size); + osb->s_sectsize_bits = ilog2(sector_size); BUG_ON(!osb->s_sectsize_bits); spin_lock_init(&osb->dc_task_lock); diff --git a/fs/romfs/super.c b/fs/romfs/super.c index e582d001f792..4f6963570739 100644 --- a/fs/romfs/super.c +++ b/fs/romfs/super.c @@ -470,7 +470,7 @@ static int romfs_fill_super(struct super_block *sb, struct fs_context *fc) sb_set_blocksize(sb, ROMBSIZE); } else { sb->s_blocksize = ROMBSIZE; - sb->s_blocksize_bits = blksize_bits(ROMBSIZE); + sb->s_blocksize_bits = ilog2(ROMBSIZE); } #endif diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 7d10f4e63232..16038b609c14 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1502,17 +1502,6 @@ 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; -} - static inline unsigned int block_size(struct block_device *bdev) { return bdev->bd_block_size;