I believe that it is used to dynamic load filesystem modules. Please read
the following pages to understand what is a kernel module:
http://thc.inferno.tusculum.edu/files/thc/bsdkern.html
-Zhihui
On Tue, 30 May 2000, Yevmenkin, Maksim N, CSCIO wrote:
> 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
>
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message