Commit Diff


commit - 70584625ae19b622a1dfe73181f2b0a083fea351
commit + 1dc6e083c15e1580b02d30aa349821fe98fcf989
blob - 970919ad194a8f16a75dfc0a484c07471aae9eb0
blob + fa78a2b5ab91ce1772a683266b906e2c9e88aad1
--- man/man3/plumb.3
+++ man/man3/plumb.3
@@ -1,6 +1,6 @@
 .TH PLUMB 3
 .SH NAME
-eplumb, plumbfree, plumbopen, plumbopenfid, plumbsend, plumbsendtofid, plumbsendtext, plumblookup, plumbpack, plumbpackattr, plumbaddattr, plumbdelattr, plumbrecv, plumbrecvfid, plumbunpack, plumbunpackpartial, plumbunpackattr, Plumbmsg  \- plumb messages
+eplumb, plumbfree, plumbopen, plumbunmount, plumbopenfid, plumbsend, plumbsendtofid, plumbsendtext, plumblookup, plumbpack, plumbpackattr, plumbaddattr, plumbdelattr, plumbrecv, plumbrecvfid, plumbunpack, plumbunpackpartial, plumbunpackattr, Plumbmsg  \- plumb messages
 .SH SYNOPSIS
 .B #include <u.h>
 .br
@@ -14,6 +14,9 @@ eplumb, plumbfree, plumbopen, plumbopenfid, plumbsend,
 int	plumbopen(char *port, int omode)
 .PP
 .B
+int	plumbunmount(void)
+.PP
+.B
 int	plumbsend(int fd, Plumbmsg *m)
 .PP
 .B
@@ -117,6 +120,18 @@ registers, using the given
 receipt of messages from the named
 .IR port .
 .PP
+The library mounts the 
+.IR plumber (4)
+service on demand (using the
+.IR 9pclient (3))
+library and reuses the mount instance for future 
+calls to
+.IR plumbopen .
+.I Plumbunmount
+causes the library to discard its cached mount.
+This can be useful if the plumber service itself has been
+restarted and a client wishes to reconnect.
+.PP
 .I Plumbsend
 formats and writes message
 .I m
blob - cea5ce028d071391c42c345c236acc1eb9fb2139
blob + ec133c821835f90e750720a6baa0dad825defd71
--- src/libplumb/fid.c
+++ src/libplumb/fid.c
@@ -9,6 +9,19 @@ static int pfd = -1;
 static CFid *pfid;
 
 int
+plumbunmount(void)
+{
+	CFsys *fsys;
+
+	if(fsplumb){
+		fsys = fsplumb;
+		fsplumb = nil;
+		fsunmount(fsys);
+	}
+	return 0;
+}
+
+int
 plumbopen(char *name, int omode)
 {
 	if(fsplumb == nil)