mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-17 12:08:43 +00:00
hostfs: Set page flags in hostfs_readpage() correctly
In case of an error set the page error flag and clear the up-to-date flag. If the read was successful clear the error flag unconditionally. Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
parent
bd1052a245
commit
b86b413a32
1 changed files with 6 additions and 4 deletions
|
@ -445,24 +445,26 @@ static int hostfs_readpage(struct file *file, struct page *page)
|
||||||
{
|
{
|
||||||
char *buffer;
|
char *buffer;
|
||||||
long long start;
|
long long start;
|
||||||
int bytes_read, ret;
|
int bytes_read, ret = 0;
|
||||||
|
|
||||||
start = (long long) page->index << PAGE_CACHE_SHIFT;
|
start = (long long) page->index << PAGE_CACHE_SHIFT;
|
||||||
buffer = kmap(page);
|
buffer = kmap(page);
|
||||||
bytes_read = read_file(FILE_HOSTFS_I(file)->fd, &start, buffer,
|
bytes_read = read_file(FILE_HOSTFS_I(file)->fd, &start, buffer,
|
||||||
PAGE_CACHE_SIZE);
|
PAGE_CACHE_SIZE);
|
||||||
if (bytes_read < 0) {
|
if (bytes_read < 0) {
|
||||||
|
ClearPageUptodate(page);
|
||||||
|
SetPageError(page);
|
||||||
ret = bytes_read;
|
ret = bytes_read;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(buffer + bytes_read, 0, PAGE_CACHE_SIZE - bytes_read);
|
memset(buffer + bytes_read, 0, PAGE_CACHE_SIZE - bytes_read);
|
||||||
|
|
||||||
flush_dcache_page(page);
|
ClearPageError(page);
|
||||||
SetPageUptodate(page);
|
SetPageUptodate(page);
|
||||||
if (PageError(page)) ClearPageError(page);
|
|
||||||
ret = 0;
|
|
||||||
out:
|
out:
|
||||||
|
flush_dcache_page(page);
|
||||||
kunmap(page);
|
kunmap(page);
|
||||||
unlock_page(page);
|
unlock_page(page);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Add table
Reference in a new issue