All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Ye Bin <yebin10@huawei.com>,
	tytso@mit.edu, adilger.kernel@dilger.ca,
	linux-ext4@vger.kernel.org
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
	linux-kernel@vger.kernel.org, jack@suse.cz,
	Ye Bin <yebin10@huawei.com>
Subject: Re: [PATCH -next v3 4/5] ext4: simplify read_mmp_block fucntion
Date: Tue, 19 Oct 2021 21:13:24 +0800	[thread overview]
Message-ID: <202110192158.EFL4dYTY-lkp@intel.com> (raw)
In-Reply-To: <20211019064959.625557-5-yebin10@huawei.com>

[-- Attachment #1: Type: text/plain, Size: 11822 bytes --]

Hi Ye,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on next-20211018]

url:    https://github.com/0day-ci/linux/commits/Ye-Bin/Fix-some-issues-about-mmp/20211019-143859
base:    60e8840126bdcb60bccef74c3f962742183c681f
config: i386-randconfig-a001-20211019 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b37efed957ed0a0193d80020aefd55cb587dfc1f)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/0f118633b71dacebbf7b01cd9ce4a2ed5d3aad0e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Ye-Bin/Fix-some-issues-about-mmp/20211019-143859
        git checkout 0f118633b71dacebbf7b01cd9ce4a2ed5d3aad0e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> fs/ext4/mmp.c:124:15: warning: variable 'mmp_block' set but not used [-Wunused-but-set-variable]
           ext4_fsblk_t mmp_block;
                        ^
   1 warning generated.


vim +/mmp_block +124 fs/ext4/mmp.c

