summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
9c60073)
Current kiblnd_create_dev() doesn't allow to dev_get_by_name() to
return NULL (we added this for supporting failover of ib-bonding),
but this can happen for aliased interface, we can fix this by simply
remove the limitation and set kib_dev_t::ibd_can_failover to 0 for
aliased interface.
Change-Id: Idc3e6e4fd2d5056594f38dd43a0a560c3455ea05
Signed-off-by: Liang Zhen <liang@whamcloud.com>
Reviewed-on: http://review.whamcloud.com/1148
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Minh Diep <mdiep@whamcloud.com>
Reviewed-by: Lai Siyao <laisiyao@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
memset(dev, 0, sizeof(*dev));
#ifdef HAVE_DEV_GET_BY_NAME_2ARG
memset(dev, 0, sizeof(*dev));
#ifdef HAVE_DEV_GET_BY_NAME_2ARG
- if ((netdev = dev_get_by_name(&init_net, ifname)) == NULL) {
+ netdev = dev_get_by_name(&init_net, ifname);
- if ((netdev = dev_get_by_name(ifname)) == NULL) {
+ netdev = dev_get_by_name(ifname);
- CERROR("Can't find netdev of IF: %s\n", ifname);
- LIBCFS_FREE(dev, sizeof(*dev));
- return NULL;
+ if (netdev == NULL) {
+ dev->ibd_can_failover = 0;
+ } else {
+ dev->ibd_can_failover = !!(netdev->flags & IFF_MASTER);
+ dev_put(netdev);
- dev->ibd_can_failover = !!(netdev->flags & IFF_MASTER);
- dev_put(netdev);
-
CFS_INIT_LIST_HEAD(&dev->ibd_nets);
CFS_INIT_LIST_HEAD(&dev->ibd_list); /* not yet in kib_devs */
CFS_INIT_LIST_HEAD(&dev->ibd_fail_list);
CFS_INIT_LIST_HEAD(&dev->ibd_nets);
CFS_INIT_LIST_HEAD(&dev->ibd_list); /* not yet in kib_devs */
CFS_INIT_LIST_HEAD(&dev->ibd_fail_list);
+/* o2iblnd can run over aliased interface */
+#ifdef IFALIASZ
+#define KIB_IFNAME_SIZE IFALIASZ
+#else
+#define KIB_IFNAME_SIZE 256
+#endif
+
typedef struct
{
cfs_list_t ibd_list; /* chain on kib_devs */
cfs_list_t ibd_fail_list; /* chain on kib_failed_devs */
__u32 ibd_ifip; /* IPoIB interface IP */
typedef struct
{
cfs_list_t ibd_list; /* chain on kib_devs */
cfs_list_t ibd_fail_list; /* chain on kib_failed_devs */
__u32 ibd_ifip; /* IPoIB interface IP */
- char ibd_ifname[32]; /* IPoIB interface name */
+ /** IPoIB interface name */
+ char ibd_ifname[KIB_IFNAME_SIZE];
int ibd_nnets; /* # nets extant */
cfs_time_t ibd_next_failover;
int ibd_nnets; /* # nets extant */
cfs_time_t ibd_next_failover;