allow the attach name to be specified in srv(4).
this is helpful when writing rules for 9fs that need
an attachpoint. the standard way of doing this
case aggle
srv $nflag -q tcp!
aggle.example.org aggle &&
mount $nflag /srv/aggle /n/aggle aggle
suffers the problem that if /srv/aggle becomes stale, it is
not retried. with this change this rule can be rewritten
like so
case aggle
srv $nflag -q tcp!
aggle.example.org aggle /n/aggle aggle
and it is now correct, even if /srv/aggle becomes stale.
Reference: /n/sources/patch/srvaname
Date: Tue Apr 1 04:05:12 CES 2014
Signed-off-by:
quan...@quanstro.net
--- /sys/src/cmd/srv.c Tue Apr 1 04:01:35 2014
+++ /sys/src/cmd/srv.c Tue Apr 1 04:01:34 2014
@@ -15,7 +15,7 @@
void
usage(void)
{
- fprint(2, "usage: %s [-abcCm] [net!]host [srvname [mtpt]]\n", argv0);
+ fprint(2, "usage: %s [-abcCm] [net!]host [srvname [mtpt [attachpt]]]\n", argv0);
fprint(2, " or %s -e [-abcCm] command [srvname [mtpt]]\n", argv0);
exits("usage");
@@ -65,7 +65,7 @@
main(int argc, char *argv[])
{
int fd, doexec;
- char *srv, *mtpt;
+ char *srv, *mtpt, *aname;
char dir[1024];
char err[ERRMAX];
char *p, *p2;
@@ -128,6 +128,8 @@
usage();
switch(argc){
+ default:
+ usage();
case 1: /* calculate srv and mtpt from address */
p = strrchr(argv[0], '/');
p = p ? p+1 : argv[0];
@@ -135,6 +137,7 @@
p2 = strchr(p, '!');
p2 = p2 ? p2+1 : p;
mtpt = smprint("/n/%s", p2);
+ aname = smprint("");
break;
case 2: /* calculate mtpt from address, srv given */
srv = smprint("/srv/%s", argv[1]);
@@ -143,16 +146,22 @@
p2 = strchr(p, '!');
p2 = p2 ? p2+1 : p;
mtpt = smprint("/n/%s", p2);
+ aname = smprint("");
break;
case 3: /* srv and mtpt given */
domount = 1;
reallymount = 1;
srv = smprint("/srv/%s", argv[1]);
mtpt = smprint("%s", argv[2]);
+ aname = smprint("");
+ break;
+ case 4:
+ domount = 1;
+ reallymount = 1;
+ srv = smprint("/srv/%s", argv[1]);
+ mtpt = smprint("%s", argv[2]);
+ aname = smprint("%s", argv[3]);
break;
- default:
- srv = mtpt = nil;
- usage();
}
try = 0;
@@ -197,8 +206,8 @@
if(domount == 0 || reallymount == 0)
exits(0);
- if((!doauth && mount(fd, -1, mtpt, mountflag, "") < 0)
- || (doauth && amount(fd, mtpt, mountflag, "") < 0)){
+ if((!doauth && mount(fd, -1, mtpt, mountflag, aname) < 0)
+ || (doauth && amount(fd, mtpt, mountflag, aname) < 0)){
err[0] = 0;
errstr(err, sizeof err);
if(strstr(err, "Hangup") || strstr(err, "hungup") || strstr(err, "timed out")){
--- /sys/man/4/srv Tue Apr 1 04:01:38 2014
+++ /sys/man/4/srv Tue Apr 1 04:01:37 2014
@@ -36,7 +36,9 @@
.I srvname
[
.I mtpt
-] ]
+[
+.I aname
+] ] ]
.PP
.B 9fs
.RI [ net !] system
@@ -119,6 +121,8 @@
.I mount
(see
.IR bind (1)).
+.I Aname
+selects an file tree on the server other than the default.
The
.B e
option causes