Hello All,
i've been looking at ``mount_xxx'' code and have noticed "strange" thing.
all ``mount_xxx'' utilities have common part of code, like
error = getvfsbyname("xxx", &vfc);
if (error && vfsisloadable("xxx")) {
if (vfsload("xxx"))
err(EX_OSERR, "vfsload(xxx)");
endvfsent(); /* flush cache */
error = getvfsbyname("xxx", &vfc);
}
if (error)
errx(1, "xxx filesystem is not available");
if (mount(vfc.vfc_name, dir, mntflags, &args) < 0)
err(1, NULL);
1) what is the reason for this? why can't move this code to ``mount''?
2) what is the purpose of the following code in
``/sys/kern/vfs_syscalls.c''?
...
for (vfsp = vfsconf; vfsp; vfsp = vfsp->vfc_next)
if (!strcmp(vfsp->vfc_name, fstypename))
break;
if (vfsp == NULL) {
linker_file_t lf;
/* Refuse to load modules if securelevel raised */
if (securelevel > 0) {
vput(vp);
return EPERM;
}
/* Only load modules for root (very important!) */
if ((error = suser(p)) != 0) {
vput(vp);
return error;
}
error = linker_load_file(fstypename, &lf);
if (error || lf == NULL) {
vput(vp);
if (lf == NULL)
error = ENODEV;
return error;
}
...
from my understanding this is done to load FS module.
or did i miss someting?
thanks,
emax
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message