diff options
author | iedowse <iedowse@FreeBSD.org> | 2001-05-29 17:46:52 +0000 |
---|---|---|
committer | iedowse <iedowse@FreeBSD.org> | 2001-05-29 17:46:52 +0000 |
commit | fdb42dd4bf429f38a9ffc635d5c04d380f354ee6 (patch) | |
tree | dbc9f4175b63c19230cbb7323800b5d9bd931cb3 | |
parent | bd38254e2edd7d3cf7daf140496f3e44ff42a3e7 (diff) | |
download | FreeBSD-src-fdb42dd4bf429f38a9ffc635d5c04d380f354ee6.zip FreeBSD-src-fdb42dd4bf429f38a9ffc635d5c04d380f354ee6.tar.gz |
Since the netexport struct was centralised to 'struct mount',
attempting to remove nonexistant exports with MNT_DELEXPORT returns
an error; before this change it always succeeded. This caused
mountd(8) to log "can't delete exports for /whatever" warnings.
Change the error code from EINVAL to a more specific ENOENT, and
make mountd ignore this error when deleting the export list. I
could have just restored the previous behaviour of returning success,
but I think an error return is a useful diagnostic.
Reviewed by: phk
-rw-r--r-- | sbin/mountd/mountd.c | 7 | ||||
-rw-r--r-- | sys/kern/vfs_export.c | 2 | ||||
-rw-r--r-- | usr.sbin/mountd/mountd.c | 7 |
3 files changed, 9 insertions, 7 deletions
diff --git a/sbin/mountd/mountd.c b/sbin/mountd/mountd.c index 0c08f40..35ea7da 100644 --- a/sbin/mountd/mountd.c +++ b/sbin/mountd/mountd.c @@ -950,9 +950,10 @@ get_exportlist() targs.ua.fspec = NULL; targs.ua.export.ex_flags = MNT_DELEXPORT; if (mount(fsp->f_fstypename, fsp->f_mntonname, - fsp->f_flags | MNT_UPDATE, - (caddr_t)&targs) < 0) - syslog(LOG_ERR, "can't delete exports for %s", + fsp->f_flags | MNT_UPDATE, (caddr_t)&targs) < 0 && + errno != ENOENT) + syslog(LOG_ERR, + "can't delete exports for %s: %m", fsp->f_mntonname); } fsp++; diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c index 64677cb..53e67fa 100644 --- a/sys/kern/vfs_export.c +++ b/sys/kern/vfs_export.c @@ -207,7 +207,7 @@ vfs_export(mp, argp) nep = mp->mnt_export; if (argp->ex_flags & MNT_DELEXPORT) { if (nep == NULL) - return (EINVAL); + return (ENOENT); if (mp->mnt_flag & MNT_EXPUBLIC) { vfs_setpublicfs(NULL, NULL, NULL); mp->mnt_flag &= ~MNT_EXPUBLIC; diff --git a/usr.sbin/mountd/mountd.c b/usr.sbin/mountd/mountd.c index 0c08f40..35ea7da 100644 --- a/usr.sbin/mountd/mountd.c +++ b/usr.sbin/mountd/mountd.c @@ -950,9 +950,10 @@ get_exportlist() targs.ua.fspec = NULL; targs.ua.export.ex_flags = MNT_DELEXPORT; if (mount(fsp->f_fstypename, fsp->f_mntonname, - fsp->f_flags | MNT_UPDATE, - (caddr_t)&targs) < 0) - syslog(LOG_ERR, "can't delete exports for %s", + fsp->f_flags | MNT_UPDATE, (caddr_t)&targs) < 0 && + errno != ENOENT) + syslog(LOG_ERR, + "can't delete exports for %s: %m", fsp->f_mntonname); } fsp++; |