1 2 Previous Next 15 Replies Latest reply on Jun 21, 2012 12:03 PM by JJoel42

    Cannot compile VMware Blocking Filesystem kernel module.

    Cheesemill Lurker

      I'm testing on Ubuntu 12.10 64-bit with kernel version 3.4.0 and every time I start Workstation it tries and fails to compile the blocking filesystem kernel module (all other modules compile successfully). Is there a log I can look in for any error messages, or is there a way of telling Workstation to not compile this module as it is stopping users without sudo privileges from being able to run Workstation at all.

      Screenshot from 2012-05-07 10:51:05.png

        • 1. Re: Cannot compile VMware Blocking Filesystem kernel module.
          Cheesemill Lurker

          OK, I know what the problem is. It's a compatibilty issue with the 3.4.0 kernel, booting into a 3.2.0 kernel solves the problem.

           

          Is support for 3.4.0 going to be added at all?

          • 2. Re: Cannot compile VMware Blocking Filesystem kernel module.
            Rahulverma201110141 Enthusiast
            VMware Employees

            I hope it would be added as it is still under technical preview. I hope the support could be added in later test builds/releases.

            • 3. Re: Cannot compile VMware Blocking Filesystem kernel module.
              mfelker Expert

              The install completes successfully for me despite this warning.  Ubuntu 12.10 Kernel 3.4.  VMware should just see if they can block the message

              • 4. Re: Cannot compile VMware Blocking Filesystem kernel module.
                raiford Enthusiast

                I'm having problems with this now too.  Not surprising as I just upgraded to the new kernel version.  Its not a huge problem since I can let it try to compile each time I start up, but times like right now when VMWare crashes, I can't get into my running VM's .  My only option is to kill the processes and restart.  I guess its time to investigate just why the kernel module is failing to compile..  I thought I saw a fix floating around, but not sure where it is any more.

                • 5. Re: Cannot compile VMware Blocking Filesystem kernel module.
                  raiford Enthusiast

                  Ok, I patched my system and its working now.  All I needed was the patch thats floating around the web:

                   

                  diff -u -r source802/vmblock-only/linux/filesystem.c source/vmblock-only/linux/filesystem.c
                  --- source802/vmblock-only/linux/filesystem.c    2012-01-18 22:01:07.000000000 +0100
                  +++ source/vmblock-only/linux/filesystem.c    2012-04-01 11:48:24.000000000 +0200
                  @@ -525,7 +525,11 @@
                         return -EINVAL;
                      }

                  +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
                      rootDentry = d_alloc_root(rootInode);
                  +#else
                  +   rootDentry = d_make_root(rootInode);
                  +#endif
                      if (!rootDentry) {
                         iput(rootInode);
                         return -ENOMEM;

                  • 6. Re: Cannot compile VMware Blocking Filesystem kernel module.
                    mfelker Expert

                    Did not work for me.  Use Ubuntu 12.10 with  kernel 3.4.0-5-generic Ihe   given patch as a shell script called patch.sh as root.  Rebooted

                     

                    I get the following terminal (stand output) from running sudo vmware

                     

                    Logging to /tmp/vmware-root/vmware-modconfig-5227.log
                    Stopping VMware services:
                       VMware Authentication Daemon                                        done
                       VM communication interface socket family                            done
                       Virtual machine communication interface                             done
                       Virtual machine monitor                                             done
                       Blocking file system                                                done
                    Using 2.6.x kernel build system.
                    make: Entering directory `/tmp/modconfig-DhanK2/vmblock-only'
                    /usr/bin/make -C /lib/modules/3.4.0-5-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
                          MODULEBUILDDIR= modules
                    make[1]: Entering directory `/usr/src/linux-headers-3.4.0-5-generic'
                      CC [M]  /tmp/modconfig-DhanK2/vmblock-only/linux/block.o
                      CC [M]  /tmp/modconfig-DhanK2/vmblock-only/linux/control.o
                      CC [M]  /tmp/modconfig-DhanK2/vmblock-only/linux/dentry.o
                      CC [M]  /tmp/modconfig-DhanK2/vmblock-only/linux/file.o
                      CC [M]  /tmp/modconfig-DhanK2/vmblock-only/linux/filesystem.o
                      CC [M]  /tmp/modconfig-DhanK2/vmblock-only/linux/module.o
                      CC [M]  /tmp/modconfig-DhanK2/vmblock-only/linux/inode.o
                      CC [M]  /tmp/modconfig-DhanK2/vmblock-only/linux/stubs.o
                    /tmp/modconfig-DhanK2/vmblock-only/linux/filesystem.c: In function ‘FsOpReadSuper’:
                    /tmp/modconfig-DhanK2/vmblock-only/linux/filesystem.c:528:4: error: implicit declaration of function ‘d_alloc_root’ [-Werror=implicit-function-declaration]
                    /tmp/modconfig-DhanK2/vmblock-only/linux/filesystem.c:528:15: warning: assignment makes pointer from integer without a cast [enabled by default]
                    cc1: some warnings being treated as errors
                    make[2]: *** [/tmp/modconfig-DhanK2/vmblock-only/linux/filesystem.o] Error 1
                    make[2]: *** Waiting for unfinished jobs....
                    make[1]: *** [_module_/tmp/modconfig-DhanK2/vmblock-only] Error 2
                    make[1]: Leaving directory `/usr/src/linux-headers-3.4.0-5-generic'
                    make: *** [vmblock.ko] Error 2
                    make: Leaving directory `/tmp/modconfig-DhanK2/vmblock-only'
                    Failed to build vmblock.  Failed to execute the build command.
                    Starting VMware services:
                       Virtual machine monitor                                             done
                       Virtual machine communication interface                             done
                       VM communication interface socket family                            done
                       Blocking file system                                                done
                       Virtual ethernet                                                    done
                       VMware Authentication Daemon                                        done
                       Shared Memory Available                                             done
                    filename:       /lib/modules/3.4.0-5-generic/misc/vmmon.ko
                    supported:      external
                    license:        GPL v2
                    description:    VMware Virtual Machine Monitor.
                    author:         VMware, Inc.
                    srcversion:     82C3E2F35FB98323E59B083
                    depends:       
                    vermagic:       3.4.0-5-generic SMP mod_unload modversions
                    PID: 5222, log output: /tmp/vmware-root/vmware-ui-5222.log
                    USBGL: Connected to arbitrator socket: 12

                     

                    VMware runs properly  afterr the compile error.  As can be seen all services are "done". I can live with it.

                    • 7. Re: Cannot compile VMware Blocking Filesystem kernel module.
                      raiford Enthusiast

                      For what its worth, I actually applied the patch manually.  I updated the file in /usr/lib/vmware/modules/source/vmblock.tar and restarted vmware.  When it prompted to compile, everything worked.

                       

                      I agree that it seems to run ok without compiling this module..  My problem is that the vmware client crashes a lot and it wouldn't let me restart it until I either stopped the running vm's (all my current work is in there!) or fixing the compilation errors.  If it would have let me bypass the compilation I would have likely done nothing at all

                      • 8. Re: Cannot compile VMware Blocking Filesystem kernel module.
                        mfelker Expert

                        Sorry this happened to especially since you have valuable data in some of your VM's.  perhaps you could run Vmware  from another partition and start them that way?

                         

                        Regardless, I am definitely not going to apply this patch now - the compile error is extremely minor as you can see from log.  This is an a experimental machine so the "work" I have is not vital  (consisting mostly of email and web access and gedit).  I am successfully working with a Windows 2012 Virtual Machine with nested Hyper-V running Windows 7.  Every thing  is quite stable  and even has pretty good performance.  I copy the VM to a Windows  partition with VM .e.xp on Windows which can access the copied machine using the Windows TP.  The main thing now is for me to experiment with trying to setup  a RAID 5 on the VM.  This is  different story and I post the results if I ever get it to to work ( or can't).   I also image the entire Linux parition every night.

                         

                        Good luck

                        • 9. Re: Cannot compile VMware Blocking Filesystem kernel module.
                          raiford Enthusiast

                          Another for what its worth...

                           

                          I installed Fedora 18 / rawhide as a vm this weekend and noticed that I had to patch the vm tools in a similar way as I did for the workstation modules.  Once again it was the filesystem.c file, but I forget which module it was compiling.  Sorry its not much info to go on.. I just wanted to mention it in case someone at VMWare was going to fix the original problem.. Now they know to fix the VM Tools as well

                          • 10. Re: Cannot compile VMware Blocking Filesystem kernel module.
                            matthewls Hot Shot

                            I get the same message and the machine runs anyway.

                            The problem is that the same needless recompile happens every time I start workstation.

                             

                            My question is, which file needs changing so that VMware "knows" that the compile is already done?

                            Thanks,

                            Matthew

                            • 11. Re: Cannot compile VMware Blocking Filesystem kernel module.
                              raiford Enthusiast

                              I don't think you can just edit a file to trick vmware from thinking it needs to recompile.  My guess is that it is checking to see if the modules are loaded, sees that the vm_block isn't loaded, and tries to compile it again.

                               

                              If you just update the source code with the patch, the compile will succeed, the module will load, and it will not complain any more.

                               

                              There is a script floating around online for Workstation 8, but it tries to patch other modules as well.  I don't know for sure, but this may cause trouble with the technology preview.  Thats why I patched the source manually.  The patch is in post 5 in this thread and the location of the source .tar file is in post 7.  Update the tar file and restart vmware and it should compile fine.  If it continues to have trouble, show me the error you are seeing and I'll try to help you fix it.  Fixing small compile errors aren't too difficult.

                              • 12. Re: Cannot compile VMware Blocking Filesystem kernel module.
                                matthewls Hot Shot

                                I'm not sure how to apply the patch. I found the filesystem.c file. Should I save the patch and run it via sh ? If so I guess the -u and -r should be changed to the actual location of the file. Or do I just remove the return -EINVAL { and add the + lines below?

                                 

                                Thanks.

                                • 13. Re: Cannot compile VMware Blocking Filesystem kernel module.
                                  raiford Enthusiast

                                  Right.. So here is the patch again:

                                   

                                  diff -u -r source802/vmblock-only/linux/filesystem.c source/vmblock-only/linux/filesystem.c
                                  --- source802/vmblock-only/linux/filesystem.c    2012-01-18 22:01:07.000000000 +0100
                                  +++ source/vmblock-only/linux/filesystem.c    2012-04-01 11:48:24.000000000 +0200
                                  @@ -525,7 +525,11 @@
                                         return -EINVAL;
                                      }

                                  +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
                                      rootDentry = d_alloc_root(rootInode);
                                  +#else
                                  +   rootDentry = d_make_root(rootInode);
                                  +#endif
                                      if (!rootDentry) {
                                         iput(rootInode);
                                         return -ENOMEM;

                                   

                                   

                                  The first three lines are just saying that we are dealing with the source/vmblock-only/linux/filesystem.c file..

                                   

                                  The @@ line is saying where in the file to start synchronizing

                                   

                                  The Lines with a '-' means to delete them (none in this patch)

                                  The lines with a '+' means to add them

                                  The lines with neither a '-' or a '+' means they should already be in the file.

                                   

                                  So in this case, all you really need to do is scroll down to line 525 or so and look for the line causing all the trouble:

                                       rootDentry = d_alloc_root(rootInode);

                                   

                                  This call is always being performed, but for the newer kernels, it is no longer supported.  So we are going to put a special case in for the newer kernels:


                                  #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
                                       rootDentry = d_alloc_root(rootInode);
                                  #else
                                      rootDentry = d_make_root(rootInode);
                                  #endif

                                   

                                  You can see the patch file kept the original line in the middle, but added the extra stuff around it.  So all it really is saying is replace the one line with the 5 new lines.

                                   

                                  I hope this makes sense

                                  • 14. Re: Cannot compile VMware Blocking Filesystem kernel module.
                                    matthewls Hot Shot

                                    A clear explanation that makes perfect sense. The patch finds the return -EINVAL;  } around line 525, and then inserts:

                                     

                                    #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
                                        [ original code kept in place ]
                                    #else
                                       rootDentry = d_make_root(rootInode); [the key change inserted make for alloc]
                                    #endif
                                      [ original code kept in place ]

                                     

                                    Thank you!

                                     

                                    PS. And it worked perfectly.

                                    1 2 Previous Next