c5e06d101aaf72 Johann Lombardi   2011-05-24  114  
c5e06d101aaf72 Johann Lombardi   2011-05-24  115  /*
c5e06d101aaf72 Johann Lombardi   2011-05-24  116   * kmmpd will update the MMP sequence every s_mmp_update_interval seconds
c5e06d101aaf72 Johann Lombardi   2011-05-24  117   */
c5e06d101aaf72 Johann Lombardi   2011-05-24  118  static int kmmpd(void *data)
c5e06d101aaf72 Johann Lombardi   2011-05-24  119  {
618f003199c618 Pavel Skripkin    2021-04-30  120  	struct super_block *sb = (struct super_block *) data;
c5e06d101aaf72 Johann Lombardi   2011-05-24  121  	struct ext4_super_block *es = EXT4_SB(sb)->s_es;
618f003199c618 Pavel Skripkin    2021-04-30  122  	struct buffer_head *bh = EXT4_SB(sb)->s_mmp_bh;
c5e06d101aaf72 Johann Lombardi   2011-05-24  123  	struct mmp_struct *mmp;
c5e06d101aaf72 Johann Lombardi   2011-05-24 @124  	ext4_fsblk_t mmp_block;
2b19579c262011 Ye Bin            2021-10-19  125  	u32 seq;
c5e06d101aaf72 Johann Lombardi   2011-05-24  126  	unsigned long failed_writes = 0;
c5e06d101aaf72 Johann Lombardi   2011-05-24  127  	int mmp_update_interval = le16_to_cpu(es->s_mmp_update_interval);
c5e06d101aaf72 Johann Lombardi   2011-05-24  128  	unsigned mmp_check_interval;
c5e06d101aaf72 Johann Lombardi   2011-05-24  129  	unsigned long last_update_time;
c5e06d101aaf72 Johann Lombardi   2011-05-24  130  	unsigned long diff;
70bae8f45abfe9 Ye Bin            2021-10-19  131  	char nodename[EXT4_MMP_NODENAME_LEN];
b66541422824cf Ye Bin            2021-07-13  132  	int retval = 0;
c5e06d101aaf72 Johann Lombardi   2011-05-24  133  
c5e06d101aaf72 Johann Lombardi   2011-05-24  134  	mmp_block = le64_to_cpu(es->s_mmp_block);
c5e06d101aaf72 Johann Lombardi   2011-05-24  135  	mmp = (struct mmp_struct *)(bh->b_data);
af123b3718592a Arnd Bergmann     2018-07-29  136  	mmp->mmp_time = cpu_to_le64(ktime_get_real_seconds());
2b19579c262011 Ye Bin            2021-10-19  137  	seq = le32_to_cpu(mmp->mmp_seq);
c5e06d101aaf72 Johann Lombardi   2011-05-24  138  	/*
c5e06d101aaf72 Johann Lombardi   2011-05-24  139  	 * Start with the higher mmp_check_interval and reduce it if
c5e06d101aaf72 Johann Lombardi   2011-05-24  140  	 * the MMP block is being updated on time.
c5e06d101aaf72 Johann Lombardi   2011-05-24  141  	 */
c5e06d101aaf72 Johann Lombardi   2011-05-24  142  	mmp_check_interval = max(EXT4_MMP_CHECK_MULT * mmp_update_interval,
c5e06d101aaf72 Johann Lombardi   2011-05-24  143  				 EXT4_MMP_MIN_CHECK_INTERVAL);
c5e06d101aaf72 Johann Lombardi   2011-05-24  144  	mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval);
14c9ca0583eee8 Andreas Dilger    2020-01-26  145  	BUILD_BUG_ON(sizeof(mmp->mmp_bdevname) < BDEVNAME_SIZE);
c5e06d101aaf72 Johann Lombardi   2011-05-24  146  	bdevname(bh->b_bdev, mmp->mmp_bdevname);
c5e06d101aaf72 Johann Lombardi   2011-05-24  147  
70bae8f45abfe9 Ye Bin            2021-10-19  148  	memcpy(nodename, init_utsname()->nodename, sizeof(nodename));
70bae8f45abfe9 Ye Bin            2021-10-19  149  	memcpy(mmp->mmp_nodename, nodename, sizeof(mmp->mmp_nodename));
c5e06d101aaf72 Johann Lombardi   2011-05-24  150  
61bb4a1c417e5b Theodore Ts'o     2021-07-02  151  	while (!kthread_should_stop() && !sb_rdonly(sb)) {
61bb4a1c417e5b Theodore Ts'o     2021-07-02  152  		if (!ext4_has_feature_mmp(sb)) {
61bb4a1c417e5b Theodore Ts'o     2021-07-02  153  			ext4_warning(sb, "kmmpd being stopped since MMP feature"
61bb4a1c417e5b Theodore Ts'o     2021-07-02  154  				     " has been disabled.");
61bb4a1c417e5b Theodore Ts'o     2021-07-02  155  			goto wait_to_exit;
61bb4a1c417e5b Theodore Ts'o     2021-07-02  156  		}
c5e06d101aaf72 Johann Lombardi   2011-05-24  157  		if (++seq > EXT4_MMP_SEQ_MAX)
c5e06d101aaf72 Johann Lombardi   2011-05-24  158  			seq = 1;
c5e06d101aaf72 Johann Lombardi   2011-05-24  159  
c5e06d101aaf72 Johann Lombardi   2011-05-24  160  		mmp->mmp_seq = cpu_to_le32(seq);
af123b3718592a Arnd Bergmann     2018-07-29  161  		mmp->mmp_time = cpu_to_le64(ktime_get_real_seconds());
c5e06d101aaf72 Johann Lombardi   2011-05-24  162  		last_update_time = jiffies;
c5e06d101aaf72 Johann Lombardi   2011-05-24  163  
5c359a47e7d999 Darrick J. Wong   2012-04-29  164  		retval = write_mmp_block(sb, bh);
c5e06d101aaf72 Johann Lombardi   2011-05-24  165  		/*
c5e06d101aaf72 Johann Lombardi   2011-05-24  166  		 * Don't spew too many error messages. Print one every
c5e06d101aaf72 Johann Lombardi   2011-05-24  167  		 * (s_mmp_update_interval * 60) seconds.
c5e06d101aaf72 Johann Lombardi   2011-05-24  168  		 */
bdfc230f33a9da Nikitas Angelinas 2011-10-18  169  		if (retval) {
878520ac45f9f6 Theodore Ts'o     2019-11-19  170  			if ((failed_writes % 60) == 0) {
54d3adbc29f0c7 Theodore Ts'o     2020-03-28  171  				ext4_error_err(sb, -retval,
54d3adbc29f0c7 Theodore Ts'o     2020-03-28  172  					       "Error writing to MMP block");
878520ac45f9f6 Theodore Ts'o     2019-11-19  173  			}
c5e06d101aaf72 Johann Lombardi   2011-05-24  174  			failed_writes++;
c5e06d101aaf72 Johann Lombardi   2011-05-24  175  		}
c5e06d101aaf72 Johann Lombardi   2011-05-24  176  
c5e06d101aaf72 Johann Lombardi   2011-05-24  177  		diff = jiffies - last_update_time;
c5e06d101aaf72 Johann Lombardi   2011-05-24  178  		if (diff < mmp_update_interval * HZ)
c5e06d101aaf72 Johann Lombardi   2011-05-24  179  			schedule_timeout_interruptible(mmp_update_interval *
c5e06d101aaf72 Johann Lombardi   2011-05-24  180  						       HZ - diff);
c5e06d101aaf72 Johann Lombardi   2011-05-24  181  
c5e06d101aaf72 Johann Lombardi   2011-05-24  182  		/*
c5e06d101aaf72 Johann Lombardi   2011-05-24  183  		 * We need to make sure that more than mmp_check_interval
c5e06d101aaf72 Johann Lombardi   2011-05-24  184  		 * seconds have not passed since writing. If that has happened
c5e06d101aaf72 Johann Lombardi   2011-05-24  185  		 * we need to check if the MMP block is as we left it.
c5e06d101aaf72 Johann Lombardi   2011-05-24  186  		 */
c5e06d101aaf72 Johann Lombardi   2011-05-24  187  		diff = jiffies - last_update_time;
c5e06d101aaf72 Johann Lombardi   2011-05-24  188  		if (diff > mmp_check_interval * HZ) {
c5e06d101aaf72 Johann Lombardi   2011-05-24  189  			struct buffer_head *bh_check = NULL;
c5e06d101aaf72 Johann Lombardi   2011-05-24  190  			struct mmp_struct *mmp_check;
c5e06d101aaf72 Johann Lombardi   2011-05-24  191  
0f118633b71dac Ye Bin            2021-10-19  192  			retval = read_mmp_block(sb, bh_check);
c5e06d101aaf72 Johann Lombardi   2011-05-24  193  			if (retval) {
54d3adbc29f0c7 Theodore Ts'o     2020-03-28  194  				ext4_error_err(sb, -retval,
54d3adbc29f0c7 Theodore Ts'o     2020-03-28  195  					       "error reading MMP data: %d",
c5e06d101aaf72 Johann Lombardi   2011-05-24  196  					       retval);
61bb4a1c417e5b Theodore Ts'o     2021-07-02  197  				goto wait_to_exit;
c5e06d101aaf72 Johann Lombardi   2011-05-24  198  			}
c5e06d101aaf72 Johann Lombardi   2011-05-24  199  
c5e06d101aaf72 Johann Lombardi   2011-05-24  200  			mmp_check = (struct mmp_struct *)(bh_check->b_data);
70bae8f45abfe9 Ye Bin            2021-10-19  201  			if (seq != mmp_check->mmp_seq ||
70bae8f45abfe9 Ye Bin            2021-10-19  202  			    memcmp(nodename, mmp_check->mmp_nodename,
c5e06d101aaf72 Johann Lombardi   2011-05-24  203  				   sizeof(mmp->mmp_nodename))) {
c5e06d101aaf72 Johann Lombardi   2011-05-24  204  				dump_mmp_msg(sb, mmp_check,
c5e06d101aaf72 Johann Lombardi   2011-05-24  205  					     "Error while updating MMP info. "
c5e06d101aaf72 Johann Lombardi   2011-05-24  206  					     "The filesystem seems to have been"
c5e06d101aaf72 Johann Lombardi   2011-05-24  207  					     " multiply mounted.");
54d3adbc29f0c7 Theodore Ts'o     2020-03-28  208  				ext4_error_err(sb, EBUSY, "abort");
0304688676bdfc vikram.jadhav07   2016-03-13  209  				put_bh(bh_check);
0304688676bdfc vikram.jadhav07   2016-03-13  210  				retval = -EBUSY;
61bb4a1c417e5b Theodore Ts'o     2021-07-02  211  				goto wait_to_exit;
c5e06d101aaf72 Johann Lombardi   2011-05-24  212  			}
c5e06d101aaf72 Johann Lombardi   2011-05-24  213  			put_bh(bh_check);
c5e06d101aaf72 Johann Lombardi   2011-05-24  214  		}
c5e06d101aaf72 Johann Lombardi   2011-05-24  215  
c5e06d101aaf72 Johann Lombardi   2011-05-24  216  		 /*
c5e06d101aaf72 Johann Lombardi   2011-05-24  217  		 * Adjust the mmp_check_interval depending on how much time
c5e06d101aaf72 Johann Lombardi   2011-05-24  218  		 * it took for the MMP block to be written.
c5e06d101aaf72 Johann Lombardi   2011-05-24  219  		 */
c5e06d101aaf72 Johann Lombardi   2011-05-24  220  		mmp_check_interval = max(min(EXT4_MMP_CHECK_MULT * diff / HZ,
c5e06d101aaf72 Johann Lombardi   2011-05-24  221  					     EXT4_MMP_MAX_CHECK_INTERVAL),
c5e06d101aaf72 Johann Lombardi   2011-05-24  222  					 EXT4_MMP_MIN_CHECK_INTERVAL);
c5e06d101aaf72 Johann Lombardi   2011-05-24  223  		mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval);
c5e06d101aaf72 Johann Lombardi   2011-05-24  224  	}
c5e06d101aaf72 Johann Lombardi   2011-05-24  225  
c5e06d101aaf72 Johann Lombardi   2011-05-24  226  	/*
c5e06d101aaf72 Johann Lombardi   2011-05-24  227  	 * Unmount seems to be clean.
c5e06d101aaf72 Johann Lombardi   2011-05-24  228  	 */
c5e06d101aaf72 Johann Lombardi   2011-05-24  229  	mmp->mmp_seq = cpu_to_le32(EXT4_MMP_SEQ_CLEAN);
af123b3718592a Arnd Bergmann     2018-07-29  230  	mmp->mmp_time = cpu_to_le64(ktime_get_real_seconds());
c5e06d101aaf72 Johann Lombardi   2011-05-24  231  
5c359a47e7d999 Darrick J. Wong   2012-04-29  232  	retval = write_mmp_block(sb, bh);
c5e06d101aaf72 Johann Lombardi   2011-05-24  233  
61bb4a1c417e5b Theodore Ts'o     2021-07-02  234  wait_to_exit:
61bb4a1c417e5b Theodore Ts'o     2021-07-02  235  	while (!kthread_should_stop()) {
61bb4a1c417e5b Theodore Ts'o     2021-07-02  236  		set_current_state(TASK_INTERRUPTIBLE);
61bb4a1c417e5b Theodore Ts'o     2021-07-02  237  		if (!kthread_should_stop())
61bb4a1c417e5b Theodore Ts'o     2021-07-02  238  			schedule();
61bb4a1c417e5b Theodore Ts'o     2021-07-02  239  	}
61bb4a1c417e5b Theodore Ts'o     2021-07-02  240  	set_current_state(TASK_RUNNING);
c5e06d101aaf72 Johann Lombardi   2011-05-24  241  	return retval;
c5e06d101aaf72 Johann Lombardi   2011-05-24  242  }
c5e06d101aaf72 Johann Lombardi   2011-05-24  243  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 37352 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH -next v3 4/5] ext4: simplify read_mmp_block fucntion
Date: Tue, 19 Oct 2021 21:13:24 +0800	[thread overview]
Message-ID: <202110192158.EFL4dYTY-lkp@intel.com> (raw)
In-Reply-To: <20211019064959.625557-5-yebin10@huawei.com>

