bin/99873: mountd reload fails
Danny Braniss
danny at cs.huji.ac.il
Fri Jul 7 08:20:15 UTC 2006
>Number: 99873
>Category: bin
>Synopsis: mountd reload fails
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Jul 07 08:20:13 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Danny Braniss
>Release: FreeBSD 6.1-STABLE
>Organization:
>Environment:
System: FreeBSD bsd 6.1-STABLE FreeBSD 6.1-STABLE #6: Fri Jun 16 12:50:38 IDT 2006 danny at bsd:/r+d/obj/bsd/r+d/6.1/src/sys/HUJI amd64
>Description:
/usr/src/usr.sbin/mountd/mountd.c
in get_exportlist():
The loop to un-export all exported file systems does not
increment the fsp pointer when continue is called, thus
not realy unexporting all files, causing problems when
updating. This uncovered another problem, with the very
first if(..) in the loop.
>How-To-Repeat:
the problem appears when you have a nfs mounted file system
preferably before local file systems, hence on a nfs-root
it's immediately noticed.
type '/etc/rc.d/mountd reload' and see your local exported
files/filesystems unexported.
>Fix:
one suggestion:
--- /r+d/6.1/src/usr.sbin/mountd/mountd.c Fri Jun 16 09:42:42 2006
+++ ./mountd.c Fri Jul 7 11:03:40 2006
@@ -1012,7 +1012,7 @@
build_iovec(&iov, &iovlen, "export", &export, sizeof(export));
}
- for (i = 0; i < num; i++) {
+ for (i = 0; i < num; i++, fsp++) {
if (getvfsbyname(fsp->f_fstypename, &vfc) != 0) {
syslog(LOG_ERR, "getvfsbyname() failed for %s",
fsp->f_fstypename);
@@ -1049,7 +1049,6 @@
"can't delete exports for %s: %m",
fsp->f_mntonname);
}
- fsp++;
}
if (iov != NULL) {
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list