diff options
author | Matthew Wilcox (Oracle) <willy@infradead.org> | 2022-05-27 17:20:56 +0200 |
---|---|---|
committer | Matthew Wilcox (Oracle) <willy@infradead.org> | 2022-08-02 18:34:02 +0200 |
commit | e775dfb33d81455bb043e447c5bdca76ae60ea15 (patch) | |
tree | 18821a9d5a7b31f8e56f22d6dc8fcba5dd9758a0 /fs/hostfs | |
parent | squashfs: Return the actual error from squashfs_read_folio() (diff) | |
download | linux-e775dfb33d81455bb043e447c5bdca76ae60ea15.tar.xz linux-e775dfb33d81455bb043e447c5bdca76ae60ea15.zip |
hostfs: Handle page write errors correctly
If a page can't be written back, we need to call mapping_set_error(),
not clear the page's Uptodate flag. Also remove the clearing of PageError
on success; that flag is used for read errors, not write errors.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Diffstat (limited to 'fs/hostfs')
-rw-r--r-- | fs/hostfs/hostfs_kern.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c index cc1bc6f93a01..07881b76d42f 100644 --- a/fs/hostfs/hostfs_kern.c +++ b/fs/hostfs/hostfs_kern.c @@ -416,15 +416,15 @@ static int hostfs_writepage(struct page *page, struct writeback_control *wbc) err = write_file(HOSTFS_I(inode)->fd, &base, buffer, count); if (err != count) { - ClearPageUptodate(page); + if (err >= 0) + err = -EIO; + mapping_set_error(mapping, err); goto out; } if (base > inode->i_size) inode->i_size = base; - if (PageError(page)) - ClearPageError(page); err = 0; out: |