[-- Attachment #1: Type: text/plain, Size: 11991 bytes --]

Hi Ye,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on next-20211018]

url:    https://github.com/0day-ci/linux/commits/Ye-Bin/Fix-some-issues-about-mmp/20211019-143859
base:    60e8840126bdcb60bccef74c3f962742183c681f
config: i386-randconfig-a001-20211019 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b37efed957ed0a0193d80020aefd55cb587dfc1f)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/0f118633b71dacebbf7b01cd9ce4a2ed5d3aad0e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Ye-Bin/Fix-some-issues-about-mmp/20211019-143859
        git checkout 0f118633b71dacebbf7b01cd9ce4a2ed5d3aad0e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> fs/ext4/mmp.c:124:15: warning: variable 'mmp_block' set but not used [-Wunused-but-set-variable]
           ext4_fsblk_t mmp_block;
                        ^
   1 warning generated.


vim +/mmp_block +124 fs/ext4/mmp.c

c5e06d101aaf72 Johann Lombardi   2011-05-24  114  
c5e06d101aaf72 Johann Lombardi   2011-05-24  115  /*
c5e06d101aaf72 Johann Lombardi   2011-05-24  116   * kmmpd will update the MMP sequence every s_mmp_update_interval seconds
c5e06d101aaf72 Johann Lombardi   2011-05-24  117   */
c5e06d101aaf72 Johann Lombardi   2011-05-24  118  static int kmmpd(void *data)
c5e06d101aaf72 Johann Lombardi   2011-05-24  119  {
618f003199c618 Pavel Skripkin    2021-04-30  120  	struct super_block *sb = (struct super_block *) data;
c5e06d101aaf72 Johann Lombardi   2011-05-24  121  	struct ext4_super_block *es = EXT4_SB(sb)->s_es;
618f003199c618 Pavel Skripkin    2021-04-30  122  	struct buffer_head *bh = EXT4_SB(sb)->s_mmp_bh;
c5e06d101aaf72 Johann Lombardi   2011-05-24  123  	struct mmp_struct *mmp;
c5e06d101aaf72 Johann Lombardi   2011-05-24 @124  	ext4_fsblk_t mmp_block;
2b19579c262011 Ye Bin            2021-10-19  125  	u32 seq;
c5e06d101aaf72 Johann Lombardi   2011-05-24  126  	unsigned long failed_writes = 0;
c5e06d101aaf72 Johann Lombardi   2011-05-24  127  	int mmp_update_interval = le16_to_cpu(es->s_mmp_update_interval);
c5e06d101aaf72 Johann Lombardi   2011-05-24  128  	unsigned mmp_check_interval;
c5e06d101aaf72 Johann Lombardi   2011-05-24  129  	unsigned long last_update_time;
c5e06d101aaf72 Johann Lombardi   2011-05-24  130  	unsigned long diff;
70bae8f45abfe9 Ye Bin            2021-10-19  131  	char nodename[EXT4_MMP_NODENAME_LEN];
b66541422824cf Ye Bin            2021-07-13  132  	int retval = 0;
c5e06d101aaf72 Johann Lombardi   2011-05-24  133  
c5e06d101aaf72 Johann Lombardi   2011-05-24  134  	mmp_block = le64_to_cpu(es->s_mmp_block);
c5e06d101aaf72 Johann Lombardi   2011-05-24  135  	mmp = (struct mmp_struct *)(bh->b_data);
af123b3718592a Arnd Bergmann     2018-07-29  136  	mmp->mmp_time = cpu_to_le64(ktime_get_real_seconds());
2b19579c262011 Ye Bin            2021-10-19  137  	seq = le32_to_cpu(mmp->mmp_seq);
c5e06d101aaf72 Johann Lombardi   2011-05-24  138  	/*
c5e06d101aaf72 Johann Lombardi   2011-05-24  139  	 * Start with the higher mmp_check_interval and reduce it if
c5e06d101aaf72 Johann Lombardi   2011-05-24  140  	 * the MMP block is being updated on time.
c5e06d101aaf72 Johann Lombardi   2011-05-24  141  	 */
c5e06d101aaf72 Johann Lombardi   2011-05-24  142  	mmp_check_interval = max(EXT4_MMP_CHECK_MULT * mmp_update_interval,
c5e06d101aaf72 Johann Lombardi   2011-05-24  143  				 EXT4_MMP_MIN_CHECK_INTERVAL);
c5e06d101aaf72 Johann Lombardi   2011-05-24  144  	mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval);
14c9ca0583eee8 Andreas Dilger    2020-01-26  145  	BUILD_BUG_ON(sizeof(mmp->mmp_bdevname) < BDEVNAME_SIZE);
c5e06d101aaf72 Johann Lombardi   2011-05-24  146  	bdevname(bh->b_bdev, mmp->mmp_bdevname);
c5e06d101aaf72 Johann Lombardi   2011-05-24  147  
70bae8f45abfe9 Ye Bin            2021-10-19  148  	memcpy(nodename, init_utsname()->nodename, sizeof(nodename));
70bae8f45abfe9 Ye Bin            2021-10-19  149  	memcpy(mmp->mmp_nodename, nodename, sizeof(mmp->mmp_nodename));
c5e06d101aaf72 Johann Lombardi   2011-05-24  150  
61bb4a1c417e5b Theodore Ts'o     2021-07-02  151  	while (!kthread_should_stop() && !sb_rdonly(sb)) {
61bb4a1c417e5b Theodore Ts'o     2021-07-02  152  		if (!ext4_has_feature_mmp(sb)) {
61bb4a1c417e5b Theodore Ts'o     2021-07-02  153  			ext4_warning(sb, "kmmpd being stopped since MMP feature"
61bb4a1c417e5b Theodore Ts'o     2021-07-02  154  				     " has been disabled.");
61bb4a1c417e5b Theodore Ts'o     2021-07-02  155  			goto wait_to_exit;
61bb4a1c417e5b Theodore Ts'o     2021-07-02  156  		}
c5e06d101aaf72 Johann Lombardi   2011-05-24  157  		if (++seq > EXT4_MMP_SEQ_MAX)
c5e06d101aaf72 Johann Lombardi   2011-05-24  158  			seq = 1;
c5e06d101aaf72 Johann Lombardi   2011-05-24  159  
c5e06d101aaf72 Johann Lombardi   2011-05-24  160  		mmp->mmp_seq = cpu_to_le32(seq);
af123b3718592a Arnd Bergmann     2018-07-29  161  		mmp->mmp_time = cpu_to_le64(ktime_get_real_seconds());
c5e06d101aaf72 Johann Lombardi   2011-05-24  162  		last_update_time = jiffies;
c5e06d101aaf72 Johann Lombardi   2011-05-24  163  
5c359a47e7d999 Darrick J. Wong   2012-04-29  164  		retval = write_mmp_block(sb, bh);
c5e06d101aaf72 Johann Lombardi   2011-05-24  165  		/*
c5e06d101aaf72 Johann Lombardi   2011-05-24  166  		 * Don't spew too many error messages. Print one every
c5e06d101aaf72 Johann Lombardi   2011-05-24  167  		 * (s_mmp_update_interval * 60) seconds.
c5e06d101aaf72 Johann Lombardi   2011-05-24  168  		 */
bdfc230f33a9da Nikitas Angelinas 2011-10-18  169  		if (retval) {
878520ac45f9f6 Theodore Ts'o     2019-11-19  170  			if ((failed_writes % 60) == 0) {
54d3adbc29f0c7 Theodore Ts'o     2020-03-28  171  				ext4_error_err(sb, -retval,
54d3adbc29f0c7 Theodore Ts'o     2020-03-28  172  					       "Error writing to MMP block");
878520ac45f9f6 Theodore Ts'o     2019-11-19  173  			}
c5e06d101aaf72 Johann Lombardi   2011-05-24  174  			failed_writes++;
c5e06d101aaf72 Johann Lombardi   2011-05-24  175  		}
c5e06d101aaf72 Johann Lombardi   2011-05-24  176  
c5e06d101aaf72 Johann Lombardi   2011-05-24  177  		diff = jiffies - last_update_time;
c5e06d101aaf72 Johann Lombardi   2011-05-24  178  		if (diff < mmp_update_interval * HZ)
c5e06d101aaf72 Johann Lombardi   2011-05-24  179  			schedule_timeout_interruptible(mmp_update_interval *
c5e06d101aaf72 Johann Lombardi   2011-05-24  180  						       HZ - diff);
c5e06d101aaf72 Johann Lombardi   2011-05-24  181  
c5e06d101aaf72 Johann Lombardi   2011-05-24  182  		/*
c5e06d101aaf72 Johann Lombardi   2011-05-24  183  		 * We need to make sure that more than mmp_check_interval
c5e06d101aaf72 Johann Lombardi   2011-05-24  184  		 * seconds have not passed since writing. If that has happened
c5e06d101aaf72 Johann Lombardi   2011-05-24  185  		 * we need to check if the MMP block is as we left it.
c5e06d101aaf72 Johann Lombardi   2011-05-24  186  		 */
c5e06d101aaf72 Johann Lombardi   2011-05-24  187  		diff = jiffies - last_update_time;
c5e06d101aaf72 Johann Lombardi   2011-05-24  188  		if (diff > mmp_check_interval * HZ) {
c5e06d101aaf72 Johann Lombardi   2011-05-24  189  			struct buffer_head *bh_check = NULL;
c5e06d101aaf72 Johann Lombardi   2011-05-24  190  			struct mmp_struct *mmp_check;
c5e06d101aaf72 Johann Lombardi   2011-05-24  191  
0f118633b71dac Ye Bin            2021-10-19  192  			retval = read_mmp_block(sb, bh_check);
c5e06d101aaf72 Johann Lombardi   2011-05-24  193  			if (retval) {
54d3adbc29f0c7 Theodore Ts'o     2020-03-28  194  				ext4_error_err(sb, -retval,
54d3adbc29f0c7 Theodore Ts'o     2020-03-28  195  					       "error reading MMP data: %d",
c5e06d101aaf72 Johann Lombardi   2011-05-24  196  					       retval);
61bb4a1c417e5b Theodore Ts'o     2021-07-02  197  				goto wait_to_exit;
c5e06d101aaf72 Johann Lombardi   2011-05-24  198  			}
c5e06d101aaf72 Johann Lombardi   2011-05-24  199  
c5e06d101aaf72 Johann Lombardi   2011-05-24  200  			mmp_check = (struct mmp_struct *)(bh_check->b_data);
70bae8f45abfe9 Ye Bin            2021-10-19  201  			if (seq != mmp_check->mmp_seq ||
70bae8f45abfe9 Ye Bin            2021-10-19  202  			    memcmp(nodename, mmp_check->mmp_nodename,
c5e06d101aaf72 Johann Lombardi   2011-05-24  203  				   sizeof(mmp->mmp_nodename))) {
c5e06d101aaf72 Johann Lombardi   2011-05-24  204  				dump_mmp_msg(sb, mmp_check,
c5e06d101aaf72 Johann Lombardi   2011-05-24  205  					     "Error while updating MMP info. "
c5e06d101aaf72 Johann Lombardi   2011-05-24  206  					     "The filesystem seems to have been"
c5e06d101aaf72 Johann Lombardi   2011-05-24  207  					     " multiply mounted.");
54d3adbc29f0c7 Theodore Ts'o     2020-03-28  208  				ext4_error_err(sb, EBUSY, "abort");
0304688676bdfc vikram.jadhav07   2016-03-13  209  				put_bh(bh_check);
0304688676bdfc vikram.jadhav07   2016-03-13  210  				retval = -EBUSY;
61bb4a1c417e5b Theodore Ts'o     2021-07-02  211  				goto wait_to_exit;
c5e06d101aaf72 Johann Lombardi   2011-05-24  212  			}
c5e06d101aaf72 Johann Lombardi   2011-05-24  213  			put_bh(bh_check);
c5e06d101aaf72 Johann Lombardi   2011-05-24  214  		}
c5e06d101aaf72 Johann Lombardi   2011-05-24  215  
c5e06d101aaf72 Johann Lombardi   2011-05-24  216  		 /*
c5e06d101aaf72 Johann Lombardi   2011-05-24  217  		 * Adjust the mmp_check_interval depending on how much time
c5e06d101aaf72 Johann Lombardi   2011-05-24  218  		 * it took for the MMP block to be written.
c5e06d101aaf72 Johann Lombardi   2011-05-24  219  		 */
c5e06d101aaf72 Johann Lombardi   2011-05-24  220  		mmp_check_interval = max(min(EXT4_MMP_CHECK_MULT * diff / HZ,
c5e06d101aaf72 Johann Lombardi   2011-05-24  221  					     EXT4_MMP_MAX_CHECK_INTERVAL),
c5e06d101aaf72 Johann Lombardi   2011-05-24  222  					 EXT4_MMP_MIN_CHECK_INTERVAL);
c5e06d101aaf72 Johann Lombardi   2011-05-24  223  		mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval);
c5e06d101aaf72 Johann Lombardi   2011-05-24  224  	}
c5e06d101aaf72 Johann Lombardi   2011-05-24  225  
c5e06d101aaf72 Johann Lombardi   2011-05-24  226  	/*
c5e06d101aaf72 Johann Lombardi   2011-05-24  227  	 * Unmount seems to be clean.
c5e06d101aaf72 Johann Lombardi   2011-05-24  228  	 */
c5e06d101aaf72 Johann Lombardi   2011-05-24  229  	mmp->mmp_seq = cpu_to_le32(EXT4_MMP_SEQ_CLEAN);
af123b3718592a Arnd Bergmann     2018-07-29  230  	mmp->mmp_time = cpu_to_le64(ktime_get_real_seconds());
c5e06d101aaf72 Johann Lombardi   2011-05-24  231  
5c359a47e7d999 Darrick J. Wong   2012-04-29  232  	retval = write_mmp_block(sb, bh);
c5e06d101aaf72 Johann Lombardi   2011-05-24  233  
61bb4a1c417e5b Theodore Ts'o     2021-07-02  234  wait_to_exit:
61bb4a1c417e5b Theodore Ts'o     2021-07-02  235  	while (!kthread_should_stop()) {
61bb4a1c417e5b Theodore Ts'o     2021-07-02  236  		set_current_state(TASK_INTERRUPTIBLE);
61bb4a1c417e5b Theodore Ts'o     2021-07-02  237  		if (!kthread_should_stop())
61bb4a1c417e5b Theodore Ts'o     2021-07-02  238  			schedule();
61bb4a1c417e5b Theodore Ts'o     2021-07-02  239  	}
61bb4a1c417e5b Theodore Ts'o     2021-07-02  240  	set_current_state(TASK_RUNNING);
c5e06d101aaf72 Johann Lombardi   2011-05-24  241  	return retval;
c5e06d101aaf72 Johann Lombardi   2011-05-24  242  }
c5e06d101aaf72 Johann Lombardi   2011-05-24  243  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 37352 bytes --]

  reply	other threads:[~2021-10-19 13:46 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-19  6:49 [PATCH -next v3 0/5] Fix some issues about mmp Ye Bin
2021-10-19  6:49 ` [PATCH -next v3 1/5] ext4: init 'seq' with the value which set in 'ext4_multi_mount_protect' Ye Bin
2021-10-19  8:53   ` Jan Kara
2021-10-19  6:49 ` [PATCH -next v3 2/5] ext4: compare to local seq and nodename when check conflict Ye Bin
2021-10-19  8:54   ` Jan Kara
2021-10-19  6:49 ` [PATCH -next v3 3/5] ext4: get buffer head before read_mmp_block Ye Bin
2021-10-19  9:12   ` Jan Kara
2021-10-19  6:49 ` [PATCH -next v3 4/5] ext4: simplify read_mmp_block fucntion Ye Bin
2021-10-19 13:13   ` kernel test robot [this message]
2021-10-19 13:13     ` kernel test robot
2021-10-19  6:49 ` [PATCH -next v3 5/5] ext4: avoid to re-read mmp check data get from page cache Ye Bin
2021-10-19  9:10   ` 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=202110192158.EFL4dYTY-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=adilger.kernel@dilger.ca \
    --cc=jack@suse.cz \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=tytso@mit.edu \
    --cc=yebin10@huawei.com \
    /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.