From f99b9cae6a3dc5775a83b264d6041be8d5d416d6 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sun, 8 Mar 2020 18:23:07 +0100 Subject: devshr: unmount service on #σc/share/mount removal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit when the control mountpoint side gets removed, close mount channel immediately. this is usefull for implementing automatic cleanup with ORCLOSE create mode. --- sys/src/9/port/devshr.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/src/9/port/devshr.c b/sys/src/9/port/devshr.c index bc7677210..96e319221 100644 --- a/sys/src/9/port/devshr.c +++ b/sys/src/9/port/devshr.c @@ -554,6 +554,7 @@ shrremove(Chan *c) Sch *sch; Mpt *mpt; Mhead *h; + Chan *bc; sch = tosch(c); if(waserror()){ @@ -593,6 +594,7 @@ shrremove(Chan *c) qunlock(&shrslk); break; case Qcmpt: + bc = nil; mpt = sch->mpt; m = &mpt->m; h = &shr->umh; @@ -601,10 +603,14 @@ shrremove(Chan *c) if(*ml == m){ *ml = m->next; m->next = nil; + bc = m->to; + m->to = nil; putmpt(mpt); break; } wunlock(&h->lock); + if(bc != nil) + cclose(bc); break; } poperror(); -- cgit v1.2.3 From 28f3a3aad8d2d73010f1c81080e92f71903f4556 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sun, 8 Mar 2020 20:53:30 +0100 Subject: boorc, nusbrc: fix wrong redirections after & the rc & operator changes stdin to /dev/null, so we have to do the <[0=1] inside the {} this never showed up as an issue because many fileservers just read 9p messages from standard output. --- sys/src/9/boot/local.rc | 2 +- sys/src/9/boot/nusbrc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/src/9/boot/local.rc b/sys/src/9/boot/local.rc index c99981042..fcfe5388b 100755 --- a/sys/src/9/boot/local.rc +++ b/sys/src/9/boot/local.rc @@ -45,7 +45,7 @@ fn configlocal{ } fn bootfs{ - {$1 -s -f $*(2-) &} <[0=1] | echo 0 >/srv/boot + {$1 -s -f $*(2-) <[0=1] &} | echo 0 >/srv/boot } fn connectlocal{ diff --git a/sys/src/9/boot/nusbrc b/sys/src/9/boot/nusbrc index be7629c26..bf3c311e0 100755 --- a/sys/src/9/boot/nusbrc +++ b/sys/src/9/boot/nusbrc @@ -45,7 +45,7 @@ if(! nusb/usbd) diskparts $dev for(part in $dev/dos* $dev/9fat* $dev/data) if(test -r $part && ~ `{fstype $part} dos) { mkdir -m 0700 '#σc/'^$dev || exit - {dossrv -s -f $part &} <[0=1] | + {dossrv -s -f $part <[0=1] &} | echo 0 >'#σc/'^$dev/dos exit } -- cgit v1.2.3