mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:04:41 +01:00
iomap: don't report direct-io retries to fserror
iomap's directio implementation has two magic errno codes that it uses
to signal callers -- ENOTBLK tells the filesystem that it should retry
a write with the pagecache; and EAGAIN tells the caller that pagecache
flushing or invalidation failed and that it should try again.
Neither of these indicate data loss, so let's not report them.
Fixes: a9d573ee88 ("iomap: report file I/O errors to the VFS")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Link: https://patch.msgid.link/20260224154637.GD2390381@frogsfrogsfrogs
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
d9d32e5bd5
commit
cd3c877d04
1 changed files with 14 additions and 1 deletions
|
|
@ -87,6 +87,19 @@ static inline enum fserror_type iomap_dio_err_type(const struct iomap_dio *dio)
|
|||
return FSERR_DIRECTIO_READ;
|
||||
}
|
||||
|
||||
static inline bool should_report_dio_fserror(const struct iomap_dio *dio)
|
||||
{
|
||||
switch (dio->error) {
|
||||
case 0:
|
||||
case -EAGAIN:
|
||||
case -ENOTBLK:
|
||||
/* don't send fsnotify for success or magic retry codes */
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
ssize_t iomap_dio_complete(struct iomap_dio *dio)
|
||||
{
|
||||
const struct iomap_dio_ops *dops = dio->dops;
|
||||
|
|
@ -96,7 +109,7 @@ ssize_t iomap_dio_complete(struct iomap_dio *dio)
|
|||
|
||||
if (dops && dops->end_io)
|
||||
ret = dops->end_io(iocb, dio->size, ret, dio->flags);
|
||||
if (dio->error)
|
||||
if (should_report_dio_fserror(dio))
|
||||
fserror_report_io(file_inode(iocb->ki_filp),
|
||||
iomap_dio_err_type(dio), offset, dio->size,
|
||||
dio->error, GFP_NOFS);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue