summaryrefslogtreecommitdiff
path: root/sys/src/cmd
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-06-16 06:26:31 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-06-16 06:26:31 +0200
commite36d9f5c4e667970a4a7aa15744e304ccc7c58f3 (patch)
tree353251f1adcf5cd89a1cc901f7aed099011b8a19 /sys/src/cmd
parentd84aeddee7911c9df739bad58c72189ac336f23f (diff)
make filesystem handling of read9pmsg() consistent
Diffstat (limited to 'sys/src/cmd')
-rw-r--r--sys/src/cmd/9nfs/9p.c2
-rw-r--r--sys/src/cmd/acme/fsys.c3
-rw-r--r--sys/src/cmd/aux/consolefs.c5
-rw-r--r--sys/src/cmd/aux/depend.c5
-rw-r--r--sys/src/cmd/cfs/cfs.c5
-rw-r--r--sys/src/cmd/cpu.c4
-rw-r--r--sys/src/cmd/exportfs/exportfs.c5
-rw-r--r--sys/src/cmd/iostats/iostats.c3
-rw-r--r--sys/src/cmd/ip/ftpfs/ftpfs.c4
-rw-r--r--sys/src/cmd/ndb/cs.c4
-rw-r--r--sys/src/cmd/ndb/dns.c5
-rw-r--r--sys/src/cmd/paqfs/paqfs.c2
-rw-r--r--sys/src/cmd/plumb/fsys.c8
-rw-r--r--sys/src/cmd/rio/fsys.c5
-rw-r--r--sys/src/cmd/vac/vacfs.c4
-rw-r--r--sys/src/cmd/vnc/exportfs.c5
16 files changed, 43 insertions, 26 deletions
diff --git a/sys/src/cmd/9nfs/9p.c b/sys/src/cmd/9nfs/9p.c
index 27fc2b5a8..55575c384 100644
--- a/sys/src/cmd/9nfs/9p.c
+++ b/sys/src/cmd/9nfs/9p.c
@@ -44,6 +44,8 @@ again:
clog("xmesg read error: %r\n");
return -1;
}
+ if(n == 0)
+ goto again;
if(convM2S(s->data, n, &s->f) <= 0){
clog("xmesg bad convM2S %d %.2x %.2x %.2x %.2x\n",
n, ((uchar*)s->data)[0], ((uchar*)s->data)[1],
diff --git a/sys/src/cmd/acme/fsys.c b/sys/src/cmd/acme/fsys.c
index 7235bbe22..edc65537d 100644
--- a/sys/src/cmd/acme/fsys.c
+++ b/sys/src/cmd/acme/fsys.c
@@ -148,7 +148,8 @@ fsysproc(void *)
x = nil;
for(;;){
buf = emalloc(messagesize+UTFmax); /* overflow for appending partial rune in xfidwrite */
- n = read9pmsg(sfd, buf, messagesize);
+ while((n = read9pmsg(sfd, buf, messagesize)) == 0 && !closing)
+ ;
if(n <= 0){
if(closing)
break;
diff --git a/sys/src/cmd/aux/consolefs.c b/sys/src/cmd/aux/consolefs.c
index 180431bd4..ebc5e1230 100644
--- a/sys/src/cmd/aux/consolefs.c
+++ b/sys/src/cmd/aux/consolefs.c
@@ -681,8 +681,9 @@ fsrun(void *v)
}
free(d);
r = allocreq(fs, messagesize);
- n = read9pmsg(fs->fd, r->buf, messagesize);
- if(n <= 0)
+ while((n = read9pmsg(fs->fd, r->buf, messagesize)) == 0)
+ ;
+ if(n < 0)
fatal("unmounted");
if(convM2S(r->buf, n, &r->f) == 0){
diff --git a/sys/src/cmd/aux/depend.c b/sys/src/cmd/aux/depend.c
index a7e031d38..6132b2d22 100644
--- a/sys/src/cmd/aux/depend.c
+++ b/sys/src/cmd/aux/depend.c
@@ -365,9 +365,10 @@ fsrun(void *a)
for(;;){
r = allocreq(messagesize);
qlock(&iolock);
- n = read9pmsg(fs->fd, r->buf, messagesize);
+ while((n = read9pmsg(fs->fd, r->buf, messagesize)) == 0)
+ ;
qunlock(&iolock);
- if(n <= 0)
+ if(n < 0)
fatal("read9pmsg error: %r");
if(convM2S(r->buf, n, &r->f) == 0){
diff --git a/sys/src/cmd/cfs/cfs.c b/sys/src/cmd/cfs/cfs.c
index 2fbf3f421..d49e32a98 100644
--- a/sys/src/cmd/cfs/cfs.c
+++ b/sys/src/cmd/cfs/cfs.c
@@ -808,8 +808,9 @@ rcvmsg(P9fs *p, Fcall *f)
char buf[128];
olen = p->len;
- p->len = read9pmsg(p->fd[0], datarcv, sizeof(datarcv));
- if(p->len <= 0){
+ while((p->len = read9pmsg(p->fd[0], datarcv, sizeof(datarcv))) == 0)
+ ;
+ if(p->len < 0){
snprint(buf, sizeof buf, "read9pmsg(%d)->%ld: %r",
p->fd[0], p->len);
error(buf);
diff --git a/sys/src/cmd/cpu.c b/sys/src/cmd/cpu.c
index 16d73e814..16c0f6186 100644
--- a/sys/src/cmd/cpu.c
+++ b/sys/src/cmd/cpu.c
@@ -1090,11 +1090,13 @@ notefs(int fd)
ncpunote = 0;
for(;;){
n = read9pmsg(fd, buf, sizeof(buf));
- if(n <= 0){
+ if(n < 0){
if(dbg)
fprint(2, "read9pmsg(%d) returns %d: %r\n", fd, n);
break;
}
+ if(n == 0)
+ continue;
if(convM2S(buf, n, &f) <= BIT16SZ)
break;
if(dbg)
diff --git a/sys/src/cmd/exportfs/exportfs.c b/sys/src/cmd/exportfs/exportfs.c
index ae9ad20d4..b618369b4 100644
--- a/sys/src/cmd/exportfs/exportfs.c
+++ b/sys/src/cmd/exportfs/exportfs.c
@@ -388,8 +388,9 @@ main(int argc, char **argv)
if(r == 0)
fatal("Out of service buffers");
- n = localread9pmsg(netfd, r->buf, messagesize, ini);
- if(n <= 0)
+ while((n = localread9pmsg(netfd, r->buf, messagesize, ini)) == 0)
+ ;
+ if(n < 0)
fatal(nil);
if(convM2S(r->buf, n, &r->work) == 0)
fatal("convM2S format error");
diff --git a/sys/src/cmd/iostats/iostats.c b/sys/src/cmd/iostats/iostats.c
index 8b1356d0a..61b16ea4b 100644
--- a/sys/src/cmd/iostats/iostats.c
+++ b/sys/src/cmd/iostats/iostats.c
@@ -164,7 +164,8 @@ main(int argc, char **argv)
if(r == 0)
fatal("Out of service buffers");
- n = read9pmsg(p[1], r->buf, sizeof(r->buf));
+ while((n = read9pmsg(p[1], r->buf, sizeof(r->buf))) == 0 && !done)
+ ;
if(done)
break;
if(n < 0)
diff --git a/sys/src/cmd/ip/ftpfs/ftpfs.c b/sys/src/cmd/ip/ftpfs/ftpfs.c
index 5d6f35b2e..540ce853b 100644
--- a/sys/src/cmd/ip/ftpfs/ftpfs.c
+++ b/sys/src/cmd/ip/ftpfs/ftpfs.c
@@ -262,12 +262,14 @@ io(void)
while(!dying){
n = read9pmsg(mfd, mdata, messagesize);
- if(n <= 0){
+ if(n < 0){
errstr(buf, sizeof buf);
if(buf[0]=='\0' || strstr(buf, "hungup"))
exits("");
fatal("mount read: %s\n", buf);
}
+ if(n == 0)
+ continue;
if(convM2S(mdata, n, &thdr) == 0)
continue;
diff --git a/sys/src/cmd/ndb/cs.c b/sys/src/cmd/ndb/cs.c
index f760c8f39..512f1706a 100644
--- a/sys/src/cmd/ndb/cs.c
+++ b/sys/src/cmd/ndb/cs.c
@@ -444,8 +444,10 @@ io(void)
for(;;){
n = read9pmsg(mfd[0], mdata, sizeof mdata);
- if(n<=0)
+ if(n < 0)
error("mount read");
+ if(n == 0)
+ continue;
job = newjob();
if(convM2S(mdata, n, &job->request) != n){
syslog(1, logfile, "format error %ux %ux %ux %ux %ux",
diff --git a/sys/src/cmd/ndb/dns.c b/sys/src/cmd/ndb/dns.c
index 32bae4040..5a8e25ce6 100644
--- a/sys/src/cmd/ndb/dns.c
+++ b/sys/src/cmd/ndb/dns.c
@@ -430,8 +430,9 @@ io(void)
while(!stop){
procsetname("%d %s/dns Twrites of %d 9p rpcs read; %d alarms",
stats.qrecvd9p, mntpt, stats.qrecvd9prpc, stats.alarms);
- n = read9pmsg(mfd[0], mdata, sizeof mdata);
- if(n<=0){
+ while((n = read9pmsg(mfd[0], mdata, sizeof mdata)) == 0)
+ ;
+ if(n < 0){
dnslog("error reading 9P from %s: %r", mntpt);
sleep(2000); /* don't thrash after read error */
return;
diff --git a/sys/src/cmd/paqfs/paqfs.c b/sys/src/cmd/paqfs/paqfs.c
index 6769326f9..8fe05cc05 100644
--- a/sys/src/cmd/paqfs/paqfs.c
+++ b/sys/src/cmd/paqfs/paqfs.c
@@ -817,7 +817,7 @@ io(int fd)
if(n < 0)
sysfatal("mount read");
if(n == 0)
- break;
+ continue;
if(convM2S(mdata, n, &rhdr) == 0)
continue;
diff --git a/sys/src/cmd/plumb/fsys.c b/sys/src/cmd/plumb/fsys.c
index ffedce259..0a5f6fbdd 100644
--- a/sys/src/cmd/plumb/fsys.c
+++ b/sys/src/cmd/plumb/fsys.c
@@ -237,12 +237,10 @@ fsysproc(void*)
if(buf == nil)
error("malloc failed: %r");
qlock(&readlock);
- n = read9pmsg(srvfd, buf, messagesize);
- if(n <= 0){
- if(n < 0)
- error("i/o error on server channel");
+ while((n = read9pmsg(srvfd, buf, messagesize)) == 0)
+ ;
+ if(n < 0)
threadexitsall("unmounted");
- }
if(readlock.head == nil) /* no other processes waiting to read; start one */
proccreate(fsysproc, nil, Stack);
qunlock(&readlock);
diff --git a/sys/src/cmd/rio/fsys.c b/sys/src/cmd/rio/fsys.c
index 1676ef1f9..fe4d186e4 100644
--- a/sys/src/cmd/rio/fsys.c
+++ b/sys/src/cmd/rio/fsys.c
@@ -194,8 +194,9 @@ filsysproc(void *arg)
x = nil;
for(;;){
buf = emalloc(messagesize+UTFmax); /* UTFmax for appending partial rune in xfidwrite */
- n = read9pmsg(fs->sfd, buf, messagesize);
- if(n <= 0){
+ while((n = read9pmsg(fs->sfd, buf, messagesize)) == 0)
+ yield();
+ if(n < 0){
yield(); /* if threadexitsall'ing, will not return */
fprint(2, "rio: %d: read9pmsg: %d %r\n", getpid(), n);
errorshouldabort = 0;
diff --git a/sys/src/cmd/vac/vacfs.c b/sys/src/cmd/vac/vacfs.c
index 164bf8060..cc1a5ca06 100644
--- a/sys/src/cmd/vac/vacfs.c
+++ b/sys/src/cmd/vac/vacfs.c
@@ -706,8 +706,10 @@ io(void)
for(;;){
n = read9pmsg(mfd[0], mdata, sizeof mdata);
- if(n <= 0)
+ if(n < 0)
break;
+ if(n == 0)
+ continue;
if(convM2Su(mdata, n, &rhdr, dotu) != n)
sysfatal("convM2S conversion error");
diff --git a/sys/src/cmd/vnc/exportfs.c b/sys/src/cmd/vnc/exportfs.c
index a2feb83ae..07e20e477 100644
--- a/sys/src/cmd/vnc/exportfs.c
+++ b/sys/src/cmd/vnc/exportfs.c
@@ -149,8 +149,9 @@ exportproc(Export *fs)
errdepth(ed);
q = smalloc(sizeof(Exq));
- n = read9pmsg(fs->io, q->buf, Maxrpc);
- if(n <= 0 || convM2S(q->buf, n, &q->rpc) != n)
+ while((n = read9pmsg(fs->io, q->buf, Maxrpc)) == 0)
+ ;
+ if(n < 0 || convM2S(q->buf, n, &q->rpc) != n)
goto bad;
if(exdebug)