mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
Bug fixes for 6.6-rc4:
* Handle a race between writing and shrinking block devices by
returning EIO.
* Fix a typo in a comment.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
-----BEGIN PGP SIGNATURE-----
iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZRWpqAAKCRBKO3ySh0YR
puinAP46EI8AvxQOid2ukGIEP09ZdhYNcJkWsigZ8k7Z/wcqagD/UVliaDPGC2kk
rlrPN6jmNyqDzAP6muBmqu2v44GVWwY=
=7nql
-----END PGP SIGNATURE-----
Merge tag 'iomap-6.6-fixes-4' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
Pull iomap fixes from Darrick Wong:
- Handle a race between writing and shrinking block devices by
returning EIO
- Fix a typo in a comment
* tag 'iomap-6.6-fixes-4' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
iomap: Spelling s/preceeding/preceding/g
iomap: add a workaround for racy i_size updates on block devices
This commit is contained in:
commit
25d48d570e
11
fs/buffer.c
11
fs/buffer.c
|
|
@ -2058,8 +2058,17 @@ iomap_to_bh(struct inode *inode, sector_t block, struct buffer_head *bh,
|
|||
fallthrough;
|
||||
case IOMAP_MAPPED:
|
||||
if ((iomap->flags & IOMAP_F_NEW) ||
|
||||
offset >= i_size_read(inode))
|
||||
offset >= i_size_read(inode)) {
|
||||
/*
|
||||
* This can happen if truncating the block device races
|
||||
* with the check in the caller as i_size updates on
|
||||
* block devices aren't synchronized by i_rwsem for
|
||||
* block devices.
|
||||
*/
|
||||
if (S_ISBLK(inode->i_mode))
|
||||
return -EIO;
|
||||
set_buffer_new(bh);
|
||||
}
|
||||
bh->b_blocknr = (iomap->addr + offset - iomap->offset) >>
|
||||
inode->i_blkbits;
|
||||
set_buffer_mapped(bh);
|
||||
|
|
|
|||
|
|
@ -1049,7 +1049,7 @@ static int iomap_write_delalloc_punch(struct inode *inode, struct folio *folio,
|
|||
|
||||
/*
|
||||
* Scan the data range passed to us for dirty page cache folios. If we find a
|
||||
* dirty folio, punch out the preceeding range and update the offset from which
|
||||
* dirty folio, punch out the preceding range and update the offset from which
|
||||
* the next punch will start from.
|
||||
*
|
||||
* We can punch out storage reservations under clean pages because they either
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user