|
|
|
@ -1189,6 +1189,9 @@ static int ext4_write_begin(struct file *file, struct address_space *mapping, |
|
|
|
|
pgoff_t index; |
|
|
|
|
unsigned from, to; |
|
|
|
|
|
|
|
|
|
if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) |
|
|
|
|
return -EIO; |
|
|
|
|
|
|
|
|
|
trace_ext4_write_begin(inode, pos, len, flags); |
|
|
|
|
/*
|
|
|
|
|
* Reserve one block more for addition to orphan list in case |
|
|
|
@ -2047,6 +2050,12 @@ static int ext4_writepage(struct page *page, |
|
|
|
|
struct ext4_io_submit io_submit; |
|
|
|
|
bool keep_towrite = false; |
|
|
|
|
|
|
|
|
|
if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) { |
|
|
|
|
ext4_invalidatepage(page, 0, PAGE_SIZE); |
|
|
|
|
unlock_page(page); |
|
|
|
|
return -EIO; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
trace_ext4_writepage(page); |
|
|
|
|
size = i_size_read(inode); |
|
|
|
|
if (page->index == size >> PAGE_SHIFT) |
|
|
|
@ -2422,7 +2431,8 @@ static int mpage_map_and_submit_extent(handle_t *handle, |
|
|
|
|
if (err < 0) { |
|
|
|
|
struct super_block *sb = inode->i_sb; |
|
|
|
|
|
|
|
|
|
if (EXT4_SB(sb)->s_mount_flags & EXT4_MF_FS_ABORTED) |
|
|
|
|
if (ext4_forced_shutdown(EXT4_SB(sb)) || |
|
|
|
|
EXT4_SB(sb)->s_mount_flags & EXT4_MF_FS_ABORTED) |
|
|
|
|
goto invalidate_dirty_pages; |
|
|
|
|
/*
|
|
|
|
|
* Let the uper layers retry transient errors. |
|
|
|
@ -2644,6 +2654,9 @@ static int ext4_writepages(struct address_space *mapping, |
|
|
|
|
struct blk_plug plug; |
|
|
|
|
bool give_up_on_write = false; |
|
|
|
|
|
|
|
|
|
if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) |
|
|
|
|
return -EIO; |
|
|
|
|
|
|
|
|
|
percpu_down_read(&sbi->s_journal_flag_rwsem); |
|
|
|
|
trace_ext4_writepages(inode, wbc); |
|
|
|
|
|
|
|
|
@ -2680,7 +2693,8 @@ static int ext4_writepages(struct address_space *mapping, |
|
|
|
|
* *never* be called, so if that ever happens, we would want |
|
|
|
|
* the stack trace. |
|
|
|
|
*/ |
|
|
|
|
if (unlikely(sbi->s_mount_flags & EXT4_MF_FS_ABORTED)) { |
|
|
|
|
if (unlikely(ext4_forced_shutdown(EXT4_SB(mapping->host->i_sb)) || |
|
|
|
|
sbi->s_mount_flags & EXT4_MF_FS_ABORTED)) { |
|
|
|
|
ret = -EROFS; |
|
|
|
|
goto out_writepages; |
|
|
|
|
} |
|
|
|
@ -2905,6 +2919,9 @@ static int ext4_da_write_begin(struct file *file, struct address_space *mapping, |
|
|
|
|
struct inode *inode = mapping->host; |
|
|
|
|
handle_t *handle; |
|
|
|
|
|
|
|
|
|
if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) |
|
|
|
|
return -EIO; |
|
|
|
|
|
|
|
|
|
index = pos >> PAGE_SHIFT; |
|
|
|
|
|
|
|
|
|
if (ext4_nonda_switch(inode->i_sb) || |
|
|
|
@ -5212,6 +5229,9 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr) |
|
|
|
|
int orphan = 0; |
|
|
|
|
const unsigned int ia_valid = attr->ia_valid; |
|
|
|
|
|
|
|
|
|
if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) |
|
|
|
|
return -EIO; |
|
|
|
|
|
|
|
|
|
error = setattr_prepare(dentry, attr); |
|
|
|
|
if (error) |
|
|
|
|
return error; |
|
|
|
@ -5498,6 +5518,9 @@ int ext4_mark_iloc_dirty(handle_t *handle, |
|
|
|
|
{ |
|
|
|
|
int err = 0; |
|
|
|
|
|
|
|
|
|
if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) |
|
|
|
|
return -EIO; |
|
|
|
|
|
|
|
|
|
if (IS_I_VERSION(inode)) |
|
|
|
|
inode_inc_iversion(inode); |
|
|
|
|
|
|
|
|
@ -5521,6 +5544,9 @@ ext4_reserve_inode_write(handle_t *handle, struct inode *inode, |
|
|
|
|
{ |
|
|
|
|
int err; |
|
|
|
|
|
|
|
|
|
if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) |
|
|
|
|
return -EIO; |
|
|
|
|
|
|
|
|
|
err = ext4_get_inode_loc(inode, iloc); |
|
|
|
|
if (!err) { |
|
|
|
|
BUFFER_TRACE(iloc->bh, "get_write_access"); |
|
|
|
|