# PEFS no longer working after FreeBSD update



## nickednamed (Aug 22, 2017)

Hello all,

I have a problem with PEFS; I updated to FreeBSD RELEASE 11.1 using
`freebsd-update upgrade -r 11.1-RELEASE`, as per the handbook, and PEFS stopped working: 
	
	



```
pefs: cannot find or load "pefs" kernel module
```
Running `kldstat` showed no PEFS module loaded, and `kldload pefs.ko` also failed. Dmesg said: `dmesg | grep pefs = "KLD file pefs.ko - could not finalize loading`

This post said /usr/src may need to be updated (although I thought freebsd-update had handled this), so: `rm -r /usr/src` and then `svnlite checkout svn://[URL='http://svn.freebsd.org/base/release/11.1.0']svn.freebsd.org/base/release/11.1.0[/URL] /usr/src`

I uninstalled PEFS, and tried to rebuild it from ports (quarterly Q3), first with ports-mgmt/synth, then with `make install clean`, but it still wouldn't work. Both have the build message: 
	
	



```
===> Options unchanged
===>  Building for pefs-kmod-2017.02.19
===> sys/modules/pefs (all)
Warning: Object directory not changed from original /usr/ports/sysutils/pefs-kmod/
work/pefs-2017-02-19/sys/modules/pefs
cc -O2 -pipe -fno-strict-aliasing  -Werror -D_KERNEL -DKLD_MODULE -nostdinc  -I/usr/ports/sysutils/pefs-kmod/work/pefs-2017-02-19/sys/modules/pefs/../../ -I. -I/usr/src/sys -fno-common  -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer  -MD  -MF.depend.pefs_vnops.o -MTpefs_vnops.o -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float  -fno-asynchronous-unwind-tables -ffreestanding -fwrapv -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__  -Wmissing-include-dirs -fdiagnostics-show-option  -Wno-unknown-pragmas  -Wno-error-tautological-compare -Wno-error-empty-body  -Wno-error-parentheses-equality -Wno-error-unused-function  -Wno-error-pointer-sign -Wno-error-shift-negative-value -Wno-error-address-of-packed-member  -mno-aes -mno-avx  -std=iso9899:1999 -c /usr/ports/sysutils/pefs-kmod/work/pefs-2017-02-19/sys/modules/pefs/../../fs/pefs/pefs_vnops.c -o pefs_vnops.o
/usr/ports/sysutils/pefs-kmod/work/pefs-2017-02-19/sys/modules/pefs/../../fs/pefs/pefs_vnops.c:2068:7: error:
      implicit declaration of function 'vm_object_cache_is_empty' is invalid in C99
      [-Werror,-Wimplicit-function-declaration]
            !vm_object_cache_is_empty(object)
             ^
/usr/ports/sysutils/pefs-kmod/work/pefs-2017-02-19/sys/modules/pefs/../../fs/pefs/pefs_vnops.c:2068:7: error:
      this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
/usr/ports/sysutils/pefs-kmod/work/pefs-2017-02-19/sys/modules/pefs/../../fs/pefs/pefs_vnops.c:2463:6: error:
      implicit declaration of function 'vm_page_is_cached' is invalid in C99
      [-Werror,-Wimplicit-function-declaration]
        if (vm_page_is_cached(vp->v_object, idx)) {
            ^
/usr/ports/sysutils/pefs-kmod/work/pefs-2017-02-19/sys/modules/pefs/../../fs/pefs/pefs_vnops.c:2463:6: note:
      did you mean 'vm_page_is_valid'?
/usr/src/sys/vm/vm_page.h:496:5: note: 'vm_page_is_valid' declared here
int vm_page_is_valid (vm_page_t, int, int);
    ^
/usr/ports/sysutils/pefs-kmod/work/pefs-2017-02-19/sys/modules/pefs/../../fs/pefs/pefs_vnops.c:2463:6: error:
      this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
        if (vm_page_is_cached(vp->v_object, idx)) {
            ^
/usr/ports/sysutils/pefs-kmod/work/pefs-2017-02-19/sys/modules/pefs/../../fs/pefs/pefs_vnops.c:2466:3: error:
      implicit declaration of function 'vm_page_cache_free' is invalid in C99
      [-Werror,-Wimplicit-function-declaration]
                vm_page_cache_free(vp->v_object, idx, idx + 1);
                ^
/usr/ports/sysutils/pefs-kmod/work/pefs-2017-02-19/sys/modules/pefs/../../fs/pefs/pefs_vnops.c:2466:3: error:
      this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
6 errors generated.
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/sysutils/pefs-kmod/work/pefs-2017-02-19/sys/modules/pefs
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/sysutils/pefs-kmod/work/pefs-2017-02-19
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/sysutils/pefs-kmod
*** Error code 1

Stop.
make: stopped in /usr/ports/sysutils/pefs-kmod
```

Still no luck. What have I missed?


----------



## SirDice (Aug 22, 2017)

Try with the latest ports tree instead. sysutils/pefs-kmod is at version 2017.06.20.


----------



## nickednamed (Aug 23, 2017)

I have the latest version of the Quarterly Ports tree (revision 448590) which is supposed to be more stable, isn't it? 

I want to use quarterly repos / trees, and I do not want to use the latest ports and packages (for various reasons). If I momentarily update to the latest ports tree, rebuild and install only sysutils/pefs-kmod, then go back to the quarterly tree, will I be good?

It looks like I'm not the only one with this problem, so it may be my only solution for now.


----------



## SirDice (Aug 23, 2017)

nickednamed said:


> I have the latest version of the Quarterly Ports tree (revision 448590) which is supposed to be more stable, isn't it?


Yes, stable, as in 'not a lot of changes happening'. No guarantees about stability as in 'runs forever without problems' are given for third party software.

Temporarily switch to the latest branch, then we can rule out (or not) the bug is in a specific version that's in the quarterly branch and it's not a bigger issue.


----------



## nickednamed (Aug 24, 2017)

Done.

Switch to latest ports tree:
`rm -r /usr/ports`
`svnlite checkout https://svn.freebsd.org/ports/head /usr/ports`

Reinstall sysutils/pefs-kmod:
`synth install sysutils/pefs-kmod`

Switch back to quarterly ports tree:
`rm -r /usr/ports`
`svnlite checkout https://svn.freebsd.org/ports/branches/2017Q3/ /usr/ports`

Make sure pkg doesn't downgrade sysutils/pefs-kmod:
`pkg lock pefs-kmod-2017.06.20`

Now all is working well.

Thank you.


----------

