From daea032cda793d2290ff3c68fd2aac6439f4bedd Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 17 Mar 1993 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1993-03-17 --- port/sysfile.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/port/sysfile.c b/port/sysfile.c index 2d9232ffea533bb385c36e77f5a9994d4072011f..67a7337e921c908ea04edcb4307d7522af2d5ae2 100644 --- a/port/sysfile.c +++ b/port/sysfile.c @@ -232,24 +232,26 @@ unionread(Chan *c, void *va, long n) Pgrp *pg; pg = u->p->pgrp; - rlock(&pg->ns); + qlock(&pg->nsh); for(;;) { if(waserror()) { - runlock(&pg->ns); + qunlock(&pg->nsh); nexterror(); } - nc = clone(c->mnt->to, 0); + nc = clone(c->mnt->cmnt, 0); poperror(); if(c->mountid != c->mnt->mountid) { - pprint("unionread: changed underfoot?\n"); - runlock(&pg->ns); + pprint("unionread: changed underfoot\n"); + qunlock(&pg->nsh); close(nc); return 0; } - /* Error causes component of union to be skipped */ + /* + * Error causes component of union to be skipped + */ if(waserror()) { close(nc); goto next; @@ -258,24 +260,26 @@ unionread(Chan *c, void *va, long n) nc = (*devtab[nc->type].open)(nc, OREAD); nc->offset = c->offset; nr = (*devtab[nc->type].read)(nc, va, n, nc->offset); - /* devdirread e.g. changes it */ + /* + * devdirread e.g. changes it + */ c->offset = nc->offset; poperror(); close(nc); if(nr > 0) { - runlock(&pg->ns); + qunlock(&pg->nsh); return nr; } /* Advance to next element */ next: - c->mnt = c->mnt->next; + c->mnt = c->mnt->mount; if(c->mnt == 0) break; c->mountid = c->mnt->mountid; c->offset = 0; } - runlock(&pg->ns); + qunlock(&pg->nsh); return 0; }