提交 68ae849d 编写于 作者: D David Howells

afs: Don't set PG_error on local EINTR or ENOMEM when filling a page

Don't set PG_error on a page if we get local EINTR or ENOMEM when filling a
page for writing.
Signed-off-by: NDavid Howells <dhowells@redhat.com>
上级 ab94f5d0
...@@ -212,7 +212,13 @@ int afs_page_filler(void *data, struct page *page) ...@@ -212,7 +212,13 @@ int afs_page_filler(void *data, struct page *page)
fscache_uncache_page(vnode->cache, page); fscache_uncache_page(vnode->cache, page);
#endif #endif
BUG_ON(PageFsCache(page)); BUG_ON(PageFsCache(page));
goto error;
if (ret == -EINTR ||
ret == -ENOMEM ||
ret == -ERESTARTSYS ||
ret == -EAGAIN)
goto error;
goto io_error;
} }
SetPageUptodate(page); SetPageUptodate(page);
...@@ -231,10 +237,12 @@ int afs_page_filler(void *data, struct page *page) ...@@ -231,10 +237,12 @@ int afs_page_filler(void *data, struct page *page)
_leave(" = 0"); _leave(" = 0");
return 0; return 0;
io_error:
SetPageError(page);
goto error;
enomem: enomem:
ret = -ENOMEM; ret = -ENOMEM;
error: error:
SetPageError(page);
unlock_page(page); unlock_page(page);
_leave(" = %d", ret); _leave(" = %d", ret);
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册