summaryrefslogtreecommitdiff
path: root/sys/src/9/port/fault.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@centraldogma>2011-12-22 02:17:29 +0100
committercinap_lenrek <cinap_lenrek@centraldogma>2011-12-22 02:17:29 +0100
commitea5a23d39a5a5313144055481e85689809d65673 (patch)
treeb660637d50779df301b782c9f19a381c63efba12 /sys/src/9/port/fault.c
parent27830ae53e8dfaea0c809410f27c66214c6d2560 (diff)
kernel: make mntcache effective, be carefull
Diffstat (limited to 'sys/src/9/port/fault.c')
-rw-r--r--sys/src/9/port/fault.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/src/9/port/fault.c b/sys/src/9/port/fault.c
index 5854d796c..4a1cbdbff 100644
--- a/sys/src/9/port/fault.c
+++ b/sys/src/9/port/fault.c
@@ -200,7 +200,7 @@ pio(Segment *s, ulong addr, ulong soff, Page **p)
Page *new;
KMap *k;
Chan *c;
- int n, ask;
+ int n, ask, cache;
char *kaddr;
ulong daddr;
Page *loadrec;
@@ -238,15 +238,18 @@ retry:
k = kmap(new);
kaddr = (char*)VA(k);
+ cache = c->flag & CCACHE;
while(waserror()) {
+ c->flag |= cache;
if(strcmp(up->errstr, Eintr) == 0)
continue;
kunmap(k);
putpage(new);
faulterror(Eioload, c, 0);
}
-
+ c->flag &= ~CCACHE;
n = devtab[c->type]->read(c, kaddr, ask, daddr);
+ c->flag |= cache;
if(n != ask)
faulterror(Eioload, c, 0);
if(ask < BY2PG)