aboutsummaryrefslogtreecommitdiff
path: root/datapath/dp_sysfs_if.c
AgeCommit message (Collapse)Author
2010-08-30treewide: Remove trailing whitespaceJoe Perches
Signed-off-by: Joe Perches <joe@perches.com> Acked-by: Simon Horman <horms@verge.net.au> Signed-off-by: Jesse Gross <jesse@nicira.com>
2010-08-23datapath: struct brport_attribute no longer has an owner elementSimon Horman
Between 2.6.35 and 2.6.36-rc1 the owner element of struct brport_attribute was removed. Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: Jesse Gross <jesse@nicira.com>
2010-07-30datapath: Remove dead code.Jesse Gross
Several blocks of code were either no longer being called or had been "#if 0"'d out for a long time. This removes them.
2010-04-19datapath: Add generic virtual port layer.Jesse Gross
Currently the datapath directly accesses devices through their Linux functions. Obviously this doesn't work for virtual devices that are not backed by an actual Linux device. This creates a new virtual port layer which handles all interaction with devices. The existing support for Linux devices was then implemented on top of this layer as two device types. It splits out and renames dp_dev to internal_dev. There were several places where datapath devices had to handled in a special manner and this cleans that up by putting all the special casing in a single location.
2009-08-19Merge citrix into master.Ben Pfaff
This was a somewhat difficult merge since there was a fair amount of superficially divergent development on the two branches, especially in the datapath. This has been build-tested against XenServer 5.5.0 and XenServer 5.7.0 build 15122. It has been booted and connected to XenCenter on 5.5.0. The merge revealed a couple of outstanding bugs, which will be fixed on citrix and then merged back into master.
2009-08-06datapath: Update sysfs links when network devices are renamed.Ben Pfaff
We create symlinks from /sys/class/net/<bridgename>/brif/<devname> to /sys/class/net/<devname>/brport, but until now we have never updated the links when network devices are renamed. This commit fixes this problem. (Only the <devname> in /sys/class/net/<bridgename>/brif/<devname> needs to be updated. Symlinks within sysfs have stable targets; that is, no matter how the object that a sysfs symlink points to moves around, the link is still maintained correctly.)
2009-08-06datapath: Fix OOPS when dp_sysfs_add_if() fails.Ben Pfaff
Until now, when dp_sysfs_add_if() failed, the caller ignored the failure. This is a minor problem, because everything else should continue working, without sysfs entries for the interface, in theory anyhow. In actual practice, the error exit path of dp_sysfs_add_if() does a kobject_put(), and that kobject_put() calls release_nbp(), so that the new port gets freed. The next reference to the new port (usually in an ovs-vswitchd call to the ODP_PORT_LIST ioctl) will then use the freed data and probably OOPS. The fix is to make the datapath code, as opposed to the sysfs code, responsible for creating and destroying the net_bridge_port kobject. The dp_sysfs_{add,del}_if() functions then just attach and detach the kobject to sysfs and their cleanup routines no longer need to destroy the kobject and indeed we don't care whether dp_sysfs_add_if() really succeeds. This commit also makes the same transformation to the datapath's ifobj, for consistency. It is easy to trigger the OOPS fixed by this commit by adding a network device A to a datapath, then renaming network device A to B, then renaming network device C to A, then adding A to the datapath. The last attempt to add A will fail because a file named /sys/class/net/<datapath>/brif/A already exists from the time that C was added to the datapath under the name A. This commit also adds some compatibility infrastructure, because it moves code out of #ifdef SUPPORT_SYSFS and it otherwise wouldn't build.
2009-08-06datapath: Prepare to extend lifetime of kobjects.Ben Pfaff
The following commit will move the initialization of the datapath and net_bridge_port kobjects earlier and the destruction later, without changing when those kobjects are attached to sysfs. To do so, the initialization of kobjects and attaching to sysfs has to be done as separate steps. That's already the case for net_bridge_port kobjects, and this commit makes it so for datapath kobjects too. This commit also simplifies some code, since the split API exists both before and after 2.6.25, but the combined functions changed names. Also, in dp_sysfs_add_if() call kobject_init() after initializing the kset member, since kobject_init() expects that. This makes no actual difference in this case since the kobj is obtained from kzalloc(), but it still seems better.
2009-08-06datapath: Rename brc_sysfs_* to dp_sysfs_*.Ben Pfaff
These files and names are now part of the datapath, not brcompat, so name them appropriately so as not to confuse anyone.