mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 04:34:03 +02:00
fat: Propagate inode buffer write errors from fat_sync_inode_metadata()
fat_sync_inode_metadata() ignores the result of writing the buffer containing the inode's directory entry. Before commit525da4f40a("fat: Fix missed inode writeback during fsync(2)") a write error was propagated to fsync(2) via __fat_write_inode() -> sync_dirty_buffer(), now fsync(2) reports success even though the inode's directory entry could not be written. Check buffer_write_io_error() after sync_dirty_buffer() like the other ->sync_inode_metadata implementations do. Fixes:525da4f40a("fat: Fix missed inode writeback during fsync(2)") Reported-by: Sashiko <sashiko-bot@kernel.org> Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
This commit is contained in:
parent
d7de16e240
commit
a50587bbf3
|
|
@ -646,8 +646,13 @@ static int fat_sync_inode_metadata(struct inode *inode,
|
|||
* Buffer present? We leave buffer_dirty check for sync_dirty_buffer()
|
||||
* for proper synchronization with ongoing IO.
|
||||
*/
|
||||
if (bh && buffer_uptodate(bh))
|
||||
if (bh && buffer_uptodate(bh)) {
|
||||
sync_dirty_buffer(bh);
|
||||
if (buffer_write_io_error(bh)) {
|
||||
brelse(bh);
|
||||
return -EIO;
|
||||
}
|
||||
}
|
||||
brelse(bh);
|
||||
return mmb_sync(&MSDOS_I(inode)->i_metadata_bhs);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user