ref: 345a5b55e4275c8282150f8e635804e0fbe0339a
parent: 26945e0f33900835e4749f1205c733207f9e9731
author: kvik <kvik@a-b.xyz>
date: Fri Jun 4 06:53:40 EDT 2021
Don't sysfatal on bind error
--- a/unionfs.c
+++ b/unionfs.c
@@ -195,25 +195,22 @@
walk(path, branch[i].root, s_to_c(f->path));
if((d = dirstat(s_to_c(path))) != nil){
if(d->mode & DMDIR)
- if(bind(s_to_c(path), f->mtpt->path, MAFTER) == -1)
- sysfatal("bind: %r");
+ bind(s_to_c(path), f->mtpt->path, MAFTER);
free(d);
}
}
s_free(path);
- if((f->fd = open(f->mtpt->path, T->mode)) < 0){
- responderror(r);
- goto done;
- }
- }else{
- if((f->fd = open(s_to_c(f->realpath), T->mode)) < 0){
- responderror(r);
- goto done;
- }
- }
+ if((f->fd = open(f->mtpt->path, T->mode)) < 0)
+ goto error;
+ }else
+ if((f->fd = open(s_to_c(f->realpath), T->mode)) < 0)
+ goto error;
R->iounit = iounit(f->fd);
respond(r, nil);
-done:
+ srvacquire(&thefs);
+ return;
+error:
+ responderror(r);
srvacquire(&thefs);
}