mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
ext4: check for shutdown and r/o file system in ext4_write_inode()
If the file system has been shut down or is read-only, then ext4_write_inode() needs to bail out early. Also use jbd2_complete_transaction() instead of ext4_force_commit() so we only force a commit if it is needed. Signed-off-by: Theodore Ts'o <tytso@mit.edu> Cc: stable@kernel.org
This commit is contained in:
parent
fde872682e
commit
18f2c4fceb
@ -5400,9 +5400,13 @@ int ext4_write_inode(struct inode *inode, struct writeback_control *wbc)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (WARN_ON_ONCE(current->flags & PF_MEMALLOC))
|
||||
if (WARN_ON_ONCE(current->flags & PF_MEMALLOC) ||
|
||||
sb_rdonly(inode->i_sb))
|
||||
return 0;
|
||||
|
||||
if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb))))
|
||||
return -EIO;
|
||||
|
||||
if (EXT4_SB(inode->i_sb)->s_journal) {
|
||||
if (ext4_journal_current_handle()) {
|
||||
jbd_debug(1, "called recursively, non-PF_MEMALLOC!\n");
|
||||
@ -5418,7 +5422,8 @@ int ext4_write_inode(struct inode *inode, struct writeback_control *wbc)
|
||||
if (wbc->sync_mode != WB_SYNC_ALL || wbc->for_sync)
|
||||
return 0;
|
||||
|
||||
err = ext4_force_commit(inode->i_sb);
|
||||
err = jbd2_complete_transaction(EXT4_SB(inode->i_sb)->s_journal,
|
||||
EXT4_I(inode)->i_sync_tid);
|
||||
} else {
|
||||
struct ext4_iloc iloc;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user