From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: Re: [RFC 5/6] ext4: Refactor ext4_free_blocks() to pull out ext4_mb_clear_bb()
Date: Tue, 01 Feb 2022 21:46:13 +0800 [thread overview]
Message-ID: <202202012149.imqMREPx-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 18619 bytes --]
CC: kbuild-all(a)lists.01.org
In-Reply-To: <426fd12a24d7876e445aea3f14a6e09c2eba8fe3.1643642105.git.riteshh@linux.ibm.com>
References: <426fd12a24d7876e445aea3f14a6e09c2eba8fe3.1643642105.git.riteshh@linux.ibm.com>
TO: Ritesh Harjani <riteshh@linux.ibm.com>
Hi Ritesh,
[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on tytso-ext4/dev]
[also build test WARNING on linus/master v5.17-rc2 next-20220131]
[cannot apply to tytso-fscrypt/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Ritesh-Harjani/ext4-Fixes-ext4_mb_mark_bb-with-flex_bg-with-fast_commit/20220201-001713
base: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
:::::: branch date: 21 hours ago
:::::: commit date: 21 hours ago
config: i386-randconfig-m021-20220131 (https://download.01.org/0day-ci/archive/20220201/202202012149.imqMREPx-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
fs/ext4/mballoc.c:6033 ext4_mb_clear_bb() warn: should 'count_clusters << sbi->s_cluster_bits' be a 64 bit type?
Old smatch warnings:
fs/ext4/mballoc.c:1820 mb_free_blocks() warn: should 'block << sbi->s_cluster_bits' be a 64 bit type?
fs/ext4/mballoc.c:5420 ext4_mb_release_context() warn: should '(ac->ac_b_ex.fe_len) << sbi->s_cluster_bits' be a 64 bit type?
fs/ext4/mballoc.c:5565 ext4_mb_new_blocks() warn: should '(ar->len) << sbi->s_cluster_bits' be a 64 bit type?
fs/ext4/mballoc.c:5569 ext4_mb_new_blocks() warn: should '(ar->len) << sbi->s_cluster_bits' be a 64 bit type?
fs/ext4/mballoc.c:5569 ext4_mb_new_blocks() warn: should '(ar->len) << sbi->s_cluster_bits' be a 64 bit type?
fs/ext4/mballoc.c:5654 ext4_mb_new_blocks() warn: should '(inquota - ar->len) << sbi->s_cluster_bits' be a 64 bit type?
vim +6033 fs/ext4/mballoc.c
8016e29f4362e2 Harshad Shirwadkar 2020-10-15 5871
4433871130f365 Theodore Ts'o 2009-11-22 5872 /**
46785ca2322cbe Ritesh Harjani 2022-01-31 5873 * ext4_mb_clear_bb() -- helper function for freeing blocks.
46785ca2322cbe Ritesh Harjani 2022-01-31 5874 * Used by ext4_free_blocks()
4433871130f365 Theodore Ts'o 2009-11-22 5875 * @handle: handle for this transaction
4433871130f365 Theodore Ts'o 2009-11-22 5876 * @inode: inode
c60990b361cc0a Theodore Ts'o 2019-06-19 5877 * @bh: optional buffer of the block to be freed
c60990b361cc0a Theodore Ts'o 2019-06-19 5878 * @block: starting physical block to be freed
c60990b361cc0a Theodore Ts'o 2019-06-19 5879 * @count: number of blocks to be freed
5def1360252b97 Yongqiang Yang 2011-06-05 5880 * @flags: flags used by ext4_free_blocks
c9de560ded61fa Alex Tomas 2008-01-29 5881 */
46785ca2322cbe Ritesh Harjani 2022-01-31 5882 static void ext4_mb_clear_bb(handle_t *handle, struct inode *inode,
46785ca2322cbe Ritesh Harjani 2022-01-31 5883 ext4_fsblk_t block, unsigned long count,
46785ca2322cbe Ritesh Harjani 2022-01-31 5884 int flags)
c9de560ded61fa Alex Tomas 2008-01-29 5885 {
26346ff681cb42 Aneesh Kumar K.V 2008-02-10 5886 struct buffer_head *bitmap_bh = NULL;
c9de560ded61fa Alex Tomas 2008-01-29 5887 struct super_block *sb = inode->i_sb;
c9de560ded61fa Alex Tomas 2008-01-29 5888 struct ext4_group_desc *gdp;
498e5f24158da7 Theodore Ts'o 2008-11-05 5889 unsigned int overflow;
c9de560ded61fa Alex Tomas 2008-01-29 5890 ext4_grpblk_t bit;
c9de560ded61fa Alex Tomas 2008-01-29 5891 struct buffer_head *gd_bh;
c9de560ded61fa Alex Tomas 2008-01-29 5892 ext4_group_t block_group;
c9de560ded61fa Alex Tomas 2008-01-29 5893 struct ext4_sb_info *sbi;
c9de560ded61fa Alex Tomas 2008-01-29 5894 struct ext4_buddy e4b;
84130193e0e656 Theodore Ts'o 2011-09-09 5895 unsigned int count_clusters;
c9de560ded61fa Alex Tomas 2008-01-29 5896 int err = 0;
c9de560ded61fa Alex Tomas 2008-01-29 5897 int ret;
c9de560ded61fa Alex Tomas 2008-01-29 5898
8016e29f4362e2 Harshad Shirwadkar 2020-10-15 5899 sbi = EXT4_SB(sb);
8016e29f4362e2 Harshad Shirwadkar 2020-10-15 5900
c9de560ded61fa Alex Tomas 2008-01-29 5901 do_more:
c9de560ded61fa Alex Tomas 2008-01-29 5902 overflow = 0;
c9de560ded61fa Alex Tomas 2008-01-29 5903 ext4_get_group_no_and_offset(sb, block, &block_group, &bit);
c9de560ded61fa Alex Tomas 2008-01-29 5904
163a203ddb36c3 Darrick J. Wong 2013-08-28 5905 if (unlikely(EXT4_MB_GRP_BBITMAP_CORRUPT(
163a203ddb36c3 Darrick J. Wong 2013-08-28 5906 ext4_get_group_info(sb, block_group))))
163a203ddb36c3 Darrick J. Wong 2013-08-28 5907 return;
163a203ddb36c3 Darrick J. Wong 2013-08-28 5908
c9de560ded61fa Alex Tomas 2008-01-29 5909 /*
c9de560ded61fa Alex Tomas 2008-01-29 5910 * Check to see if we are freeing blocks across a group
c9de560ded61fa Alex Tomas 2008-01-29 5911 * boundary.
c9de560ded61fa Alex Tomas 2008-01-29 5912 */
84130193e0e656 Theodore Ts'o 2011-09-09 5913 if (EXT4_C2B(sbi, bit) + count > EXT4_BLOCKS_PER_GROUP(sb)) {
84130193e0e656 Theodore Ts'o 2011-09-09 5914 overflow = EXT4_C2B(sbi, bit) + count -
84130193e0e656 Theodore Ts'o 2011-09-09 5915 EXT4_BLOCKS_PER_GROUP(sb);
c9de560ded61fa Alex Tomas 2008-01-29 5916 count -= overflow;
c9de560ded61fa Alex Tomas 2008-01-29 5917 }
810da240f221d6 Lukas Czerner 2013-03-02 5918 count_clusters = EXT4_NUM_B2C(sbi, count);
574ca174c97f79 Theodore Ts'o 2008-07-11 5919 bitmap_bh = ext4_read_block_bitmap(sb, block_group);
9008a58e5dcee0 Darrick J. Wong 2015-10-17 5920 if (IS_ERR(bitmap_bh)) {
9008a58e5dcee0 Darrick J. Wong 2015-10-17 5921 err = PTR_ERR(bitmap_bh);
9008a58e5dcee0 Darrick J. Wong 2015-10-17 5922 bitmap_bh = NULL;
c9de560ded61fa Alex Tomas 2008-01-29 5923 goto error_return;
ce89f46cb833f8 Aneesh Kumar K.V 2008-07-23 5924 }
c9de560ded61fa Alex Tomas 2008-01-29 5925 gdp = ext4_get_group_desc(sb, block_group, &gd_bh);
ce89f46cb833f8 Aneesh Kumar K.V 2008-07-23 5926 if (!gdp) {
ce89f46cb833f8 Aneesh Kumar K.V 2008-07-23 5927 err = -EIO;
c9de560ded61fa Alex Tomas 2008-01-29 5928 goto error_return;
ce89f46cb833f8 Aneesh Kumar K.V 2008-07-23 5929 }
c9de560ded61fa Alex Tomas 2008-01-29 5930
dabd76de38a67b Ritesh Harjani 2022-01-31 5931 if (!ext4_group_block_valid(sb, block_group, block, count)) {
12062dddda4509 Eric Sandeen 2010-02-15 5932 ext4_error(sb, "Freeing blocks in system zone - "
0610b6e9993982 Theodore Ts'o 2009-06-15 5933 "Block = %llu, count = %lu", block, count);
519deca0496a4d Aneesh Kumar K.V 2008-05-15 5934 /* err = 0. ext4_std_error should be a no op */
519deca0496a4d Aneesh Kumar K.V 2008-05-15 5935 goto error_return;
c9de560ded61fa Alex Tomas 2008-01-29 5936 }
c9de560ded61fa Alex Tomas 2008-01-29 5937
c9de560ded61fa Alex Tomas 2008-01-29 5938 BUFFER_TRACE(bitmap_bh, "getting write access");
188c299e2a26cc Jan Kara 2021-08-16 5939 err = ext4_journal_get_write_access(handle, sb, bitmap_bh,
188c299e2a26cc Jan Kara 2021-08-16 5940 EXT4_JTR_NONE);
c9de560ded61fa Alex Tomas 2008-01-29 5941 if (err)
c9de560ded61fa Alex Tomas 2008-01-29 5942 goto error_return;
c9de560ded61fa Alex Tomas 2008-01-29 5943
c9de560ded61fa Alex Tomas 2008-01-29 5944 /*
c9de560ded61fa Alex Tomas 2008-01-29 5945 * We are about to modify some metadata. Call the journal APIs
c9de560ded61fa Alex Tomas 2008-01-29 5946 * to unshare ->b_data if a currently-committing transaction is
c9de560ded61fa Alex Tomas 2008-01-29 5947 * using it
c9de560ded61fa Alex Tomas 2008-01-29 5948 */
c9de560ded61fa Alex Tomas 2008-01-29 5949 BUFFER_TRACE(gd_bh, "get_write_access");
188c299e2a26cc Jan Kara 2021-08-16 5950 err = ext4_journal_get_write_access(handle, sb, gd_bh, EXT4_JTR_NONE);
c9de560ded61fa Alex Tomas 2008-01-29 5951 if (err)
c9de560ded61fa Alex Tomas 2008-01-29 5952 goto error_return;
c9de560ded61fa Alex Tomas 2008-01-29 5953 #ifdef AGGRESSIVE_CHECK
c9de560ded61fa Alex Tomas 2008-01-29 5954 {
c9de560ded61fa Alex Tomas 2008-01-29 5955 int i;
84130193e0e656 Theodore Ts'o 2011-09-09 5956 for (i = 0; i < count_clusters; i++)
c9de560ded61fa Alex Tomas 2008-01-29 5957 BUG_ON(!mb_test_bit(bit + i, bitmap_bh->b_data));
c9de560ded61fa Alex Tomas 2008-01-29 5958 }
c9de560ded61fa Alex Tomas 2008-01-29 5959 #endif
84130193e0e656 Theodore Ts'o 2011-09-09 5960 trace_ext4_mballoc_free(sb, inode, block_group, bit, count_clusters);
c9de560ded61fa Alex Tomas 2008-01-29 5961
adb7ef600cc9d9 Konstantin Khlebnikov 2016-03-13 5962 /* __GFP_NOFAIL: retry infinitely, ignore TIF_MEMDIE and memcg limit. */
adb7ef600cc9d9 Konstantin Khlebnikov 2016-03-13 5963 err = ext4_mb_load_buddy_gfp(sb, block_group, &e4b,
adb7ef600cc9d9 Konstantin Khlebnikov 2016-03-13 5964 GFP_NOFS|__GFP_NOFAIL);
920313a726e04f Aneesh Kumar K.V 2009-01-05 5965 if (err)
920313a726e04f Aneesh Kumar K.V 2009-01-05 5966 goto error_return;
e6362609b6c71c Theodore Ts'o 2009-11-23 5967
f96c450dabf549 Daeho Jeong 2016-02-21 5968 /*
f96c450dabf549 Daeho Jeong 2016-02-21 5969 * We need to make sure we don't reuse the freed block until after the
f96c450dabf549 Daeho Jeong 2016-02-21 5970 * transaction is committed. We make an exception if the inode is to be
f96c450dabf549 Daeho Jeong 2016-02-21 5971 * written in writeback mode since writeback mode has weak data
f96c450dabf549 Daeho Jeong 2016-02-21 5972 * consistency guarantees.
f96c450dabf549 Daeho Jeong 2016-02-21 5973 */
f96c450dabf549 Daeho Jeong 2016-02-21 5974 if (ext4_handle_valid(handle) &&
f96c450dabf549 Daeho Jeong 2016-02-21 5975 ((flags & EXT4_FREE_BLOCKS_METADATA) ||
f96c450dabf549 Daeho Jeong 2016-02-21 5976 !ext4_should_writeback_data(inode))) {
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 5977 struct ext4_free_data *new_entry;
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 5978 /*
7444a072c387a9 Michal Hocko 2015-07-05 5979 * We use __GFP_NOFAIL because ext4_free_blocks() is not allowed
7444a072c387a9 Michal Hocko 2015-07-05 5980 * to fail.
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 5981 */
7444a072c387a9 Michal Hocko 2015-07-05 5982 new_entry = kmem_cache_alloc(ext4_free_data_cachep,
7444a072c387a9 Michal Hocko 2015-07-05 5983 GFP_NOFS|__GFP_NOFAIL);
18aadd47f88464 Bobi Jam 2012-02-20 5984 new_entry->efd_start_cluster = bit;
18aadd47f88464 Bobi Jam 2012-02-20 5985 new_entry->efd_group = block_group;
18aadd47f88464 Bobi Jam 2012-02-20 5986 new_entry->efd_count = count_clusters;
18aadd47f88464 Bobi Jam 2012-02-20 5987 new_entry->efd_tid = handle->h_transaction->t_tid;
955ce5f5be67df Aneesh Kumar K.V 2009-05-02 5988
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 5989 ext4_lock_group(sb, block_group);
84130193e0e656 Theodore Ts'o 2011-09-09 5990 mb_clear_bits(bitmap_bh->b_data, bit, count_clusters);
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 5991 ext4_mb_free_metadata(handle, &e4b, new_entry);
c9de560ded61fa Alex Tomas 2008-01-29 5992 } else {
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 5993 /* need to update group_info->bb_free and bitmap
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 5994 * with group lock held. generate_buddy look at
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 5995 * them with group lock_held
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 5996 */
d71c1ae23aa3e7 Lukas Czerner 2012-11-08 5997 if (test_opt(sb, DISCARD)) {
a015434480dcdb Daeho Jeong 2017-06-22 5998 err = ext4_issue_discard(sb, block_group, bit, count,
a015434480dcdb Daeho Jeong 2017-06-22 5999 NULL);
d71c1ae23aa3e7 Lukas Czerner 2012-11-08 6000 if (err && err != -EOPNOTSUPP)
d71c1ae23aa3e7 Lukas Czerner 2012-11-08 6001 ext4_msg(sb, KERN_WARNING, "discard request in"
dabd76de38a67b Ritesh Harjani 2022-01-31 6002 " group:%u block:%d count:%lu failed"
d71c1ae23aa3e7 Lukas Czerner 2012-11-08 6003 " with %d", block_group, bit, count,
d71c1ae23aa3e7 Lukas Czerner 2012-11-08 6004 err);
8f9ff189205a68 Lukas Czerner 2013-10-30 6005 } else
8f9ff189205a68 Lukas Czerner 2013-10-30 6006 EXT4_MB_GRP_CLEAR_TRIMMED(e4b.bd_info);
d71c1ae23aa3e7 Lukas Czerner 2012-11-08 6007
955ce5f5be67df Aneesh Kumar K.V 2009-05-02 6008 ext4_lock_group(sb, block_group);
84130193e0e656 Theodore Ts'o 2011-09-09 6009 mb_clear_bits(bitmap_bh->b_data, bit, count_clusters);
84130193e0e656 Theodore Ts'o 2011-09-09 6010 mb_free_blocks(inode, &e4b, bit, count_clusters);
c9de560ded61fa Alex Tomas 2008-01-29 6011 }
c9de560ded61fa Alex Tomas 2008-01-29 6012
021b65bb1e4e4b Theodore Ts'o 2011-09-09 6013 ret = ext4_free_group_clusters(sb, gdp) + count_clusters;
021b65bb1e4e4b Theodore Ts'o 2011-09-09 6014 ext4_free_group_clusters_set(sb, gdp, ret);
79f1ba49569e5a Tao Ma 2012-10-22 6015 ext4_block_bitmap_csum_set(sb, block_group, gdp, bitmap_bh);
feb0ab32a57e4e Darrick J. Wong 2012-04-29 6016 ext4_group_desc_csum_set(sb, block_group, gdp);
955ce5f5be67df Aneesh Kumar K.V 2009-05-02 6017 ext4_unlock_group(sb, block_group);
c9de560ded61fa Alex Tomas 2008-01-29 6018
772cb7c83ba256 Jose R. Santos 2008-07-11 6019 if (sbi->s_log_groups_per_flex) {
772cb7c83ba256 Jose R. Santos 2008-07-11 6020 ext4_group_t flex_group = ext4_flex_group(sbi, block_group);
90ba983f6889e6 Theodore Ts'o 2013-03-11 6021 atomic64_add(count_clusters,
7c990728b99ed6 Suraj Jitindar Singh 2020-02-18 6022 &sbi_array_rcu_deref(sbi, s_flex_groups,
7c990728b99ed6 Suraj Jitindar Singh 2020-02-18 6023 flex_group)->free_clusters);
772cb7c83ba256 Jose R. Santos 2008-07-11 6024 }
772cb7c83ba256 Jose R. Santos 2008-07-11 6025
9fe671496b6c28 Eric Whitney 2018-10-01 6026 /*
9fe671496b6c28 Eric Whitney 2018-10-01 6027 * on a bigalloc file system, defer the s_freeclusters_counter
9fe671496b6c28 Eric Whitney 2018-10-01 6028 * update to the caller (ext4_remove_space and friends) so they
9fe671496b6c28 Eric Whitney 2018-10-01 6029 * can determine if a cluster freed here should be rereserved
9fe671496b6c28 Eric Whitney 2018-10-01 6030 */
9fe671496b6c28 Eric Whitney 2018-10-01 6031 if (!(flags & EXT4_FREE_BLOCKS_RERESERVE_CLUSTER)) {
7b415bf60f6afb Aditya Kali 2011-09-09 6032 if (!(flags & EXT4_FREE_BLOCKS_NO_QUOT_UPDATE))
7b415bf60f6afb Aditya Kali 2011-09-09 @6033 dquot_free_block(inode, EXT4_C2B(sbi, count_clusters));
9fe671496b6c28 Eric Whitney 2018-10-01 6034 percpu_counter_add(&sbi->s_freeclusters_counter,
9fe671496b6c28 Eric Whitney 2018-10-01 6035 count_clusters);
9fe671496b6c28 Eric Whitney 2018-10-01 6036 }
7d7345322d60ed Jan Kara 2013-08-17 6037
7d7345322d60ed Jan Kara 2013-08-17 6038 ext4_mb_unload_buddy(&e4b);
7b415bf60f6afb Aditya Kali 2011-09-09 6039
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 6040 /* We dirtied the bitmap block */
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 6041 BUFFER_TRACE(bitmap_bh, "dirtied bitmap block");
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 6042 err = ext4_handle_dirty_metadata(handle, NULL, bitmap_bh);
7a2fcbf7f85737 Aneesh Kumar K.V 2009-01-05 6043
c9de560ded61fa Alex Tomas 2008-01-29 6044 /* And the group descriptor block */
c9de560ded61fa Alex Tomas 2008-01-29 6045 BUFFER_TRACE(gd_bh, "dirtied group descriptor block");
0390131ba84fd3 Frank Mayhar 2009-01-07 6046 ret = ext4_handle_dirty_metadata(handle, NULL, gd_bh);
c9de560ded61fa Alex Tomas 2008-01-29 6047 if (!err)
c9de560ded61fa Alex Tomas 2008-01-29 6048 err = ret;
c9de560ded61fa Alex Tomas 2008-01-29 6049
c9de560ded61fa Alex Tomas 2008-01-29 6050 if (overflow && !err) {
c9de560ded61fa Alex Tomas 2008-01-29 6051 block += count;
c9de560ded61fa Alex Tomas 2008-01-29 6052 count = overflow;
c9de560ded61fa Alex Tomas 2008-01-29 6053 put_bh(bitmap_bh);
c9de560ded61fa Alex Tomas 2008-01-29 6054 goto do_more;
c9de560ded61fa Alex Tomas 2008-01-29 6055 }
c9de560ded61fa Alex Tomas 2008-01-29 6056 error_return:
c9de560ded61fa Alex Tomas 2008-01-29 6057 brelse(bitmap_bh);
c9de560ded61fa Alex Tomas 2008-01-29 6058 ext4_std_error(sb, err);
c9de560ded61fa Alex Tomas 2008-01-29 6059 return;
c9de560ded61fa Alex Tomas 2008-01-29 6060 }
7360d1731e5dc7 Lukas Czerner 2010-10-27 6061
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next reply other threads:[~2022-02-01 13:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-01 13:46 kernel test robot [this message]
[not found] <cover.1643642105.git.riteshh@linux.ibm.com>
2022-01-31 15:16 ` [RFC 5/6] ext4: Refactor ext4_free_blocks() to pull out ext4_mb_clear_bb() Ritesh Harjani
2022-02-01 11:40 ` Jan Kara
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202202012149.imqMREPx-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.