CC: [email protected] In-Reply-To: <426fd12a24d7876e445aea3f14a6e09c2eba8fe3.1643642105.git.rite...@linux.ibm.com> References: <426fd12a24d7876e445aea3f14a6e09c2eba8fe3.1643642105.git.rite...@linux.ibm.com> TO: Ritesh Harjani <[email protected]>
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/[email protected]/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 <[email protected]> Reported-by: Dan Carpenter <[email protected]> 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/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
