提交 963b3ef7 编写于 作者: Z Zhihao Cheng

ext4: Add debug message to notify user space is out of free

hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I7CBCS
CVE: NA

--------------------------------

Add debug message to notify user that ext4_writepages is stuck in loop
caused by ENOSPC.
Signed-off-by: NZhihao Cheng <chengzhihao1@huawei.com>
上级 62405f69
......@@ -2742,6 +2742,9 @@ static int ext4_writepages(struct address_space *mapping,
bool done;
struct blk_plug plug;
bool give_up_on_write = false;
unsigned long retry_warn_ddl = 0;
#define RETRY_WARN_TIMEOUT (30 * HZ)
if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb))))
return -EIO;
......@@ -2933,6 +2936,15 @@ static int ext4_writepages(struct address_space *mapping,
mpd.io_submit.io_end = NULL;
if (ret == -ENOSPC && sbi->s_journal) {
if (!retry_warn_ddl) {
retry_warn_ddl = jiffies + RETRY_WARN_TIMEOUT;
} else if (time_after(jiffies, retry_warn_ddl)) {
retry_warn_ddl = jiffies + RETRY_WARN_TIMEOUT;
ext4_warning(inode->i_sb, "There are no free blocks available for writing pages, total free %llu, pending free %u, please delete big files to free space",
ext4_count_free_clusters(inode->i_sb),
sbi->s_mb_free_pending);
}
/*
* Commit the transaction which would
* free blocks released in the transaction
......@@ -2941,6 +2953,8 @@ static int ext4_writepages(struct address_space *mapping,
jbd2_journal_force_commit_nested(sbi->s_journal);
ret = 0;
continue;
} else {
retry_warn_ddl = 0;
}
/* Fatal error - ENOMEM, EIO... */
if (ret)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册