From: Chuck Fossen Date: Wed, 21 Sep 2016 20:31:43 +0000 (-0500) Subject: LU-10185 gnilnd: SLES 12 SP2 support and cleanup X-Git-Tag: 2.10.57~68 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=a05fcba379017554afe0a6ffba93dccb2bf7c820;p=fs%2Flustre-release.git LU-10185 gnilnd: SLES 12 SP2 support and cleanup Handle a couple changes for SLES 12 SP2: - Handle rename of set_mb() to smp_store_mb() - Handle rename of __GFP_WAIT to __GFP_RECLAIM - Handle parameter change to sock_create_kern() Also remove various dead code. Test-parameters: trivial Signed-off-by: Chris Horn Change-Id: I9b5799a492b347fe7961f2d70e24bed5cc2e7021 Reviewed-on: https://review.whamcloud.com/29892 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: James Simmons Reviewed-by: Doug Oucharek Reviewed-by: Oleg Drokin --- diff --git a/lnet/klnds/gnilnd/gnilnd.c b/lnet/klnds/gnilnd/gnilnd.c index a41aafb..4976a07 100644 --- a/lnet/klnds/gnilnd/gnilnd.c +++ b/lnet/klnds/gnilnd/gnilnd.c @@ -26,11 +26,7 @@ /* Primary entry points from LNET. There are no guarantees against reentrance. */ lnd_t the_kgnilnd = { -#ifdef CONFIG_CRAY_XT .lnd_type = GNILND, -#else - .lnd_type = GNIIPLND, -#endif .lnd_startup = kgnilnd_startup, .lnd_shutdown = kgnilnd_shutdown, .lnd_ctl = kgnilnd_ctl, @@ -2054,12 +2050,6 @@ kgnilnd_dev_init(kgn_device_t *dev) } } - rrc = sock_create_kern(PF_INET, SOCK_DGRAM, IPPROTO_IP, &kgnilnd_data.kgn_sock); - if (rrc < 0) { - CERROR("sock_create returned %d\n", rrc); - GOTO(failed, rrc); - } - rc = kgnilnd_nicaddr_to_nid(dev->gnd_host_id, &dev->gnd_nid); if (rc < 0) { /* log messages during startup */ @@ -2201,9 +2191,6 @@ kgnilnd_dev_fini(kgn_device_t *dev) dev->gnd_domain = NULL; } - if (kgnilnd_data.kgn_sock) - sock_release(kgnilnd_data.kgn_sock); - EXIT; } diff --git a/lnet/klnds/gnilnd/gnilnd.h b/lnet/klnds/gnilnd/gnilnd.h index 9589ae8..6a762a6 100644 --- a/lnet/klnds/gnilnd/gnilnd.h +++ b/lnet/klnds/gnilnd/gnilnd.h @@ -871,7 +871,6 @@ typedef struct kgn_data { atomic_t kgn_rev_offset; /* # of REV rdma w/misaligned offsets */ atomic_t kgn_rev_length; /* # of REV rdma have misaligned len */ atomic_t kgn_rev_copy_buff; /* # of REV rdma buffer copies */ - struct socket *kgn_sock; /* for Apollo */ unsigned long free_pages_limit; /* # of free pages reserve from fma block allocations */ int kgn_enable_gl_mutex; /* kgni api mtx enable */ } kgn_data_t; @@ -995,6 +994,11 @@ static inline void kgnilnd_vfree(void *ptr, int size) vfree(ptr); } +/* as of kernel version 4.2, set_mb is replaced with smp_store_mb */ +#ifndef set_mb +#define set_mb smp_store_mb +#endif + /* Copied from DEBUG_REQ in Lustre - the dance is needed to save stack space */ extern void diff --git a/lnet/klnds/gnilnd/gnilnd_aries.h b/lnet/klnds/gnilnd/gnilnd_aries.h index b36603e..d9698b6 100644 --- a/lnet/klnds/gnilnd/gnilnd_aries.h +++ b/lnet/klnds/gnilnd/gnilnd_aries.h @@ -90,150 +90,4 @@ kgnilnd_deregister_smdd_buf(kgn_device_t *dev) return rc; } -/* plug in our functions for use on the simulator */ -#if !defined(GNILND_USE_RCA) - -extern kgn_data_t kgnilnd_data; - -#define kgnilnd_hw_hb() do {} while(0) - -#ifdef CONFIG_CRAY_XT - -/* Aries Sim doesn't have hardcoded tables, so we'll hijack the nic_pe - * and decode our address and nic addr from that - the rest are just offsets */ - -static inline int -kgnilnd_nid_to_nicaddrs(__u32 nid, int numnic, __u32 *nicaddr) -{ - if (numnic > 1) { - CERROR("manual nid2nic translation doesn't support" - "multiple nic addrs (you asked for %d)\n", - numnic); - return -EINVAL; - } - if (nid < kgnilnd_data.kgn_nid_trans_private) { - CERROR("Request for invalid nid translation %u," - "minimum %llu\n", - nid, kgnilnd_data.kgn_nid_trans_private); - return -ESRCH; - } - - *nicaddr = nid - kgnilnd_data.kgn_nid_trans_private; - - CDEBUG(D_NETTRACE, "Sim nid %d -> nic 0x%x\n", nid, *nicaddr); - - return 1; -} - -static inline int -kgnilnd_nicaddr_to_nid(__u32 nicaddr, __u32 *nid) -{ - *nid = kgnilnd_data.kgn_nid_trans_private + nicaddr; - return 1; -} - -/* XXX Nic: This does not support multiple device!!!! */ -static inline int -kgnilnd_setup_nic_translation(__u32 device_id) -{ - char *if_name = "ipogif0"; - __u32 ipaddr, netmask, my_nid; - int up, rc; - - LCONSOLE_INFO("using Aries SIM IP info for RCA translation\n"); - - rc = lnet_ipif_query(if_name, &up, &ipaddr, &netmask); - if (rc != 0) { - CERROR ("can't get IP interface for %s: %d\n", if_name, rc); - return rc; - } - if (!up) { - CERROR ("IP interface %s is down\n", if_name); - return -ENODEV; - } - - my_nid = ((ipaddr >> 8) & 0xFF) + (ipaddr & 0xFF); - kgnilnd_data.kgn_nid_trans_private = my_nid - device_id; - - return 0; -} - -#else /* CONFIG_CRAY_XT */ -#include -#include - -static inline int -kgnilnd_nid_to_nicaddrs(__u32 nid, int numnic, __u32 *nicaddrs) -{ - int rc; - -#define NID_MASK ((1ULL << 18) - 1) - mm_segment_t fs; - struct arpreq req = { - .arp_dev = "ipogif0", - }; - - req.arp_pa.sa_family = AF_INET; - ((struct sockaddr_in *)&req.arp_pa)->sin_addr.s_addr = htonl(nid); - - fs = get_fs(); - set_fs(get_ds()); - - rc = inet_ioctl(kgnilnd_data.kgn_sock, SIOCGARP, (unsigned long)&req); - set_fs(fs); - - if (rc < 0) { - CDEBUG(D_NETERROR, "inet_ioctl returned %d\n", rc); - return 0; - } - - /* use the lower 18 bits of the mac address to use as a nid value */ - *nicaddrs = *(__u32 *)&req.arp_ha.sa_data[2]; - *nicaddrs = ntohl(*nicaddrs) & NID_MASK; - - CDEBUG(D_NETTRACE, "nid %s -> nic 0x%x\n", libcfs_nid2str(nid), - nicaddrs[0]); - - return 1; -} - -static inline int -kgnilnd_nicaddr_to_nid(__u32 nicaddr, __u32 *nid) -{ - int rc; - mm_segment_t fs; - struct ifreq ifr = { - .ifr_name = "ipogif0", - }; - - struct sockaddr_in* ipaddr = (struct sockaddr_in*)&ifr.ifr_addr; - - fs = get_fs(); - set_fs(get_ds()); - rc = inet_ioctl(kgnilnd_data.kgn_sock, SIOCGIFADDR, (unsigned long)&ifr); - set_fs(fs); - - if (rc < 0) { - CDEBUG(D_NETERROR, "inet_ioctl returned %d\n", rc); - return 1; - } - - CDEBUG(D_NETTRACE, "ipaddr %08x\n", htonl(ipaddr->sin_addr.s_addr)); - - *nid = htonl(ipaddr->sin_addr.s_addr); - CDEBUG(D_NETTRACE, "nic 0x%x -> nid %s\n", nicaddr, - libcfs_nid2str(*nid)); - return 0; -} - -static inline int -kgnilnd_setup_nic_translation(__u32 device_id) -{ - return 0; -} - -#endif /* CONFIG_CRAY_XT */ - -#endif /* GNILND_USE_RCA */ - #endif /* _GNILND_ARIES_H */ diff --git a/lnet/klnds/gnilnd/gnilnd_proc.c b/lnet/klnds/gnilnd/gnilnd_proc.c index 5977476..6238e52 100644 --- a/lnet/klnds/gnilnd/gnilnd_proc.c +++ b/lnet/klnds/gnilnd/gnilnd_proc.c @@ -59,8 +59,7 @@ _kgnilnd_proc_run_cksum_test(int caseno, int nloops, int nob) for (i = 0; i < LNET_MAX_IOV; i++) { src[i].kiov_offset = 0; src[i].kiov_len = PAGE_SIZE; - src[i].kiov_page = alloc_page(__GFP_WAIT | __GFP_IO | - __GFP_FS | __GFP_ZERO); + src[i].kiov_page = alloc_page(GFP_KERNEL | __GFP_ZERO); if (src[i].kiov_page == NULL) { CERROR("couldn't allocate page %d\n", i); @@ -69,8 +68,7 @@ _kgnilnd_proc_run_cksum_test(int caseno, int nloops, int nob) dest[i].kiov_offset = 0; dest[i].kiov_len = PAGE_SIZE; - dest[i].kiov_page = alloc_page(__GFP_WAIT | __GFP_IO | - __GFP_FS | __GFP_ZERO); + dest[i].kiov_page = alloc_page(GFP_KERNEL | __GFP_ZERO); if (dest[i].kiov_page == NULL) { CERROR("couldn't allocate page %d\n", i);