From: Amavect <amavect@gmail.com>
To: 9front@9front.org
Subject: [9front] Re: exportfs: fix debug logging
Date: Fri, 13 Aug 2021 00:16:48 -0500 [thread overview]
Message-ID: <20210813001648.26e1e8aa@spruce.localdomain> (raw)
In-Reply-To: <20210812201155.4d837b73@spruce.localdomain>
[-- Attachment #1: Type: text/plain, Size: 47 bytes --]
How about I use git/export...
Thanks,
Amavect
[-- Attachment #2.1: Type: text/plain, Size: 346 bytes --]
from postmaster@1ess:
The following attachment had content that we can't
prove to be harmless. To avoid possible automatic
execution, we changed the content headers.
The original header was:
Content-Type: application/octet-stream; name=exportfs.1.git
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=exportfs.1.git
[-- Attachment #2.2: exportfs.1.git.suspect --]
[-- Type: application/octet-stream, Size: 646 bytes --]
From: amavect <amavect@gmail.com>
Date: Fri, 13 Aug 2021 04:35:14 +0000
Subject: [PATCH] exportfs: exit if debug log couldn't be created
exportfs -d silently continues if the user did
not have permission to create the debug log.
Let's call fatal instead.
---
diff 2af46e406bbd443ae10025777247798a685afc3c 33731ec974a7291fc4b21a8f984bfee058849e3f
--- a/sys/src/cmd/exportfs/exportfs.c Thu Aug 12 20:27:17 2021
+++ b/sys/src/cmd/exportfs/exportfs.c Thu Aug 12 23:35:14 2021
@@ -84,6 +84,8 @@
if(dbg) {
n = create(dbfile, OWRITE|OTRUNC, 0666);
+ if(n < 0)
+ fatal("cannot create debug log: %r", dbfile);
dup(n, DFD);
close(n);
}
[-- Attachment #3.1: Type: text/plain, Size: 346 bytes --]
from postmaster@1ess:
The following attachment had content that we can't
prove to be harmless. To avoid possible automatic
execution, we changed the content headers.
The original header was:
Content-Type: application/octet-stream; name=exportfs.2.git
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=exportfs.2.git
[-- Attachment #3.2: exportfs.2.git.suspect --]
[-- Type: application/octet-stream, Size: 9163 bytes --]
From: amavect <amavect@gmail.com>
Date: Fri, 13 Aug 2021 04:48:26 +0000
Subject: [PATCH] exportfs: replace DFD macro with variable
exportfs uses a macro with a magic fd number for logging.
It then dups the fd from create() over it.
Let's use the fd directly from create() instead.
Lowercase to match variable style.
---
diff 33731ec974a7291fc4b21a8f984bfee058849e3f b5f7a8b0b47d59797b3cb06cf97a2b8e17120949
--- a/sys/src/cmd/exportfs/exportfs.c Thu Aug 12 23:35:14 2021
+++ b/sys/src/cmd/exportfs/exportfs.c Thu Aug 12 23:48:26 2021
@@ -19,7 +19,6 @@
main(int argc, char **argv)
{
char *dbfile, *srv, *srvfdfile;
- int n;
dbfile = "/tmp/exportdb";
srv = nil;
@@ -83,14 +82,12 @@
exclusions();
if(dbg) {
- n = create(dbfile, OWRITE|OTRUNC, 0666);
- if(n < 0)
+ dfd = create(dbfile, OWRITE|OTRUNC, 0666);
+ if(dfd < 0)
fatal("cannot create debug log: %r", dbfile);
- dup(n, DFD);
- close(n);
}
- DEBUG(DFD, "exportfs: started\n");
+ DEBUG(dfd, "exportfs: started\n");
rfork(RFNOTEG|RFREND);
@@ -108,13 +105,13 @@
char ebuf[ERRMAX];
ebuf[0] = '\0';
errstr(ebuf, sizeof ebuf);
- DEBUG(DFD, "chdir(\"%s\"): %s\n", srv, ebuf);
+ DEBUG(dfd, "chdir(\"%s\"): %s\n", srv, ebuf);
mounterror(ebuf);
}
- DEBUG(DFD, "invoked as server for %s", srv);
+ DEBUG(dfd, "invoked as server for %s", srv);
}
- DEBUG(DFD, "\niniting root\n");
+ DEBUG(dfd, "\niniting root\n");
initroot();
io();
}
--- a/sys/src/cmd/exportfs/exportfs.h Thu Aug 12 23:35:14 2021
+++ b/sys/src/cmd/exportfs/exportfs.h Thu Aug 12 23:48:26 2021
@@ -3,7 +3,6 @@
*/
#define DEBUG if(!dbg){}else fprint
-#define DFD 9
#define fidhash(s) fhash[s%FHASHSIZE]
typedef struct Fsrpc Fsrpc;
@@ -86,6 +85,7 @@
char Enopsmt[];
Extern int dbg;
+Extern int dfd;
Extern File *root;
Extern File *psmpt;
Extern Fid **fhash;
--- a/sys/src/cmd/exportfs/exportsrv.c Thu Aug 12 23:35:14 2021
+++ b/sys/src/cmd/exportfs/exportsrv.c Thu Aug 12 23:48:26 2021
@@ -65,7 +65,7 @@
w = m->busy;
if(w != nil && w->work.tag == t->work.oldtag) {
w->flushtag = t->work.tag;
- DEBUG(DFD, "\tset flushtag %d\n", t->work.tag);
+ DEBUG(dfd, "\tset flushtag %d\n", t->work.tag);
postnote(PNPROC, m->pid, "flush");
unlock(m);
putsbuf(t);
@@ -75,7 +75,7 @@
}
reply(&t->work, &rhdr, 0);
- DEBUG(DFD, "\tflush reply\n");
+ DEBUG(dfd, "\tflush reply\n");
putsbuf(t);
}
@@ -359,7 +359,7 @@
}
path = makepath(f->f, "");
- DEBUG(DFD, "\tremove: %s\n", path);
+ DEBUG(dfd, "\tremove: %s\n", path);
if(remove(path) < 0) {
free(path);
errstr(err, sizeof err);
@@ -518,7 +518,7 @@
if(p == nil) /* Swept */
break;
- DEBUG(DFD, "\tslave: %d %F\n", m->pid, &p->work);
+ DEBUG(dfd, "\tslave: %d %F\n", m->pid, &p->work);
if(p->flushtag != NOTAG)
goto flushme;
@@ -629,7 +629,7 @@
}
path = makepath(f->f, "");
- DEBUG(DFD, "\topen: %s %d\n", path, work->mode);
+ DEBUG(dfd, "\topen: %s %d\n", path, work->mode);
f->fid = open(path, work->mode);
free(path);
if(f->fid < 0 || (d = dirfstat(f->fid)) == nil) {
@@ -646,7 +646,7 @@
goto Error;
}
- DEBUG(DFD, "\topen: fd %d\n", f->fid);
+ DEBUG(dfd, "\topen: fd %d\n", f->fid);
f->mode = work->mode;
f->offset = 0;
rhdr.iounit = getiounit(f->fid);
@@ -688,7 +688,7 @@
reply(work, &rhdr, err);
return;
}
- DEBUG(DFD, "\tread: fd=%d %d bytes\n", f->fid, r);
+ DEBUG(dfd, "\tread: fd=%d %d bytes\n", f->fid, r);
rhdr.data = data;
rhdr.count = r;
@@ -720,7 +720,7 @@
return;
}
- DEBUG(DFD, "\twrite: %d bytes fd=%d\n", n, f->fid);
+ DEBUG(dfd, "\twrite: %d bytes fd=%d\n", n, f->fid);
rhdr.count = n;
reply(work, &rhdr, 0);
--- a/sys/src/cmd/exportfs/io.c Thu Aug 12 23:35:14 2021
+++ b/sys/src/cmd/exportfs/io.c Thu Aug 12 23:48:26 2021
@@ -49,7 +49,7 @@
if(convM2S(r->buf, n, &r->work) != n)
fatal("convM2S format error");
- DEBUG(DFD, "%F\n", &r->work);
+ DEBUG(dfd, "%F\n", &r->work);
(fcalls[r->work.type])(r);
}
}
@@ -69,7 +69,7 @@
else
t->type = r->type + 1;
- DEBUG(DFD, "\t%F\n", t);
+ DEBUG(dfd, "\t%F\n", t);
data = malloc(messagesize); /* not mallocz; no need to clear */
if(data == nil)
@@ -224,7 +224,7 @@
while(--f->ref == 0){
freecnt++;
- DEBUG(DFD, "free %s\n", f->name);
+ DEBUG(dfd, "free %s\n", f->name);
/* delete from parent */
parent = f->parent;
if(parent->child == f)
@@ -250,7 +250,7 @@
char *path;
File *f;
- DEBUG(DFD, "\tfile: 0x%p %s name %s\n", parent, parent->name, name);
+ DEBUG(dfd, "\tfile: 0x%p %s name %s\n", parent, parent->name, name);
path = makepath(parent, name);
if(patternfile != nil && excludefile(path)){
@@ -429,17 +429,17 @@
}
path = d->qid.path;
while(qidexists(path)){
- DEBUG(DFD, "collision on %s\n", d->name);
+ DEBUG(dfd, "collision on %s\n", d->name);
/* collision: find a new one */
ncollision++;
path &= QIDPATH;
++newqid;
if(newqid >= (1<<16)){
- DEBUG(DFD, "collision wraparound\n");
+ DEBUG(dfd, "collision wraparound\n");
newqid = 1;
}
path |= newqid<<48;
- DEBUG(DFD, "assign qid %.16llux\n", path);
+ DEBUG(dfd, "assign qid %.16llux\n", path);
}
qidcnt++;
q = emallocz(sizeof(Qidtab));
@@ -472,7 +472,7 @@
postnote(PNPROC, m->pid, "kill");
if(s != nil) {
- DEBUG(DFD, "%s\n", buf);
+ DEBUG(dfd, "%s\n", buf);
sysfatal("%s", buf); /* caution: buf could contain '%' */
} else
exits(nil);
--- a/sys/src/cmd/exportfs/oexportfs.c Thu Aug 12 23:35:14 2021
+++ b/sys/src/cmd/exportfs/oexportfs.c Thu Aug 12 23:48:26 2021
@@ -59,7 +59,7 @@
strecpy(strrchr(addr, '!'), addr+sizeof(addr), s);
}
- DEBUG(DFD, "filter: %s\n", addr);
+ DEBUG(dfd, "filter: %s\n", addr);
snprint(buf, sizeof(buf), "%s", cmd);
argc = tokenize(buf, argv, nelem(argv)-3);
@@ -256,7 +256,7 @@
if(dbg) {
n = create(dbfile, OWRITE|OTRUNC, 0666);
- dup(n, DFD);
+ dup(n, dfd);
close(n);
}
@@ -265,7 +265,7 @@
usage();
}
- DEBUG(DFD, "%s: started\n", argv0);
+ DEBUG(dfd, "%s: started\n", argv0);
rfork(RFNOTEG|RFREND);
@@ -289,10 +289,10 @@
if(chdir(srv) < 0) {
ebuf[0] = '\0';
errstr(ebuf, sizeof ebuf);
- DEBUG(DFD, "chdir(\"%s\"): %s\n", srv, ebuf);
+ DEBUG(dfd, "chdir(\"%s\"): %s\n", srv, ebuf);
mounterror(ebuf);
}
- DEBUG(DFD, "invoked as server for %s", srv);
+ DEBUG(dfd, "invoked as server for %s", srv);
strncpy(buf, srv, sizeof buf);
}
else {
@@ -301,22 +301,22 @@
if(n < 0) {
errstr(buf, sizeof buf);
fprint(0, "read(0): %s\n", buf);
- DEBUG(DFD, "read(0): %s\n", buf);
+ DEBUG(dfd, "read(0): %s\n", buf);
exits(buf);
}
buf[n] = 0;
if(chdir(buf) < 0) {
errstr(ebuf, sizeof ebuf);
fprint(0, "chdir(%d:\"%s\"): %s\n", n, buf, ebuf);
- DEBUG(DFD, "chdir(%d:\"%s\"): %s\n", n, buf, ebuf);
+ DEBUG(dfd, "chdir(%d:\"%s\"): %s\n", n, buf, ebuf);
exits(ebuf);
}
}
- DEBUG(DFD, "\niniting root\n");
+ DEBUG(dfd, "\niniting root\n");
initroot();
- DEBUG(DFD, "%s: %s\n", argv0, buf);
+ DEBUG(dfd, "%s: %s\n", argv0, buf);
if(srv == nil && srvfd == -1 && write(0, "OK", 2) != 2)
fatal("open ack write");
@@ -436,7 +436,7 @@
if(convM2S(r->buf, n, &r->work) != n)
fatal("convM2S format error");
- DEBUG(DFD, "%F\n", &r->work);
+ DEBUG(dfd, "%F\n", &r->work);
(fcalls[r->work.type])(r);
}
io();
--- a/sys/src/cmd/exportfs/pattern.c Thu Aug 12 23:35:14 2021
+++ b/sys/src/cmd/exportfs/pattern.c Thu Aug 12 23:48:26 2021
@@ -42,7 +42,7 @@
if(include == nil)
fatal("out of memory");
}
- DEBUG(DFD, "\tinclude %s\n", line+2);
+ DEBUG(dfd, "\tinclude %s\n", line+2);
include[ni] = regcomp(line+2);
include[++ni] = nil;
break;
@@ -53,12 +53,12 @@
if(exclude == nil)
fatal("out of memory");
}
- DEBUG(DFD, "\texclude %s\n", line+2);
+ DEBUG(dfd, "\texclude %s\n", line+2);
exclude[ne] = regcomp(line+2);
exclude[++ne] = nil;
break;
default:
- DEBUG(DFD, "ignoring pattern %s\n", line);
+ DEBUG(dfd, "ignoring pattern %s\n", line);
break;
}
}
@@ -76,16 +76,16 @@
else
p = path+1;
- DEBUG(DFD, "checking %s\n", p);
+ DEBUG(dfd, "checking %s\n", p);
for(re = include; *re != nil; re++){
if(regexec(*re, p, nil, 0) != 1){
- DEBUG(DFD, "excluded+ %s\n", p);
+ DEBUG(dfd, "excluded+ %s\n", p);
return -1;
}
}
for(re = exclude; *re != nil; re++){
if(regexec(*re, p, nil, 0) == 1){
- DEBUG(DFD, "excluded- %s\n", p);
+ DEBUG(dfd, "excluded- %s\n", p);
return -1;
}
}
@@ -98,7 +98,7 @@
int r = 0, m;
Dir *d;
- DEBUG(DFD, "\tpreaddir n=%d wo=%lld fo=%lld\n", n, offset, f->offset);
+ DEBUG(dfd, "\tpreaddir n=%d wo=%lld fo=%lld\n", n, offset, f->offset);
if(offset == 0 && f->offset != 0){
if(seek(f->fid, 0, 0) != 0)
return -1;
@@ -128,9 +128,9 @@
free(p);
}
m = convD2M(d, data, n);
- DEBUG(DFD, "\t\tconvD2M %d\n", m);
+ DEBUG(dfd, "\t\tconvD2M %d\n", m);
if(m <= BIT16SZ){
- DEBUG(DFD, "\t\t\tneeded %d\n", GBIT16(data));
+ DEBUG(dfd, "\t\t\tneeded %d\n", GBIT16(data));
/* not enough room for full entry; leave for next time */
f->cdir--;
return r;
next prev parent reply other threads:[~2021-08-13 6:09 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-13 1:11 [9front] " Amavect
2021-08-13 5:16 ` Amavect [this message]
2021-08-13 19:11 ` ori
2021-08-14 22:04 ` Amavect
2021-08-15 16:29 ` kvik
2021-08-16 4:40 ` unobe
2021-08-16 5:20 ` ori
2021-08-16 16:49 ` unobe
2021-08-16 13:55 ` kvik
2021-08-16 16:50 ` unobe
2021-08-16 17:56 ` Amavect
2021-08-16 19:32 ` ori
2021-08-16 22:48 ` ori
2021-08-18 14:24 ` cinap_lenrek
2021-08-18 14:49 ` k m
2021-08-16 20:19 ` Steve Simon
2021-08-16 23:26 ` ori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210813001648.26e1e8aa@spruce.localdomain \
--to=amavect@gmail.com \
--cc=9front@9front.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).