[ovs-discuss] insmod: error inserting ?datapath/linux/openvswitch.ko?: -1 File exists
Ben Pfaff
blp at nicira.com
Tue May 28 15:56:11 UTC 2013
On Tue, May 28, 2013 at 05:36:51PM +0200, Muhammad Asad wrote:
> During compilation of openvswitch, after make and make install, I
> try to run:
>
> sudo insmod datapath/linux/openvswitch.ko
>
> It?s saying the following error:
>
> ~/ovs-vxlan$ sudo insmod datapath/linux/openvswitch.ko
> insmod: error inserting ?datapath/linux/openvswitch.ko?: -1 File exists
INSTALL says:
7. If you built kernel modules, you may load them with "insmod", e.g.:
% insmod datapath/linux/openvswitch.ko
You may need to specify a full path to insmod, e.g. /sbin/insmod.
To verify that the modules have been loaded, run "/sbin/lsmod" and
check that openvswitch is listed.
If the "insmod" operation fails, look at the last few kernel log
messages (e.g. with "dmesg | tail"):
- The message "openvswitch: exports duplicate symbol
br_should_route_hook (owned by bridge)" means that the bridge
module is loaded. Run "/sbin/rmmod bridge" to remove it.
If "/sbin/rmmod bridge" fails with "ERROR: Module bridge does
not exist in /proc/modules", then the bridge is compiled into
the kernel, rather than as a module. Open vSwitch does not
support this configuration (see "Build Requirements", above).
- The message "openvswitch: exports duplicate symbol
dp_ioctl_hook (owned by ofdatapath)" means that the ofdatapath
module from the OpenFlow reference implementation is loaded.
Run "/sbin/rmmod ofdatapath" to remove it. (You might have to
delete any existing datapaths beforehand, using the "dpctl"
program included with the OpenFlow reference implementation.
"ovs-dpctl" will not work.)
- Otherwise, the most likely problem is that Open vSwitch was
built for a kernel different from the one into which you are
trying to load it. Run "modinfo" on openvswitch.ko and on
a module built for the running kernel, e.g.:
% /sbin/modinfo openvswitch.ko
% /sbin/modinfo /lib/modules/`uname -r`/kernel/net/bridge/bridge.ko
Compare the "vermagic" lines output by the two commands. If
they differ, then Open vSwitch was built for the wrong kernel.
- If you decide to report a bug or ask a question related to
module loading, please include the output from the "dmesg" and
"modinfo" commands mentioned above.
There is an optional module parameter to openvswitch.ko called
vlan_tso that enables TCP segmentation offload over VLANs on NICs
that support it. Many drivers do not expose support for TSO on VLANs
in a way that Open vSwitch can use but there is no way to detect
whether this is the case. If you know that your particular driver can
handle it (for example by testing sending large TCP packets over VLANs)
then passing in a value of 1 may improve performance. Modules built for
Linux kernels 2.6.37 and later, as well as specially patched versions
of earlier kernels, do not need this and do not have this parameter. If
you do not understand what this means or do not know if your driver
will work, do not set this.
Once you verify that the kernel modules load properly, you should
install them:
% make modules_install
More information about the discuss
mailing list