|
@@ -209,6 +209,8 @@ init_cache:
|
|
ctl.valid = 1;
|
|
ctl.valid = 1;
|
|
read_really:
|
|
read_really:
|
|
result = server->ops->readdir(filp, dirent, filldir, &ctl);
|
|
result = server->ops->readdir(filp, dirent, filldir, &ctl);
|
|
|
|
+ if (result == -ERESTARTSYS && page)
|
|
|
|
+ ClearPageUptodate(page);
|
|
if (ctl.idx == -1)
|
|
if (ctl.idx == -1)
|
|
goto invalid_cache; /* retry */
|
|
goto invalid_cache; /* retry */
|
|
ctl.head.end = ctl.fpos - 1;
|
|
ctl.head.end = ctl.fpos - 1;
|
|
@@ -217,7 +219,8 @@ finished:
|
|
if (page) {
|
|
if (page) {
|
|
cache->head = ctl.head;
|
|
cache->head = ctl.head;
|
|
kunmap(page);
|
|
kunmap(page);
|
|
- SetPageUptodate(page);
|
|
|
|
|
|
+ if (result != -ERESTARTSYS)
|
|
|
|
+ SetPageUptodate(page);
|
|
unlock_page(page);
|
|
unlock_page(page);
|
|
page_cache_release(page);
|
|
page_cache_release(page);
|
|
}
|
|
}
|