Subject: kern/2757: VNODEPAGER not really optional
To: None <gnats-bugs@gnats.netbsd.org>
From: Erik Bertelsen <erik@aarhus1.uni-c.dk>
List: netbsd-bugs
Date: 09/15/1996 13:24:07
>Number:         2757
>Category:       kern
>Synopsis:       VNODEPAGER is not really optional
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people (Kernel Bug People)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Sep 15 21:50:05 1996
>Last-Modified:
>Originator:     Erik Bertelsen
>Organization:
UNI-C
>Release:        1.2
>Environment:
	
System: NetBSD aarhus1.uni-c.dk 1.2 NetBSD 1.2 (AARHUS1) #7: Thu Sep 12 12:36:10 MET DST 1996 erik@aarhus1.uni-c.dk:/usr/src/sys/arch/pmax/compile/AARHUS1 pmax


>Description:
In an attempt to minimize the size of the NetBSD kernel, I tried
to remove the option VNODEPAGER from the kernel configuration file.

This failed miserably as documented by the output below.

It seems that VNODEPAGER is tested in just one kernel source file,
i.e. vm/vm_pager.c, but several other files contain reference to
the vnode related functions.

I raised this discussion on tech-kern, and the conclusion (in as
much as there was a conclusion) was that a NetBSD kernel needs
the functionality, and that VNODEPAGER is not an optional option.

In order to make the kernel configuration files as understandable
as possibly, they should not let some options seem to be optional,
when reality is that this is not the case.

Note that this PR is related specifically to VNODEPAGER. DEVPAGER
can in fact be omitted and the resulting kernel can link and boot.

>How-To-Repeat:
	Try to build a NetBSD kernel without options VNODEPAGER in
the configuration file.
>Fix:
The problem (and this PR) can be handled in several ways:

1. Realize that VNODEPAGER is not optional, remove the test for
it in vm_pager.c and remove the option in all kernel configuration
files. Then close this PR.

2. Decide that VNODEPAGER is actually optional, fix the kernel
sources to compile without this option. Then close this PR.

3. Decide that VNODEPAGER is meant to be optional, but there are
not currently resources to make the changes needed to implement
the second alternative. Suspend this PR.

Messages:
ld -N -Ttext 80030000 -e start -x -o netbsd ${SYSTEM_OBJ} vers.o
vfs_subr.o: In function `vfs_shutdown':
../../../../kern/vfs_subr.c(.text+0x2664): undefined reference to
`vnode_pager_umount'
vfs_syscalls.o: In function `dounmount':
../../../../kern/vfs_syscalls.c(.text+0x910): undefined reference to
`vnode_pager_umount'
vfs_syscalls.o: In function `sys_unlink':
../../../../kern/vfs_syscalls.c(.text+0x2264): undefined reference to
`vnode_pager_uncache'
vfs_vnops.o: In function `vn_writechk':
../../../../kern/vfs_vnops.c(.text+0x590): undefined reference to
`vnode_pager_uncache'
nfs_bio.o: In function `nfs_write':
../../../../nfs/nfs_bio.c(.text+0xfd8): undefined reference to
`vnode_pager_uncache'
../../../../nfs/nfs_bio.c(.text+0x128c): undefined reference to
`vnode_pager_setsize'
nfs_subs.o: In function `nfs_loadattrcache':
../../../../nfs/nfs_subs.c(.text+0x2690): undefined reference to
`vnode_pager_setsize'
nfs_subs.o: In function `nfs_getattrcache':
../../../../nfs/nfs_subs.c(.text+0x2938): undefined reference to
`vnode_pager_setsize'
nfs_vnops.o: In function `nfs_open':
../../../../nfs/nfs_vnops.c(.text+0x824): undefined reference to
`vnode_pager_uncache'
../../../../nfs/nfs_vnops.c(.text+0x87c): undefined reference to
`vnode_pager_uncache'
../../../../nfs/nfs_vnops.c(.text+0x9b4): undefined reference to
`vnode_pager_uncache'
nfs_vnops.o: In function `nfs_setattr':
../../../../nfs/nfs_vnops.c(.text+0x11d4): undefined reference to
`vnode_pager_setsize'
../../../../nfs/nfs_vnops.c(.text+0x1290): undefined reference to
`vnode_pager_setsize'
ffs_alloc.o: In function `ffs_realloccg':
../../../../ufs/ffs/ffs_alloc.c(.text+0x4d4): undefined reference to
`vnode_pager_uncache'
ffs_balloc.o: In function `ffs_balloc':
../../../../ufs/ffs/ffs_balloc.c(.text+0x1b8): undefined reference to
`vnode_pager_setsize'
ffs_inode.o: In function `ffs_truncate':
../../../../ufs/ffs/ffs_inode.c(.text+0x468): undefined reference to
`vnode_pager_setsize'
../../../../ufs/ffs/ffs_inode.c(.text+0x59c): undefined reference to
`vnode_pager_uncache'
../../../../ufs/ffs/ffs_inode.c(.text+0x75c): undefined reference to
`vnode_pager_uncache'
ffs_vnops.o: In function `ffs_write':
../../../../ufs/ufs/ufs_readwrite.c(.text+0x770): undefined reference to
`vnode_pager_setsize'
../../../../ufs/ufs/ufs_readwrite.c(.text+0x778): undefined reference to
`vnode_pager_uncache'
ufs_vnops.o: In function `ufs_chmod':
../../../../ufs/ufs/ufs_vnops.c(.text+0x984): undefined reference to
`vnode_pager_uncache'





>Audit-Trail:
>Unformatted: