diff options
Diffstat (limited to 'drivers/staging/lustre')
101 files changed, 1147 insertions, 1883 deletions
diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs.h b/drivers/staging/lustre/include/linux/libcfs/libcfs.h index 5dd9cdf..01961d9 100644 --- a/drivers/staging/lustre/include/linux/libcfs/libcfs.h +++ b/drivers/staging/lustre/include/linux/libcfs/libcfs.h @@ -134,7 +134,7 @@ void cfs_get_random_bytes(void *buf, int size); /* container_of depends on "likely" which is defined in libcfs_private.h */ static inline void *__container_of(void *ptr, unsigned long shift) { - if (unlikely(IS_ERR(ptr) || ptr == NULL)) + if (IS_ERR_OR_NULL(ptr)) return ptr; return (char *)ptr - shift; } @@ -148,4 +148,17 @@ void *libcfs_kvzalloc(size_t size, gfp_t flags); void *libcfs_kvzalloc_cpt(struct cfs_cpt_table *cptab, int cpt, size_t size, gfp_t flags); +extern struct miscdevice libcfs_dev; +/** + * The path of debug log dump upcall script. + */ +extern char lnet_upcall[1024]; +extern char lnet_debug_log_upcall[1024]; + +extern void libcfs_init_nidstrings(void); + +extern struct cfs_psdev_ops libcfs_psdev_ops; + +extern struct cfs_wi_sched *cfs_sched_rehash; + #endif /* _LIBCFS_H */ diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs_debug.h b/drivers/staging/lustre/include/linux/libcfs/libcfs_debug.h index 8251ac9..a3aa644 100644 --- a/drivers/staging/lustre/include/linux/libcfs/libcfs_debug.h +++ b/drivers/staging/lustre/include/linux/libcfs/libcfs_debug.h @@ -50,7 +50,6 @@ extern unsigned int libcfs_stack; extern unsigned int libcfs_debug; extern unsigned int libcfs_printk; extern unsigned int libcfs_console_ratelimit; -extern unsigned int libcfs_watchdog_ratelimit; extern unsigned int libcfs_console_max_delay; extern unsigned int libcfs_console_min_delay; extern unsigned int libcfs_console_backoff; diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs_fail.h b/drivers/staging/lustre/include/linux/libcfs/libcfs_fail.h index eea55d9..aa69c6a 100644 --- a/drivers/staging/lustre/include/linux/libcfs/libcfs_fail.h +++ b/drivers/staging/lustre/include/linux/libcfs/libcfs_fail.h @@ -79,14 +79,16 @@ static inline int cfs_fail_check_set(__u32 id, __u32 value, { int ret = 0; - if (unlikely(CFS_FAIL_PRECHECK(id) && - (ret = __cfs_fail_check_set(id, value, set)))) { - if (quiet) { - CDEBUG(D_INFO, "*** cfs_fail_loc=%x, val=%u***\n", - id, value); - } else { - LCONSOLE_INFO("*** cfs_fail_loc=%x, val=%u***\n", - id, value); + if (unlikely(CFS_FAIL_PRECHECK(id))) { + ret = __cfs_fail_check_set(id, value, set); + if (ret) { + if (quiet) { + CDEBUG(D_INFO, "*** cfs_fail_loc=%x, val=%u***\n", + id, value); + } else { + LCONSOLE_INFO("*** cfs_fail_loc=%x, val=%u***\n", + id, value); + } } } diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h b/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h index ed37d26..9544860 100644 --- a/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h +++ b/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h @@ -87,24 +87,6 @@ do { \ lbug_with_loc(&msgdata); \ } while (0) -extern atomic_t libcfs_kmemory; -/* - * Memory - */ - -# define libcfs_kmem_inc(ptr, size) \ -do { \ - atomic_add(size, &libcfs_kmemory); \ -} while (0) - -# define libcfs_kmem_dec(ptr, size) \ -do { \ - atomic_sub(size, &libcfs_kmemory); \ -} while (0) - -# define libcfs_kmem_read() \ - atomic_read(&libcfs_kmemory) - #ifndef LIBCFS_VMALLOC_SIZE #define LIBCFS_VMALLOC_SIZE (2 << PAGE_CACHE_SHIFT) /* 2 pages */ #endif @@ -121,14 +103,9 @@ do { \ if (unlikely((ptr) == NULL)) { \ CERROR("LNET: out of memory at %s:%d (tried to alloc '" \ #ptr "' = %d)\n", __FILE__, __LINE__, (int)(size)); \ - CERROR("LNET: %d total bytes allocated by lnet\n", \ - libcfs_kmem_read()); \ } else { \ memset((ptr), 0, (size)); \ - libcfs_kmem_inc((ptr), (size)); \ - CDEBUG(D_MALLOC, "alloc '" #ptr "': %d at %p (tot %d).\n", \ - (int)(size), (ptr), libcfs_kmem_read()); \ - } \ + } \ } while (0) /** @@ -180,9 +157,6 @@ do { \ "%s:%d\n", s, __FILE__, __LINE__); \ break; \ } \ - libcfs_kmem_dec((ptr), s); \ - CDEBUG(D_MALLOC, "kfreed '" #ptr "': %d at %p (tot %d).\n", \ - s, (ptr), libcfs_kmem_read()); \ if (unlikely(s > LIBCFS_VMALLOC_SIZE)) \ vfree(ptr); \ else \ diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs_string.h b/drivers/staging/lustre/include/linux/libcfs/libcfs_string.h index 509dc1e..478e958 100644 --- a/drivers/staging/lustre/include/linux/libcfs/libcfs_string.h +++ b/drivers/staging/lustre/include/linux/libcfs/libcfs_string.h @@ -102,6 +102,4 @@ int cfs_ip_addr_parse(char *str, int len, struct list_head *list); int cfs_ip_addr_match(__u32 addr, struct list_head *list); void cfs_ip_addr_free(struct list_head *list); -#define strtoul(str, endp, base) simple_strtoul(str, endp, base) - #endif diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c index 4eb24a1..c29d2ce 100644 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c @@ -1390,7 +1390,7 @@ static int kiblnd_create_fmr_pool(kib_fmr_poolset_t *fps, .max_pages_per_fmr = LNET_MAX_PAYLOAD/PAGE_SIZE, .page_shift = PAGE_SHIFT, .access = (IB_ACCESS_LOCAL_WRITE | - IB_ACCESS_REMOTE_WRITE), + IB_ACCESS_REMOTE_WRITE), .pool_size = fps->fps_pool_size, .dirty_watermark = fps->fps_flush_trigger, .flush_function = NULL, @@ -1789,140 +1789,6 @@ struct list_head *kiblnd_pool_alloc_node(kib_poolset_t *ps) goto again; } -void kiblnd_pmr_pool_unmap(kib_phys_mr_t *pmr) -{ - kib_pmr_pool_t *ppo = pmr->pmr_pool; - struct ib_mr *mr = pmr->pmr_mr; - - pmr->pmr_mr = NULL; - kiblnd_pool_free_node(&ppo->ppo_pool, &pmr->pmr_list); - if (mr != NULL) - ib_dereg_mr(mr); -} - -int kiblnd_pmr_pool_map(kib_pmr_poolset_t *pps, kib_hca_dev_t *hdev, - kib_rdma_desc_t *rd, __u64 *iova, kib_phys_mr_t **pp_pmr) -{ - kib_phys_mr_t *pmr; - struct list_head *node; - int rc; - int i; - - node = kiblnd_pool_alloc_node(&pps->pps_poolset); - if (node == NULL) { - CERROR("Failed to allocate PMR descriptor\n"); - return -ENOMEM; - } - - pmr = container_of(node, kib_phys_mr_t, pmr_list); - if (pmr->pmr_pool->ppo_hdev != hdev) { - kiblnd_pool_free_node(&pmr->pmr_pool->ppo_pool, node); - return -EAGAIN; - } - - for (i = 0; i < rd->rd_nfrags; i++) { - pmr->pmr_ipb[i].addr = rd->rd_frags[i].rf_addr; - pmr->pmr_ipb[i].size = rd->rd_frags[i].rf_nob; - } - - pmr->pmr_mr = ib_reg_phys_mr(hdev->ibh_pd, - pmr->pmr_ipb, rd->rd_nfrags, - IB_ACCESS_LOCAL_WRITE | - IB_ACCESS_REMOTE_WRITE, - iova); - if (!IS_ERR(pmr->pmr_mr)) { - pmr->pmr_iova = *iova; - *pp_pmr = pmr; - return 0; - } - - rc = PTR_ERR(pmr->pmr_mr); - CERROR("Failed ib_reg_phys_mr: %d\n", rc); - - pmr->pmr_mr = NULL; - kiblnd_pool_free_node(&pmr->pmr_pool->ppo_pool, node); - - return rc; -} - -static void kiblnd_destroy_pmr_pool(kib_pool_t *pool) -{ - kib_pmr_pool_t *ppo = container_of(pool, kib_pmr_pool_t, ppo_pool); - kib_phys_mr_t *pmr; - kib_phys_mr_t *tmp; - - LASSERT(pool->po_allocated == 0); - - list_for_each_entry_safe(pmr, tmp, &pool->po_free_list, pmr_list) { - LASSERT(pmr->pmr_mr == NULL); - list_del(&pmr->pmr_list); - - if (pmr->pmr_ipb != NULL) { - LIBCFS_FREE(pmr->pmr_ipb, - IBLND_MAX_RDMA_FRAGS * - sizeof(struct ib_phys_buf)); - } - - LIBCFS_FREE(pmr, sizeof(kib_phys_mr_t)); - } - - kiblnd_fini_pool(pool); - if (ppo->ppo_hdev != NULL) - kiblnd_hdev_decref(ppo->ppo_hdev); - - LIBCFS_FREE(ppo, sizeof(kib_pmr_pool_t)); -} - -static inline int kiblnd_pmr_pool_size(int ncpts) -{ - int size = *kiblnd_tunables.kib_pmr_pool_size / ncpts; - - return max(IBLND_PMR_POOL, size); -} - -static int kiblnd_create_pmr_pool(kib_poolset_t *ps, int size, - kib_pool_t **pp_po) -{ - struct kib_pmr_pool *ppo; - struct kib_pool *pool; - kib_phys_mr_t *pmr; - int i; - - LIBCFS_CPT_ALLOC(ppo, lnet_cpt_table(), - ps->ps_cpt, sizeof(kib_pmr_pool_t)); - if (ppo == NULL) { - CERROR("Failed to allocate PMR pool\n"); - return -ENOMEM; - } - - pool = &ppo->ppo_pool; - kiblnd_init_pool(ps, pool, size); - - for (i = 0; i < size; i++) { - LIBCFS_CPT_ALLOC(pmr, lnet_cpt_table(), - ps->ps_cpt, sizeof(kib_phys_mr_t)); - if (pmr == NULL) - break; - - pmr->pmr_pool = ppo; - LIBCFS_CPT_ALLOC(pmr->pmr_ipb, lnet_cpt_table(), ps->ps_cpt, - IBLND_MAX_RDMA_FRAGS * sizeof(*pmr->pmr_ipb)); - if (pmr->pmr_ipb == NULL) - break; - - list_add(&pmr->pmr_list, &pool->po_free_list); - } - - if (i < size) { - ps->ps_pool_destroy(pool); - return -ENOMEM; - } - - ppo->ppo_hdev = kiblnd_current_hdev(ps->ps_net->ibn_dev); - *pp_po = pool; - return 0; -} - static void kiblnd_destroy_tx_pool(kib_pool_t *pool) { kib_tx_pool_t *tpo = container_of(pool, kib_tx_pool_t, tpo_pool); @@ -2078,7 +1944,6 @@ static void kiblnd_net_fini_pools(kib_net_t *net) cfs_cpt_for_each(i, lnet_cpt_table()) { kib_tx_poolset_t *tps; kib_fmr_poolset_t *fps; - kib_pmr_poolset_t *pps; if (net->ibn_tx_ps != NULL) { tps = net->ibn_tx_ps[i]; @@ -2089,11 +1954,6 @@ static void kiblnd_net_fini_pools(kib_net_t *net) fps = net->ibn_fmr_ps[i]; kiblnd_fini_fmr_poolset(fps); } - - if (net->ibn_pmr_ps != NULL) { - pps = net->ibn_pmr_ps[i]; - kiblnd_fini_poolset(&pps->pps_poolset); - } } if (net->ibn_tx_ps != NULL) { @@ -2105,18 +1965,13 @@ static void kiblnd_net_fini_pools(kib_net_t *net) cfs_percpt_free(net->ibn_fmr_ps); net->ibn_fmr_ps = NULL; } - - if (net->ibn_pmr_ps != NULL) { - cfs_percpt_free(net->ibn_pmr_ps); - net->ibn_pmr_ps = NULL; - } } static int kiblnd_net_init_pools(kib_net_t *net, __u32 *cpts, int ncpts) { unsigned long flags; int cpt; - int rc; + int rc = 0; int i; read_lock_irqsave(&kiblnd_data.kib_global_lock, flags); @@ -2137,12 +1992,16 @@ static int kiblnd_net_init_pools(kib_net_t *net, __u32 *cpts, int ncpts) goto failed; } - /* TX pool must be created later than FMR/PMR, see LU-2268 - * for details */ + /* + * TX pool must be created later than FMR, see LU-2268 + * for details + */ LASSERT(net->ibn_tx_ps == NULL); - /* premapping can fail if ibd_nmr > 1, so we always create - * FMR/PMR pool and map-on-demand if premapping failed */ + /* + * premapping can fail if ibd_nmr > 1, so we always create + * FMR pool and map-on-demand if premapping failed + */ net->ibn_fmr_ps = cfs_percpt_alloc(lnet_cpt_table(), sizeof(kib_fmr_poolset_t)); @@ -2158,7 +2017,7 @@ static int kiblnd_net_init_pools(kib_net_t *net, __u32 *cpts, int ncpts) kiblnd_fmr_pool_size(ncpts), kiblnd_fmr_flush_trigger(ncpts)); if (rc == -ENOSYS && i == 0) /* no FMR */ - break; /* create PMR pool */ + break; if (rc != 0) { /* a real error */ CERROR("Can't initialize FMR pool for CPT %d: %d\n", @@ -2175,38 +2034,8 @@ static int kiblnd_net_init_pools(kib_net_t *net, __u32 *cpts, int ncpts) cfs_percpt_free(net->ibn_fmr_ps); net->ibn_fmr_ps = NULL; - CWARN("Device does not support FMR, failing back to PMR\n"); - - if (*kiblnd_tunables.kib_pmr_pool_size < - *kiblnd_tunables.kib_ntx / 4) { - CERROR("Can't set pmr pool size (%d) < ntx / 4(%d)\n", - *kiblnd_tunables.kib_pmr_pool_size, - *kiblnd_tunables.kib_ntx / 4); - rc = -EINVAL; - goto failed; - } - - net->ibn_pmr_ps = cfs_percpt_alloc(lnet_cpt_table(), - sizeof(kib_pmr_poolset_t)); - if (net->ibn_pmr_ps == NULL) { - CERROR("Failed to allocate PMR pool array\n"); - rc = -ENOMEM; - goto failed; - } - - for (i = 0; i < ncpts; i++) { - cpt = (cpts == NULL) ? i : cpts[i]; - rc = kiblnd_init_poolset(&net->ibn_pmr_ps[cpt]->pps_poolset, - cpt, net, "PMR", - kiblnd_pmr_pool_size(ncpts), - kiblnd_create_pmr_pool, - kiblnd_destroy_pmr_pool, NULL, NULL); - if (rc != 0) { - CERROR("Can't initialize PMR pool for CPT %d: %d\n", - cpt, rc); + CWARN("Device does not support FMR\n"); goto failed; - } - } create_tx_pool: net->ibn_tx_ps = cfs_percpt_alloc(lnet_cpt_table(), @@ -2318,17 +2147,13 @@ void kiblnd_hdev_destroy(kib_hca_dev_t *hdev) static int kiblnd_hdev_setup_mrs(kib_hca_dev_t *hdev) { struct ib_mr *mr; - int i; int rc; - __u64 mm_size; - __u64 mr_size; int acflags = IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE; rc = kiblnd_hdev_get_attr(hdev); if (rc != 0) return rc; - if (hdev->ibh_mr_shift == 64) { LIBCFS_ALLOC(hdev->ibh_mrs, 1 * sizeof(*hdev->ibh_mrs)); if (hdev->ibh_mrs == NULL) { CERROR("Failed to allocate MRs table\n"); @@ -2347,53 +2172,6 @@ static int kiblnd_hdev_setup_mrs(kib_hca_dev_t *hdev) hdev->ibh_mrs[0] = mr; - goto out; - } - - mr_size = 1ULL << hdev->ibh_mr_shift; - mm_size = (unsigned long)high_memory - PAGE_OFFSET; - - hdev->ibh_nmrs = (int)((mm_size + mr_size - 1) >> hdev->ibh_mr_shift); - - if (hdev->ibh_mr_shift < 32 || hdev->ibh_nmrs > 1024) { - /* it's 4T..., assume we will re-code at that time */ - CERROR("Can't support memory size: x%#llx with MR size: x%#llx\n", - mm_size, mr_size); - return -EINVAL; - } - - /* create an array of MRs to cover all memory */ - LIBCFS_ALLOC(hdev->ibh_mrs, sizeof(*hdev->ibh_mrs) * hdev->ibh_nmrs); - if (hdev->ibh_mrs == NULL) { - CERROR("Failed to allocate MRs' table\n"); - return -ENOMEM; - } - - for (i = 0; i < hdev->ibh_nmrs; i++) { - struct ib_phys_buf ipb; - __u64 iova; - - ipb.size = hdev->ibh_mr_size; - ipb.addr = i * mr_size; - iova = ipb.addr; - - mr = ib_reg_phys_mr(hdev->ibh_pd, &ipb, 1, acflags, &iova); - if (IS_ERR(mr)) { - CERROR("Failed ib_reg_phys_mr addr %#llx size %#llx : %ld\n", - ipb.addr, ipb.size, PTR_ERR(mr)); - kiblnd_hdev_cleanup_mrs(hdev); - return PTR_ERR(mr); - } - - LASSERT(iova == ipb.addr); - - hdev->ibh_mrs[i] = mr; - } - -out: - if (hdev->ibh_mr_size != ~0ULL || hdev->ibh_nmrs != 1) - LCONSOLE_INFO("Register global MR array, MR size: %#llx, array size: %d\n", - hdev->ibh_mr_size, hdev->ibh_nmrs); return 0; } @@ -2564,14 +2342,9 @@ int kiblnd_dev_failover(kib_dev_t *dev) kiblnd_fail_poolset(&net->ibn_tx_ps[i]->tps_poolset, &zombie_tpo); - if (net->ibn_fmr_ps != NULL) { + if (net->ibn_fmr_ps) kiblnd_fail_fmr_poolset(net->ibn_fmr_ps[i], &zombie_fpo); - - } else if (net->ibn_pmr_ps != NULL) { - kiblnd_fail_poolset(&net->ibn_pmr_ps[i]-> - pps_poolset, &zombie_ppo); - } } } @@ -2667,9 +2440,6 @@ static void kiblnd_base_shutdown(void) LASSERT(list_empty(&kiblnd_data.kib_devs)); - CDEBUG(D_MALLOC, "before LND base cleanup: kmem %d\n", - atomic_read(&libcfs_kmemory)); - switch (kiblnd_data.kib_init) { default: LBUG(); @@ -2720,9 +2490,6 @@ static void kiblnd_base_shutdown(void) if (kiblnd_data.kib_scheds != NULL) cfs_percpt_free(kiblnd_data.kib_scheds); - CDEBUG(D_MALLOC, "after LND base cleanup: kmem %d\n", - atomic_read(&libcfs_kmemory)); - kiblnd_data.kib_init = IBLND_INIT_NOTHING; module_put(THIS_MODULE); } @@ -2739,9 +2506,6 @@ void kiblnd_shutdown(lnet_ni_t *ni) if (net == NULL) goto out; - CDEBUG(D_MALLOC, "before LND net cleanup: kmem %d\n", - atomic_read(&libcfs_kmemory)); - write_lock_irqsave(g_lock, flags); net->ibn_shutdown = 1; write_unlock_irqrestore(g_lock, flags); @@ -2786,9 +2550,6 @@ void kiblnd_shutdown(lnet_ni_t *ni) break; } - CDEBUG(D_MALLOC, "after LND net cleanup: kmem %d\n", - atomic_read(&libcfs_kmemory)); - net->ibn_init = IBLND_INIT_NOTHING; ni->ni_data = NULL; diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h index f5d1d9f..f4b6c33 100644 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h @@ -48,7 +48,7 @@ #include <linux/uio.h> #include <linux/uaccess.h> -#include <asm/io.h> +#include <linux/io.h> #include <linux/fs.h> #include <linux/file.h> @@ -104,7 +104,6 @@ typedef struct { int *kib_map_on_demand; /* map-on-demand if RD has more * fragments than this value, 0 * disable map-on-demand */ - int *kib_pmr_pool_size; /* # physical MR in pool */ int *kib_fmr_pool_size; /* # FMRs in pool */ int *kib_fmr_flush_trigger; /* When to trigger FMR flush */ int *kib_fmr_cache; /* enable FMR pool cache? */ @@ -120,7 +119,7 @@ extern kib_tunables_t kiblnd_tunables; #define IBLND_CREDIT_HIGHWATER_V1 7 /* V1 only : when eagerly to return credits */ #define IBLND_CREDITS_DEFAULT 8 /* default # of peer credits */ -#define IBLND_CREDITS_MAX ((typeof(((kib_msg_t*) 0)->ibm_credits)) - 1) /* Max # of peer credits */ +#define IBLND_CREDITS_MAX ((typeof(((kib_msg_t *) 0)->ibm_credits)) - 1) /* Max # of peer credits */ #define IBLND_MSG_QUEUE_SIZE(v) ((v) == IBLND_MSG_VERSION_1 ? \ IBLND_MSG_QUEUE_SIZE_V1 : \ @@ -163,7 +162,6 @@ kiblnd_concurrent_sends_v1(void) /* Pools (shared by connections on each CPT) */ /* These pools can grow at runtime, so don't need give a very large value */ #define IBLND_TX_POOL 256 -#define IBLND_PMR_POOL 256 #define IBLND_FMR_POOL 256 #define IBLND_FMR_POOL_FLUSH 192 @@ -232,17 +230,6 @@ typedef struct { struct page *ibp_pages[0]; /* page array */ } kib_pages_t; -struct kib_pmr_pool; - -typedef struct { - struct list_head pmr_list; /* chain node */ - struct ib_phys_buf *pmr_ipb; /* physical buffer */ - struct ib_mr *pmr_mr; /* IB MR */ - struct kib_pmr_pool *pmr_pool; /* owner of this MR */ - __u64 pmr_iova; /* Virtual I/O address */ - int pmr_refcount; /* reference count */ -} kib_phys_mr_t; - struct kib_pool; struct kib_poolset; @@ -299,15 +286,6 @@ typedef struct { } kib_tx_pool_t; typedef struct { - kib_poolset_t pps_poolset; /* pool-set */ -} kib_pmr_poolset_t; - -typedef struct kib_pmr_pool { - struct kib_hca_dev *ppo_hdev; /* device for this pool */ - kib_pool_t ppo_pool; /* pool */ -} kib_pmr_pool_t; - -typedef struct { spinlock_t fps_lock; /* serialize */ struct kib_net *fps_net; /* IB network */ struct list_head fps_pool_list; /* FMR pool list */ @@ -347,7 +325,6 @@ typedef struct kib_net { kib_tx_poolset_t **ibn_tx_ps; /* tx pool-set */ kib_fmr_poolset_t **ibn_fmr_ps; /* fmr pool-set */ - kib_pmr_poolset_t **ibn_pmr_ps; /* pmr pool-set */ kib_dev_t *ibn_dev; /* underlying IB device */ } kib_net_t; @@ -519,7 +496,7 @@ typedef struct kib_rx /* receive message */ enum ib_wc_status rx_status; /* completion status */ kib_msg_t *rx_msg; /* message buffer (host vaddr) */ __u64 rx_msgaddr; /* message buffer (I/O addr) */ - DECLARE_PCI_UNMAP_ADDR (rx_msgunmap); /* for dma_unmap_single() */ + DECLARE_PCI_UNMAP_ADDR(rx_msgunmap); /* for dma_unmap_single() */ struct ib_recv_wr rx_wrq; /* receive work item... */ struct ib_sge rx_sge; /* ...and its memory */ } kib_rx_t; @@ -546,7 +523,7 @@ typedef struct kib_tx /* transmit message */ * completion */ kib_msg_t *tx_msg; /* message buffer (host vaddr) */ __u64 tx_msgaddr; /* message buffer (I/O addr) */ - DECLARE_PCI_UNMAP_ADDR (tx_msgunmap); /* for dma_unmap_single() */ + DECLARE_PCI_UNMAP_ADDR(tx_msgunmap); /* for dma_unmap_single() */ int tx_nwrq; /* # send work items */ struct ib_send_wr *tx_wrq; /* send work items... */ struct ib_sge *tx_sge; /* ...and their memory */ @@ -554,10 +531,7 @@ typedef struct kib_tx /* transmit message */ int tx_nfrags; /* # entries in... */ struct scatterlist *tx_frags; /* dma_map_sg descriptor */ __u64 *tx_pages; /* rdma phys page addrs */ - union { - kib_phys_mr_t *pmr; /* MR for physical buffer */ - kib_fmr_t fmr; /* FMR */ - } tx_u; + kib_fmr_t fmr; /* FMR */ int tx_dmadir; /* dma direction */ } kib_tx_t; @@ -642,19 +616,19 @@ typedef struct kib_peer { extern kib_data_t kiblnd_data; -extern void kiblnd_hdev_destroy(kib_hca_dev_t *hdev); +void kiblnd_hdev_destroy(kib_hca_dev_t *hdev); static inline void kiblnd_hdev_addref_locked(kib_hca_dev_t *hdev) { - LASSERT (atomic_read(&hdev->ibh_ref) > 0); + LASSERT(atomic_read(&hdev->ibh_ref) > 0); atomic_inc(&hdev->ibh_ref); } static inline void kiblnd_hdev_decref(kib_hca_dev_t *hdev) { - LASSERT (atomic_read(&hdev->ibh_ref) > 0); + LASSERT(atomic_read(&hdev->ibh_ref) > 0); if (atomic_dec_and_test(&hdev->ibh_ref)) kiblnd_hdev_destroy(hdev); } @@ -701,7 +675,7 @@ do { \ do { \ CDEBUG(D_NET, "peer[%p] -> %s (%d)++\n", \ (peer), libcfs_nid2str((peer)->ibp_nid), \ - atomic_read (&(peer)->ibp_refcount)); \ + atomic_read(&(peer)->ibp_refcount)); \ atomic_inc(&(peer)->ibp_refcount); \ } while (0) @@ -709,32 +683,32 @@ do { \ do { \ CDEBUG(D_NET, "peer[%p] -> %s (%d)--\n", \ (peer), libcfs_nid2str((peer)->ibp_nid), \ - atomic_read (&(peer)->ibp_refcount)); \ + atomic_read(&(peer)->ibp_refcount)); \ LASSERT_ATOMIC_POS(&(peer)->ibp_refcount); \ if (atomic_dec_and_test(&(peer)->ibp_refcount)) \ kiblnd_destroy_peer(peer); \ } while (0) static inline struct list_head * -kiblnd_nid2peerlist (lnet_nid_t nid) +kiblnd_nid2peerlist(lnet_nid_t nid) { unsigned int hash = ((unsigned int)nid) % kiblnd_data.kib_peer_hash_size; - return (&kiblnd_data.kib_peers [hash]); + return &kiblnd_data.kib_peers[hash]; } static inline int -kiblnd_peer_active (kib_peer_t *peer) +kiblnd_peer_active(kib_peer_t *peer) { /* Am I in the peer hash table? */ - return (!list_empty(&peer->ibp_list)); + return !list_empty(&peer->ibp_list); } static inline kib_conn_t * -kiblnd_get_conn_locked (kib_peer_t *peer) +kiblnd_get_conn_locked(kib_peer_t *peer) { - LASSERT (!list_empty(&peer->ibp_conns)); + LASSERT(!list_empty(&peer->ibp_conns)); /* just return the first connection */ return list_entry(peer->ibp_conns.next, kib_conn_t, ibc_list); @@ -751,7 +725,7 @@ kiblnd_send_keepalive(kib_conn_t *conn) static inline int kiblnd_need_noop(kib_conn_t *conn) { - LASSERT (conn->ibc_state >= IBLND_CONN_ESTABLISHED); + LASSERT(conn->ibc_state >= IBLND_CONN_ESTABLISHED); if (conn->ibc_outstanding_credits < IBLND_CREDITS_HIGHWATER(conn->ibc_version) && @@ -788,7 +762,7 @@ kiblnd_abort_receives(kib_conn_t *conn) } static inline const char * -kiblnd_queue2str (kib_conn_t *conn, struct list_head *q) +kiblnd_queue2str(kib_conn_t *conn, struct list_head *q) { if (q == &conn->ibc_tx_queue) return "tx_queue"; @@ -815,43 +789,43 @@ kiblnd_queue2str (kib_conn_t *conn, struct list_head *q) #define IBLND_WID_MASK 3UL static inline __u64 -kiblnd_ptr2wreqid (void *ptr, int type) +kiblnd_ptr2wreqid(void *ptr, int type) { unsigned long lptr = (unsigned long)ptr; - LASSERT ((lptr & IBLND_WID_MASK) == 0); - LASSERT ((type & ~IBLND_WID_MASK) == 0); + LASSERT((lptr & IBLND_WID_MASK) == 0); + LASSERT((type & ~IBLND_WID_MASK) == 0); return (__u64)(lptr | type); } static inline void * -kiblnd_wreqid2ptr (__u64 wreqid) +kiblnd_wreqid2ptr(__u64 wreqid) { return (void *)(((unsigned long)wreqid) & ~IBLND_WID_MASK); } static inline int -kiblnd_wreqid2type (__u64 wreqid) +kiblnd_wreqid2type(__u64 wreqid) { - return (wreqid & IBLND_WID_MASK); + return wreqid & IBLND_WID_MASK; } static inline void -kiblnd_set_conn_state (kib_conn_t *conn, int state) +kiblnd_set_conn_state(kib_conn_t *conn, int state) { conn->ibc_state = state; mb(); } static inline void -kiblnd_init_msg (kib_msg_t *msg, int type, int body_nob) +kiblnd_init_msg(kib_msg_t *msg, int type, int body_nob) { msg->ibm_type = type; msg->ibm_nob = offsetof(kib_msg_t, ibm_u) + body_nob; } static inline int -kiblnd_rd_size (kib_rdma_desc_t *rd) +kiblnd_rd_size(kib_rdma_desc_t *rd) { int i; int size; @@ -887,7 +861,7 @@ kiblnd_rd_consume_frag(kib_rdma_desc_t *rd, int index, __u32 nob) rd->rd_frags[index].rf_addr += nob; rd->rd_frags[index].rf_nob -= nob; } else { - index ++; + index++; } return index; @@ -896,8 +870,8 @@ kiblnd_rd_consume_frag(kib_rdma_desc_t *rd, int index, __u32 nob) static inline int kiblnd_rd_msg_size(kib_rdma_desc_t *rd, int msgtype, int n) { - LASSERT (msgtype == IBLND_MSG_GET_REQ || - msgtype == IBLND_MSG_PUT_ACK); + LASSERT(msgtype == IBLND_MSG_GET_REQ || + msgtype == IBLND_MSG_PUT_ACK); return msgtype == IBLND_MSG_GET_REQ ? offsetof(kib_get_msg_t, ibgm_rd.rd_frags[n]) : @@ -978,57 +952,53 @@ int kiblnd_fmr_pool_map(kib_fmr_poolset_t *fps, __u64 *pages, int npages, __u64 iov, kib_fmr_t *fmr); void kiblnd_fmr_pool_unmap(kib_fmr_t *fmr, int status); -int kiblnd_pmr_pool_map(kib_pmr_poolset_t *pps, kib_hca_dev_t *hdev, - kib_rdma_desc_t *rd, __u64 *iova, kib_phys_mr_t **pp_pmr); -void kiblnd_pmr_pool_unmap(kib_phys_mr_t *pmr); - -int kiblnd_startup (lnet_ni_t *ni); -void kiblnd_shutdown (lnet_ni_t *ni); -int kiblnd_ctl (lnet_ni_t *ni, unsigned int cmd, void *arg); -void kiblnd_query (struct lnet_ni *ni, lnet_nid_t nid, unsigned long *when); +int kiblnd_startup(lnet_ni_t *ni); +void kiblnd_shutdown(lnet_ni_t *ni); +int kiblnd_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg); +void kiblnd_query(struct lnet_ni *ni, lnet_nid_t nid, unsigned long *when); int kiblnd_tunables_init(void); void kiblnd_tunables_fini(void); -int kiblnd_connd (void *arg); +int kiblnd_connd(void *arg); int kiblnd_scheduler(void *arg); int kiblnd_thread_start(int (*fn)(void *arg), void *arg, char *name); -int kiblnd_failover_thread (void *arg); +int kiblnd_failover_thread(void *arg); int kiblnd_alloc_pages(kib_pages_t **pp, int cpt, int npages); -void kiblnd_free_pages (kib_pages_t *p); +void kiblnd_free_pages(kib_pages_t *p); int kiblnd_cm_callback(struct rdma_cm_id *cmid, struct rdma_cm_event *event); int kiblnd_translate_mtu(int value); int kiblnd_dev_failover(kib_dev_t *dev); -int kiblnd_create_peer (lnet_ni_t *ni, kib_peer_t **peerp, lnet_nid_t nid); -void kiblnd_destroy_peer (kib_peer_t *peer); -void kiblnd_destroy_dev (kib_dev_t *dev); -void kiblnd_unlink_peer_locked (kib_peer_t *peer); -void kiblnd_peer_alive (kib_peer_t *peer); -kib_peer_t *kiblnd_find_peer_locked (lnet_nid_t nid); -void kiblnd_peer_connect_failed (kib_peer_t *peer, int active, int error); -int kiblnd_close_stale_conns_locked (kib_peer_t *peer, +int kiblnd_create_peer(lnet_ni_t *ni, kib_peer_t **peerp, lnet_nid_t nid); +void kiblnd_destroy_peer(kib_peer_t *peer); +void kiblnd_destroy_dev(kib_dev_t *dev); +void kiblnd_unlink_peer_locked(kib_peer_t *peer); +void kiblnd_peer_alive(kib_peer_t *peer); +kib_peer_t *kiblnd_find_peer_locked(lnet_nid_t nid); +void kiblnd_peer_connect_failed(kib_peer_t *peer, int active, int error); +int kiblnd_close_stale_conns_locked(kib_peer_t *peer, int version, __u64 incarnation); -int kiblnd_close_peer_conns_locked (kib_peer_t *peer, int why); +int kiblnd_close_peer_conns_locked(kib_peer_t *peer, int why); void kiblnd_connreq_done(kib_conn_t *conn, int status); -kib_conn_t *kiblnd_create_conn (kib_peer_t *peer, struct rdma_cm_id *cmid, +kib_conn_t *kiblnd_create_conn(kib_peer_t *peer, struct rdma_cm_id *cmid, int state, int version); -void kiblnd_destroy_conn (kib_conn_t *conn); -void kiblnd_close_conn (kib_conn_t *conn, int error); -void kiblnd_close_conn_locked (kib_conn_t *conn, int error); +void kiblnd_destroy_conn(kib_conn_t *conn); +void kiblnd_close_conn(kib_conn_t *conn, int error); +void kiblnd_close_conn_locked(kib_conn_t *conn, int error); -int kiblnd_init_rdma (kib_conn_t *conn, kib_tx_t *tx, int type, +int kiblnd_init_rdma(kib_conn_t *conn, kib_tx_t *tx, int type, int nob, kib_rdma_desc_t *dstrd, __u64 dstcookie); -void kiblnd_launch_tx (lnet_ni_t *ni, kib_tx_t *tx, lnet_nid_t nid); -void kiblnd_queue_tx_locked (kib_tx_t *tx, kib_conn_t *conn); -void kiblnd_queue_tx (kib_tx_t *tx, kib_conn_t *conn); -void kiblnd_init_tx_msg (lnet_ni_t *ni, kib_tx_t *tx, int type, int body_nob); -void kiblnd_txlist_done (lnet_ni_t *ni, struct list_head *txlist, +void kiblnd_launch_tx(lnet_ni_t *ni, kib_tx_t *tx, lnet_nid_t nid); +void kiblnd_queue_tx_locked(kib_tx_t *tx, kib_conn_t *conn); +void kiblnd_queue_tx(kib_tx_t *tx, kib_conn_t *conn); +void kiblnd_init_tx_msg(lnet_ni_t *ni, kib_tx_t *tx, int type, int body_nob); +void kiblnd_txlist_done(lnet_ni_t *ni, struct list_head *txlist, int status); void kiblnd_check_sends (kib_conn_t *conn); @@ -1036,10 +1006,10 @@ void kiblnd_qp_event(struct ib_event *event, void *arg); void kiblnd_cq_event(struct ib_event *event, void *arg); void kiblnd_cq_completion(struct ib_cq *cq, void *arg); -void kiblnd_pack_msg (lnet_ni_t *ni, kib_msg_t *msg, int version, +void kiblnd_pack_msg(lnet_ni_t *ni, kib_msg_t *msg, int version, int credits, lnet_nid_t dstnid, __u64 dststamp); int kiblnd_unpack_msg(kib_msg_t *msg, int nob); -int kiblnd_post_rx (kib_rx_t *rx, int credit); +int kiblnd_post_rx(kib_rx_t *rx, int credit); int kiblnd_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg); int kiblnd_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed, diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c index 477aa8b..a23a6d9 100644 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c @@ -121,7 +121,6 @@ kiblnd_get_idle_tx(lnet_ni_t *ni, lnet_nid_t target) LASSERT(tx->tx_conn == NULL); LASSERT(tx->tx_lntmsg[0] == NULL); LASSERT(tx->tx_lntmsg[1] == NULL); - LASSERT(tx->tx_u.pmr == NULL); LASSERT(tx->tx_nfrags == 0); return tx; @@ -575,7 +574,7 @@ kiblnd_fmr_map_tx(kib_net_t *net, kib_tx_t *tx, kib_rdma_desc_t *rd, int nob) cpt = tx->tx_pool->tpo_pool.po_owner->ps_cpt; fps = net->ibn_fmr_ps[cpt]; - rc = kiblnd_fmr_pool_map(fps, pages, npages, 0, &tx->tx_u.fmr); + rc = kiblnd_fmr_pool_map(fps, pages, npages, 0, &tx->fmr); if (rc != 0) { CERROR("Can't map %d pages: %d\n", npages, rc); return rc; @@ -583,8 +582,8 @@ kiblnd_fmr_map_tx(kib_net_t *net, kib_tx_t *tx, kib_rdma_desc_t *rd, int nob) /* If rd is not tx_rd, it's going to get sent to a peer, who will need * the rkey */ - rd->rd_key = (rd != tx->tx_rd) ? tx->tx_u.fmr.fmr_pfmr->fmr->rkey : - tx->tx_u.fmr.fmr_pfmr->fmr->lkey; + rd->rd_key = (rd != tx->tx_rd) ? tx->fmr.fmr_pfmr->fmr->rkey : + tx->fmr.fmr_pfmr->fmr->lkey; rd->rd_frags[0].rf_addr &= ~hdev->ibh_page_mask; rd->rd_frags[0].rf_nob = nob; rd->rd_nfrags = 1; @@ -592,42 +591,6 @@ kiblnd_fmr_map_tx(kib_net_t *net, kib_tx_t *tx, kib_rdma_desc_t *rd, int nob) return 0; } -static int -kiblnd_pmr_map_tx(kib_net_t *net, kib_tx_t *tx, kib_rdma_desc_t *rd, int nob) -{ - kib_hca_dev_t *hdev; - kib_pmr_poolset_t *pps; - __u64 iova; - int cpt; - int rc; - - LASSERT(tx->tx_pool != NULL); - LASSERT(tx->tx_pool->tpo_pool.po_owner != NULL); - - hdev = tx->tx_pool->tpo_hdev; - - iova = rd->rd_frags[0].rf_addr & ~hdev->ibh_page_mask; - - cpt = tx->tx_pool->tpo_pool.po_owner->ps_cpt; - - pps = net->ibn_pmr_ps[cpt]; - rc = kiblnd_pmr_pool_map(pps, hdev, rd, &iova, &tx->tx_u.pmr); - if (rc != 0) { - CERROR("Failed to create MR by phybuf: %d\n", rc); - return rc; - } - - /* If rd is not tx_rd, it's going to get sent to a peer, who will need - * the rkey */ - rd->rd_key = (rd != tx->tx_rd) ? tx->tx_u.pmr->pmr_mr->rkey : - tx->tx_u.pmr->pmr_mr->lkey; - rd->rd_nfrags = 1; - rd->rd_frags[0].rf_addr = iova; - rd->rd_frags[0].rf_nob = nob; - - return 0; -} - void kiblnd_unmap_tx(lnet_ni_t *ni, kib_tx_t *tx) { @@ -635,13 +598,9 @@ kiblnd_unmap_tx(lnet_ni_t *ni, kib_tx_t *tx) LASSERT(net != NULL); - if (net->ibn_fmr_ps != NULL && tx->tx_u.fmr.fmr_pfmr != NULL) { - kiblnd_fmr_pool_unmap(&tx->tx_u.fmr, tx->tx_status); - tx->tx_u.fmr.fmr_pfmr = NULL; - - } else if (net->ibn_pmr_ps != NULL && tx->tx_u.pmr != NULL) { - kiblnd_pmr_pool_unmap(tx->tx_u.pmr); - tx->tx_u.pmr = NULL; + if (net->ibn_fmr_ps && tx->fmr.fmr_pfmr) { + kiblnd_fmr_pool_unmap(&tx->fmr, tx->tx_status); + tx->fmr.fmr_pfmr = NULL; } if (tx->tx_nfrags != 0) { @@ -687,8 +646,6 @@ kiblnd_map_tx(lnet_ni_t *ni, kib_tx_t *tx, if (net->ibn_fmr_ps != NULL) return kiblnd_fmr_map_tx(net, tx, rd, nob); - else if (net->ibn_pmr_ps != NULL) - return kiblnd_pmr_map_tx(net, tx, rd, nob); return -EINVAL; } @@ -3133,8 +3090,7 @@ kiblnd_connd(void *arg) dropped_lock = 0; if (!list_empty(&kiblnd_data.kib_connd_zombies)) { - conn = list_entry(kiblnd_data. \ - kib_connd_zombies.next, + conn = list_entry(kiblnd_data.kib_connd_zombies.next, kib_conn_t, ibc_list); list_del(&conn->ibc_list); diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c index b0e0036..b3d1b5d 100644 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c @@ -126,11 +126,6 @@ static int fmr_cache = 1; module_param(fmr_cache, int, 0444); MODULE_PARM_DESC(fmr_cache, "non-zero to enable FMR caching"); -/* NB: this value is shared by all CPTs, it can grow at runtime */ -static int pmr_pool_size = 512; -module_param(pmr_pool_size, int, 0444); -MODULE_PARM_DESC(pmr_pool_size, "size of MR cache pmr pool on each CPT"); - /* * 0: disable failover * 1: enable failover if necessary @@ -170,7 +165,6 @@ kib_tunables_t kiblnd_tunables = { .kib_fmr_pool_size = &fmr_pool_size, .kib_fmr_flush_trigger = &fmr_flush_trigger, .kib_fmr_cache = &fmr_cache, - .kib_pmr_pool_size = &pmr_pool_size, .kib_require_priv_port = &require_privileged_port, .kib_use_priv_port = &use_privileged_port, .kib_nscheds = &nscheds diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c index 4128a92..d8bfcad 100644 --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c @@ -2252,8 +2252,6 @@ ksocknal_base_shutdown(void) int i; int j; - CDEBUG(D_MALLOC, "before NAL cleanup: kmem %d\n", - atomic_read(&libcfs_kmemory)); LASSERT(ksocknal_data.ksnd_nnets == 0); switch (ksocknal_data.ksnd_init) { @@ -2331,9 +2329,6 @@ ksocknal_base_shutdown(void) break; } - CDEBUG(D_MALLOC, "after NAL cleanup: kmem %d\n", - atomic_read(&libcfs_kmemory)); - module_put(THIS_MODULE); } diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h index 8a9d4a0..a0fcbc3 100644 --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h @@ -46,6 +46,7 @@ #include <linux/sysctl.h> #include <linux/uio.h> #include <linux/unistd.h> +#include <asm/irq.h> #include <net/sock.h> #include <net/tcp.h> @@ -519,8 +520,8 @@ ksocknal_conn_addref(ksock_conn_t *conn) atomic_inc(&conn->ksnc_conn_refcount); } -extern void ksocknal_queue_zombie_conn(ksock_conn_t *conn); -extern void ksocknal_finalize_zcreq(ksock_conn_t *conn); +void ksocknal_queue_zombie_conn(ksock_conn_t *conn); +void ksocknal_finalize_zcreq(ksock_conn_t *conn); static inline void ksocknal_conn_decref(ksock_conn_t *conn) @@ -565,8 +566,8 @@ ksocknal_tx_addref(ksock_tx_t *tx) atomic_inc(&tx->tx_refcount); } -extern void ksocknal_tx_prep(ksock_conn_t *, ksock_tx_t *tx); -extern void ksocknal_tx_done(lnet_ni_t *ni, ksock_tx_t *tx); +void ksocknal_tx_prep(ksock_conn_t *, ksock_tx_t *tx); +void ksocknal_tx_done(lnet_ni_t *ni, ksock_tx_t *tx); static inline void ksocknal_tx_decref(ksock_tx_t *tx) @@ -583,7 +584,7 @@ ksocknal_route_addref(ksock_route_t *route) atomic_inc(&route->ksnr_refcount); } -extern void ksocknal_destroy_route(ksock_route_t *route); +void ksocknal_destroy_route(ksock_route_t *route); static inline void ksocknal_route_decref(ksock_route_t *route) @@ -600,7 +601,7 @@ ksocknal_peer_addref(ksock_peer_t *peer) atomic_inc(&peer->ksnp_refcount); } -extern void ksocknal_destroy_peer(ksock_peer_t *peer); +void ksocknal_destroy_peer(ksock_peer_t *peer); static inline void ksocknal_peer_decref(ksock_peer_t *peer) @@ -620,70 +621,69 @@ int ksocknal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, unsigned int offset, unsigned int mlen, unsigned int rlen); int ksocknal_accept(lnet_ni_t *ni, struct socket *sock); -extern int ksocknal_add_peer(lnet_ni_t *ni, lnet_process_id_t id, __u32 ip, int port); -extern ksock_peer_t *ksocknal_find_peer_locked(lnet_ni_t *ni, lnet_process_id_t id); -extern ksock_peer_t *ksocknal_find_peer(lnet_ni_t *ni, lnet_process_id_t id); -extern void ksocknal_peer_failed(ksock_peer_t *peer); -extern int ksocknal_create_conn(lnet_ni_t *ni, ksock_route_t *route, - struct socket *sock, int type); -extern void ksocknal_close_conn_locked(ksock_conn_t *conn, int why); -extern void ksocknal_terminate_conn(ksock_conn_t *conn); -extern void ksocknal_destroy_conn(ksock_conn_t *conn); -extern int ksocknal_close_peer_conns_locked(ksock_peer_t *peer, - __u32 ipaddr, int why); -extern int ksocknal_close_conn_and_siblings(ksock_conn_t *conn, int why); -extern int ksocknal_close_matching_conns(lnet_process_id_t id, __u32 ipaddr); -extern ksock_conn_t *ksocknal_find_conn_locked(ksock_peer_t *peer, - ksock_tx_t *tx, int nonblk); - -extern int ksocknal_launch_packet(lnet_ni_t *ni, ksock_tx_t *tx, - lnet_process_id_t id); -extern ksock_tx_t *ksocknal_alloc_tx(int type, int size); -extern void ksocknal_free_tx(ksock_tx_t *tx); -extern ksock_tx_t *ksocknal_alloc_tx_noop(__u64 cookie, int nonblk); -extern void ksocknal_next_tx_carrier(ksock_conn_t *conn); -extern void ksocknal_queue_tx_locked(ksock_tx_t *tx, ksock_conn_t *conn); -extern void ksocknal_txlist_done(lnet_ni_t *ni, struct list_head *txlist, - int error); -extern void ksocknal_notify(lnet_ni_t *ni, lnet_nid_t gw_nid, int alive); -extern void ksocknal_query(struct lnet_ni *ni, lnet_nid_t nid, unsigned long *when); -extern int ksocknal_thread_start(int (*fn)(void *arg), void *arg, char *name); -extern void ksocknal_thread_fini(void); -extern void ksocknal_launch_all_connections_locked(ksock_peer_t *peer); -extern ksock_route_t *ksocknal_find_connectable_route_locked(ksock_peer_t *peer); -extern ksock_route_t *ksocknal_find_connecting_route_locked(ksock_peer_t *peer); -extern int ksocknal_new_packet(ksock_conn_t *conn, int skip); -extern int ksocknal_scheduler(void *arg); -extern int ksocknal_connd(void *arg); -extern int ksocknal_reaper(void *arg); -extern int ksocknal_send_hello(lnet_ni_t *ni, ksock_conn_t *conn, - lnet_nid_t peer_nid, ksock_hello_msg_t *hello); -extern int ksocknal_recv_hello(lnet_ni_t *ni, ksock_conn_t *conn, - ksock_hello_msg_t *hello, lnet_process_id_t *id, - __u64 *incarnation); -extern void ksocknal_read_callback(ksock_conn_t *conn); -extern void ksocknal_write_callback(ksock_conn_t *conn); - -extern int ksocknal_lib_zc_capable(ksock_conn_t *conn); -extern void ksocknal_lib_save_callback(struct socket *sock, ksock_conn_t *conn); -extern void ksocknal_lib_set_callback(struct socket *sock, ksock_conn_t *conn); -extern void ksocknal_lib_reset_callback(struct socket *sock, ksock_conn_t *conn); -extern void ksocknal_lib_push_conn(ksock_conn_t *conn); -extern int ksocknal_lib_get_conn_addrs(ksock_conn_t *conn); -extern int ksocknal_lib_setup_sock(struct socket *so); -extern int ksocknal_lib_send_iov(ksock_conn_t *conn, ksock_tx_t *tx); -extern int ksocknal_lib_send_kiov(ksock_conn_t *conn, ksock_tx_t *tx); -extern void ksocknal_lib_eager_ack(ksock_conn_t *conn); -extern int ksocknal_lib_recv_iov(ksock_conn_t *conn); -extern int ksocknal_lib_recv_kiov(ksock_conn_t *conn); -extern int ksocknal_lib_get_conn_tunables(ksock_conn_t *conn, int *txmem, - int *rxmem, int *nagle); - -extern int ksocknal_tunables_init(void); - -extern void ksocknal_lib_csum_tx(ksock_tx_t *tx); - -extern int ksocknal_lib_memory_pressure(ksock_conn_t *conn); -extern int ksocknal_lib_bind_thread_to_cpu(int id); +int ksocknal_add_peer(lnet_ni_t *ni, lnet_process_id_t id, __u32 ip, int port); +ksock_peer_t *ksocknal_find_peer_locked(lnet_ni_t *ni, lnet_process_id_t id); +ksock_peer_t *ksocknal_find_peer(lnet_ni_t *ni, lnet_process_id_t id); +void ksocknal_peer_failed(ksock_peer_t *peer); +int ksocknal_create_conn(lnet_ni_t *ni, ksock_route_t *route, + struct socket *sock, int type); +void ksocknal_close_conn_locked(ksock_conn_t *conn, int why); +void ksocknal_terminate_conn(ksock_conn_t *conn); +void ksocknal_destroy_conn(ksock_conn_t *conn); +int ksocknal_close_peer_conns_locked(ksock_peer_t *peer, + __u32 ipaddr, int why); +int ksocknal_close_conn_and_siblings(ksock_conn_t *conn, int why); +int ksocknal_close_matching_conns(lnet_process_id_t id, __u32 ipaddr); +ksock_conn_t *ksocknal_find_conn_locked(ksock_peer_t *peer, + ksock_tx_t *tx, int nonblk); + +int ksocknal_launch_packet(lnet_ni_t *ni, ksock_tx_t *tx, + lnet_process_id_t id); +ksock_tx_t *ksocknal_alloc_tx(int type, int size); +void ksocknal_free_tx(ksock_tx_t *tx); +ksock_tx_t *ksocknal_alloc_tx_noop(__u64 cookie, int nonblk); +void ksocknal_next_tx_carrier(ksock_conn_t *conn); +void ksocknal_queue_tx_locked(ksock_tx_t *tx, ksock_conn_t *conn); +void ksocknal_txlist_done(lnet_ni_t *ni, struct list_head *txlist, int error); +void ksocknal_notify(lnet_ni_t *ni, lnet_nid_t gw_nid, int alive); +void ksocknal_query(struct lnet_ni *ni, lnet_nid_t nid, unsigned long *when); +int ksocknal_thread_start(int (*fn)(void *arg), void *arg, char *name); +void ksocknal_thread_fini(void); +void ksocknal_launch_all_connections_locked(ksock_peer_t *peer); +ksock_route_t *ksocknal_find_connectable_route_locked(ksock_peer_t *peer); +ksock_route_t *ksocknal_find_connecting_route_locked(ksock_peer_t *peer); +int ksocknal_new_packet(ksock_conn_t *conn, int skip); +int ksocknal_scheduler(void *arg); +int ksocknal_connd(void *arg); +int ksocknal_reaper(void *arg); +int ksocknal_send_hello(lnet_ni_t *ni, ksock_conn_t *conn, + lnet_nid_t peer_nid, ksock_hello_msg_t *hello); +int ksocknal_recv_hello(lnet_ni_t *ni, ksock_conn_t *conn, + ksock_hello_msg_t *hello, lnet_process_id_t *id, + __u64 *incarnation); +void ksocknal_read_callback(ksock_conn_t *conn); +void ksocknal_write_callback(ksock_conn_t *conn); + +int ksocknal_lib_zc_capable(ksock_conn_t *conn); +void ksocknal_lib_save_callback(struct socket *sock, ksock_conn_t *conn); +void ksocknal_lib_set_callback(struct socket *sock, ksock_conn_t *conn); +void ksocknal_lib_reset_callback(struct socket *sock, ksock_conn_t *conn); +void ksocknal_lib_push_conn(ksock_conn_t *conn); +int ksocknal_lib_get_conn_addrs(ksock_conn_t *conn); +int ksocknal_lib_setup_sock(struct socket *so); +int ksocknal_lib_send_iov(ksock_conn_t *conn, ksock_tx_t *tx); +int ksocknal_lib_send_kiov(ksock_conn_t *conn, ksock_tx_t *tx); +void ksocknal_lib_eager_ack(ksock_conn_t *conn); +int ksocknal_lib_recv_iov(ksock_conn_t *conn); +int ksocknal_lib_recv_kiov(ksock_conn_t *conn); +int ksocknal_lib_get_conn_tunables(ksock_conn_t *conn, int *txmem, + int *rxmem, int *nagle); + +int ksocknal_tunables_init(void); + +void ksocknal_lib_csum_tx(ksock_tx_t *tx); + +int ksocknal_lib_memory_pressure(ksock_conn_t *conn); +int ksocknal_lib_bind_thread_to_cpu(int id); #endif /* _SOCKLND_SOCKLND_H_ */ diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c index fe2a83a..0d5aac6 100644 --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c @@ -526,8 +526,7 @@ ksocknal_process_transmit (ksock_conn_t *conn, ksock_tx_t *tx) counter++; /* exponential backoff warnings */ if ((counter & (-counter)) == counter) - CWARN("%u ENOMEM tx %p (%u allocated)\n", - counter, conn, atomic_read(&libcfs_kmemory)); + CWARN("%u ENOMEM tx %p\n", counter, conn); /* Queue on ksnd_enomem_conns for retry after a timeout */ spin_lock_bh(&ksocknal_data.ksnd_reaper_lock); diff --git a/drivers/staging/lustre/lnet/lnet/router_proc.c b/drivers/staging/lustre/lnet/lnet/router_proc.c index ee902dc..40f418b 100644 --- a/drivers/staging/lustre/lnet/lnet/router_proc.c +++ b/drivers/staging/lustre/lnet/lnet/router_proc.c @@ -32,17 +32,6 @@ static struct ctl_table_header *lnet_table_header; -#define CTL_LNET (0x100) -enum { - PSDEV_LNET_STATS = 100, - PSDEV_LNET_ROUTES, - PSDEV_LNET_ROUTERS, - PSDEV_LNET_PEERS, - PSDEV_LNET_BUFFERS, - PSDEV_LNET_NIS, - PSDEV_LNET_PTL_ROTOR, -}; - #define LNET_LOFFT_BITS (sizeof(loff_t) * 8) /* * NB: max allowed LNET_CPT_BITS is 8 on 64-bit system and 2 on 32-bit system diff --git a/drivers/staging/lustre/lnet/selftest/console.h b/drivers/staging/lustre/lnet/selftest/console.h index c4cf0ae..cdce2dd 100644 --- a/drivers/staging/lustre/lnet/selftest/console.h +++ b/drivers/staging/lustre/lnet/selftest/console.h @@ -187,51 +187,49 @@ lstcon_id2hash (lnet_process_id_t id, struct list_head *hash) int lstcon_console_init(void); int lstcon_ioctl_entry(unsigned int cmd, struct libcfs_ioctl_data *data); int lstcon_console_fini(void); -extern int lstcon_session_match(lst_sid_t sid); -extern int lstcon_session_new(char *name, int key, unsigned version, - int timeout, int flags, lst_sid_t *sid_up); -extern int lstcon_session_info(lst_sid_t *sid_up, int *key, unsigned *verp, - lstcon_ndlist_ent_t *entp, char *name_up, int len); -extern int lstcon_session_end(void); -extern int lstcon_session_debug(int timeout, struct list_head *result_up); -extern int lstcon_session_feats_check(unsigned feats); -extern int lstcon_batch_debug(int timeout, char *name, - int client, struct list_head *result_up); -extern int lstcon_group_debug(int timeout, char *name, - struct list_head *result_up); -extern int lstcon_nodes_debug(int timeout, int nnd, lnet_process_id_t *nds_up, - struct list_head *result_up); -extern int lstcon_group_add(char *name); -extern int lstcon_group_del(char *name); -extern int lstcon_group_clean(char *name, int args); -extern int lstcon_group_refresh(char *name, struct list_head *result_up); -extern int lstcon_nodes_add(char *name, int nnd, lnet_process_id_t *nds_up, - unsigned *featp, struct list_head *result_up); -extern int lstcon_nodes_remove(char *name, int nnd, lnet_process_id_t *nds_up, - struct list_head *result_up); -extern int lstcon_group_info(char *name, lstcon_ndlist_ent_t *gent_up, - int *index_p, int *ndent_p, lstcon_node_ent_t *ndents_up); -extern int lstcon_group_list(int idx, int len, char *name_up); -extern int lstcon_batch_add(char *name); -extern int lstcon_batch_run(char *name, int timeout, +int lstcon_session_match(lst_sid_t sid); +int lstcon_session_new(char *name, int key, unsigned version, + int timeout, int flags, lst_sid_t *sid_up); +int lstcon_session_info(lst_sid_t *sid_up, int *key, unsigned *verp, + lstcon_ndlist_ent_t *entp, char *name_up, int len); +int lstcon_session_end(void); +int lstcon_session_debug(int timeout, struct list_head *result_up); +int lstcon_session_feats_check(unsigned feats); +int lstcon_batch_debug(int timeout, char *name, + int client, struct list_head *result_up); +int lstcon_group_debug(int timeout, char *name, + struct list_head *result_up); +int lstcon_nodes_debug(int timeout, int nnd, lnet_process_id_t *nds_up, + struct list_head *result_up); +int lstcon_group_add(char *name); +int lstcon_group_del(char *name); +int lstcon_group_clean(char *name, int args); +int lstcon_group_refresh(char *name, struct list_head *result_up); +int lstcon_nodes_add(char *name, int nnd, lnet_process_id_t *nds_up, + unsigned *featp, struct list_head *result_up); +int lstcon_nodes_remove(char *name, int nnd, lnet_process_id_t *nds_up, + struct list_head *result_up); +int lstcon_group_info(char *name, lstcon_ndlist_ent_t *gent_up, + int *index_p, int *ndent_p, lstcon_node_ent_t *ndents_up); +int lstcon_group_list(int idx, int len, char *name_up); +int lstcon_batch_add(char *name); +int lstcon_batch_run(char *name, int timeout, struct list_head *result_up); +int lstcon_batch_stop(char *name, int force, struct list_head *result_up); +int lstcon_test_batch_query(char *name, int testidx, + int client, int timeout, struct list_head *result_up); -extern int lstcon_batch_stop(char *name, int force, - struct list_head *result_up); -extern int lstcon_test_batch_query(char *name, int testidx, - int client, int timeout, - struct list_head *result_up); -extern int lstcon_batch_del(char *name); -extern int lstcon_batch_list(int idx, int namelen, char *name_up); -extern int lstcon_batch_info(char *name, lstcon_test_batch_ent_t *ent_up, - int server, int testidx, int *index_p, - int *ndent_p, lstcon_node_ent_t *dents_up); -extern int lstcon_group_stat(char *grp_name, int timeout, - struct list_head *result_up); -extern int lstcon_nodes_stat(int count, lnet_process_id_t *ids_up, - int timeout, struct list_head *result_up); -extern int lstcon_test_add(char *batch_name, int type, int loop, - int concur, int dist, int span, - char *src_name, char *dst_name, - void *param, int paramlen, int *retp, - struct list_head *result_up); +int lstcon_batch_del(char *name); +int lstcon_batch_list(int idx, int namelen, char *name_up); +int lstcon_batch_info(char *name, lstcon_test_batch_ent_t *ent_up, + int server, int testidx, int *index_p, + int *ndent_p, lstcon_node_ent_t *dents_up); +int lstcon_group_stat(char *grp_name, int timeout, + struct list_head *result_up); +int lstcon_nodes_stat(int count, lnet_process_id_t *ids_up, + int timeout, struct list_head *result_up); +int lstcon_test_add(char *batch_name, int type, int loop, + int concur, int dist, int span, + char *src_name, char *dst_name, + void *param, int paramlen, int *retp, + struct list_head *result_up); #endif diff --git a/drivers/staging/lustre/lnet/selftest/framework.c b/drivers/staging/lustre/lnet/selftest/framework.c index 7c5185a..257de35 100644 --- a/drivers/staging/lustre/lnet/selftest/framework.c +++ b/drivers/staging/lustre/lnet/selftest/framework.c @@ -203,7 +203,8 @@ sfw_deactivate_session(void) sfw_batch_t *tsb; sfw_test_case_t *tsc; - if (sn == NULL) return; + if (sn == NULL) + return; LASSERT(!sn->sn_timer_active); @@ -613,7 +614,8 @@ sfw_destroy_test_instance(sfw_test_instance_t *tsi) srpc_client_rpc_t *rpc; sfw_test_unit_t *tsu; - if (!tsi->tsi_is_client) goto clean; + if (!tsi->tsi_is_client) + goto clean; tsi->tsi_ops->tso_fini(tsi); @@ -1700,7 +1702,8 @@ sfw_startup(void) for (i = 0; ; i++) { sv = &sfw_services[i]; - if (sv->sv_name == NULL) break; + if (sv->sv_name == NULL) + break; sv->sv_bulk_ready = NULL; sv->sv_handler = sfw_handle_server_rpc; @@ -1717,7 +1720,8 @@ sfw_startup(void) } /* about to sfw_shutdown, no need to add buffer */ - if (error) continue; + if (error) + continue; rc = srpc_service_add_buffers(sv, sv->sv_wi_total); if (rc != 0) { diff --git a/drivers/staging/lustre/lustre/fid/fid_request.c b/drivers/staging/lustre/lustre/fid/fid_request.c index 1362783..a16d577 100644 --- a/drivers/staging/lustre/lustre/fid/fid_request.c +++ b/drivers/staging/lustre/lustre/fid/fid_request.c @@ -498,11 +498,11 @@ int client_fid_init(struct obd_device *obd, int rc; cli->cl_seq = kzalloc(sizeof(*cli->cl_seq), GFP_NOFS); - if (cli->cl_seq == NULL) + if (!cli->cl_seq) return -ENOMEM; prefix = kzalloc(MAX_OBD_NAME + 5, GFP_NOFS); - if (prefix == NULL) { + if (!prefix) { rc = -ENOMEM; goto out_free_seq; } diff --git a/drivers/staging/lustre/lustre/fld/fld_cache.c b/drivers/staging/lustre/lustre/fld/fld_cache.c index ec2fc43..1b1066b 100644 --- a/drivers/staging/lustre/lustre/fld/fld_cache.c +++ b/drivers/staging/lustre/lustre/fld/fld_cache.c @@ -70,7 +70,7 @@ struct fld_cache *fld_cache_init(const char *name, LASSERT(cache_threshold < cache_size); cache = kzalloc(sizeof(*cache), GFP_NOFS); - if (cache == NULL) + if (!cache) return ERR_PTR(-ENOMEM); INIT_LIST_HEAD(&cache->fci_entries_head); diff --git a/drivers/staging/lustre/lustre/fld/fld_request.c b/drivers/staging/lustre/lustre/fld/fld_request.c index c3b47f2..1e450bf 100644 --- a/drivers/staging/lustre/lustre/fld/fld_request.c +++ b/drivers/staging/lustre/lustre/fld/fld_request.c @@ -222,7 +222,7 @@ int fld_client_add_target(struct lu_client_fld *fld, fld->lcf_name, name, tar->ft_idx); target = kzalloc(sizeof(*target), GFP_NOFS); - if (target == NULL) + if (!target) return -ENOMEM; spin_lock(&fld->lcf_lock); diff --git a/drivers/staging/lustre/lustre/include/linux/lustre_compat25.h b/drivers/staging/lustre/lustre/include/linux/lustre_compat25.h index 513c81f..6b14406 100644 --- a/drivers/staging/lustre/lustre/include/linux/lustre_compat25.h +++ b/drivers/staging/lustre/lustre/include/linux/lustre_compat25.h @@ -64,98 +64,6 @@ #define LTIME_S(time) (time.tv_sec) -/* inode_dio_wait(i) use as-is for write lock */ -# define inode_dio_write_done(i) do {} while (0) /* for write unlock */ -# define inode_dio_read(i) atomic_inc(&(i)->i_dio_count) -/* inode_dio_done(i) use as-is for read unlock */ - - -#ifndef FS_HAS_FIEMAP -#define FS_HAS_FIEMAP (0) -#endif - -#define ll_vfs_rmdir(dir, entry, mnt) vfs_rmdir(dir, entry) -#define ll_vfs_mkdir(inode, dir, mnt, mode) vfs_mkdir(inode, dir, mode) -#define ll_vfs_link(old, mnt, dir, new, mnt1) vfs_link(old, dir, new) -#define ll_vfs_unlink(inode, entry, mnt) vfs_unlink(inode, entry) -#define ll_vfs_mknod(dir, entry, mnt, mode, dev) \ - vfs_mknod(dir, entry, mode, dev) -#define ll_security_inode_unlink(dir, entry, mnt) \ - security_inode_unlink(dir, entry) -#define ll_vfs_rename(old, old_dir, mnt, new, new_dir, mnt1) \ - vfs_rename(old, old_dir, new, new_dir, NULL, 0) - -#define cfs_bio_io_error(a, b) bio_io_error((a)) -#define cfs_bio_endio(a, b, c) bio_endio((a), (c)) - -#define cfs_path_put(nd) path_put(&(nd)->path) - - -#ifndef SLAB_DESTROY_BY_RCU -#define SLAB_DESTROY_BY_RCU 0 -#endif - - - -static inline int -ll_quota_on(struct super_block *sb, int off, int ver, char *name, int remount) -{ - int rc; - - if (sb->s_qcop->quota_on) { - struct path path; - - rc = kern_path(name, LOOKUP_FOLLOW, &path); - if (!rc) - return rc; - rc = sb->s_qcop->quota_on(sb, off, ver - , &path - ); - path_put(&path); - return rc; - } else - return -ENOSYS; -} - -static inline int ll_quota_off(struct super_block *sb, int off, int remount) -{ - if (sb->s_qcop->quota_off) { - return sb->s_qcop->quota_off(sb, off - ); - } else - return -ENOSYS; -} - - -# define ll_vfs_dq_init dquot_initialize -# define ll_vfs_dq_drop dquot_drop -# define ll_vfs_dq_transfer dquot_transfer -# define ll_vfs_dq_off(sb, remount) dquot_suspend(sb, -1) - - - - - -#define queue_max_phys_segments(rq) queue_max_segments(rq) -#define queue_max_hw_segments(rq) queue_max_segments(rq) - - -#define ll_d_hlist_node hlist_node -#define ll_d_hlist_empty(list) hlist_empty(list) -#define ll_d_hlist_entry(ptr, type, name) hlist_entry(ptr.first, type, name) -#define ll_d_hlist_for_each(tmp, i_dentry) hlist_for_each(tmp, i_dentry) -#define ll_d_hlist_for_each_entry(dentry, p, i_dentry, alias) \ - p = NULL; hlist_for_each_entry(dentry, i_dentry, alias) - - -#define bio_hw_segments(q, bio) 0 - - -#define ll_pagevec_init(pv, cold) do {} while (0) -#define ll_pagevec_add(pv, pg) (0) -#define ll_pagevec_lru_add_file(pv) do {} while (0) - - #ifndef QUOTA_OK # define QUOTA_OK 0 #endif @@ -163,17 +71,6 @@ static inline int ll_quota_off(struct super_block *sb, int off, int remount) # define NO_QUOTA (-EDQUOT) #endif -#ifndef SEEK_DATA -#define SEEK_DATA 3 /* seek to the next data */ -#endif -#ifndef SEEK_HOLE -#define SEEK_HOLE 4 /* seek to the next hole */ -#endif - -#ifndef FMODE_UNSIGNED_OFFSET -#define FMODE_UNSIGNED_OFFSET ((__force fmode_t)0x2000) -#endif - #if !defined(_ASM_GENERIC_BITOPS_EXT2_NON_ATOMIC_H_) && !defined(ext2_set_bit) # define ext2_set_bit __test_and_set_bit_le # define ext2_clear_bit __test_and_clear_bit_le @@ -182,20 +79,4 @@ static inline int ll_quota_off(struct super_block *sb, int off, int remount) # define ext2_find_next_zero_bit find_next_zero_bit_le #endif -#ifdef ATTR_TIMES_SET -# define TIMES_SET_FLAGS (ATTR_MTIME_SET | ATTR_ATIME_SET | ATTR_TIMES_SET) -#else -# define TIMES_SET_FLAGS (ATTR_MTIME_SET | ATTR_ATIME_SET) -#endif - - -#include <linux/version.h> -#include <linux/fs.h> - -# define ll_umode_t umode_t - -#include <linux/dcache.h> - -# define ll_dirty_inode(inode, flag) (inode)->i_sb->s_op->dirty_inode((inode), flag) - #endif /* _COMPAT25_H */ diff --git a/drivers/staging/lustre/lustre/include/linux/lustre_patchless_compat.h b/drivers/staging/lustre/lustre/include/linux/lustre_patchless_compat.h index 1456278..ebe8d68 100644 --- a/drivers/staging/lustre/lustre/include/linux/lustre_patchless_compat.h +++ b/drivers/staging/lustre/lustre/include/linux/lustre_patchless_compat.h @@ -60,18 +60,6 @@ truncate_complete_page(struct address_space *mapping, struct page *page) ll_delete_from_page_cache(page); } -#ifdef ATTR_OPEN -# define ATTR_FROM_OPEN ATTR_OPEN -#else -# ifndef ATTR_FROM_OPEN -# define ATTR_FROM_OPEN 0 -# endif -#endif /* ATTR_OPEN */ - -#ifndef ATTR_RAW -#define ATTR_RAW 0 -#endif - #ifndef ATTR_CTIME_SET /* * set ATTR_CTIME_SET to a high value to avoid any risk of collision with other diff --git a/drivers/staging/lustre/lustre/include/lprocfs_status.h b/drivers/staging/lustre/lustre/include/lprocfs_status.h index 8ede2a0..fd3c4df 100644 --- a/drivers/staging/lustre/lustre/include/lprocfs_status.h +++ b/drivers/staging/lustre/lustre/include/lprocfs_status.h @@ -375,12 +375,11 @@ static inline void s2dhms(struct dhms *ts, time_t secs) #define JOBSTATS_PROCNAME_UID "procname_uid" #define JOBSTATS_NODELOCAL "nodelocal" -extern int lprocfs_write_frac_helper(const char __user *buffer, - unsigned long count, int *val, int mult); -extern int lprocfs_read_frac_helper(char *buffer, unsigned long count, - long val, int mult); -extern int lprocfs_stats_alloc_one(struct lprocfs_stats *stats, - unsigned int cpuid); +int lprocfs_write_frac_helper(const char __user *buffer, + unsigned long count, int *val, int mult); +int lprocfs_read_frac_helper(char *buffer, unsigned long count, + long val, int mult); +int lprocfs_stats_alloc_one(struct lprocfs_stats *stats, unsigned int cpuid); /* * \return value * < 0 : on error (only possible for opc as LPROCFS_GET_SMP_ID) @@ -497,20 +496,18 @@ lprocfs_stats_counter_get(struct lprocfs_stats *stats, unsigned int cpuid, * count itself to reside within a single cache line. */ -extern void lprocfs_counter_add(struct lprocfs_stats *stats, int idx, - long amount); -extern void lprocfs_counter_sub(struct lprocfs_stats *stats, int idx, - long amount); +void lprocfs_counter_add(struct lprocfs_stats *stats, int idx, long amount); +void lprocfs_counter_sub(struct lprocfs_stats *stats, int idx, long amount); #define lprocfs_counter_incr(stats, idx) \ lprocfs_counter_add(stats, idx, 1) #define lprocfs_counter_decr(stats, idx) \ lprocfs_counter_sub(stats, idx, 1) -extern __s64 lprocfs_read_helper(struct lprocfs_counter *lc, - struct lprocfs_counter_header *header, - enum lprocfs_stats_flags flags, - enum lprocfs_fields_flags field); +__s64 lprocfs_read_helper(struct lprocfs_counter *lc, + struct lprocfs_counter_header *header, + enum lprocfs_stats_flags flags, + enum lprocfs_fields_flags field); static inline __u64 lprocfs_stats_collector(struct lprocfs_stats *stats, int idx, enum lprocfs_fields_flags field) @@ -537,107 +534,103 @@ static inline __u64 lprocfs_stats_collector(struct lprocfs_stats *stats, extern struct lprocfs_stats * lprocfs_alloc_stats(unsigned int num, enum lprocfs_stats_flags flags); -extern void lprocfs_clear_stats(struct lprocfs_stats *stats); -extern void lprocfs_free_stats(struct lprocfs_stats **stats); -extern void lprocfs_init_ops_stats(int num_private_stats, - struct lprocfs_stats *stats); -extern void lprocfs_init_mps_stats(int num_private_stats, - struct lprocfs_stats *stats); -extern void lprocfs_init_ldlm_stats(struct lprocfs_stats *ldlm_stats); -extern int lprocfs_alloc_obd_stats(struct obd_device *obddev, - unsigned int num_private_stats); -extern int lprocfs_alloc_md_stats(struct obd_device *obddev, - unsigned int num_private_stats); -extern void lprocfs_counter_init(struct lprocfs_stats *stats, int index, - unsigned conf, const char *name, - const char *units); -extern void lprocfs_free_obd_stats(struct obd_device *obddev); -extern void lprocfs_free_md_stats(struct obd_device *obddev); +void lprocfs_clear_stats(struct lprocfs_stats *stats); +void lprocfs_free_stats(struct lprocfs_stats **stats); +void lprocfs_init_ops_stats(int num_private_stats, struct lprocfs_stats *stats); +void lprocfs_init_mps_stats(int num_private_stats, struct lprocfs_stats *stats); +void lprocfs_init_ldlm_stats(struct lprocfs_stats *ldlm_stats); +int lprocfs_alloc_obd_stats(struct obd_device *obddev, + unsigned int num_private_stats); +int lprocfs_alloc_md_stats(struct obd_device *obddev, + unsigned int num_private_stats); +void lprocfs_counter_init(struct lprocfs_stats *stats, int index, + unsigned conf, const char *name, const char *units); +void lprocfs_free_obd_stats(struct obd_device *obddev); +void lprocfs_free_md_stats(struct obd_device *obddev); struct obd_export; -extern int lprocfs_exp_cleanup(struct obd_export *exp); -extern struct dentry *ldebugfs_add_simple(struct dentry *root, - char *name, - void *data, - struct file_operations *fops); -extern struct dentry * +int lprocfs_exp_cleanup(struct obd_export *exp); +struct dentry *ldebugfs_add_simple(struct dentry *root, + char *name, + void *data, + struct file_operations *fops); +struct dentry * ldebugfs_add_symlink(const char *name, struct dentry *parent, - const char *format, ...); + const char *format, ...); -extern int ldebugfs_register_stats(struct dentry *parent, - const char *name, - struct lprocfs_stats *stats); +int ldebugfs_register_stats(struct dentry *parent, + const char *name, + struct lprocfs_stats *stats); /* lprocfs_status.c */ -extern int ldebugfs_add_vars(struct dentry *parent, - struct lprocfs_vars *var, - void *data); - -extern struct dentry *ldebugfs_register(const char *name, - struct dentry *parent, - struct lprocfs_vars *list, - void *data); - -extern void ldebugfs_remove(struct dentry **entryp); - -extern int lprocfs_obd_setup(struct obd_device *obd, struct lprocfs_vars *list, - struct attribute_group *attrs); -extern int lprocfs_obd_cleanup(struct obd_device *obd); - -extern int ldebugfs_seq_create(struct dentry *parent, - const char *name, - umode_t mode, - const struct file_operations *seq_fops, - void *data); -extern int ldebugfs_obd_seq_create(struct obd_device *dev, - const char *name, - umode_t mode, - const struct file_operations *seq_fops, - void *data); +int ldebugfs_add_vars(struct dentry *parent, + struct lprocfs_vars *var, + void *data); + +struct dentry *ldebugfs_register(const char *name, + struct dentry *parent, + struct lprocfs_vars *list, + void *data); + +void ldebugfs_remove(struct dentry **entryp); + +int lprocfs_obd_setup(struct obd_device *obd, struct lprocfs_vars *list, + struct attribute_group *attrs); +int lprocfs_obd_cleanup(struct obd_device *obd); + +int ldebugfs_seq_create(struct dentry *parent, + const char *name, + umode_t mode, + const struct file_operations *seq_fops, + void *data); +int ldebugfs_obd_seq_create(struct obd_device *dev, + const char *name, + umode_t mode, + const struct file_operations *seq_fops, + void *data); /* Generic callbacks */ -extern int lprocfs_rd_u64(struct seq_file *m, void *data); -extern int lprocfs_rd_atomic(struct seq_file *m, void *data); -extern int lprocfs_wr_atomic(struct file *file, const char __user *buffer, - unsigned long count, void *data); -extern int lprocfs_rd_uint(struct seq_file *m, void *data); -extern int lprocfs_wr_uint(struct file *file, const char __user *buffer, - unsigned long count, void *data); -extern int lprocfs_rd_name(struct seq_file *m, void *data); -extern int lprocfs_rd_server_uuid(struct seq_file *m, void *data); -extern int lprocfs_rd_conn_uuid(struct seq_file *m, void *data); -extern int lprocfs_rd_import(struct seq_file *m, void *data); -extern int lprocfs_rd_state(struct seq_file *m, void *data); -extern int lprocfs_rd_connect_flags(struct seq_file *m, void *data); +int lprocfs_rd_u64(struct seq_file *m, void *data); +int lprocfs_rd_atomic(struct seq_file *m, void *data); +int lprocfs_wr_atomic(struct file *file, const char __user *buffer, + unsigned long count, void *data); +int lprocfs_rd_uint(struct seq_file *m, void *data); +int lprocfs_wr_uint(struct file *file, const char __user *buffer, + unsigned long count, void *data); +int lprocfs_rd_name(struct seq_file *m, void *data); +int lprocfs_rd_server_uuid(struct seq_file *m, void *data); +int lprocfs_rd_conn_uuid(struct seq_file *m, void *data); +int lprocfs_rd_import(struct seq_file *m, void *data); +int lprocfs_rd_state(struct seq_file *m, void *data); +int lprocfs_rd_connect_flags(struct seq_file *m, void *data); struct adaptive_timeout; -extern int lprocfs_at_hist_helper(struct seq_file *m, - struct adaptive_timeout *at); -extern int lprocfs_rd_timeouts(struct seq_file *m, void *data); -extern int lprocfs_wr_timeouts(struct file *file, const char __user *buffer, - unsigned long count, void *data); -extern int lprocfs_wr_evict_client(struct file *file, const char __user *buffer, +int lprocfs_at_hist_helper(struct seq_file *m, struct adaptive_timeout *at); +int lprocfs_rd_timeouts(struct seq_file *m, void *data); +int lprocfs_wr_timeouts(struct file *file, const char __user *buffer, + unsigned long count, void *data); +int lprocfs_wr_evict_client(struct file *file, const char __user *buffer, size_t count, loff_t *off); -extern int lprocfs_wr_ping(struct file *file, const char __user *buffer, - size_t count, loff_t *off); -extern int lprocfs_wr_import(struct file *file, const char __user *buffer, +int lprocfs_wr_ping(struct file *file, const char __user *buffer, + size_t count, loff_t *off); +int lprocfs_wr_import(struct file *file, const char __user *buffer, size_t count, loff_t *off); -extern int lprocfs_rd_pinger_recov(struct seq_file *m, void *n); -extern int lprocfs_wr_pinger_recov(struct file *file, const char __user *buffer, - size_t count, loff_t *off); +int lprocfs_rd_pinger_recov(struct seq_file *m, void *n); +int lprocfs_wr_pinger_recov(struct file *file, const char __user *buffer, + size_t count, loff_t *off); /* Statfs helpers */ -extern int lprocfs_write_helper(const char __user *buffer, unsigned long count, - int *val); -extern int lprocfs_seq_read_frac_helper(struct seq_file *m, long val, int mult); -extern int lprocfs_write_u64_helper(const char __user *buffer, - unsigned long count, __u64 *val); -extern int lprocfs_write_frac_u64_helper(const char *buffer, - unsigned long count, - __u64 *val, int mult); -extern char *lprocfs_find_named_value(const char *buffer, const char *name, - size_t *count); +int lprocfs_write_helper(const char __user *buffer, unsigned long count, + int *val); +int lprocfs_seq_read_frac_helper(struct seq_file *m, long val, int mult); +int lprocfs_write_u64_helper(const char __user *buffer, + unsigned long count, __u64 *val); +int lprocfs_write_frac_u64_helper(const char *buffer, + unsigned long count, + __u64 *val, int mult); +char *lprocfs_find_named_value(const char *buffer, const char *name, + size_t *count); void lprocfs_oh_tally(struct obd_histogram *oh, unsigned int value); void lprocfs_oh_tally_log2(struct obd_histogram *oh, unsigned int value); void lprocfs_oh_clear(struct obd_histogram *oh); @@ -646,8 +639,8 @@ unsigned long lprocfs_oh_sum(struct obd_histogram *oh); void lprocfs_stats_collect(struct lprocfs_stats *stats, int idx, struct lprocfs_counter *cnt); -extern int lprocfs_single_release(struct inode *, struct file *); -extern int lprocfs_seq_release(struct inode *, struct file *); +int lprocfs_single_release(struct inode *, struct file *); +int lprocfs_seq_release(struct inode *, struct file *); /* You must use these macros when you want to refer to * the import in a client obd_device for a lprocfs entry */ @@ -746,7 +739,7 @@ extern const struct sysfs_ops lustre_sysfs_ops; /* lproc_ptlrpc.c */ struct ptlrpc_request; -extern void target_print_req(void *seq_file, struct ptlrpc_request *req); +void target_print_req(void *seq_file, struct ptlrpc_request *req); /* lproc_status.c */ int lprocfs_obd_rd_max_pages_per_rpc(struct seq_file *m, void *data); @@ -754,62 +747,62 @@ int lprocfs_obd_wr_max_pages_per_rpc(struct file *file, const char *buffer, size_t count, loff_t *off); /* all quota proc functions */ -extern int lprocfs_quota_rd_bunit(char *page, char **start, - loff_t off, int count, - int *eof, void *data); -extern int lprocfs_quota_wr_bunit(struct file *file, const char *buffer, - unsigned long count, void *data); -extern int lprocfs_quota_rd_btune(char *page, char **start, - loff_t off, int count, - int *eof, void *data); -extern int lprocfs_quota_wr_btune(struct file *file, const char *buffer, - unsigned long count, void *data); -extern int lprocfs_quota_rd_iunit(char *page, char **start, - loff_t off, int count, - int *eof, void *data); -extern int lprocfs_quota_wr_iunit(struct file *file, const char *buffer, - unsigned long count, void *data); -extern int lprocfs_quota_rd_itune(char *page, char **start, - loff_t off, int count, - int *eof, void *data); -extern int lprocfs_quota_wr_itune(struct file *file, const char *buffer, - unsigned long count, void *data); -extern int lprocfs_quota_rd_type(char *page, char **start, loff_t off, int count, - int *eof, void *data); -extern int lprocfs_quota_wr_type(struct file *file, const char *buffer, - unsigned long count, void *data); -extern int lprocfs_quota_rd_switch_seconds(char *page, char **start, loff_t off, - int count, int *eof, void *data); -extern int lprocfs_quota_wr_switch_seconds(struct file *file, - const char *buffer, - unsigned long count, void *data); -extern int lprocfs_quota_rd_sync_blk(char *page, char **start, loff_t off, +int lprocfs_quota_rd_bunit(char *page, char **start, + loff_t off, int count, + int *eof, void *data); +int lprocfs_quota_wr_bunit(struct file *file, const char *buffer, + unsigned long count, void *data); +int lprocfs_quota_rd_btune(char *page, char **start, + loff_t off, int count, + int *eof, void *data); +int lprocfs_quota_wr_btune(struct file *file, const char *buffer, + unsigned long count, void *data); +int lprocfs_quota_rd_iunit(char *page, char **start, + loff_t off, int count, + int *eof, void *data); +int lprocfs_quota_wr_iunit(struct file *file, const char *buffer, + unsigned long count, void *data); +int lprocfs_quota_rd_itune(char *page, char **start, + loff_t off, int count, + int *eof, void *data); +int lprocfs_quota_wr_itune(struct file *file, const char *buffer, + unsigned long count, void *data); +int lprocfs_quota_rd_type(char *page, char **start, loff_t off, int count, + int *eof, void *data); +int lprocfs_quota_wr_type(struct file *file, const char *buffer, + unsigned long count, void *data); +int lprocfs_quota_rd_switch_seconds(char *page, char **start, loff_t off, + int count, int *eof, void *data); +int lprocfs_quota_wr_switch_seconds(struct file *file, + const char *buffer, + unsigned long count, void *data); +int lprocfs_quota_rd_sync_blk(char *page, char **start, loff_t off, + int count, int *eof, void *data); +int lprocfs_quota_wr_sync_blk(struct file *file, const char *buffer, + unsigned long count, void *data); +int lprocfs_quota_rd_switch_qs(char *page, char **start, loff_t off, + int count, int *eof, void *data); +int lprocfs_quota_wr_switch_qs(struct file *file, + const char *buffer, unsigned long count, + void *data); +int lprocfs_quota_rd_boundary_factor(char *page, char **start, loff_t off, int count, int *eof, void *data); -extern int lprocfs_quota_wr_sync_blk(struct file *file, const char *buffer, - unsigned long count, void *data); -extern int lprocfs_quota_rd_switch_qs(char *page, char **start, loff_t off, - int count, int *eof, void *data); -extern int lprocfs_quota_wr_switch_qs(struct file *file, - const char *buffer, - unsigned long count, void *data); -extern int lprocfs_quota_rd_boundary_factor(char *page, char **start, loff_t off, - int count, int *eof, void *data); -extern int lprocfs_quota_wr_boundary_factor(struct file *file, - const char *buffer, - unsigned long count, void *data); -extern int lprocfs_quota_rd_least_bunit(char *page, char **start, loff_t off, - int count, int *eof, void *data); -extern int lprocfs_quota_wr_least_bunit(struct file *file, - const char *buffer, - unsigned long count, void *data); -extern int lprocfs_quota_rd_least_iunit(char *page, char **start, loff_t off, - int count, int *eof, void *data); -extern int lprocfs_quota_wr_least_iunit(struct file *file, - const char *buffer, - unsigned long count, void *data); -extern int lprocfs_quota_rd_qs_factor(char *page, char **start, loff_t off, - int count, int *eof, void *data); -extern int lprocfs_quota_wr_qs_factor(struct file *file, - const char *buffer, - unsigned long count, void *data); +int lprocfs_quota_wr_boundary_factor(struct file *file, + const char *buffer, unsigned long count, + void *data); +int lprocfs_quota_rd_least_bunit(char *page, char **start, loff_t off, + int count, int *eof, void *data); +int lprocfs_quota_wr_least_bunit(struct file *file, + const char *buffer, unsigned long count, + void *data); +int lprocfs_quota_rd_least_iunit(char *page, char **start, loff_t off, + int count, int *eof, void *data); +int lprocfs_quota_wr_least_iunit(struct file *file, + const char *buffer, unsigned long count, + void *data); +int lprocfs_quota_rd_qs_factor(char *page, char **start, loff_t off, + int count, int *eof, void *data); +int lprocfs_quota_wr_qs_factor(struct file *file, + const char *buffer, unsigned long count, + void *data); #endif /* LPROCFS_SNMP_H */ diff --git a/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h b/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h index 4d72d6e..ac78dbc 100644 --- a/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h +++ b/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h @@ -747,7 +747,7 @@ static inline ino_t lu_igif_ino(const struct lu_fid *fid) return fid_seq(fid); } -extern void lustre_swab_ost_id(struct ost_id *oid); +void lustre_swab_ost_id(struct ost_id *oid); /** * Get inode generation from a igif. @@ -814,8 +814,8 @@ static inline int fid_is_zero(const struct lu_fid *fid) return fid_seq(fid) == 0 && fid_oid(fid) == 0; } -extern void lustre_swab_lu_fid(struct lu_fid *fid); -extern void lustre_swab_lu_seq_range(struct lu_seq_range *range); +void lustre_swab_lu_fid(struct lu_fid *fid); +void lustre_swab_lu_seq_range(struct lu_seq_range *range); static inline int lu_fid_eq(const struct lu_fid *f0, const struct lu_fid *f1) { @@ -1131,7 +1131,7 @@ struct ptlrpc_body_v2 { __u64 pb_padding[4]; }; -extern void lustre_swab_ptlrpc_body(struct ptlrpc_body *pb); +void lustre_swab_ptlrpc_body(struct ptlrpc_body *pb); /* message body offset for lustre_msg_v2 */ /* ptlrpc body offset in all request/reply messages */ @@ -1395,7 +1395,7 @@ struct obd_connect_data { * reserve the flag for future use. */ -extern void lustre_swab_connect(struct obd_connect_data *ocd); +void lustre_swab_connect(struct obd_connect_data *ocd); /* * Supported checksum algorithms. Up to 32 checksum types are supported. @@ -1737,10 +1737,10 @@ struct hsm_state_set { __u64 hss_clearmask; }; -extern void lustre_swab_hsm_user_state(struct hsm_user_state *hus); -extern void lustre_swab_hsm_state_set(struct hsm_state_set *hss); +void lustre_swab_hsm_user_state(struct hsm_user_state *hus); +void lustre_swab_hsm_state_set(struct hsm_state_set *hss); -extern void lustre_swab_obd_statfs (struct obd_statfs *os); +void lustre_swab_obd_statfs(struct obd_statfs *os); /* ost_body.data values for OST_BRW */ @@ -1780,7 +1780,7 @@ struct obd_ioobj { #define ioobj_max_brw_set(ioo, num) \ do { (ioo)->ioo_max_brw = ((num) - 1) << IOOBJ_MAX_BRW_BITS; } while (0) -extern void lustre_swab_obd_ioobj (struct obd_ioobj *ioo); +void lustre_swab_obd_ioobj(struct obd_ioobj *ioo); /* multiple of 8 bytes => can array */ struct niobuf_remote { @@ -1789,7 +1789,7 @@ struct niobuf_remote { __u32 flags; }; -extern void lustre_swab_niobuf_remote (struct niobuf_remote *nbr); +void lustre_swab_niobuf_remote(struct niobuf_remote *nbr); /* lock value block communicated between the filter and llite */ @@ -1811,7 +1811,7 @@ struct ost_lvb_v1 { __u64 lvb_blocks; }; -extern void lustre_swab_ost_lvb_v1(struct ost_lvb_v1 *lvb); +void lustre_swab_ost_lvb_v1(struct ost_lvb_v1 *lvb); struct ost_lvb { __u64 lvb_size; @@ -1825,7 +1825,7 @@ struct ost_lvb { __u32 lvb_padding; }; -extern void lustre_swab_ost_lvb(struct ost_lvb *lvb); +void lustre_swab_ost_lvb(struct ost_lvb *lvb); /* * lquota data structures @@ -1864,7 +1864,7 @@ struct obd_quotactl { struct obd_dqblk qc_dqblk; }; -extern void lustre_swab_obd_quotactl(struct obd_quotactl *q); +void lustre_swab_obd_quotactl(struct obd_quotactl *q); #define Q_QUOTACHECK 0x800100 /* deprecated as of 2.4 */ #define Q_INITQUOTA 0x800101 /* deprecated as of 2.4 */ @@ -1913,7 +1913,7 @@ struct quota_body { #define QUOTA_DQACQ_FL_REL 0x4 /* release quota */ #define QUOTA_DQACQ_FL_REPORT 0x8 /* report usage */ -extern void lustre_swab_quota_body(struct quota_body *b); +void lustre_swab_quota_body(struct quota_body *b); /* Quota types currently supported */ enum { @@ -1993,7 +1993,7 @@ struct lquota_lvb { __u64 lvb_pad1; }; -extern void lustre_swab_lquota_lvb(struct lquota_lvb *lvb); +void lustre_swab_lquota_lvb(struct lquota_lvb *lvb); /* LVB used with global quota lock */ #define lvb_glb_ver lvb_id_may_rel /* current version of the global index */ @@ -2072,7 +2072,7 @@ typedef enum { REINT_MAX } mds_reint_t, mdt_reint_t; -extern void lustre_swab_generic_32s (__u32 *val); +void lustre_swab_generic_32s(__u32 *val); /* the disposition of the intent outlines what was executed */ #define DISP_IT_EXECD 0x00000001 @@ -2112,7 +2112,7 @@ extern void lustre_swab_generic_32s (__u32 *val); /* This FULL lock is useful to take on unlink sort of operations */ #define MDS_INODELOCK_FULL ((1<<(MDS_INODELOCK_MAXSHIFT+1))-1) -extern void lustre_swab_ll_fid (struct ll_fid *fid); +void lustre_swab_ll_fid(struct ll_fid *fid); /* NOTE: until Lustre 1.8.7/2.1.1 the fid_ver() was packed into name[2], * but was moved into name[1] along with the OID to avoid consuming the @@ -2231,7 +2231,7 @@ struct mdt_body { __u64 padding_10; }; /* 216 */ -extern void lustre_swab_mdt_body (struct mdt_body *b); +void lustre_swab_mdt_body(struct mdt_body *b); struct mdt_ioepoch { struct lustre_handle handle; @@ -2240,7 +2240,7 @@ struct mdt_ioepoch { __u32 padding; }; -extern void lustre_swab_mdt_ioepoch (struct mdt_ioepoch *b); +void lustre_swab_mdt_ioepoch(struct mdt_ioepoch *b); /* permissions for md_perm.mp_perm */ enum { @@ -2264,7 +2264,7 @@ struct mdt_remote_perm { __u32 rp_padding; }; -extern void lustre_swab_mdt_remote_perm(struct mdt_remote_perm *p); +void lustre_swab_mdt_remote_perm(struct mdt_remote_perm *p); struct mdt_rec_setattr { __u32 sa_opcode; @@ -2294,7 +2294,7 @@ struct mdt_rec_setattr { __u32 sa_padding_5; }; -extern void lustre_swab_mdt_rec_setattr (struct mdt_rec_setattr *sa); +void lustre_swab_mdt_rec_setattr(struct mdt_rec_setattr *sa); /* * Attribute flags used in mdt_rec_setattr::sa_valid. @@ -2584,7 +2584,7 @@ struct mdt_rec_reint { __u32 rr_padding_4; /* also fix lustre_swab_mdt_rec_reint */ }; -extern void lustre_swab_mdt_rec_reint(struct mdt_rec_reint *rr); +void lustre_swab_mdt_rec_reint(struct mdt_rec_reint *rr); struct lmv_desc { __u32 ld_tgt_count; /* how many MDS's */ @@ -2600,7 +2600,7 @@ struct lmv_desc { struct obd_uuid ld_uuid; }; -extern void lustre_swab_lmv_desc (struct lmv_desc *ld); +void lustre_swab_lmv_desc(struct lmv_desc *ld); /* TODO: lmv_stripe_md should contain mds capabilities for all slave fids */ struct lmv_stripe_md { @@ -2612,7 +2612,7 @@ struct lmv_stripe_md { struct lu_fid mea_ids[0]; }; -extern void lustre_swab_lmv_stripe_md(struct lmv_stripe_md *mea); +void lustre_swab_lmv_stripe_md(struct lmv_stripe_md *mea); /* lmv structures */ #define MEA_MAGIC_LAST_CHAR 0xb2221ca1 @@ -2670,7 +2670,7 @@ struct lov_desc { #define ld_magic ld_active_tgt_count /* for swabbing from llogs */ -extern void lustre_swab_lov_desc (struct lov_desc *ld); +void lustre_swab_lov_desc(struct lov_desc *ld); /* * LDLM requests: @@ -2697,7 +2697,7 @@ struct ldlm_res_id { #define PLDLMRES(res) (res)->lr_name.name[0], (res)->lr_name.name[1], \ (res)->lr_name.name[2], (res)->lr_name.name[3] -extern void lustre_swab_ldlm_res_id (struct ldlm_res_id *id); +void lustre_swab_ldlm_res_id(struct ldlm_res_id *id); static inline int ldlm_res_eq(const struct ldlm_res_id *res0, const struct ldlm_res_id *res1) @@ -2774,19 +2774,19 @@ typedef union { struct ldlm_inodebits l_inodebits; } ldlm_wire_policy_data_t; -extern void lustre_swab_ldlm_policy_data (ldlm_wire_policy_data_t *d); +void lustre_swab_ldlm_policy_data(ldlm_wire_policy_data_t *d); union ldlm_gl_desc { struct ldlm_gl_lquota_desc lquota_desc; }; -extern void lustre_swab_gl_desc(union ldlm_gl_desc *); +void lustre_swab_gl_desc(union ldlm_gl_desc *); struct ldlm_intent { __u64 opc; }; -extern void lustre_swab_ldlm_intent (struct ldlm_intent *i); +void lustre_swab_ldlm_intent(struct ldlm_intent *i); struct ldlm_resource_desc { ldlm_type_t lr_type; @@ -2794,7 +2794,7 @@ struct ldlm_resource_desc { struct ldlm_res_id lr_name; }; -extern void lustre_swab_ldlm_resource_desc (struct ldlm_resource_desc *r); +void lustre_swab_ldlm_resource_desc(struct ldlm_resource_desc *r); struct ldlm_lock_desc { struct ldlm_resource_desc l_resource; @@ -2803,7 +2803,7 @@ struct ldlm_lock_desc { ldlm_wire_policy_data_t l_policy_data; }; -extern void lustre_swab_ldlm_lock_desc (struct ldlm_lock_desc *l); +void lustre_swab_ldlm_lock_desc(struct ldlm_lock_desc *l); #define LDLM_LOCKREQ_HANDLES 2 #define LDLM_ENQUEUE_CANCEL_OFF 1 @@ -2815,7 +2815,7 @@ struct ldlm_request { struct lustre_handle lock_handle[LDLM_LOCKREQ_HANDLES]; }; -extern void lustre_swab_ldlm_request (struct ldlm_request *rq); +void lustre_swab_ldlm_request(struct ldlm_request *rq); /* If LDLM_ENQUEUE, 1 slot is already occupied, 1 is available. * Otherwise, 2 are available. */ @@ -2837,7 +2837,7 @@ struct ldlm_reply { __u64 lock_policy_res2; }; -extern void lustre_swab_ldlm_reply (struct ldlm_reply *r); +void lustre_swab_ldlm_reply(struct ldlm_reply *r); #define ldlm_flags_to_wire(flags) ((__u32)(flags)) #define ldlm_flags_from_wire(flags) ((__u64)(flags)) @@ -2881,7 +2881,8 @@ struct mgs_target_info { __u64 mti_nids[MTI_NIDS_MAX]; /* host nids (lnet_nid_t)*/ char mti_params[MTI_PARAM_MAXLEN]; }; -extern void lustre_swab_mgs_target_info(struct mgs_target_info *oinfo); + +void lustre_swab_mgs_target_info(struct mgs_target_info *oinfo); struct mgs_nidtbl_entry { __u64 mne_version; /* table version of this entry */ @@ -2896,7 +2897,8 @@ struct mgs_nidtbl_entry { lnet_nid_t nids[0]; /* variable size buffer for NIDs. */ } u; }; -extern void lustre_swab_mgs_nidtbl_entry(struct mgs_nidtbl_entry *oinfo); + +void lustre_swab_mgs_nidtbl_entry(struct mgs_nidtbl_entry *oinfo); struct mgs_config_body { char mcb_name[MTI_NAME_MAXLEN]; /* logname */ @@ -2906,13 +2908,15 @@ struct mgs_config_body { __u8 mcb_bits; /* bits unit size of config log */ __u32 mcb_units; /* # of units for bulk transfer */ }; -extern void lustre_swab_mgs_config_body(struct mgs_config_body *body); + +void lustre_swab_mgs_config_body(struct mgs_config_body *body); struct mgs_config_res { __u64 mcr_offset; /* index of last config log */ __u64 mcr_size; /* size of the log */ }; -extern void lustre_swab_mgs_config_res(struct mgs_config_res *body); + +void lustre_swab_mgs_config_res(struct mgs_config_res *body); /* Config marker flags (in config log) */ #define CM_START 0x01 @@ -2933,8 +2937,7 @@ struct cfg_marker { char cm_comment[MTI_NAME_MAXLEN]; }; -extern void lustre_swab_cfg_marker(struct cfg_marker *marker, - int swab, int size); +void lustre_swab_cfg_marker(struct cfg_marker *marker, int swab, int size); /* * Opcodes for multiple servers. @@ -3334,7 +3337,7 @@ static inline void lustre_get_wire_obdo(struct obd_connect_data *ocd, } } -extern void lustre_swab_obdo (struct obdo *o); +void lustre_swab_obdo(struct obdo *o); /* request structure for OST's */ struct ost_body { @@ -3348,25 +3351,25 @@ struct ll_fiemap_info_key { struct ll_user_fiemap fiemap; }; -extern void lustre_swab_ost_body (struct ost_body *b); -extern void lustre_swab_ost_last_id(__u64 *id); -extern void lustre_swab_fiemap(struct ll_user_fiemap *fiemap); +void lustre_swab_ost_body(struct ost_body *b); +void lustre_swab_ost_last_id(__u64 *id); +void lustre_swab_fiemap(struct ll_user_fiemap *fiemap); -extern void lustre_swab_lov_user_md_v1(struct lov_user_md_v1 *lum); -extern void lustre_swab_lov_user_md_v3(struct lov_user_md_v3 *lum); -extern void lustre_swab_lov_user_md_objects(struct lov_user_ost_data *lod, - int stripe_count); -extern void lustre_swab_lov_mds_md(struct lov_mds_md *lmm); +void lustre_swab_lov_user_md_v1(struct lov_user_md_v1 *lum); +void lustre_swab_lov_user_md_v3(struct lov_user_md_v3 *lum); +void lustre_swab_lov_user_md_objects(struct lov_user_ost_data *lod, + int stripe_count); +void lustre_swab_lov_mds_md(struct lov_mds_md *lmm); /* llog_swab.c */ -extern void lustre_swab_llogd_body (struct llogd_body *d); -extern void lustre_swab_llog_hdr (struct llog_log_hdr *h); -extern void lustre_swab_llogd_conn_body (struct llogd_conn_body *d); -extern void lustre_swab_llog_rec(struct llog_rec_hdr *rec); -extern void lustre_swab_llog_id(struct llog_logid *lid); +void lustre_swab_llogd_body(struct llogd_body *d); +void lustre_swab_llog_hdr(struct llog_log_hdr *h); +void lustre_swab_llogd_conn_body(struct llogd_conn_body *d); +void lustre_swab_llog_rec(struct llog_rec_hdr *rec); +void lustre_swab_llog_id(struct llog_logid *lid); struct lustre_cfg; -extern void lustre_swab_lustre_cfg(struct lustre_cfg *lcfg); +void lustre_swab_lustre_cfg(struct lustre_cfg *lcfg); /* Functions for dumping PTLRPC fields */ void dump_rniobuf(struct niobuf_remote *rnb); @@ -3418,7 +3421,8 @@ struct idx_info { __u64 ii_pad2; __u64 ii_pad3; }; -extern void lustre_swab_idx_info(struct idx_info *ii); + +void lustre_swab_idx_info(struct idx_info *ii); #define II_END_OFF MDS_DIR_END_OFF /* all entries have been read */ @@ -3450,7 +3454,8 @@ struct lu_idxpage { * For the time being, we only support fixed-size key & record. */ char lip_entries[0]; }; -extern void lustre_swab_lip_header(struct lu_idxpage *lip); + +void lustre_swab_lip_header(struct lu_idxpage *lip); #define LIP_HDR_SIZE (offsetof(struct lu_idxpage, lip_entries)) @@ -3490,7 +3495,7 @@ struct lustre_capa { __u8 lc_hmac[CAPA_HMAC_MAX_LEN]; /** HMAC */ } __attribute__((packed)); -extern void lustre_swab_lustre_capa(struct lustre_capa *c); +void lustre_swab_lustre_capa(struct lustre_capa *c); /** lustre_capa::lc_opc */ enum { @@ -3548,7 +3553,7 @@ struct lustre_capa_key { __u8 lk_key[CAPA_HMAC_KEY_MAX_LEN]; /**< key */ } __attribute__((packed)); -extern void lustre_swab_lustre_capa_key(struct lustre_capa_key *k); +void lustre_swab_lustre_capa_key(struct lustre_capa_key *k); /** The link ea holds 1 \a link_ea_entry for each hardlink */ #define LINK_EA_MAGIC 0x11EAF1DFUL @@ -3620,12 +3625,12 @@ struct hsm_progress_kernel { __u64 hpk_padding2; } __attribute__((packed)); -extern void lustre_swab_hsm_user_state(struct hsm_user_state *hus); -extern void lustre_swab_hsm_current_action(struct hsm_current_action *action); -extern void lustre_swab_hsm_progress_kernel(struct hsm_progress_kernel *hpk); -extern void lustre_swab_hsm_user_state(struct hsm_user_state *hus); -extern void lustre_swab_hsm_user_item(struct hsm_user_item *hui); -extern void lustre_swab_hsm_request(struct hsm_request *hr); +void lustre_swab_hsm_user_state(struct hsm_user_state *hus); +void lustre_swab_hsm_current_action(struct hsm_current_action *action); +void lustre_swab_hsm_progress_kernel(struct hsm_progress_kernel *hpk); +void lustre_swab_hsm_user_state(struct hsm_user_state *hus); +void lustre_swab_hsm_user_item(struct hsm_user_item *hui); +void lustre_swab_hsm_request(struct hsm_request *hr); /** * These are object update opcode under UPDATE_OBJ, which is currently diff --git a/drivers/staging/lustre/lustre/include/lustre/lustre_user.h b/drivers/staging/lustre/lustre/include/lustre/lustre_user.h index e095ada..9b1bb23 100644 --- a/drivers/staging/lustre/lustre/include/lustre/lustre_user.h +++ b/drivers/staging/lustre/lustre/include/lustre/lustre_user.h @@ -406,7 +406,7 @@ static inline int lmv_user_md_size(int stripes, int lmm_magic) stripes * sizeof(struct lmv_user_mds_data); } -extern void lustre_swab_lmv_user_md(struct lmv_user_md *lum); +void lustre_swab_lmv_user_md(struct lmv_user_md *lum); struct ll_recreate_obj { __u64 lrc_id; diff --git a/drivers/staging/lustre/lustre/include/lustre_dlm.h b/drivers/staging/lustre/lustre/include/lustre_dlm.h index f6f4c03..3552546 100644 --- a/drivers/staging/lustre/lustre/include/lustre_dlm.h +++ b/drivers/staging/lustre/lustre/include/lustre_dlm.h @@ -1017,7 +1017,7 @@ extern struct obd_ops ldlm_obd_ops; extern char *ldlm_lockname[]; extern char *ldlm_typename[]; -extern char *ldlm_it2str(int it); +char *ldlm_it2str(int it); /** * Just a fancy CDEBUG call with log level preset to LDLM_DEBUG. diff --git a/drivers/staging/lustre/lustre/include/lustre_export.h b/drivers/staging/lustre/lustre/include/lustre_export.h index 3b992b4..5189fad 100644 --- a/drivers/staging/lustre/lustre/include/lustre_export.h +++ b/drivers/staging/lustre/lustre/include/lustre_export.h @@ -368,8 +368,8 @@ static inline bool imp_connect_disp_stripe(struct obd_import *imp) return ocd->ocd_connect_flags & OBD_CONNECT_DISP_STRIPE; } -extern struct obd_export *class_conn2export(struct lustre_handle *conn); -extern struct obd_device *class_conn2obd(struct lustre_handle *conn); +struct obd_export *class_conn2export(struct lustre_handle *conn); +struct obd_device *class_conn2obd(struct lustre_handle *conn); /** @} export */ diff --git a/drivers/staging/lustre/lustre/include/lustre_import.h b/drivers/staging/lustre/lustre/include/lustre_import.h index dcc8076..5a38f3d 100644 --- a/drivers/staging/lustre/lustre/include/lustre_import.h +++ b/drivers/staging/lustre/lustre/include/lustre_import.h @@ -375,8 +375,8 @@ extern unsigned int at_max; /* genops.c */ struct obd_export; -extern struct obd_import *class_exp2cliimp(struct obd_export *); -extern struct obd_import *class_conn2cliimp(struct lustre_handle *); +struct obd_import *class_exp2cliimp(struct obd_export *); +struct obd_import *class_conn2cliimp(struct lustre_handle *); /** @} import */ diff --git a/drivers/staging/lustre/lustre/include/lustre_net.h b/drivers/staging/lustre/lustre/include/lustre_net.h index 77a7de9..48ad60b 100644 --- a/drivers/staging/lustre/lustre/include/lustre_net.h +++ b/drivers/staging/lustre/lustre/include/lustre_net.h @@ -2183,7 +2183,7 @@ struct ptlrpcd_ctl { */ struct ptlrpc_request_set *pc_set; /** - * Thread name used in cfs_daemonize() + * Thread name used in kthread_run() */ char pc_name[16]; /** @@ -2277,18 +2277,18 @@ static inline bool nrs_policy_compat_one(const struct ptlrpc_service *svc, /* ptlrpc/events.c */ extern lnet_handle_eq_t ptlrpc_eq_h; -extern int ptlrpc_uuid_to_peer(struct obd_uuid *uuid, - lnet_process_id_t *peer, lnet_nid_t *self); +int ptlrpc_uuid_to_peer(struct obd_uuid *uuid, + lnet_process_id_t *peer, lnet_nid_t *self); /** * These callbacks are invoked by LNet when something happened to * underlying buffer * @{ */ -extern void request_out_callback(lnet_event_t *ev); -extern void reply_in_callback(lnet_event_t *ev); -extern void client_bulk_callback(lnet_event_t *ev); -extern void request_in_callback(lnet_event_t *ev); -extern void reply_out_callback(lnet_event_t *ev); +void request_out_callback(lnet_event_t *ev); +void reply_in_callback(lnet_event_t *ev); +void client_bulk_callback(lnet_event_t *ev); +void request_in_callback(lnet_event_t *ev); +void reply_out_callback(lnet_event_t *ev); /** @} */ /* ptlrpc/connection.c */ @@ -2299,7 +2299,7 @@ int ptlrpc_connection_put(struct ptlrpc_connection *c); struct ptlrpc_connection *ptlrpc_connection_addref(struct ptlrpc_connection *); int ptlrpc_connection_init(void); void ptlrpc_connection_fini(void); -extern lnet_pid_t ptl_get_pid(void); +lnet_pid_t ptl_get_pid(void); /* ptlrpc/niobuf.c */ /** diff --git a/drivers/staging/lustre/lustre/include/obd.h b/drivers/staging/lustre/lustre/include/obd.h index 55452e5..9ad8c26 100644 --- a/drivers/staging/lustre/lustre/include/obd.h +++ b/drivers/staging/lustre/lustre/include/obd.h @@ -1472,7 +1472,7 @@ static inline bool filename_is_volatile(const char *name, int namelen, int *idx) } /* we have an idx, read it */ start = name + LUSTRE_VOLATILE_HDR_LEN + 1; - *idx = strtoul(start, &end, 0); + *idx = simple_strtoul(start, &end, 0); /* error cases: * no digit, no trailing :, negative value */ diff --git a/drivers/staging/lustre/lustre/include/obd_class.h b/drivers/staging/lustre/lustre/include/obd_class.h index 36ed781..87bb2ce 100644 --- a/drivers/staging/lustre/lustre/include/obd_class.h +++ b/drivers/staging/lustre/lustre/include/obd_class.h @@ -64,10 +64,10 @@ extern struct obd_device *obd_devs[MAX_OBD_DEVICES]; extern rwlock_t obd_dev_lock; /* OBD Operations Declarations */ -extern struct obd_device *class_conn2obd(struct lustre_handle *); -extern struct obd_device *class_exp2obd(struct obd_export *); -extern int class_handle_ioctl(unsigned int cmd, unsigned long arg); -extern int lustre_get_jobid(char *jobid); +struct obd_device *class_conn2obd(struct lustre_handle *); +struct obd_device *class_exp2obd(struct obd_export *); +int class_handle_ioctl(unsigned int cmd, unsigned long arg); +int lustre_get_jobid(char *jobid); struct lu_device_type; @@ -139,7 +139,7 @@ int class_add_conn(struct obd_device *obd, struct lustre_cfg *lcfg); int class_add_uuid(const char *uuid, __u64 nid); /*obdecho*/ -extern void lprocfs_echo_init_vars(struct lprocfs_static_vars *lvars); +void lprocfs_echo_init_vars(struct lprocfs_static_vars *lvars); #define CFG_F_START 0x01 /* Set when we start updating from a log */ #define CFG_F_MARKER 0x02 /* We are within a maker */ @@ -1823,8 +1823,8 @@ static inline int md_revalidate_lock(struct obd_export *exp, /* OBD Metadata Support */ -extern int obd_init_caches(void); -extern void obd_cleanup_caches(void); +int obd_init_caches(void); +void obd_cleanup_caches(void); /* support routines */ extern struct kmem_cache *obdo_cachep; @@ -1869,8 +1869,7 @@ extern int (*ptlrpc_put_connection_superhack)(struct ptlrpc_connection *c); /* obd_mount.c */ /* sysctl.c */ -extern void obd_sysctl_init (void); -extern void obd_sysctl_clean (void); +int obd_sysctl_init(void); /* uuid.c */ typedef __u8 class_uuid_t[16]; diff --git a/drivers/staging/lustre/lustre/include/obd_support.h b/drivers/staging/lustre/lustre/include/obd_support.h index 73e2d48..18aec79 100644 --- a/drivers/staging/lustre/lustre/include/obd_support.h +++ b/drivers/staging/lustre/lustre/include/obd_support.h @@ -56,9 +56,7 @@ extern unsigned int obd_dump_on_eviction; /* obd_timeout should only be used for recovery, not for networking / disk / timings affected by load (use Adaptive Timeouts) */ extern unsigned int obd_timeout; /* seconds */ -extern unsigned int ldlm_timeout; /* seconds */ extern unsigned int obd_timeout_set; -extern unsigned int ldlm_timeout_set; extern unsigned int at_min; extern unsigned int at_max; extern unsigned int at_history; @@ -105,8 +103,6 @@ int obd_alloc_fail(const void *ptr, const char *name, const char *type, /* Timeout definitions */ #define OBD_TIMEOUT_DEFAULT 100 -#define LDLM_TIMEOUT_DEFAULT 20 -#define MDS_LDLM_TIMEOUT_DEFAULT 6 /* Time to wait for all clients to reconnect during recovery (hard limit) */ #define OBD_RECOVERY_TIME_HARD (obd_timeout * 9) /* Time to wait for all clients to reconnect during recovery (soft limit) */ @@ -505,9 +501,7 @@ int obd_alloc_fail(const void *ptr, const char *name, const char *type, #define OBD_FAIL_ONCE CFS_FAIL_ONCE #define OBD_FAILED CFS_FAILED -extern atomic_t libcfs_kmemory; - -extern void obd_update_maxusage(void); +void obd_update_maxusage(void); #define obd_memory_add(size) \ lprocfs_counter_add(obd_memory, OBD_MEMORY_STAT, (long)(size)) @@ -526,8 +520,8 @@ extern void obd_update_maxusage(void); lprocfs_stats_collector(obd_memory, OBD_MEMORY_PAGES_STAT, \ LPROCFS_FIELDS_FLAGS_SUM) -extern __u64 obd_memory_max(void); -extern __u64 obd_pages_max(void); +__u64 obd_memory_max(void); +__u64 obd_pages_max(void); #define OBD_DEBUG_MEMUSAGE (1) @@ -622,8 +616,8 @@ do { \ if (unlikely((ptr) == NULL)) { \ CERROR("vmalloc of '" #ptr "' (%d bytes) failed\n", \ (int)(size)); \ - CERROR("%llu total bytes allocated by Lustre, %d by LNET\n", \ - obd_memory_sum(), atomic_read(&libcfs_kmemory)); \ + CERROR("%llu total bytes allocated by Lustre\n", \ + obd_memory_sum()); \ } else { \ OBD_ALLOC_POST(ptr, size, "vmalloced"); \ } \ @@ -769,12 +763,10 @@ do { \ "failed\n", (int)1, \ (__u64)(1 << PAGE_CACHE_SHIFT)); \ CERROR("%llu total bytes and %llu total pages " \ - "(%llu bytes) allocated by Lustre, " \ - "%d total bytes by LNET\n", \ + "(%llu bytes) allocated by Lustre\n", \ obd_memory_sum(), \ obd_pages_sum() << PAGE_CACHE_SHIFT, \ - obd_pages_sum(), \ - atomic_read(&libcfs_kmemory)); \ + obd_pages_sum()); \ } else { \ obd_pages_add(0); \ CDEBUG(D_MALLOC, "alloc_pages '" #ptr "': %d page(s) / " \ diff --git a/drivers/staging/lustre/lustre/lclient/lcommon_cl.c b/drivers/staging/lustre/lustre/lclient/lcommon_cl.c index e0c1cca..9053f81 100644 --- a/drivers/staging/lustre/lustre/lclient/lcommon_cl.c +++ b/drivers/staging/lustre/lustre/lclient/lcommon_cl.c @@ -203,7 +203,7 @@ struct lu_device *ccc_device_alloc(const struct lu_env *env, int rc; vdv = kzalloc(sizeof(*vdv), GFP_NOFS); - if (vdv == NULL) + if (!vdv) return ERR_PTR(-ENOMEM); lud = &vdv->cdv_cl.cd_lu_dev; diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_internal.h b/drivers/staging/lustre/lustre/ldlm/ldlm_internal.h index 6601e6b..fa4b7c7 100644 --- a/drivers/staging/lustre/lustre/ldlm/ldlm_internal.h +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_internal.h @@ -209,7 +209,7 @@ struct ldlm_state { /* interval tree, for LDLM_EXTENT. */ extern struct kmem_cache *ldlm_interval_slab; /* slab cache for ldlm_interval */ -extern void ldlm_interval_attach(struct ldlm_interval *n, struct ldlm_lock *l); +void ldlm_interval_attach(struct ldlm_interval *n, struct ldlm_lock *l); struct ldlm_interval *ldlm_interval_detach(struct ldlm_lock *l); struct ldlm_interval *ldlm_interval_alloc(struct ldlm_lock *lock); void ldlm_interval_free(struct ldlm_interval *node); diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_lib.c b/drivers/staging/lustre/lustre/ldlm/ldlm_lib.c index 764f986..badd227 100644 --- a/drivers/staging/lustre/lustre/ldlm/ldlm_lib.c +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_lib.c @@ -656,7 +656,8 @@ int target_pack_pool_reply(struct ptlrpc_request *req) } EXPORT_SYMBOL(target_pack_pool_reply); -int target_send_reply_msg(struct ptlrpc_request *req, int rc, int fail_id) +static int +target_send_reply_msg(struct ptlrpc_request *req, int rc, int fail_id) { if (OBD_FAIL_CHECK_ORSET(fail_id & ~OBD_FAIL_ONCE, OBD_FAIL_ONCE)) { DEBUG_REQ(D_ERROR, req, "dropping reply"); diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c b/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c index bb2246d..cd340fc 100644 --- a/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c @@ -1528,7 +1528,7 @@ struct ldlm_lock *ldlm_lock_create(struct ldlm_namespace *ns, if (lvb_len) { lock->l_lvb_len = lvb_len; lock->l_lvb_data = kzalloc(lvb_len, GFP_NOFS); - if (lock->l_lvb_data == NULL) + if (!lock->l_lvb_data) goto out; } @@ -1813,7 +1813,7 @@ int ldlm_run_ast_work(struct ldlm_namespace *ns, struct list_head *rpc_list, return 0; arg = kzalloc(sizeof(*arg), GFP_NOFS); - if (arg == NULL) + if (!arg) return -ENOMEM; atomic_set(&arg->restart, 0); diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c b/drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c index b7b6ca1..ac79db9 100644 --- a/drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c @@ -76,15 +76,6 @@ inline unsigned long round_timeout(unsigned long timeout) return cfs_time_seconds((int)cfs_duration_sec(cfs_time_sub(timeout, 0)) + 1); } -/* timeout for initial callback (AST) reply (bz10399) */ -static inline unsigned int ldlm_get_rq_timeout(void) -{ - /* Non-AT value */ - unsigned int timeout = min(ldlm_timeout, obd_timeout / 3); - - return timeout < 1 ? 1 : timeout; -} - #define ELT_STOPPED 0 #define ELT_READY 1 #define ELT_TERMINATE 2 @@ -225,7 +216,7 @@ static void ldlm_handle_cp_callback(struct ptlrpc_request *req, void *lvb_data; lvb_data = kzalloc(lvb_len, GFP_NOFS); - if (lvb_data == NULL) { + if (!lvb_data) { LDLM_ERROR(lock, "No memory: %d.\n", lvb_len); rc = -ENOMEM; goto out; @@ -453,7 +444,7 @@ static int ldlm_bl_to_thread(struct ldlm_namespace *ns, struct ldlm_bl_work_item *blwi; blwi = kzalloc(sizeof(*blwi), GFP_NOFS); - if (blwi == NULL) + if (!blwi) return -ENOMEM; init_blwi(blwi, ns, ld, cancels, count, lock, cancel_flags); @@ -1053,7 +1044,7 @@ static int ldlm_setup(void) return -EALREADY; ldlm_state = kzalloc(sizeof(*ldlm_state), GFP_NOFS); - if (ldlm_state == NULL) + if (!ldlm_state) return -ENOMEM; ldlm_kobj = kobject_create_and_add("ldlm", lustre_kobj); @@ -1123,7 +1114,7 @@ static int ldlm_setup(void) blp = kzalloc(sizeof(*blp), GFP_NOFS); - if (blp == NULL) { + if (!blp) { rc = -ENOMEM; goto out; } diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_pool.c b/drivers/staging/lustre/lustre/ldlm/ldlm_pool.c index 1605b9c..c234acb 100644 --- a/drivers/staging/lustre/lustre/ldlm/ldlm_pool.c +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_pool.c @@ -1422,7 +1422,7 @@ static int ldlm_pools_thread_start(void) return -EALREADY; ldlm_pools_thread = kzalloc(sizeof(*ldlm_pools_thread), GFP_NOFS); - if (ldlm_pools_thread == NULL) + if (!ldlm_pools_thread) return -ENOMEM; init_completion(&ldlm_pools_comp); @@ -1486,8 +1486,10 @@ EXPORT_SYMBOL(ldlm_pools_init); void ldlm_pools_fini(void) { - unregister_shrinker(&ldlm_pools_srv_shrinker); - unregister_shrinker(&ldlm_pools_cli_shrinker); + if (ldlm_pools_thread) { + unregister_shrinker(&ldlm_pools_srv_shrinker); + unregister_shrinker(&ldlm_pools_cli_shrinker); + } ldlm_pools_thread_stop(); } EXPORT_SYMBOL(ldlm_pools_fini); diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_resource.c b/drivers/staging/lustre/lustre/ldlm/ldlm_resource.c index cdb6366..4bb3173b 100644 --- a/drivers/staging/lustre/lustre/ldlm/ldlm_resource.c +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_resource.c @@ -939,6 +939,7 @@ void ldlm_namespace_free_post(struct ldlm_namespace *ns) ldlm_pool_fini(&ns->ns_pool); ldlm_namespace_debugfs_unregister(ns); + ldlm_namespace_sysfs_unregister(ns); cfs_hash_putref(ns->ns_rs_hash); /* Namespace \a ns should be not on list at this time, otherwise * this will cause issues related to using freed \a ns in poold diff --git a/drivers/staging/lustre/lustre/libcfs/debug.c b/drivers/staging/lustre/lustre/libcfs/debug.c index 021c92f..e93f556 100644 --- a/drivers/staging/lustre/lustre/libcfs/debug.c +++ b/drivers/staging/lustre/lustre/libcfs/debug.c @@ -57,8 +57,42 @@ module_param(libcfs_debug, int, 0644); MODULE_PARM_DESC(libcfs_debug, "Lustre kernel debug mask"); EXPORT_SYMBOL(libcfs_debug); +static int libcfs_param_debug_mb_set(const char *val, + const struct kernel_param *kp) +{ + int rc; + unsigned num; + + rc = kstrtouint(val, 0, &num); + if (rc < 0) + return rc; + + if (!*((unsigned int *)kp->arg)) { + *((unsigned int *)kp->arg) = num; + return 0; + } + + rc = cfs_trace_set_debug_mb(num); + + if (!rc) + *((unsigned int *)kp->arg) = cfs_trace_get_debug_mb(); + + return rc; +} + +/* While debug_mb setting look like unsigned int, in fact + * it needs quite a bunch of extra processing, so we define special + * debugmb parameter type with corresponding methods to handle this case */ +static struct kernel_param_ops param_ops_debugmb = { + .set = libcfs_param_debug_mb_set, + .get = param_get_uint, +}; + +#define param_check_debugmb(name, p) \ + __param_check(name, p, unsigned int) + static unsigned int libcfs_debug_mb; -module_param(libcfs_debug_mb, uint, 0644); +module_param(libcfs_debug_mb, debugmb, 0644); MODULE_PARM_DESC(libcfs_debug_mb, "Total debug buffer size."); EXPORT_SYMBOL(libcfs_debug_mb); @@ -72,18 +106,106 @@ module_param(libcfs_console_ratelimit, uint, 0644); MODULE_PARM_DESC(libcfs_console_ratelimit, "Lustre kernel debug console ratelimit (0 to disable)"); EXPORT_SYMBOL(libcfs_console_ratelimit); +static int param_set_delay_minmax(const char *val, + const struct kernel_param *kp, + long min, long max) +{ + long d; + int sec; + int rc; + + rc = kstrtoint(val, 0, &sec); + if (rc) + return -EINVAL; + + d = cfs_time_seconds(sec) / 100; + if (d < min || d > max) + return -EINVAL; + + *((unsigned int *)kp->arg) = d; + + return 0; +} + +static int param_get_delay(char *buffer, const struct kernel_param *kp) +{ + unsigned int d = *(unsigned int *)kp->arg; + + return sprintf(buffer, "%u", (unsigned int)cfs_duration_sec(d * 100)); +} + unsigned int libcfs_console_max_delay; -module_param(libcfs_console_max_delay, uint, 0644); -MODULE_PARM_DESC(libcfs_console_max_delay, "Lustre kernel debug console max delay (jiffies)"); EXPORT_SYMBOL(libcfs_console_max_delay); - unsigned int libcfs_console_min_delay; -module_param(libcfs_console_min_delay, uint, 0644); -MODULE_PARM_DESC(libcfs_console_min_delay, "Lustre kernel debug console min delay (jiffies)"); EXPORT_SYMBOL(libcfs_console_min_delay); +static int param_set_console_max_delay(const char *val, + const struct kernel_param *kp) +{ + return param_set_delay_minmax(val, kp, + libcfs_console_min_delay, INT_MAX); +} + +static struct kernel_param_ops param_ops_console_max_delay = { + .set = param_set_console_max_delay, + .get = param_get_delay, +}; + +#define param_check_console_max_delay(name, p) \ + __param_check(name, p, unsigned int) + +module_param(libcfs_console_max_delay, console_max_delay, 0644); +MODULE_PARM_DESC(libcfs_console_max_delay, "Lustre kernel debug console max delay (jiffies)"); + +static int param_set_console_min_delay(const char *val, + const struct kernel_param *kp) +{ + return param_set_delay_minmax(val, kp, + 1, libcfs_console_max_delay); +} + +static struct kernel_param_ops param_ops_console_min_delay = { + .set = param_set_console_min_delay, + .get = param_get_delay, +}; + +#define param_check_console_min_delay(name, p) \ + __param_check(name, p, unsigned int) + +module_param(libcfs_console_min_delay, console_min_delay, 0644); +MODULE_PARM_DESC(libcfs_console_min_delay, "Lustre kernel debug console min delay (jiffies)"); + +static int param_set_uint_minmax(const char *val, + const struct kernel_param *kp, + unsigned int min, unsigned int max) +{ + unsigned int num; + int ret; + + if (!val) + return -EINVAL; + ret = kstrtouint(val, 0, &num); + if (ret < 0 || num < min || num > max) + return -EINVAL; + *((unsigned int *)kp->arg) = num; + return 0; +} + +static int param_set_uintpos(const char *val, const struct kernel_param *kp) +{ + return param_set_uint_minmax(val, kp, 1, -1); +} + +static struct kernel_param_ops param_ops_uintpos = { + .set = param_set_uintpos, + .get = param_get_uint, +}; + +#define param_check_uintpos(name, p) \ + __param_check(name, p, unsigned int) + unsigned int libcfs_console_backoff = CDEBUG_DEFAULT_BACKOFF; -module_param(libcfs_console_backoff, uint, 0644); +module_param(libcfs_console_backoff, uintpos, 0644); MODULE_PARM_DESC(libcfs_console_backoff, "Lustre kernel debug console backoff factor"); EXPORT_SYMBOL(libcfs_console_backoff); @@ -93,23 +215,14 @@ EXPORT_SYMBOL(libcfs_debug_binary); unsigned int libcfs_stack = 3 * THREAD_SIZE / 4; EXPORT_SYMBOL(libcfs_stack); -static unsigned int portal_enter_debugger; -EXPORT_SYMBOL(portal_enter_debugger); - unsigned int libcfs_catastrophe; EXPORT_SYMBOL(libcfs_catastrophe); -unsigned int libcfs_watchdog_ratelimit = 300; -EXPORT_SYMBOL(libcfs_watchdog_ratelimit); - unsigned int libcfs_panic_on_lbug = 1; module_param(libcfs_panic_on_lbug, uint, 0644); MODULE_PARM_DESC(libcfs_panic_on_lbug, "Lustre kernel panic on LBUG"); EXPORT_SYMBOL(libcfs_panic_on_lbug); -atomic_t libcfs_kmemory = ATOMIC_INIT(0); -EXPORT_SYMBOL(libcfs_kmemory); - static wait_queue_head_t debug_ctlwq; char libcfs_debug_file_path_arr[PATH_MAX] = LIBCFS_DEBUG_FILE_PATH_DEFAULT; @@ -414,8 +527,10 @@ int libcfs_debug_init(unsigned long bufsize) } rc = cfs_tracefile_init(max); - if (rc == 0) + if (rc == 0) { libcfs_register_panic_notifier(); + libcfs_debug_mb = cfs_trace_get_debug_mb(); + } return rc; } diff --git a/drivers/staging/lustre/lustre/libcfs/fail.c b/drivers/staging/lustre/lustre/libcfs/fail.c index 7b7fc21..42d615f 100644 --- a/drivers/staging/lustre/lustre/libcfs/fail.c +++ b/drivers/staging/lustre/lustre/libcfs/fail.c @@ -123,7 +123,7 @@ EXPORT_SYMBOL(__cfs_fail_check_set); int __cfs_fail_timeout_set(__u32 id, __u32 value, int ms, int set) { - int ret = 0; + int ret; ret = __cfs_fail_check_set(id, value, set); if (ret) { diff --git a/drivers/staging/lustre/lustre/libcfs/libcfs_cpu.c b/drivers/staging/lustre/lustre/libcfs/libcfs_cpu.c index 31a5581..933525c 100644 --- a/drivers/staging/lustre/lustre/libcfs/libcfs_cpu.c +++ b/drivers/staging/lustre/lustre/libcfs/libcfs_cpu.c @@ -78,7 +78,7 @@ EXPORT_SYMBOL(cfs_cpt_table_free); int cfs_cpt_table_print(struct cfs_cpt_table *cptab, char *buf, int len) { - int rc = 0; + int rc; rc = snprintf(buf, len, "%d\t: %d\n", 0, 0); len -= rc; diff --git a/drivers/staging/lustre/lustre/libcfs/libcfs_string.c b/drivers/staging/lustre/lustre/libcfs/libcfs_string.c index 76d4392..efe5e66 100644 --- a/drivers/staging/lustre/lustre/libcfs/libcfs_string.c +++ b/drivers/staging/lustre/lustre/libcfs/libcfs_string.c @@ -231,7 +231,7 @@ cfs_str2num_check(char *str, int nob, unsigned *num, char *endp; str = cfs_trimwhite(str); - *num = strtoul(str, &endp, 0); + *num = simple_strtoul(str, &endp, 0); if (endp == str) return 0; @@ -400,7 +400,7 @@ cfs_expr_list_free(struct cfs_expr_list *expr_list) struct cfs_range_expr *expr; expr = list_entry(expr_list->el_exprs.next, - struct cfs_range_expr, re_link), + struct cfs_range_expr, re_link); list_del(&expr->re_link); LIBCFS_FREE(expr, sizeof(*expr)); } diff --git a/drivers/staging/lustre/lustre/libcfs/linux/linux-crypto.c b/drivers/staging/lustre/lustre/libcfs/linux/linux-crypto.c index aa3fffe..fbbc8a7 100644 --- a/drivers/staging/lustre/lustre/libcfs/linux/linux-crypto.c +++ b/drivers/staging/lustre/lustre/libcfs/linux/linux-crypto.c @@ -114,7 +114,7 @@ int cfs_crypto_hash_digest(unsigned char alg_id, crypto_free_hash(hdesc.tfm); return -ENOSPC; } - sg_init_one(&sl, (void *)buf, buf_len); + sg_init_one(&sl, buf, buf_len); hdesc.flags = 0; err = crypto_hash_digest(&hdesc, &sl, sl.length, hash); @@ -165,7 +165,7 @@ int cfs_crypto_hash_update(struct cfs_crypto_hash_desc *hdesc, { struct scatterlist sl; - sg_init_one(&sl, (void *)buf, buf_len); + sg_init_one(&sl, buf, buf_len); return crypto_hash_update((struct hash_desc *)hdesc, &sl, sl.length); } diff --git a/drivers/staging/lustre/lustre/libcfs/linux/linux-module.c b/drivers/staging/lustre/lustre/libcfs/linux/linux-module.c index e962f89..64a984b 100644 --- a/drivers/staging/lustre/lustre/libcfs/linux/linux-module.c +++ b/drivers/staging/lustre/lustre/libcfs/linux/linux-module.c @@ -49,7 +49,7 @@ int libcfs_ioctl_getdata(char *buf, char *end, void *arg) hdr = (struct libcfs_ioctl_hdr *)buf; data = (struct libcfs_ioctl_data *)buf; - if (copy_from_user(buf, (void *)arg, sizeof(*hdr))) + if (copy_from_user(buf, arg, sizeof(*hdr))) return -EFAULT; if (hdr->ioc_version != LIBCFS_IOCTL_VERSION) { @@ -69,7 +69,7 @@ int libcfs_ioctl_getdata(char *buf, char *end, void *arg) } orig_len = hdr->ioc_len; - if (copy_from_user(buf, (void *)arg, hdr->ioc_len)) + if (copy_from_user(buf, arg, hdr->ioc_len)) return -EFAULT; if (orig_len != data->ioc_len) return -EINVAL; @@ -96,8 +96,6 @@ int libcfs_ioctl_popdata(void *arg, void *data, int size) return 0; } -extern struct cfs_psdev_ops libcfs_psdev_ops; - static int libcfs_psdev_open(struct inode *inode, struct file *file) { diff --git a/drivers/staging/lustre/lustre/libcfs/module.c b/drivers/staging/lustre/lustre/libcfs/module.c index e707400..806f974 100644 --- a/drivers/staging/lustre/lustre/libcfs/module.c +++ b/drivers/staging/lustre/lustre/libcfs/module.c @@ -50,6 +50,7 @@ #include <linux/list.h> #include <linux/sysctl.h> +#include <linux/debugfs.h> # define DEBUG_SUBSYSTEM S_LNET @@ -65,48 +66,12 @@ MODULE_AUTHOR("Peter J. Braam <braam@clusterfs.com>"); MODULE_DESCRIPTION("Portals v3.1"); MODULE_LICENSE("GPL"); -extern struct miscdevice libcfs_dev; -extern struct cfs_wi_sched *cfs_sched_rehash; -extern void libcfs_init_nidstrings(void); +static void insert_debugfs(void); +static void remove_debugfs(void); -static int insert_proc(void); -static void remove_proc(void); +static struct dentry *lnet_debugfs_root; -static struct ctl_table_header *lnet_table_header; -extern char lnet_upcall[1024]; -/** - * The path of debug log dump upcall script. - */ -extern char lnet_debug_log_upcall[1024]; - -#define CTL_LNET (0x100) - -enum { - PSDEV_DEBUG = 1, /* control debugging */ - PSDEV_SUBSYSTEM_DEBUG, /* control debugging */ - PSDEV_PRINTK, /* force all messages to console */ - PSDEV_CONSOLE_RATELIMIT, /* ratelimit console messages */ - PSDEV_CONSOLE_MAX_DELAY_CS, /* maximum delay over which we skip messages */ - PSDEV_CONSOLE_MIN_DELAY_CS, /* initial delay over which we skip messages */ - PSDEV_CONSOLE_BACKOFF, /* delay increase factor */ - PSDEV_DEBUG_PATH, /* crashdump log location */ - PSDEV_DEBUG_DUMP_PATH, /* crashdump tracelog location */ - PSDEV_CPT_TABLE, /* information about cpu partitions */ - PSDEV_LNET_UPCALL, /* User mode upcall script */ - PSDEV_LNET_MEMUSED, /* bytes currently PORTAL_ALLOCated */ - PSDEV_LNET_CATASTROPHE, /* if we have LBUGged or panic'd */ - PSDEV_LNET_PANIC_ON_LBUG, /* flag to panic on LBUG */ - PSDEV_LNET_DUMP_KERNEL, /* snapshot kernel debug buffer to file */ - PSDEV_LNET_DAEMON_FILE, /* spool kernel debug buffer to file */ - PSDEV_LNET_DEBUG_MB, /* size of debug buffer */ - PSDEV_LNET_DEBUG_LOG_UPCALL, /* debug log upcall script */ - PSDEV_LNET_WATCHDOG_RATELIMIT, /* ratelimit watchdog messages */ - PSDEV_LNET_FORCE_LBUG, /* hook to force an LBUG */ - PSDEV_LNET_FAIL_LOC, /* control test failures instrumentation */ - PSDEV_LNET_FAIL_VAL, /* userdata for fail loc */ -}; - -static void kportal_memhog_free (struct libcfs_device_userstate *ldu) +static void kportal_memhog_free(struct libcfs_device_userstate *ldu) { struct page **level0p = &ldu->ldu_memhog_root_page; struct page **level1p; @@ -146,7 +111,7 @@ static void kportal_memhog_free (struct libcfs_device_userstate *ldu) *level0p = NULL; } - LASSERT (ldu->ldu_memhog_pages == 0); + LASSERT(ldu->ldu_memhog_pages == 0); } static int kportal_memhog_alloc(struct libcfs_device_userstate *ldu, int npages, @@ -158,8 +123,8 @@ static int kportal_memhog_alloc(struct libcfs_device_userstate *ldu, int npages, int count1; int count2; - LASSERT (ldu->ldu_memhog_pages == 0); - LASSERT (ldu->ldu_memhog_root_page == NULL); + LASSERT(ldu->ldu_memhog_pages == 0); + LASSERT(ldu->ldu_memhog_root_page == NULL); if (npages < 0) return -EINVAL; @@ -338,7 +303,7 @@ static int libcfs_ioctl_int(struct cfs_psdev_file *pfile, unsigned long cmd, if (err != -EINVAL) { if (err == 0) err = libcfs_ioctl_popdata(arg, - data, sizeof (*data)); + data, sizeof(*data)); break; } } @@ -361,7 +326,7 @@ static int libcfs_ioctl(struct cfs_psdev_file *pfile, unsigned long cmd, void *a return -ENOMEM; /* 'cmd' and permissions get checked in our arch-specific caller */ - if (libcfs_ioctl_getdata(buf, buf + 800, (void *)arg)) { + if (libcfs_ioctl_getdata(buf, buf + 800, arg)) { CERROR("PORTALS ioctl: data error\n"); err = -EINVAL; goto out; @@ -428,17 +393,10 @@ static int init_libcfs_module(void) goto cleanup_wi; } + insert_debugfs(); - rc = insert_proc(); - if (rc) { - CERROR("insert_proc: error %d\n", rc); - goto cleanup_crypto; - } - - CDEBUG (D_OTHER, "portals setup OK\n"); + CDEBUG(D_OTHER, "portals setup OK\n"); return 0; - cleanup_crypto: - cfs_crypto_unregister(); cleanup_wi: cfs_wi_shutdown(); cleanup_deregister: @@ -454,10 +412,7 @@ static void exit_libcfs_module(void) { int rc; - remove_proc(); - - CDEBUG(D_MALLOC, "before Portals cleanup: kmem %d\n", - atomic_read(&libcfs_kmemory)); + remove_debugfs(); if (cfs_sched_rehash != NULL) { cfs_wi_sched_destroy(cfs_sched_rehash); @@ -471,10 +426,6 @@ static void exit_libcfs_module(void) cfs_cpu_fini(); - if (atomic_read(&libcfs_kmemory) != 0) - CERROR("Portals memory leaked: %d bytes\n", - atomic_read(&libcfs_kmemory)); - rc = libcfs_debug_cleanup(); if (rc) pr_err("LustreError: libcfs_debug_cleanup: %d\n", rc); @@ -549,9 +500,6 @@ static int proc_dobitmasks(struct ctl_table *table, int write, __proc_dobitmasks); } -static int min_watchdog_ratelimit; /* disable ratelimiting */ -static int max_watchdog_ratelimit = (24*60*60); /* limit to once per day */ - static int __proc_dump_kernel(void *data, int write, loff_t pos, void __user *buffer, int nob) { @@ -591,125 +539,6 @@ static int proc_daemon_file(struct ctl_table *table, int write, __proc_daemon_file); } -static int __proc_debug_mb(void *data, int write, - loff_t pos, void __user *buffer, int nob) -{ - if (!write) { - char tmpstr[32]; - int len = snprintf(tmpstr, sizeof(tmpstr), "%d", - cfs_trace_get_debug_mb()); - - if (pos >= len) - return 0; - - return cfs_trace_copyout_string(buffer, nob, tmpstr + pos, - "\n"); - } - - return cfs_trace_set_debug_mb_usrstr(buffer, nob); -} - -static int proc_debug_mb(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, loff_t *ppos) -{ - return proc_call_handler(table->data, write, ppos, buffer, lenp, - __proc_debug_mb); -} - -static int proc_console_max_delay_cs(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, - loff_t *ppos) -{ - int rc, max_delay_cs; - struct ctl_table dummy = *table; - long d; - - dummy.data = &max_delay_cs; - dummy.proc_handler = &proc_dointvec; - - if (!write) { /* read */ - max_delay_cs = cfs_duration_sec(libcfs_console_max_delay * 100); - rc = proc_dointvec(&dummy, write, buffer, lenp, ppos); - return rc; - } - - /* write */ - max_delay_cs = 0; - rc = proc_dointvec(&dummy, write, buffer, lenp, ppos); - if (rc < 0) - return rc; - if (max_delay_cs <= 0) - return -EINVAL; - - d = cfs_time_seconds(max_delay_cs) / 100; - if (d == 0 || d < libcfs_console_min_delay) - return -EINVAL; - libcfs_console_max_delay = d; - - return rc; -} - -static int proc_console_min_delay_cs(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, - loff_t *ppos) -{ - int rc, min_delay_cs; - struct ctl_table dummy = *table; - long d; - - dummy.data = &min_delay_cs; - dummy.proc_handler = &proc_dointvec; - - if (!write) { /* read */ - min_delay_cs = cfs_duration_sec(libcfs_console_min_delay * 100); - rc = proc_dointvec(&dummy, write, buffer, lenp, ppos); - return rc; - } - - /* write */ - min_delay_cs = 0; - rc = proc_dointvec(&dummy, write, buffer, lenp, ppos); - if (rc < 0) - return rc; - if (min_delay_cs <= 0) - return -EINVAL; - - d = cfs_time_seconds(min_delay_cs) / 100; - if (d == 0 || d > libcfs_console_max_delay) - return -EINVAL; - libcfs_console_min_delay = d; - - return rc; -} - -static int proc_console_backoff(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, loff_t *ppos) -{ - int rc, backoff; - struct ctl_table dummy = *table; - - dummy.data = &backoff; - dummy.proc_handler = &proc_dointvec; - - if (!write) { /* read */ - backoff = libcfs_console_backoff; - rc = proc_dointvec(&dummy, write, buffer, lenp, ppos); - return rc; - } - - /* write */ - backoff = 0; - rc = proc_dointvec(&dummy, write, buffer, lenp, ppos); - if (rc < 0) - return rc; - if (backoff <= 0) - return -EINVAL; - - libcfs_console_backoff = backoff; - - return rc; -} - static int libcfs_force_lbug(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) @@ -807,40 +636,6 @@ static struct ctl_table lnet_table[] = { .proc_handler = &proc_dobitmasks, }, { - .procname = "console_ratelimit", - .data = &libcfs_console_ratelimit, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_dointvec - }, - { - .procname = "console_max_delay_centisecs", - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_console_max_delay_cs - }, - { - .procname = "console_min_delay_centisecs", - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_console_min_delay_cs - }, - { - .procname = "console_backoff", - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_console_backoff - }, - - { - .procname = "debug_path", - .data = libcfs_debug_file_path_arr, - .maxlen = sizeof(libcfs_debug_file_path_arr), - .mode = 0644, - .proc_handler = &proc_dostring, - }, - - { .procname = "cpu_partition_table", .maxlen = 128, .mode = 0444, @@ -862,13 +657,6 @@ static struct ctl_table lnet_table[] = { .proc_handler = &proc_dostring, }, { - .procname = "lnet_memused", - .data = (int *)&libcfs_kmemory.counter, - .maxlen = sizeof(int), - .mode = 0444, - .proc_handler = &proc_dointvec, - }, - { .procname = "catastrophe", .data = &libcfs_catastrophe, .maxlen = sizeof(int), @@ -876,13 +664,6 @@ static struct ctl_table lnet_table[] = { .proc_handler = &proc_dointvec, }, { - .procname = "panic_on_lbug", - .data = &libcfs_panic_on_lbug, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_dointvec, - }, - { .procname = "dump_kernel", .maxlen = 256, .mode = 0200, @@ -895,20 +676,6 @@ static struct ctl_table lnet_table[] = { .proc_handler = &proc_daemon_file, }, { - .procname = "debug_mb", - .mode = 0644, - .proc_handler = &proc_debug_mb, - }, - { - .procname = "watchdog_ratelimit", - .data = &libcfs_watchdog_ratelimit, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_dointvec_minmax, - .extra1 = &min_watchdog_ratelimit, - .extra2 = &max_watchdog_ratelimit, - }, - { .procname = "force_lbug", .data = NULL, .maxlen = 0, @@ -933,31 +700,93 @@ static struct ctl_table lnet_table[] = { } }; -static struct ctl_table top_table[] = { - { - .procname = "lnet", - .mode = 0555, - .data = NULL, - .maxlen = 0, - .child = lnet_table, - }, - { - } +struct lnet_debugfs_symlink_def { + char *name; + char *target; }; -static int insert_proc(void) +static const struct lnet_debugfs_symlink_def lnet_debugfs_symlinks[] = { + { "console_ratelimit", + "/sys/module/libcfs/parameters/libcfs_console_ratelimit"}, + { "debug_path", + "/sys/module/libcfs/parameters/libcfs_debug_file_path"}, + { "panic_on_lbug", + "/sys/module/libcfs/parameters/libcfs_panic_on_lbug"}, + { "libcfs_console_backoff", + "/sys/module/libcfs/parameters/libcfs_console_backoff"}, + { "debug_mb", + "/sys/module/libcfs/parameters/libcfs_debug_mb"}, + { "console_min_delay_centisecs", + "/sys/module/libcfs/parameters/libcfs_console_min_delay"}, + { "console_max_delay_centisecs", + "/sys/module/libcfs/parameters/libcfs_console_max_delay"}, + {}, +}; + +static ssize_t lnet_debugfs_read(struct file *filp, char __user *buf, + size_t count, loff_t *ppos) { - if (lnet_table_header == NULL) - lnet_table_header = register_sysctl_table(top_table); - return 0; + struct ctl_table *table = filp->private_data; + int error; + + error = table->proc_handler(table, 0, (void __user *)buf, &count, ppos); + if (!error) + error = count; + + return error; +} + +static ssize_t lnet_debugfs_write(struct file *filp, const char __user *buf, + size_t count, loff_t *ppos) +{ + struct ctl_table *table = filp->private_data; + int error; + + error = table->proc_handler(table, 1, (void __user *)buf, &count, ppos); + if (!error) + error = count; + + return error; +} + +static const struct file_operations lnet_debugfs_file_operations = { + .open = simple_open, + .read = lnet_debugfs_read, + .write = lnet_debugfs_write, + .llseek = default_llseek, +}; + +static void insert_debugfs(void) +{ + struct ctl_table *table; + struct dentry *entry; + const struct lnet_debugfs_symlink_def *symlinks; + + if (lnet_debugfs_root == NULL) + lnet_debugfs_root = debugfs_create_dir("lnet", NULL); + + /* Even if we cannot create, just ignore it altogether) */ + if (IS_ERR_OR_NULL(lnet_debugfs_root)) + return; + + for (table = lnet_table; table->procname; table++) + entry = debugfs_create_file(table->procname, table->mode, + lnet_debugfs_root, table, + &lnet_debugfs_file_operations); + + for (symlinks = lnet_debugfs_symlinks; symlinks->name; symlinks++) + entry = debugfs_create_symlink(symlinks->name, + lnet_debugfs_root, + symlinks->target); + } -static void remove_proc(void) +static void remove_debugfs(void) { - if (lnet_table_header != NULL) - unregister_sysctl_table(lnet_table_header); + if (lnet_debugfs_root != NULL) + debugfs_remove_recursive(lnet_debugfs_root); - lnet_table_header = NULL; + lnet_debugfs_root = NULL; } MODULE_VERSION("1.0.0"); diff --git a/drivers/staging/lustre/lustre/libcfs/tracefile.c b/drivers/staging/lustre/lustre/libcfs/tracefile.c index 6ee2adc..effa2af 100644 --- a/drivers/staging/lustre/lustre/libcfs/tracefile.c +++ b/drivers/staging/lustre/lustre/libcfs/tracefile.c @@ -937,18 +937,6 @@ int cfs_trace_set_debug_mb(int mb) return 0; } -int cfs_trace_set_debug_mb_usrstr(void __user *usr_str, int usr_str_nob) -{ - char str[32]; - int rc; - - rc = cfs_trace_copyin_string(str, sizeof(str), usr_str, usr_str_nob); - if (rc < 0) - return rc; - - return cfs_trace_set_debug_mb(simple_strtoul(str, NULL, 0)); -} - int cfs_trace_get_debug_mb(void) { int i; diff --git a/drivers/staging/lustre/lustre/libcfs/tracefile.h b/drivers/staging/lustre/lustre/libcfs/tracefile.h index 0601476..e931f6d 100644 --- a/drivers/staging/lustre/lustre/libcfs/tracefile.h +++ b/drivers/staging/lustre/lustre/libcfs/tracefile.h @@ -47,7 +47,7 @@ extern char cfs_tracefile[TRACEFILE_NAME_SIZE]; extern long long cfs_tracefile_size; -extern void libcfs_run_debug_log_upcall(char *file); +void libcfs_run_debug_log_upcall(char *file); int cfs_tracefile_init_arch(void); void cfs_tracefile_fini_arch(void); @@ -77,14 +77,13 @@ int cfs_trace_dump_debug_buffer_usrstr(void __user *usr_str, int usr_str_nob); int cfs_trace_daemon_command(char *str); int cfs_trace_daemon_command_usrstr(void __user *usr_str, int usr_str_nob); int cfs_trace_set_debug_mb(int mb); -int cfs_trace_set_debug_mb_usrstr(void __user *usr_str, int usr_str_nob); int cfs_trace_get_debug_mb(void); -extern void libcfs_debug_dumplog_internal(void *arg); -extern void libcfs_register_panic_notifier(void); -extern void libcfs_unregister_panic_notifier(void); +void libcfs_debug_dumplog_internal(void *arg); +void libcfs_register_panic_notifier(void); +void libcfs_unregister_panic_notifier(void); extern int libcfs_panic_in_progress; -extern int cfs_trace_max_debug_mb(void); +int cfs_trace_max_debug_mb(void); #define TCD_MAX_PAGES (5 << (20 - PAGE_CACHE_SHIFT)) #define TCD_STOCK_PAGES (TCD_MAX_PAGES) @@ -253,15 +252,15 @@ struct cfs_trace_page { unsigned short type; }; -extern void cfs_set_ptldebug_header(struct ptldebug_header *header, - struct libcfs_debug_msg_data *m, - unsigned long stack); -extern void cfs_print_to_console(struct ptldebug_header *hdr, int mask, - const char *buf, int len, const char *file, - const char *fn); +void cfs_set_ptldebug_header(struct ptldebug_header *header, + struct libcfs_debug_msg_data *m, + unsigned long stack); +void cfs_print_to_console(struct ptldebug_header *hdr, int mask, + const char *buf, int len, const char *file, + const char *fn); -extern int cfs_trace_lock_tcd(struct cfs_trace_cpu_data *tcd, int walking); -extern void cfs_trace_unlock_tcd(struct cfs_trace_cpu_data *tcd, int walking); +int cfs_trace_lock_tcd(struct cfs_trace_cpu_data *tcd, int walking); +void cfs_trace_unlock_tcd(struct cfs_trace_cpu_data *tcd, int walking); /** * trace_buf_type_t, trace_buf_idx_get() and trace_console_buffers[][] @@ -271,7 +270,7 @@ extern void cfs_trace_unlock_tcd(struct cfs_trace_cpu_data *tcd, int walking); */ extern char *cfs_trace_console_buffers[NR_CPUS][CFS_TCD_TYPE_MAX]; -extern cfs_trace_buf_type_t cfs_trace_buf_idx_get(void); +cfs_trace_buf_type_t cfs_trace_buf_idx_get(void); static inline char * cfs_trace_get_console_buffer(void) @@ -314,8 +313,8 @@ int cfs_trace_refill_stock(struct cfs_trace_cpu_data *tcd, gfp_t gfp, int cfs_tcd_owns_tage(struct cfs_trace_cpu_data *tcd, struct cfs_trace_page *tage); -extern void cfs_trace_assertion_failed(const char *str, - struct libcfs_debug_msg_data *m); +void cfs_trace_assertion_failed(const char *str, + struct libcfs_debug_msg_data *m); /* ASSERTION that is safe to use within the debug system */ #define __LASSERT(cond) \ diff --git a/drivers/staging/lustre/lustre/llite/dcache.c b/drivers/staging/lustre/lustre/llite/dcache.c index 7b008a6..b866859 100644 --- a/drivers/staging/lustre/lustre/llite/dcache.c +++ b/drivers/staging/lustre/lustre/llite/dcache.c @@ -250,7 +250,6 @@ void ll_intent_release(struct lookup_intent *it) void ll_invalidate_aliases(struct inode *inode) { struct dentry *dentry; - struct ll_d_hlist_node *p; LASSERT(inode != NULL); @@ -258,7 +257,7 @@ void ll_invalidate_aliases(struct inode *inode) inode->i_ino, inode->i_generation, inode); ll_lock_dcache(inode); - ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_u.d_alias) { + hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) { CDEBUG(D_DENTRY, "dentry in drop %pd (%p) parent %p inode %p flags %d\n", dentry, dentry, dentry->d_parent, d_inode(dentry), dentry->d_flags); diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c index 3d746a9..769b611 100644 --- a/drivers/staging/lustre/lustre/llite/dir.c +++ b/drivers/staging/lustre/lustre/llite/dir.c @@ -203,7 +203,6 @@ static int ll_dir_filler(void *_hash, struct page *page0) CDEBUG(D_VFSTRACE, "read %d/%d pages\n", nrdpgs, npages); - ll_pagevec_init(&lru_pvec, 0); for (i = 1; i < npages; i++) { unsigned long offset; int ret; @@ -228,15 +227,12 @@ static int ll_dir_filler(void *_hash, struct page *page0) GFP_KERNEL); if (ret == 0) { unlock_page(page); - if (ll_pagevec_add(&lru_pvec, page) == 0) - ll_pagevec_lru_add_file(&lru_pvec); } else { CDEBUG(D_VFSTRACE, "page %lu add to page cache failed: %d\n", offset, ret); } page_cache_release(page); } - ll_pagevec_lru_add_file(&lru_pvec); if (page_pool != &page0) kfree(page_pool); diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c index 3075db2..dcd0c6d 100644 --- a/drivers/staging/lustre/lustre/llite/file.c +++ b/drivers/staging/lustre/lustre/llite/file.c @@ -702,8 +702,7 @@ out_och_free: out_openerr: if (opendir_set != 0) ll_stop_statahead(inode, lli->lli_opendir_key); - if (fd != NULL) - ll_file_data_put(fd); + ll_file_data_put(fd); } else { ll_stats_ops_tally(ll_i2sbi(inode), LPROC_LL_OPEN, 1); } @@ -3005,7 +3004,7 @@ int ll_getattr(struct vfsmount *mnt, struct dentry *de, struct kstat *stat) struct inode *inode = d_inode(de); struct ll_sb_info *sbi = ll_i2sbi(inode); struct ll_inode_info *lli = ll_i2info(inode); - int res = 0; + int res; res = ll_inode_revalidate(de, MDS_INODELOCK_UPDATE | MDS_INODELOCK_LOOKUP); diff --git a/drivers/staging/lustre/lustre/llite/llite_capa.c b/drivers/staging/lustre/lustre/llite/llite_capa.c index a626871..24590ae 100644 --- a/drivers/staging/lustre/lustre/llite/llite_capa.c +++ b/drivers/staging/lustre/lustre/llite/llite_capa.c @@ -70,7 +70,8 @@ static unsigned long long ll_capa_renewal_retries; static int ll_update_capa(struct obd_capa *ocapa, struct lustre_capa *capa); -static inline void update_capa_timer(struct obd_capa *ocapa, unsigned long expiry) +static inline void update_capa_timer(struct obd_capa *ocapa, + unsigned long expiry) { if (time_before(expiry, ll_capa_timer.expires) || !timer_pending(&ll_capa_timer)) { @@ -102,13 +103,13 @@ static inline int have_expired_capa(void) spin_lock(&capa_lock); if (!list_empty(ll_capa_list)) { ocapa = list_entry(ll_capa_list->next, struct obd_capa, - c_list); + c_list); expired = capa_is_to_expire(ocapa); if (!expired) update_capa_timer(ocapa, capa_renewal_time(ocapa)); } else if (!list_empty(&ll_idle_capas)) { ocapa = list_entry(ll_idle_capas.next, struct obd_capa, - c_list); + c_list); expired = capa_is_expired(ocapa); if (!expired) update_capa_timer(ocapa, ocapa->c_expiry); @@ -165,7 +166,8 @@ static void ll_delete_capa(struct obd_capa *ocapa) /* three places where client capa is deleted: * 1. capa_thread_main(), main place to delete expired capa. * 2. ll_clear_inode_capas() in ll_clear_inode(). - * 3. ll_truncate_free_capa() delete truncate capa explicitly in ll_setattr_ost(). + * 3. ll_truncate_free_capa() delete truncate capa explicitly in + * ll_setattr_ost(). */ static int capa_thread_main(void *unused) { @@ -206,7 +208,8 @@ static int capa_thread_main(void *unused) * lock. */ /* ibits may be changed by ll_have_md_lock() so we have - * to set it each time */ + * to set it each time + */ ibits = MDS_INODELOCK_LOOKUP; if (capa_for_mds(&ocapa->c_capa) && !S_ISDIR(ocapa->u.cli.inode->i_mode) && @@ -225,14 +228,15 @@ static int capa_thread_main(void *unused) if (capa_for_oss(&ocapa->c_capa) && obd_capa_open_count(ocapa) == 0) { /* oss capa with open count == 0 won't renew, - * move to idle list */ + * move to idle list + */ sort_add_capa(ocapa, &ll_idle_capas); continue; } /* NB iput() is in ll_update_capa() */ inode = igrab(ocapa->u.cli.inode); - if (inode == NULL) { + if (!inode) { DEBUG_CAPA(D_ERROR, &ocapa->c_capa, "igrab failed for"); continue; @@ -255,7 +259,7 @@ static int capa_thread_main(void *unused) update_capa_timer(next, capa_renewal_time(next)); list_for_each_entry_safe(ocapa, tmp, &ll_idle_capas, - c_list) { + c_list) { if (!capa_is_expired(ocapa)) { if (!next) update_capa_timer(ocapa, @@ -299,11 +303,11 @@ int ll_capa_thread_start(void) task = kthread_run(capa_thread_main, NULL, "ll_capa"); if (IS_ERR(task)) { CERROR("cannot start expired capa thread: rc %ld\n", - PTR_ERR(task)); + PTR_ERR(task)); return PTR_ERR(task); } wait_event(ll_capa_thread.t_ctl_waitq, - thread_is_running(&ll_capa_thread)); + thread_is_running(&ll_capa_thread)); return 0; } @@ -313,7 +317,7 @@ void ll_capa_thread_stop(void) thread_set_flags(&ll_capa_thread, SVC_STOPPING); wake_up(&ll_capa_thread.t_ctl_waitq); wait_event(ll_capa_thread.t_ctl_waitq, - thread_is_stopped(&ll_capa_thread)); + thread_is_stopped(&ll_capa_thread)); } struct obd_capa *ll_osscapa_get(struct inode *inode, __u64 opc) @@ -360,7 +364,7 @@ struct obd_capa *ll_osscapa_get(struct inode *inode, __u64 opc) ocapa = NULL; if (atomic_read(&ll_capa_debug)) { - CERROR("no capability for "DFID" opc %#llx\n", + CERROR("no capability for " DFID " opc %#llx\n", PFID(&lli->lli_fid), opc); atomic_set(&ll_capa_debug, 0); } @@ -376,7 +380,7 @@ struct obd_capa *ll_mdscapa_get(struct inode *inode) struct ll_inode_info *lli = ll_i2info(inode); struct obd_capa *ocapa; - LASSERT(inode != NULL); + LASSERT(inode); if ((ll_i2sbi(inode)->ll_flags & LL_SBI_MDS_CAPA) == 0) return NULL; @@ -385,7 +389,7 @@ struct obd_capa *ll_mdscapa_get(struct inode *inode) ocapa = capa_get(lli->lli_mds_capa); spin_unlock(&capa_lock); if (!ocapa && atomic_read(&ll_capa_debug)) { - CERROR("no mds capability for "DFID"\n", PFID(&lli->lli_fid)); + CERROR("no mds capability for " DFID "\n", PFID(&lli->lli_fid)); atomic_set(&ll_capa_debug, 0); } @@ -447,7 +451,8 @@ static inline void inode_add_oss_capa(struct inode *inode, struct list_head *next = NULL; /* capa is sorted in lli_oss_capas so lookup can always find the - * latest one */ + * latest one + */ list_for_each_entry(tmp, &lli->lli_oss_capas, u.cli.lli_list) { if (cfs_time_after(ocapa->c_expiry, tmp->c_expiry)) { next = &tmp->u.cli.lli_list; @@ -537,7 +542,8 @@ static int ll_update_capa(struct obd_capa *ocapa, struct lustre_capa *capa) ll_capa_renewal_failed++; /* failed capa won't be renewed any longer, but if -EIO, - * client might be doing recovery, retry in 2 min. */ + * client might be doing recovery, retry in 2 min. + */ if (rc == -EIO && !capa_is_expired(ocapa)) { delay_capa_renew(ocapa, 120); DEBUG_CAPA(D_ERROR, &ocapa->c_capa, @@ -638,7 +644,7 @@ void ll_clear_inode_capas(struct inode *inode) ll_delete_capa(ocapa); list_for_each_entry_safe(ocapa, tmp, &lli->lli_oss_capas, - u.cli.lli_list) + u.cli.lli_list) ll_delete_capa(ocapa); spin_unlock(&capa_lock); } diff --git a/drivers/staging/lustre/lustre/llite/llite_internal.h b/drivers/staging/lustre/lustre/llite/llite_internal.h index f097d4d..ec8fff4 100644 --- a/drivers/staging/lustre/lustre/llite/llite_internal.h +++ b/drivers/staging/lustre/lustre/llite/llite_internal.h @@ -456,7 +456,6 @@ struct eacl_table { }; struct ll_sb_info { - struct list_head ll_list; /* this protects pglist and ra_info. It isn't safe to * grab from interrupt contexts */ spinlock_t ll_lock; @@ -711,11 +710,11 @@ extern struct file_operations ll_file_operations; extern struct file_operations ll_file_operations_flock; extern struct file_operations ll_file_operations_noflock; extern struct inode_operations ll_file_inode_operations; -extern int ll_have_md_lock(struct inode *inode, __u64 *bits, - ldlm_mode_t l_req_mode); -extern ldlm_mode_t ll_take_md_lock(struct inode *inode, __u64 bits, - struct lustre_handle *lockh, __u64 flags, - ldlm_mode_t mode); +int ll_have_md_lock(struct inode *inode, __u64 *bits, + ldlm_mode_t l_req_mode); +ldlm_mode_t ll_take_md_lock(struct inode *inode, __u64 bits, + struct lustre_handle *lockh, __u64 flags, + ldlm_mode_t mode); int ll_file_open(struct inode *inode, struct file *file); int ll_file_release(struct inode *inode, struct file *file); int ll_glimpse_ioctl(struct ll_sb_info *sbi, @@ -1376,9 +1375,9 @@ static inline void cl_stats_tally(struct cl_device *dev, enum cl_req_type crt, ll_stats_ops_tally(ll_s2sbi(cl2ccc_dev(dev)->cdv_sb), opc, rc); } -extern ssize_t ll_direct_rw_pages(const struct lu_env *env, struct cl_io *io, - int rw, struct inode *inode, - struct ll_dio_pages *pv); +ssize_t ll_direct_rw_pages(const struct lu_env *env, struct cl_io *io, + int rw, struct inode *inode, + struct ll_dio_pages *pv); static inline int ll_file_nolock(const struct file *file) { diff --git a/drivers/staging/lustre/lustre/llite/llite_lib.c b/drivers/staging/lustre/lustre/llite/llite_lib.c index 2513988..b4ed6c8 100644 --- a/drivers/staging/lustre/lustre/llite/llite_lib.c +++ b/drivers/staging/lustre/lustre/llite/llite_lib.c @@ -60,9 +60,6 @@ struct kmem_cache *ll_file_data_slab; struct dentry *llite_root; struct kset *llite_kset; -static LIST_HEAD(ll_super_blocks); -static DEFINE_SPINLOCK(ll_sb_lock); - #ifndef log2 #define log2(n) ffz(~(n)) #endif @@ -112,10 +109,6 @@ static struct ll_sb_info *ll_init_sbi(struct super_block *sb) class_uuid_unparse(uuid, &sbi->ll_sb_uuid); CDEBUG(D_CONFIG, "generated uuid: %s\n", sbi->ll_sb_uuid.uuid); - spin_lock(&ll_sb_lock); - list_add_tail(&sbi->ll_list, &ll_super_blocks); - spin_unlock(&ll_sb_lock); - sbi->ll_flags |= LL_SBI_VERBOSE; sbi->ll_flags |= LL_SBI_CHECKSUM; @@ -144,12 +137,7 @@ static void ll_free_sbi(struct super_block *sb) { struct ll_sb_info *sbi = ll_s2sbi(sb); - if (sbi != NULL) { - spin_lock(&ll_sb_lock); - list_del(&sbi->ll_list); - spin_unlock(&ll_sb_lock); - kfree(sbi); - } + kfree(sbi); } static int client_common_fill_super(struct super_block *sb, char *md, char *dt, @@ -1114,7 +1102,7 @@ void ll_clear_inode(struct inode *inode) if (lli->lli_mds_read_och) ll_md_real_close(inode, FMODE_READ); - if (S_ISLNK(inode->i_mode) && lli->lli_symlink_name) { + if (S_ISLNK(inode->i_mode)) { kfree(lli->lli_symlink_name); lli->lli_symlink_name = NULL; } @@ -1150,6 +1138,8 @@ void ll_clear_inode(struct inode *inode) lli->lli_has_smd = false; } +#define TIMES_SET_FLAGS (ATTR_MTIME_SET | ATTR_ATIME_SET | ATTR_TIMES_SET) + static int ll_md_setattr(struct dentry *dentry, struct md_op_data *op_data, struct md_open_data **mod) { @@ -1354,11 +1344,8 @@ int ll_setattr_raw(struct dentry *dentry, struct iattr *attr, bool hsm_import) if (!op_data) return -ENOMEM; - if (!S_ISDIR(inode->i_mode)) { - if (attr->ia_valid & ATTR_SIZE) - inode_dio_write_done(inode); + if (!S_ISDIR(inode->i_mode)) mutex_unlock(&inode->i_mutex); - } memcpy(&op_data->op_attr, attr, sizeof(*attr)); diff --git a/drivers/staging/lustre/lustre/llite/lloop.c b/drivers/staging/lustre/lustre/llite/lloop.c index cc00fd1..06f5e51 100644 --- a/drivers/staging/lustre/lustre/llite/lloop.c +++ b/drivers/staging/lustre/lustre/llite/lloop.c @@ -162,7 +162,7 @@ static int max_loop = MAX_LOOP_DEFAULT; static struct lloop_device *loop_dev; static struct gendisk **disks; static struct mutex lloop_mutex; -static void *ll_iocontrol_magic = NULL; +static void *ll_iocontrol_magic; static loff_t get_loop_size(struct lloop_device *lo, struct file *file) { @@ -365,7 +365,7 @@ static void loop_make_request(struct request_queue *q, struct bio *old_bio) loop_add_bio(lo, old_bio); return; err: - cfs_bio_io_error(old_bio, old_bio->bi_iter.bi_size); + bio_io_error(old_bio); } @@ -376,7 +376,7 @@ static inline void loop_handle_bio(struct lloop_device *lo, struct bio *bio) while (bio) { struct bio *tmp = bio->bi_next; bio->bi_next = NULL; - cfs_bio_endio(bio, bio->bi_iter.bi_size, ret); + bio_endio(bio, ret); bio = tmp; } } diff --git a/drivers/staging/lustre/lustre/llite/namei.c b/drivers/staging/lustre/lustre/llite/namei.c index 72ce6e7..05e7dc8 100644 --- a/drivers/staging/lustre/lustre/llite/namei.c +++ b/drivers/staging/lustre/lustre/llite/namei.c @@ -144,10 +144,9 @@ struct inode *ll_iget(struct super_block *sb, ino_t hash, static void ll_invalidate_negative_children(struct inode *dir) { struct dentry *dentry, *tmp_subdir; - struct ll_d_hlist_node *p; ll_lock_dcache(dir); - ll_d_hlist_for_each_entry(dentry, p, &dir->i_dentry, d_u.d_alias) { + hlist_for_each_entry(dentry, &dir->i_dentry, d_u.d_alias) { spin_lock(&dentry->d_lock); if (!list_empty(&dentry->d_subdirs)) { struct dentry *child; @@ -334,15 +333,14 @@ void ll_i2gids(__u32 *suppgids, struct inode *i1, struct inode *i2) static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry) { struct dentry *alias, *discon_alias, *invalid_alias; - struct ll_d_hlist_node *p; - if (ll_d_hlist_empty(&inode->i_dentry)) + if (hlist_empty(&inode->i_dentry)) return NULL; discon_alias = invalid_alias = NULL; ll_lock_dcache(inode); - ll_d_hlist_for_each_entry(alias, p, &inode->i_dentry, d_u.d_alias) { + hlist_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) { LASSERT(alias != dentry); spin_lock(&alias->d_lock); @@ -690,7 +688,7 @@ static struct inode *ll_create_node(struct inode *dir, struct lookup_intent *it) goto out; } - LASSERT(ll_d_hlist_empty(&inode->i_dentry)); + LASSERT(hlist_empty(&inode->i_dentry)); /* We asked for a lock on the directory, but were granted a * lock on the inode. Since we finally have an inode pointer, @@ -1008,7 +1006,7 @@ static int ll_unlink(struct inode *dir, struct dentry *dentry) return rc; } -static int ll_mkdir(struct inode *dir, struct dentry *dentry, ll_umode_t mode) +static int ll_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) { int err; diff --git a/drivers/staging/lustre/lustre/llite/remote_perm.c b/drivers/staging/lustre/lustre/llite/remote_perm.c index a581826..39022ea 100644 --- a/drivers/staging/lustre/lustre/llite/remote_perm.c +++ b/drivers/staging/lustre/lustre/llite/remote_perm.c @@ -54,8 +54,8 @@ #include "../include/lustre_param.h" #include "llite_internal.h" -struct kmem_cache *ll_remote_perm_cachep = NULL; -struct kmem_cache *ll_rmtperm_hash_cachep = NULL; +struct kmem_cache *ll_remote_perm_cachep; +struct kmem_cache *ll_rmtperm_hash_cachep; static inline struct ll_remote_perm *alloc_ll_remote_perm(void) { @@ -104,8 +104,7 @@ void free_rmtperm_hash(struct hlist_head *hash) return; for (i = 0; i < REMOTE_PERM_HASHSIZE; i++) - hlist_for_each_entry_safe(lrp, next, hash + i, - lrp_list) + hlist_for_each_entry_safe(lrp, next, hash + i, lrp_list) free_ll_remote_perm(lrp); OBD_SLAB_FREE(hash, ll_rmtperm_hash_cachep, REMOTE_PERM_HASHSIZE * sizeof(*hash)); @@ -117,7 +116,8 @@ static inline int remote_perm_hashfunc(uid_t uid) } /* NB: setxid permission is not checked here, instead it's done on - * MDT when client get remote permission. */ + * MDT when client get remote permission. + */ static int do_check_remote_perm(struct ll_inode_info *lli, int mask) { struct hlist_head *head; @@ -184,7 +184,7 @@ int ll_update_remote_perm(struct inode *inode, struct mdt_remote_perm *perm) if (!lli->lli_remote_perms) { perm_hash = alloc_rmtperm_hash(); - if (perm_hash == NULL) { + if (!perm_hash) { CERROR("alloc lli_remote_perms failed!\n"); return -ENOMEM; } @@ -287,7 +287,7 @@ int lustre_check_remote_perm(struct inode *inode, int mask) perm = req_capsule_server_swab_get(&req->rq_pill, &RMF_ACL, lustre_swab_mdt_remote_perm); - if (unlikely(perm == NULL)) { + if (unlikely(!perm)) { mutex_unlock(&lli->lli_rmtperm_mutex); rc = -EPROTO; break; @@ -321,8 +321,7 @@ void ll_free_remote_perms(struct inode *inode) spin_lock(&lli->lli_lock); for (i = 0; i < REMOTE_PERM_HASHSIZE; i++) { - hlist_for_each_entry_safe(lrp, node, next, hash + i, - lrp_list) + hlist_for_each_entry_safe(lrp, node, next, hash + i, lrp_list) free_ll_remote_perm(lrp); } diff --git a/drivers/staging/lustre/lustre/llite/vvp_io.c b/drivers/staging/lustre/lustre/llite/vvp_io.c index 91bba79..a659962 100644 --- a/drivers/staging/lustre/lustre/llite/vvp_io.c +++ b/drivers/staging/lustre/lustre/llite/vvp_io.c @@ -455,12 +455,11 @@ static void vvp_io_setattr_end(const struct lu_env *env, struct cl_io *io = ios->cis_io; struct inode *inode = ccc_object_inode(io->ci_obj); - if (cl_io_is_trunc(io)) { + if (cl_io_is_trunc(io)) /* Truncate in memory pages - they must be clean pages * because osc has already notified to destroy osc_extents. */ vvp_do_vmtruncate(inode, io->u.ci_setattr.sa_attr.lvb_size); - inode_dio_write_done(inode); - } + mutex_unlock(&inode->i_mutex); } diff --git a/drivers/staging/lustre/lustre/llite/vvp_page.c b/drivers/staging/lustre/lustre/llite/vvp_page.c index 954ed08..a3cf5ad 100644 --- a/drivers/staging/lustre/lustre/llite/vvp_page.c +++ b/drivers/staging/lustre/lustre/llite/vvp_page.c @@ -227,11 +227,16 @@ static int vvp_page_prep_write(const struct lu_env *env, struct cl_io *unused) { struct page *vmpage = cl2vm_page(slice); + struct cl_page *pg = slice->cpl_page; LASSERT(PageLocked(vmpage)); LASSERT(!PageDirty(vmpage)); - set_page_writeback(vmpage); + /* ll_writepage path is not a sync write, so need to set page writeback + * flag */ + if (!pg->cp_sync_io) + set_page_writeback(vmpage); + vvp_write_pending(cl2ccc(slice->cpl_obj), cl2ccc_page(slice)); return 0; @@ -298,9 +303,6 @@ static void vvp_page_completion_write(const struct lu_env *env, struct cl_page *pg = slice->cpl_page; struct page *vmpage = cp->cpg_page; - LASSERT(ergo(pg->cp_sync_io != NULL, PageLocked(vmpage))); - LASSERT(PageWriteback(vmpage)); - CL_PAGE_HEADER(D_PAGE, env, pg, "completing WRITE with %d\n", ioret); /* @@ -316,14 +318,19 @@ static void vvp_page_completion_write(const struct lu_env *env, cp->cpg_write_queued = 0; vvp_write_complete(cl2ccc(slice->cpl_obj), cp); - /* - * Only mark the page error only when it's an async write because - * applications won't wait for IO to finish. - */ - if (pg->cp_sync_io == NULL) + if (pg->cp_sync_io != NULL) { + LASSERT(PageLocked(vmpage)); + LASSERT(!PageWriteback(vmpage)); + } else { + LASSERT(PageWriteback(vmpage)); + /* + * Only mark the page error only when it's an async write + * because applications won't wait for IO to finish. + */ vvp_vmpage_error(ccc_object_inode(pg->cp_obj), vmpage, ioret); - end_page_writeback(vmpage); + end_page_writeback(vmpage); + } } /** diff --git a/drivers/staging/lustre/lustre/llite/xattr_cache.c b/drivers/staging/lustre/lustre/llite/xattr_cache.c index 6956dec..9e763ce 100644 --- a/drivers/staging/lustre/lustre/llite/xattr_cache.c +++ b/drivers/staging/lustre/lustre/llite/xattr_cache.c @@ -357,7 +357,7 @@ static int ll_xattr_cache_refill(struct inode *inode, struct lookup_intent *oit) struct ll_inode_info *lli = ll_i2info(inode); struct mdt_body *body; __u32 *xsizes; - int rc = 0, i; + int rc, i; diff --git a/drivers/staging/lustre/lustre/lmv/lmv_intent.c b/drivers/staging/lustre/lustre/lmv/lmv_intent.c index cb35f63..eebe45b 100644 --- a/drivers/staging/lustre/lustre/lmv/lmv_intent.c +++ b/drivers/staging/lustre/lustre/lmv/lmv_intent.c @@ -100,7 +100,7 @@ static int lmv_intent_remote(struct obd_export *exp, void *lmm, } op_data = kzalloc(sizeof(*op_data), GFP_NOFS); - if (op_data == NULL) { + if (!op_data) { rc = -ENOMEM; goto out; } diff --git a/drivers/staging/lustre/lustre/lmv/lmv_obd.c b/drivers/staging/lustre/lustre/lmv/lmv_obd.c index ac5053c..c9e0536e 100644 --- a/drivers/staging/lustre/lustre/lmv/lmv_obd.c +++ b/drivers/staging/lustre/lustre/lmv/lmv_obd.c @@ -716,7 +716,7 @@ repeat_fid2path: if (remote_gf == NULL) { remote_gf_size = sizeof(*remote_gf) + PATH_MAX; remote_gf = kzalloc(remote_gf_size, GFP_NOFS); - if (remote_gf == NULL) { + if (!remote_gf) { rc = -ENOMEM; goto out_fid2path; } @@ -1398,7 +1398,7 @@ static int lmv_statfs(const struct lu_env *env, struct obd_export *exp, return rc; temp = kzalloc(sizeof(*temp), GFP_NOFS); - if (temp == NULL) + if (!temp) return -ENOMEM; for (i = 0; i < lmv->desc.ld_tgt_count; i++) { @@ -1730,7 +1730,7 @@ lmv_enqueue_remote(struct obd_export *exp, struct ldlm_enqueue_info *einfo, } rdata = kzalloc(sizeof(*rdata), GFP_NOFS); - if (rdata == NULL) { + if (!rdata) { rc = -ENOMEM; goto out; } @@ -1993,7 +1993,7 @@ static int lmv_setattr(struct obd_export *exp, struct md_op_data *op_data, struct obd_device *obd = exp->exp_obd; struct lmv_obd *lmv = &obd->u.lmv; struct lmv_tgt_desc *tgt; - int rc = 0; + int rc; rc = lmv_check_connect(obd); if (rc) diff --git a/drivers/staging/lustre/lustre/lov/lov_dev.c b/drivers/staging/lustre/lustre/lov/lov_dev.c index 504b24a..8c3bbe5 100644 --- a/drivers/staging/lustre/lustre/lov/lov_dev.c +++ b/drivers/staging/lustre/lustre/lov/lov_dev.c @@ -478,7 +478,7 @@ static struct lu_device *lov_device_alloc(const struct lu_env *env, int rc; ld = kzalloc(sizeof(*ld), GFP_NOFS); - if (ld == NULL) + if (!ld) return ERR_PTR(-ENOMEM); cl_device_init(&ld->ld_cl, t); diff --git a/drivers/staging/lustre/lustre/lov/lov_io.c b/drivers/staging/lustre/lustre/lov/lov_io.c index 11c1081..bf36291 100644 --- a/drivers/staging/lustre/lustre/lov/lov_io.c +++ b/drivers/staging/lustre/lustre/lov/lov_io.c @@ -181,7 +181,7 @@ static int lov_io_sub_init(const struct lu_env *env, struct lov_io *lio, } else { sub->sub_io = kzalloc(sizeof(*sub->sub_io), GFP_NOFS); - if (sub->sub_io == NULL) + if (!sub->sub_io) result = -ENOMEM; } } diff --git a/drivers/staging/lustre/lustre/lov/lov_merge.c b/drivers/staging/lustre/lustre/lov/lov_merge.c index b7e7bfa..dd1cf3d 100644 --- a/drivers/staging/lustre/lustre/lov/lov_merge.c +++ b/drivers/staging/lustre/lustre/lov/lov_merge.c @@ -123,6 +123,7 @@ int lov_adjust_kms(struct obd_export *exp, struct lov_stripe_md *lsm, if (shrink) { for (; stripe < lsm->lsm_stripe_count; stripe++) { struct lov_oinfo *loi = lsm->lsm_oinfo[stripe]; + kms = lov_size_to_stripe(lsm, size, stripe); CDEBUG(D_INODE, "stripe %d KMS %sing %llu->%llu\n", diff --git a/drivers/staging/lustre/lustre/lov/lov_obd.c b/drivers/staging/lustre/lustre/lov/lov_obd.c index 96c55ac..c5c67d9 100644 --- a/drivers/staging/lustre/lustre/lov/lov_obd.c +++ b/drivers/staging/lustre/lustre/lov/lov_obd.c @@ -107,6 +107,10 @@ static void lov_putref(struct obd_device *obd) /* Disconnect */ __lov_del_obd(obd, tgt); } + + if (lov->lov_tgts_kobj) + kobject_put(lov->lov_tgts_kobj); + } else { mutex_unlock(&lov->lov_lock); } @@ -322,9 +326,6 @@ static int lov_disconnect(struct obd_export *exp) } } - if (lov->lov_tgts_kobj) - kobject_put(lov->lov_tgts_kobj); - obd_putref(obd); out: @@ -976,7 +977,7 @@ static int lov_recreate(struct obd_export *exp, struct obdo *src_oa, src_oa->o_flags & OBD_FL_RECREATE_OBJS); obj_mdp = kzalloc(sizeof(*obj_mdp), GFP_NOFS); - if (obj_mdp == NULL) + if (!obj_mdp) return -ENOMEM; ost_idx = src_oa->o_nlink; @@ -1439,7 +1440,7 @@ static int lov_iocontrol(unsigned int cmd, struct obd_export *exp, int len, __u32 *genp; len = 0; - if (obd_ioctl_getdata(&buf, &len, (void *)uarg)) + if (obd_ioctl_getdata(&buf, &len, uarg)) return -EINVAL; data = (struct obd_ioctl_data *)buf; @@ -1472,7 +1473,7 @@ static int lov_iocontrol(unsigned int cmd, struct obd_export *exp, int len, *genp = lov->lov_tgts[i]->ltd_gen; } - if (copy_to_user((void *)uarg, buf, len)) + if (copy_to_user(uarg, buf, len)) rc = -EFAULT; obd_ioctl_freedata(buf, len); break; diff --git a/drivers/staging/lustre/lustre/lov/lov_pool.c b/drivers/staging/lustre/lustre/lov/lov_pool.c index 1e4d3fb..c59b140 100644 --- a/drivers/staging/lustre/lustre/lov/lov_pool.c +++ b/drivers/staging/lustre/lustre/lov/lov_pool.c @@ -431,7 +431,7 @@ int lov_pool_new(struct obd_device *obd, char *poolname) return -ENAMETOOLONG; new_pool = kzalloc(sizeof(*new_pool), GFP_NOFS); - if (new_pool == NULL) + if (!new_pool) return -ENOMEM; strncpy(new_pool->pool_name, poolname, LOV_MAXPOOLNAME); diff --git a/drivers/staging/lustre/lustre/lov/lov_request.c b/drivers/staging/lustre/lustre/lov/lov_request.c index f4de8b8..416e42e 100644 --- a/drivers/staging/lustre/lustre/lov/lov_request.c +++ b/drivers/staging/lustre/lustre/lov/lov_request.c @@ -275,7 +275,7 @@ int lov_prep_getattr_set(struct obd_export *exp, struct obd_info *oinfo, int rc = 0, i; set = kzalloc(sizeof(*set), GFP_NOFS); - if (set == NULL) + if (!set) return -ENOMEM; lov_init_set(set); @@ -301,7 +301,7 @@ int lov_prep_getattr_set(struct obd_export *exp, struct obd_info *oinfo, } req = kzalloc(sizeof(*req), GFP_NOFS); - if (req == NULL) { + if (!req) { rc = -ENOMEM; goto out_set; } @@ -358,7 +358,7 @@ int lov_prep_destroy_set(struct obd_export *exp, struct obd_info *oinfo, int rc = 0, i; set = kzalloc(sizeof(*set), GFP_NOFS); - if (set == NULL) + if (!set) return -ENOMEM; lov_init_set(set); @@ -384,7 +384,7 @@ int lov_prep_destroy_set(struct obd_export *exp, struct obd_info *oinfo, } req = kzalloc(sizeof(*req), GFP_NOFS); - if (req == NULL) { + if (!req) { rc = -ENOMEM; goto out_set; } @@ -477,7 +477,7 @@ int lov_prep_setattr_set(struct obd_export *exp, struct obd_info *oinfo, int rc = 0, i; set = kzalloc(sizeof(*set), GFP_NOFS); - if (set == NULL) + if (!set) return -ENOMEM; lov_init_set(set); @@ -500,7 +500,7 @@ int lov_prep_setattr_set(struct obd_export *exp, struct obd_info *oinfo, } req = kzalloc(sizeof(*req), GFP_NOFS); - if (req == NULL) { + if (!req) { rc = -ENOMEM; goto out_set; } @@ -704,7 +704,7 @@ int lov_prep_statfs_set(struct obd_device *obd, struct obd_info *oinfo, int rc = 0, i; set = kzalloc(sizeof(*set), GFP_NOFS); - if (set == NULL) + if (!set) return -ENOMEM; lov_init_set(set); @@ -730,14 +730,14 @@ int lov_prep_statfs_set(struct obd_device *obd, struct obd_info *oinfo, } req = kzalloc(sizeof(*req), GFP_NOFS); - if (req == NULL) { + if (!req) { rc = -ENOMEM; goto out_set; } req->rq_oi.oi_osfs = kzalloc(sizeof(*req->rq_oi.oi_osfs), GFP_NOFS); - if (req->rq_oi.oi_osfs == NULL) { + if (!req->rq_oi.oi_osfs) { kfree(req); rc = -ENOMEM; goto out_set; diff --git a/drivers/staging/lustre/lustre/mdc/mdc_lib.c b/drivers/staging/lustre/lustre/mdc/mdc_lib.c index d3234cb..1a850ea 100644 --- a/drivers/staging/lustre/lustre/mdc/mdc_lib.c +++ b/drivers/staging/lustre/lustre/mdc/mdc_lib.c @@ -286,7 +286,7 @@ static inline __u64 attr_pack(unsigned int ia_valid) sa_valid |= MDS_ATTR_KILL_SGID; if (ia_valid & ATTR_CTIME_SET) sa_valid |= MDS_ATTR_CTIME_SET; - if (ia_valid & ATTR_FROM_OPEN) + if (ia_valid & ATTR_OPEN) sa_valid |= MDS_ATTR_FROM_OPEN; if (ia_valid & ATTR_BLOCKS) sa_valid |= MDS_ATTR_BLOCKS; diff --git a/drivers/staging/lustre/lustre/mdc/mdc_request.c b/drivers/staging/lustre/lustre/mdc/mdc_request.c index 7f208a6..204d512 100644 --- a/drivers/staging/lustre/lustre/mdc/mdc_request.c +++ b/drivers/staging/lustre/lustre/mdc/mdc_request.c @@ -1202,7 +1202,7 @@ static int mdc_ioc_fid2path(struct obd_export *exp, struct getinfo_fid2path *gf) /* Key is KEY_FID2PATH + getinfo_fid2path description */ keylen = cfs_size_round(sizeof(KEY_FID2PATH)) + sizeof(*gf); key = kzalloc(keylen, GFP_NOFS); - if (key == NULL) + if (!key) return -ENOMEM; memcpy(key, KEY_FID2PATH, sizeof(KEY_FID2PATH)); memcpy(key + cfs_size_round(sizeof(KEY_FID2PATH)), gf, sizeof(*gf)); @@ -1605,7 +1605,7 @@ static int mdc_changelog_send_thread(void *csdata) cs->cs_fp, cs->cs_startrec); cs->cs_buf = kzalloc(KUC_CHANGELOG_MSG_MAXSIZE, GFP_NOFS); - if (cs->cs_buf == NULL) { + if (!cs->cs_buf) { rc = -ENOMEM; goto out; } @@ -1934,7 +1934,7 @@ static int mdc_iocontrol(unsigned int cmd, struct obd_export *exp, int len, struct obd_quotactl *oqctl; oqctl = kzalloc(sizeof(*oqctl), GFP_NOFS); - if (oqctl == NULL) { + if (!oqctl) { rc = -ENOMEM; goto out; } diff --git a/drivers/staging/lustre/lustre/mgc/mgc_request.c b/drivers/staging/lustre/lustre/mgc/mgc_request.c index 174dfc3..019ee2f 100644 --- a/drivers/staging/lustre/lustre/mgc/mgc_request.c +++ b/drivers/staging/lustre/lustre/mgc/mgc_request.c @@ -1128,7 +1128,7 @@ static int mgc_apply_recover_logs(struct obd_device *mgc, LASSERT(cfg->cfg_sb == cfg->cfg_instance); inst = kzalloc(PAGE_CACHE_SIZE, GFP_NOFS); - if (inst == NULL) + if (!inst) return -ENOMEM; if (!IS_SERVER(lsi)) { @@ -1232,7 +1232,7 @@ static int mgc_apply_recover_logs(struct obd_device *mgc, pos += sprintf(obdname + pos, "-%s%04x", is_ost ? "OST" : "MDT", entry->mne_index); - cname = is_ost ? "osc" : "mdc", + cname = is_ost ? "osc" : "mdc"; pos += sprintf(obdname + pos, "-%s-%s", cname, inst); lustre_cfg_bufs_reset(&bufs, obdname); @@ -1493,7 +1493,7 @@ static int mgc_process_cfg_log(struct obd_device *mgc, lsi = s2lsi(cld->cld_cfg.cfg_sb); env = kzalloc(sizeof(*env), GFP_NOFS); - if (env == NULL) + if (!env) return -ENOMEM; rc = lu_env_init(env, LCT_MG_THREAD); diff --git a/drivers/staging/lustre/lustre/obdclass/acl.c b/drivers/staging/lustre/lustre/obdclass/acl.c index bc3fc47..933456c 100644 --- a/drivers/staging/lustre/lustre/obdclass/acl.c +++ b/drivers/staging/lustre/lustre/obdclass/acl.c @@ -104,11 +104,10 @@ static int lustre_posix_acl_xattr_reduce_space(posix_acl_xattr_header **header, if (unlikely(old_count <= new_count)) return old_size; - new = kzalloc(new_size, GFP_NOFS); + new = kmemdup(*header, new_size, GFP_NOFS); if (unlikely(new == NULL)) return -ENOMEM; - memcpy(new, *header, new_size); kfree(*header); *header = new; return new_size; @@ -125,11 +124,10 @@ static int lustre_ext_acl_xattr_reduce_space(ext_acl_xattr_header **header, if (unlikely(old_count <= ext_count)) return 0; - new = kzalloc(ext_size, GFP_NOFS); + new = kmemdup(*header, ext_size, GFP_NOFS); if (unlikely(new == NULL)) return -ENOMEM; - memcpy(new, *header, ext_size); kfree(*header); *header = new; return 0; diff --git a/drivers/staging/lustre/lustre/obdclass/cl_page.c b/drivers/staging/lustre/lustre/obdclass/cl_page.c index a7f3032..d5fb81f 100644 --- a/drivers/staging/lustre/lustre/obdclass/cl_page.c +++ b/drivers/staging/lustre/lustre/obdclass/cl_page.c @@ -51,13 +51,13 @@ static void cl_page_delete0(const struct lu_env *env, struct cl_page *pg, int radix); -# define PASSERT(env, page, expr) \ - do { \ - if (unlikely(!(expr))) { \ - CL_PAGE_DEBUG(D_ERROR, (env), (page), #expr "\n"); \ - LASSERT(0); \ - } \ - } while (0) +# define PASSERT(env, page, expr) \ + do { \ + if (unlikely(!(expr))) { \ + CL_PAGE_DEBUG(D_ERROR, (env), (page), #expr "\n"); \ + LASSERT(0); \ + } \ + } while (0) # define PINVRNT(env, page, exp) \ ((void)sizeof(env), (void)sizeof(page), (void)sizeof !!(exp)) @@ -169,6 +169,7 @@ int cl_page_gang_lookup(const struct lu_env *env, struct cl_object *obj, while ((nr = radix_tree_gang_lookup(&hdr->coh_tree, (void **)pvec, idx, CLT_PVEC_SIZE)) > 0) { int end_of_region = 0; + idx = pvec[nr - 1]->cp_index + 1; for (i = 0, j = 0; i < nr; ++i) { page = pvec[i]; @@ -286,6 +287,7 @@ static struct cl_page *cl_page_alloc(const struct lu_env *env, GFP_NOFS); if (page != NULL) { int result = 0; + atomic_set(&page->cp_ref, 1); if (type == CPT_CACHEABLE) /* for radix tree */ atomic_inc(&page->cp_ref); @@ -352,8 +354,10 @@ static struct cl_page *cl_page_find0(const struct lu_env *env, idx, PFID(&hdr->coh_lu.loh_fid), vmpage, vmpage->private, type); /* fast path. */ if (type == CPT_CACHEABLE) { - /* vmpage lock is used to protect the child/parent - * relationship */ + /* + * vmpage lock is used to protect the child/parent + * relationship + */ KLASSERT(PageLocked(vmpage)); /* * cl_vmpage_page() can be called here without any locks as @@ -372,9 +376,8 @@ static struct cl_page *cl_page_find0(const struct lu_env *env, idx) == page)); } - if (page != NULL) { + if (page != NULL) return page; - } /* allocate and initialize cl_page */ page = cl_page_alloc(env, o, idx, vmpage, type); @@ -1189,9 +1192,6 @@ int cl_page_prep(const struct lu_env *env, struct cl_io *io, if (result == 0) cl_page_io_start(env, pg, crt); - KLASSERT(ergo(crt == CRT_WRITE && pg->cp_type == CPT_CACHEABLE, - equi(result == 0, - PageWriteback(cl_page_vmpage(env, pg))))); CL_PAGE_HEADER(D_TRACE, env, pg, "%d %d\n", crt, result); return result; } @@ -1425,7 +1425,7 @@ void cl_page_clip(const struct lu_env *env, struct cl_page *pg, CL_PAGE_HEADER(D_TRACE, env, pg, "%d %d\n", from, to); CL_PAGE_INVOID(env, pg, CL_PAGE_OP(cpo_clip), (const struct lu_env *, - const struct cl_page_slice *,int, int), + const struct cl_page_slice *, int, int), from, to); } EXPORT_SYMBOL(cl_page_clip); diff --git a/drivers/staging/lustre/lustre/obdclass/class_obd.c b/drivers/staging/lustre/lustre/obdclass/class_obd.c index 1bc3756..2c705d7 100644 --- a/drivers/staging/lustre/lustre/obdclass/class_obd.c +++ b/drivers/staging/lustre/lustre/obdclass/class_obd.c @@ -78,12 +78,8 @@ atomic_t obd_dirty_pages; EXPORT_SYMBOL(obd_dirty_pages); unsigned int obd_timeout = OBD_TIMEOUT_DEFAULT; /* seconds */ EXPORT_SYMBOL(obd_timeout); -unsigned int ldlm_timeout = LDLM_TIMEOUT_DEFAULT; /* seconds */ -EXPORT_SYMBOL(ldlm_timeout); unsigned int obd_timeout_set; EXPORT_SYMBOL(obd_timeout_set); -unsigned int ldlm_timeout_set; -EXPORT_SYMBOL(ldlm_timeout_set); /* Adaptive timeout defs here instead of ptlrpc module for /proc/sys/ access */ unsigned int at_min = 0; EXPORT_SYMBOL(at_min); @@ -144,11 +140,11 @@ int obd_alloc_fail(const void *ptr, const char *name, const char *type, CERROR("%s%salloc of %s (%llu bytes) failed at %s:%d\n", ptr ? "force " :"", type, name, (__u64)size, file, line); - CERROR("%llu total bytes and %llu total pages (%llu bytes) allocated by Lustre, %d total bytes by LNET\n", + CERROR("%llu total bytes and %llu total pages" + " (%llu bytes) allocated by Lustre\n", obd_memory_sum(), obd_pages_sum() << PAGE_CACHE_SHIFT, - obd_pages_sum(), - atomic_read(&libcfs_kmemory)); + obd_pages_sum()); return 1; } return 0; @@ -232,7 +228,7 @@ int class_handle_ioctl(unsigned int cmd, unsigned long arg) goto out; } lcfg = kzalloc(data->ioc_plen1, GFP_NOFS); - if (lcfg == NULL) { + if (!lcfg) { err = -ENOMEM; goto out; } @@ -571,12 +567,14 @@ static int __init init_obdclass(void) if (err) return err; - obd_sysctl_init(); - err = class_procfs_init(); if (err) return err; + err = obd_sysctl_init(); + if (err) + return err; + err = lu_global_init(); if (err) return err; @@ -661,7 +659,6 @@ static void cleanup_obdclass(void) lu_global_fini(); obd_cleanup_caches(); - obd_sysctl_clean(); class_procfs_clean(); diff --git a/drivers/staging/lustre/lustre/obdclass/genops.c b/drivers/staging/lustre/lustre/obdclass/genops.c index 978c3c5..0ca7309 100644 --- a/drivers/staging/lustre/lustre/obdclass/genops.c +++ b/drivers/staging/lustre/lustre/obdclass/genops.c @@ -45,7 +45,7 @@ spinlock_t obd_types_lock; -struct kmem_cache *obd_device_cachep; +static struct kmem_cache *obd_device_cachep; struct kmem_cache *obdo_cachep; EXPORT_SYMBOL(obdo_cachep); static struct kmem_cache *import_cachep; @@ -71,9 +71,8 @@ static struct obd_device *obd_device_alloc(void) struct obd_device *obd; OBD_SLAB_ALLOC_PTR_GFP(obd, obd_device_cachep, GFP_NOFS); - if (obd != NULL) { + if (obd != NULL) obd->obd_magic = OBD_DEVICE_MAGIC; - } return obd; } @@ -172,7 +171,7 @@ int class_register_type(struct obd_ops *dt_ops, struct md_ops *md_ops, rc = -ENOMEM; type = kzalloc(sizeof(*type), GFP_NOFS); - if (type == NULL) + if (!type) return rc; type->typ_dt_ops = kzalloc(sizeof(*type->typ_dt_ops), GFP_NOFS); @@ -294,7 +293,7 @@ struct obd_device *class_newdev(const char *type_name, const char *name) } type = class_get_type(type_name); - if (type == NULL){ + if (type == NULL) { CERROR("OBD: unknown type: %s\n", type_name); return ERR_PTR(-ENODEV); } @@ -999,7 +998,8 @@ void class_import_put(struct obd_import *imp) } EXPORT_SYMBOL(class_import_put); -static void init_imp_at(struct imp_at *at) { +static void init_imp_at(struct imp_at *at) +{ int i; at_init(&at->iat_net_latency, 0, 0); for (i = 0; i < IMP_AT_MAX_PORTALS; i++) { @@ -1016,7 +1016,7 @@ struct obd_import *class_new_import(struct obd_device *obd) struct obd_import *imp; imp = kzalloc(sizeof(*imp), GFP_NOFS); - if (imp == NULL) + if (!imp) return NULL; INIT_LIST_HEAD(&imp->imp_pinger_chain); @@ -1642,7 +1642,8 @@ static int obd_zombie_impexp_check(void *arg) /** * Add export to the obd_zombie thread and notify it. */ -static void obd_zombie_export_add(struct obd_export *exp) { +static void obd_zombie_export_add(struct obd_export *exp) +{ spin_lock(&exp->exp_obd->obd_dev_lock); LASSERT(!list_empty(&exp->exp_obd_chain)); list_del_init(&exp->exp_obd_chain); @@ -1658,7 +1659,8 @@ static void obd_zombie_export_add(struct obd_export *exp) { /** * Add import to the obd_zombie thread and notify it. */ -static void obd_zombie_import_add(struct obd_import *imp) { +static void obd_zombie_import_add(struct obd_import *imp) +{ LASSERT(imp->imp_sec == NULL); LASSERT(imp->imp_rq_pool == NULL); spin_lock(&obd_zombie_impexp_lock); @@ -1819,7 +1821,7 @@ void *kuc_alloc(int payload_len, int transport, int type) int len = kuc_len(payload_len); lh = kzalloc(len, GFP_NOFS); - if (lh == NULL) + if (!lh) return ERR_PTR(-ENOMEM); lh->kuc_magic = KUC_MAGIC; diff --git a/drivers/staging/lustre/lustre/obdclass/linux/linux-module.c b/drivers/staging/lustre/lustre/obdclass/linux/linux-module.c index 84f75dc..6218ef3 100644 --- a/drivers/staging/lustre/lustre/obdclass/linux/linux-module.c +++ b/drivers/staging/lustre/lustre/obdclass/linux/linux-module.c @@ -385,7 +385,7 @@ static int obd_device_list_seq_show(struct seq_file *p, void *v) return 0; } -struct seq_operations obd_device_list_sops = { +static const struct seq_operations obd_device_list_sops = { .start = obd_device_list_seq_start, .stop = obd_device_list_seq_stop, .next = obd_device_list_seq_next, @@ -406,7 +406,7 @@ static int obd_device_list_open(struct inode *inode, struct file *file) return 0; } -struct file_operations obd_device_list_fops = { +static const struct file_operations obd_device_list_fops = { .owner = THIS_MODULE, .open = obd_device_list_open, .read = seq_read, @@ -423,7 +423,7 @@ static struct attribute_group lustre_attr_group = { int class_procfs_init(void) { - int rc = 0; + int rc = -ENOMEM; struct dentry *file; lustre_kobj = kobject_create_and_add("lustre", fs_kobj); diff --git a/drivers/staging/lustre/lustre/obdclass/linux/linux-sysctl.c b/drivers/staging/lustre/lustre/obdclass/linux/linux-sysctl.c index 54f0a81..1515163 100644 --- a/drivers/staging/lustre/lustre/obdclass/linux/linux-sysctl.c +++ b/drivers/staging/lustre/lustre/obdclass/linux/linux-sysctl.c @@ -50,331 +50,119 @@ #include "../../include/obd_support.h" #include "../../include/lprocfs_status.h" -#ifdef CONFIG_SYSCTL -static struct ctl_table_header *obd_table_header; -#endif +struct static_lustre_uintvalue_attr { + struct { + struct attribute attr; + ssize_t (*show)(struct kobject *kobj, struct attribute *attr, + char *buf); + ssize_t (*store)(struct kobject *kobj, struct attribute *attr, + const char *buf, size_t len); + } u; + int *value; +}; -#ifdef CONFIG_SYSCTL -static int proc_set_timeout(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, loff_t *ppos) +static ssize_t static_uintvalue_show(struct kobject *kobj, + struct attribute *attr, + char *buf) { - int rc; + struct static_lustre_uintvalue_attr *lattr = (void *)attr; - rc = proc_dointvec(table, write, buffer, lenp, ppos); - if (ldlm_timeout >= obd_timeout) - ldlm_timeout = max(obd_timeout / 3, 1U); - return rc; + return sprintf(buf, "%d\n", *lattr->value); } -static int proc_memory_alloc(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, loff_t *ppos) +static ssize_t static_uintvalue_store(struct kobject *kobj, + struct attribute *attr, + const char *buffer, size_t count) { - char buf[22]; - int len; - - if (!*lenp || (*ppos && !write)) { - *lenp = 0; - return 0; - } - if (write) - return -EINVAL; + struct static_lustre_uintvalue_attr *lattr = (void *)attr; + int rc; + unsigned int val; - len = snprintf(buf, sizeof(buf), "%llu\n", obd_memory_sum()); - if (len > *lenp) - len = *lenp; - buf[len] = '\0'; - if (copy_to_user(buffer, buf, len)) - return -EFAULT; - *lenp = len; - *ppos += *lenp; - return 0; -} + rc = kstrtouint(buffer, 10, &val); + if (rc) + return rc; -static int proc_pages_alloc(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, loff_t *ppos) -{ - char buf[22]; - int len; + *lattr->value = val; - if (!*lenp || (*ppos && !write)) { - *lenp = 0; - return 0; - } - if (write) - return -EINVAL; - - len = snprintf(buf, sizeof(buf), "%llu\n", obd_pages_sum()); - if (len > *lenp) - len = *lenp; - buf[len] = '\0'; - if (copy_to_user(buffer, buf, len)) - return -EFAULT; - *lenp = len; - *ppos += *lenp; - return 0; + return count; } -static int proc_mem_max(struct ctl_table *table, int write, void __user *buffer, - size_t *lenp, loff_t *ppos) -{ - char buf[22]; - int len; +#define LUSTRE_STATIC_UINT_ATTR(name, value) \ +static struct static_lustre_uintvalue_attr lustre_sattr_##name = \ + {__ATTR(name, 0644, \ + static_uintvalue_show, \ + static_uintvalue_store),\ + value } - if (!*lenp || (*ppos && !write)) { - *lenp = 0; - return 0; - } - if (write) - return -EINVAL; +LUSTRE_STATIC_UINT_ATTR(timeout, &obd_timeout); - len = snprintf(buf, sizeof(buf), "%llu\n", obd_memory_max()); - if (len > *lenp) - len = *lenp; - buf[len] = '\0'; - if (copy_to_user(buffer, buf, len)) - return -EFAULT; - *lenp = len; - *ppos += *lenp; - return 0; +static ssize_t max_dirty_mb_show(struct kobject *kobj, struct attribute *attr, + char *buf) +{ + return sprintf(buf, "%ul\n", + obd_max_dirty_pages / (1 << (20 - PAGE_CACHE_SHIFT))); } -static int proc_pages_max(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, loff_t *ppos) +static ssize_t max_dirty_mb_store(struct kobject *kobj, struct attribute *attr, + const char *buffer, size_t count) { - char buf[22]; - int len; + int rc; + unsigned long val; - if (!*lenp || (*ppos && !write)) { - *lenp = 0; - return 0; - } - if (write) - return -EINVAL; + rc = kstrtoul(buffer, 10, &val); + if (rc) + return rc; - len = snprintf(buf, sizeof(buf), "%llu\n", obd_pages_max()); - if (len > *lenp) - len = *lenp; - buf[len] = '\0'; - if (copy_to_user(buffer, buf, len)) - return -EFAULT; - *lenp = len; - *ppos += *lenp; - return 0; -} + val *= 1 << (20 - PAGE_CACHE_SHIFT); /* convert to pages */ -static int proc_max_dirty_pages_in_mb(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, loff_t *ppos) -{ - int rc = 0; - - if (!table->data || !table->maxlen || !*lenp || (*ppos && !write)) { - *lenp = 0; - return 0; + if (val > ((totalram_pages / 10) * 9)) { + /* Somebody wants to assign too much memory to dirty pages */ + return -EINVAL; } - if (write) { - rc = lprocfs_write_frac_helper(buffer, *lenp, - (unsigned int *)table->data, - 1 << (20 - PAGE_CACHE_SHIFT)); - /* Don't allow them to let dirty pages exceed 90% of system - * memory and set a hard minimum of 4MB. */ - if (obd_max_dirty_pages > ((totalram_pages / 10) * 9)) { - CERROR("Refusing to set max dirty pages to %u, which is more than 90%% of available RAM; setting to %lu\n", - obd_max_dirty_pages, - ((totalram_pages / 10) * 9)); - obd_max_dirty_pages = (totalram_pages / 10) * 9; - } else if (obd_max_dirty_pages < 4 << (20 - PAGE_CACHE_SHIFT)) { - obd_max_dirty_pages = 4 << (20 - PAGE_CACHE_SHIFT); - } - } else { - char buf[21]; - int len; - len = lprocfs_read_frac_helper(buf, sizeof(buf), - *(unsigned int *)table->data, - 1 << (20 - PAGE_CACHE_SHIFT)); - if (len > *lenp) - len = *lenp; - buf[len] = '\0'; - if (copy_to_user(buffer, buf, len)) - return -EFAULT; - *lenp = len; + if (val < 4 << (20 - PAGE_CACHE_SHIFT)) { + /* Less than 4 Mb for dirty cache is also bad */ + return -EINVAL; } - *ppos += *lenp; - return rc; -} -static int proc_alloc_fail_rate(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, loff_t *ppos) -{ - int rc = 0; + obd_max_dirty_pages = val; - if (!table->data || !table->maxlen || !*lenp || (*ppos && !write)) { - *lenp = 0; - return 0; - } - if (write) { - rc = lprocfs_write_frac_helper(buffer, *lenp, - (unsigned int *)table->data, - OBD_ALLOC_FAIL_MULT); - } else { - char buf[21]; - int len; - - len = lprocfs_read_frac_helper(buf, 21, - *(unsigned int *)table->data, - OBD_ALLOC_FAIL_MULT); - if (len > *lenp) - len = *lenp; - buf[len] = '\0'; - if (copy_to_user(buffer, buf, len)) - return -EFAULT; - *lenp = len; - } - *ppos += *lenp; - return rc; + return count; } - -static struct ctl_table obd_table[] = { - { - .procname = "timeout", - .data = &obd_timeout, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_set_timeout - }, - { - .procname = "debug_peer_on_timeout", - .data = &obd_debug_peer_on_timeout, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_dointvec - }, - { - .procname = "dump_on_timeout", - .data = &obd_dump_on_timeout, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_dointvec - }, - { - .procname = "dump_on_eviction", - .data = &obd_dump_on_eviction, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_dointvec - }, - { - .procname = "memused", - .data = NULL, - .maxlen = 0, - .mode = 0444, - .proc_handler = &proc_memory_alloc - }, - { - .procname = "pagesused", - .data = NULL, - .maxlen = 0, - .mode = 0444, - .proc_handler = &proc_pages_alloc - }, - { - .procname = "memused_max", - .data = NULL, - .maxlen = 0, - .mode = 0444, - .proc_handler = &proc_mem_max - }, - { - .procname = "pagesused_max", - .data = NULL, - .maxlen = 0, - .mode = 0444, - .proc_handler = &proc_pages_max - }, - { - .procname = "ldlm_timeout", - .data = &ldlm_timeout, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_set_timeout - }, - { - .procname = "alloc_fail_rate", - .data = &obd_alloc_fail_rate, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_alloc_fail_rate - }, - { - .procname = "max_dirty_mb", - .data = &obd_max_dirty_pages, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_max_dirty_pages_in_mb - }, - { - .procname = "at_min", - .data = &at_min, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_dointvec, - }, - { - .procname = "at_max", - .data = &at_max, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_dointvec, - }, - { - .procname = "at_extra", - .data = &at_extra, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_dointvec, - }, - { - .procname = "at_early_margin", - .data = &at_early_margin, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_dointvec, - }, - { - .procname = "at_history", - .data = &at_history, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_dointvec, - }, - {} +LUSTRE_RW_ATTR(max_dirty_mb); + +LUSTRE_STATIC_UINT_ATTR(debug_peer_on_timeout, &obd_debug_peer_on_timeout); +LUSTRE_STATIC_UINT_ATTR(dump_on_timeout, &obd_dump_on_timeout); +LUSTRE_STATIC_UINT_ATTR(dump_on_eviction, &obd_dump_on_eviction); +LUSTRE_STATIC_UINT_ATTR(at_min, &at_min); +LUSTRE_STATIC_UINT_ATTR(at_max, &at_max); +LUSTRE_STATIC_UINT_ATTR(at_extra, &at_extra); +LUSTRE_STATIC_UINT_ATTR(at_early_margin, &at_early_margin); +LUSTRE_STATIC_UINT_ATTR(at_history, &at_history); + +static struct attribute *lustre_attrs[] = { + &lustre_sattr_timeout.u.attr, + &lustre_attr_max_dirty_mb.attr, + &lustre_sattr_debug_peer_on_timeout.u.attr, + &lustre_sattr_dump_on_timeout.u.attr, + &lustre_sattr_dump_on_eviction.u.attr, + &lustre_sattr_at_min.u.attr, + &lustre_sattr_at_max.u.attr, + &lustre_sattr_at_extra.u.attr, + &lustre_sattr_at_early_margin.u.attr, + &lustre_sattr_at_history.u.attr, + NULL, }; -static struct ctl_table parent_table[] = { - { - .procname = "lustre", - .data = NULL, - .maxlen = 0, - .mode = 0555, - .child = obd_table - }, - {} +static struct attribute_group lustre_attr_group = { + .attrs = lustre_attrs, }; -#endif -void obd_sysctl_init(void) +int obd_sysctl_init(void) { -#ifdef CONFIG_SYSCTL - if (!obd_table_header) - obd_table_header = register_sysctl_table(parent_table); -#endif + return sysfs_create_group(lustre_kobj, &lustre_attr_group); } void obd_sysctl_clean(void) { -#ifdef CONFIG_SYSCTL - if (obd_table_header) - unregister_sysctl_table(obd_table_header); - obd_table_header = NULL; -#endif } diff --git a/drivers/staging/lustre/lustre/obdclass/llog.c b/drivers/staging/lustre/lustre/obdclass/llog.c index 4fa52d1b..facc835 100644 --- a/drivers/staging/lustre/lustre/obdclass/llog.c +++ b/drivers/staging/lustre/lustre/obdclass/llog.c @@ -61,7 +61,7 @@ static struct llog_handle *llog_alloc_handle(void) struct llog_handle *loghandle; loghandle = kzalloc(sizeof(*loghandle), GFP_NOFS); - if (loghandle == NULL) + if (!loghandle) return NULL; init_rwsem(&loghandle->lgh_lock); @@ -208,7 +208,7 @@ int llog_init_handle(const struct lu_env *env, struct llog_handle *handle, LASSERT(handle->lgh_hdr == NULL); llh = kzalloc(sizeof(*llh), GFP_NOFS); - if (llh == NULL) + if (!llh) return -ENOMEM; handle->lgh_hdr = llh; /* first assign flags to use llog_client_ops */ @@ -435,7 +435,7 @@ int llog_process_or_fork(const struct lu_env *env, int rc; lpi = kzalloc(sizeof(*lpi), GFP_NOFS); - if (lpi == NULL) { + if (!lpi) { CERROR("cannot alloc pointer\n"); return -ENOMEM; } @@ -907,7 +907,7 @@ int llog_is_empty(const struct lu_env *env, struct llog_ctxt *ctxt, char *name) { struct llog_handle *llh; - int rc = 0; + int rc; rc = llog_open(env, ctxt, &llh, NULL, name, LLOG_OPEN_EXISTS); if (rc < 0) { diff --git a/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c b/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c index 17e7c18..08d1f0ed 100644 --- a/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c +++ b/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c @@ -275,7 +275,7 @@ struct dentry *ldebugfs_add_symlink(const char *name, struct dentry *parent, return NULL; dest = kzalloc(MAX_STRING_SIZE + 1, GFP_KERNEL); - if (dest == NULL) + if (!dest) return NULL; va_start(ap, format); @@ -329,7 +329,7 @@ EXPORT_SYMBOL(ldebugfs_add_vars); void ldebugfs_remove(struct dentry **entryp) { - debugfs_remove(*entryp); + debugfs_remove_recursive(*entryp); *entryp = NULL; } EXPORT_SYMBOL(ldebugfs_remove); diff --git a/drivers/staging/lustre/lustre/obdclass/lu_object.c b/drivers/staging/lustre/lustre/obdclass/lu_object.c index 4d9b633..8e47232 100644 --- a/drivers/staging/lustre/lustre/obdclass/lu_object.c +++ b/drivers/staging/lustre/lustre/obdclass/lu_object.c @@ -602,7 +602,7 @@ static struct lu_object *lu_object_new(const struct lu_env *env, struct lu_site_bkt_data *bkt; o = lu_object_alloc(env, dev, f, conf); - if (unlikely(IS_ERR(o))) + if (IS_ERR(o)) return o; hs = dev->ld_site->ls_obj_hash; @@ -666,7 +666,7 @@ static struct lu_object *lu_object_find_try(const struct lu_env *env, * operations, including fld queries, inode loading, etc. */ o = lu_object_alloc(env, dev, f, conf); - if (unlikely(IS_ERR(o))) + if (IS_ERR(o)) return o; LASSERT(lu_fid_eq(lu_object_fid(o), f)); @@ -674,7 +674,7 @@ static struct lu_object *lu_object_find_try(const struct lu_env *env, cfs_hash_bd_lock(hs, &bd, 1); shadow = htable_lookup(s, &bd, f, waiter, &version); - if (likely(IS_ERR(shadow) && PTR_ERR(shadow) == -ENOENT)) { + if (likely(PTR_ERR(shadow) == -ENOENT)) { struct lu_site_bkt_data *bkt; bkt = cfs_hash_bd_extra_get(hs, &bd); @@ -1558,7 +1558,7 @@ static int keys_fill(struct lu_context *ctx) LINVRNT(key->lct_index == i); value = key->lct_init(ctx, key); - if (unlikely(IS_ERR(value))) + if (IS_ERR(value)) return PTR_ERR(value); if (!(ctx->lc_tags & LCT_NOREF)) diff --git a/drivers/staging/lustre/lustre/obdclass/lustre_peer.c b/drivers/staging/lustre/lustre/obdclass/lustre_peer.c index 5cc6435..d6184f8 100644 --- a/drivers/staging/lustre/lustre/obdclass/lustre_peer.c +++ b/drivers/staging/lustre/lustre/obdclass/lustre_peer.c @@ -105,7 +105,7 @@ int class_add_uuid(const char *uuid, __u64 nid) return -EOVERFLOW; data = kzalloc(sizeof(*data), GFP_NOFS); - if (data == NULL) + if (!data) return -ENOMEM; obd_str2uuid(&data->un_uuid, uuid); diff --git a/drivers/staging/lustre/lustre/obdclass/obd_config.c b/drivers/staging/lustre/lustre/obdclass/obd_config.c index fbdb748..93805ac 100644 --- a/drivers/staging/lustre/lustre/obdclass/obd_config.c +++ b/drivers/staging/lustre/lustre/obdclass/obd_config.c @@ -835,7 +835,7 @@ int class_add_profile(int proflen, char *prof, int osclen, char *osc, CDEBUG(D_CONFIG, "Add profile %s\n", prof); lprof = kzalloc(sizeof(*lprof), GFP_NOFS); - if (lprof == NULL) + if (!lprof) return -ENOMEM; INIT_LIST_HEAD(&lprof->lp_list); @@ -979,7 +979,7 @@ struct lustre_cfg *lustre_cfg_rename(struct lustre_cfg *cfg, new_len = LUSTRE_CFG_BUFLEN(cfg, 1) + strlen(new_name) - name_len; new_param = kzalloc(new_len, GFP_NOFS); - if (new_param == NULL) + if (!new_param) return ERR_PTR(-ENOMEM); strcpy(new_param, new_name); @@ -987,7 +987,7 @@ struct lustre_cfg *lustre_cfg_rename(struct lustre_cfg *cfg, strcat(new_param, value); bufs = kzalloc(sizeof(*bufs), GFP_NOFS); - if (bufs == NULL) { + if (!bufs) { kfree(new_param); return ERR_PTR(-ENOMEM); } @@ -1123,12 +1123,7 @@ int class_process_config(struct lustre_cfg *lcfg) goto out; } case LCFG_SET_LDLM_TIMEOUT: { - CDEBUG(D_IOCTL, "changing lustre ldlm_timeout from %d to %d\n", - ldlm_timeout, lcfg->lcfg_num); - ldlm_timeout = max(lcfg->lcfg_num, 1U); - if (ldlm_timeout >= obd_timeout) - ldlm_timeout = max(obd_timeout / 3, 1U); - ldlm_timeout_set = 1; + /* ldlm_timeout is not used on the client */ err = 0; goto out; } @@ -1461,7 +1456,7 @@ int class_config_llog_handler(const struct lu_env *env, inst_len = LUSTRE_CFG_BUFLEN(lcfg, 0) + sizeof(clli->cfg_instance) * 2 + 4; inst_name = kzalloc(inst_len, GFP_NOFS); - if (inst_name == NULL) { + if (!inst_name) { rc = -ENOMEM; goto out; } @@ -1639,7 +1634,7 @@ int class_config_dump_handler(const struct lu_env *env, int rc = 0; outstr = kzalloc(256, GFP_NOFS); - if (outstr == NULL) + if (!outstr) return -ENOMEM; if (rec->lrh_type == OBD_CFG_REC) { diff --git a/drivers/staging/lustre/lustre/obdclass/obd_mount.c b/drivers/staging/lustre/lustre/obdclass/obd_mount.c index ce4a71f..7c5bab3 100644 --- a/drivers/staging/lustre/lustre/obdclass/obd_mount.c +++ b/drivers/staging/lustre/lustre/obdclass/obd_mount.c @@ -85,7 +85,7 @@ int lustre_process_log(struct super_block *sb, char *logname, LASSERT(cfg); bufs = kzalloc(sizeof(*bufs), GFP_NOFS); - if (bufs == NULL) + if (!bufs) return -ENOMEM; /* mgc_process_config */ @@ -247,18 +247,18 @@ int lustre_start_mgc(struct super_block *sb) mutex_lock(&mgc_start_lock); len = strlen(LUSTRE_MGC_OBDNAME) + strlen(libcfs_nid2str(nid)) + 1; - mgcname = kzalloc(len, GFP_NOFS); - niduuid = kzalloc(len + 2, GFP_NOFS); + mgcname = kasprintf(GFP_NOFS, + "%s%s", LUSTRE_MGC_OBDNAME, libcfs_nid2str(nid)); + niduuid = kasprintf(GFP_NOFS, "%s_%x", mgcname, i); if (!mgcname || !niduuid) { rc = -ENOMEM; goto out_free; } - sprintf(mgcname, "%s%s", LUSTRE_MGC_OBDNAME, libcfs_nid2str(nid)); mgssec = lsi->lsi_lmd->lmd_mgssec ? lsi->lsi_lmd->lmd_mgssec : ""; data = kzalloc(sizeof(*data), GFP_NOFS); - if (data == NULL) { + if (!data) { rc = -ENOMEM; goto out_free; } @@ -326,7 +326,6 @@ int lustre_start_mgc(struct super_block *sb) /* Add the primary nids for the MGS */ i = 0; - sprintf(niduuid, "%s_%x", mgcname, i); if (IS_SERVER(lsi)) { ptr = lsi->lsi_lmd->lmd_mgs; if (IS_MGS(lsi)) { @@ -885,7 +884,7 @@ static int lmd_parse_mgssec(struct lustre_mount_data *lmd, char *ptr) length = tail - ptr; lmd->lmd_mgssec = kzalloc(length + 1, GFP_NOFS); - if (lmd->lmd_mgssec == NULL) + if (!lmd->lmd_mgssec) return -ENOMEM; memcpy(lmd->lmd_mgssec, ptr, length); @@ -911,7 +910,7 @@ static int lmd_parse_string(char **handle, char *ptr) length = tail - ptr; *handle = kzalloc(length + 1, GFP_NOFS); - if (*handle == NULL) + if (!*handle) return -ENOMEM; memcpy(*handle, ptr, length); @@ -941,7 +940,7 @@ static int lmd_parse_mgs(struct lustre_mount_data *lmd, char **ptr) oldlen = strlen(lmd->lmd_mgs) + 1; mgsnid = kzalloc(oldlen + length + 1, GFP_NOFS); - if (mgsnid == NULL) + if (!mgsnid) return -ENOMEM; if (lmd->lmd_mgs != NULL) { @@ -983,7 +982,7 @@ static int lmd_parse(char *options, struct lustre_mount_data *lmd) lmd->lmd_magic = LMD_MAGIC; lmd->lmd_params = kzalloc(4096, GFP_NOFS); - if (lmd->lmd_params == NULL) + if (!lmd->lmd_params) return -ENOMEM; lmd->lmd_params[0] = '\0'; @@ -1120,10 +1119,9 @@ static int lmd_parse(char *options, struct lustre_mount_data *lmd) /* Remove leading /s from fsname */ while (*++s1 == '/') ; /* Freed in lustre_free_lsi */ - lmd->lmd_profile = kzalloc(strlen(s1) + 8, GFP_NOFS); + lmd->lmd_profile = kasprintf(GFP_NOFS, "%s-client", s1); if (!lmd->lmd_profile) return -ENOMEM; - sprintf(lmd->lmd_profile, "%s-client", s1); } /* Freed in lustre_free_lsi */ @@ -1281,7 +1279,7 @@ struct file_system_type lustre_fs_type = { .mount = lustre_mount, .kill_sb = lustre_kill_super, .fs_flags = FS_BINARY_MOUNTDATA | FS_REQUIRES_DEV | - FS_HAS_FIEMAP | FS_RENAME_DOES_D_MOVE, + FS_RENAME_DOES_D_MOVE, }; MODULE_ALIAS_FS("lustre"); diff --git a/drivers/staging/lustre/lustre/obdclass/uuid.c b/drivers/staging/lustre/lustre/obdclass/uuid.c index ff0a01b..b0b0157 100644 --- a/drivers/staging/lustre/lustre/obdclass/uuid.c +++ b/drivers/staging/lustre/lustre/obdclass/uuid.c @@ -43,40 +43,8 @@ #include "../include/obd_support.h" #include "../include/obd_class.h" - -static inline __u32 consume(int nob, __u8 **ptr) -{ - __u32 value; - - LASSERT(nob <= sizeof(value)); - - for (value = 0; nob > 0; --nob) - value = (value << 8) | *((*ptr)++); - return value; -} - -#define CONSUME(val, ptr) (val) = consume(sizeof(val), (ptr)) - -static void uuid_unpack(class_uuid_t in, __u16 *uu, int nr) -{ - __u8 *ptr = in; - - LASSERT(nr * sizeof(*uu) == sizeof(class_uuid_t)); - - while (nr-- > 0) - CONSUME(uu[nr], &ptr); -} - void class_uuid_unparse(class_uuid_t uu, struct obd_uuid *out) { - /* uu as an array of __u16's */ - __u16 uuid[sizeof(class_uuid_t) / sizeof(__u16)]; - - CLASSERT(ARRAY_SIZE(uuid) == 8); - - uuid_unpack(uu, uuid, ARRAY_SIZE(uuid)); - sprintf(out->uuid, "%04x%04x-%04x-%04x-%04x-%04x%04x%04x", - uuid[0], uuid[1], uuid[2], uuid[3], - uuid[4], uuid[5], uuid[6], uuid[7]); + sprintf(out->uuid, "%pU", uu); } EXPORT_SYMBOL(class_uuid_unparse); diff --git a/drivers/staging/lustre/lustre/obdecho/echo_client.c b/drivers/staging/lustre/lustre/obdecho/echo_client.c index 0222fd2..27bd170 100644 --- a/drivers/staging/lustre/lustre/obdecho/echo_client.c +++ b/drivers/staging/lustre/lustre/obdecho/echo_client.c @@ -480,11 +480,11 @@ static int echo_alloc_memmd(struct echo_device *ed, LASSERT(*lsmp == NULL); *lsmp = kzalloc(lsm_size, GFP_NOFS); - if (*lsmp == NULL) + if (!*lsmp) return -ENOMEM; (*lsmp)->lsm_oinfo[0] = kzalloc(sizeof(struct lov_oinfo), GFP_NOFS); - if ((*lsmp)->lsm_oinfo[0] == NULL) { + if (!(*lsmp)->lsm_oinfo[0]) { kfree(*lsmp); return -ENOMEM; } @@ -701,7 +701,7 @@ static struct lu_device *echo_device_alloc(const struct lu_env *env, int cleanup = 0; ed = kzalloc(sizeof(*ed), GFP_NOFS); - if (ed == NULL) { + if (!ed) { rc = -ENOMEM; goto out; } @@ -1878,7 +1878,7 @@ echo_client_iocontrol(unsigned int cmd, struct obd_export *exp, int len, return rc; env = kzalloc(sizeof(*env), GFP_NOFS); - if (env == NULL) + if (!env) return -ENOMEM; rc = lu_env_init(env, LCT_DT_THREAD); @@ -2049,7 +2049,7 @@ static int echo_client_setup(const struct lu_env *env, ec->ec_nstripes = 0; ocd = kzalloc(sizeof(*ocd), GFP_NOFS); - if (ocd == NULL) { + if (!ocd) { CERROR("Can't alloc ocd connecting to %s\n", lustre_cfg_string(lcfg, 1)); return -ENOMEM; @@ -2139,7 +2139,7 @@ static struct obd_ops echo_client_obd_ops = { .o_disconnect = echo_client_disconnect }; -int echo_client_init(void) +static int echo_client_init(void) { int rc; @@ -2154,7 +2154,7 @@ int echo_client_init(void) return rc; } -void echo_client_exit(void) +static void echo_client_exit(void) { class_unregister_type(LUSTRE_ECHO_CLIENT_NAME); lu_kmem_fini(echo_caches); diff --git a/drivers/staging/lustre/lustre/osc/osc_cache.c b/drivers/staging/lustre/lustre/osc/osc_cache.c index 5592d32..c72035e 100644 --- a/drivers/staging/lustre/lustre/osc/osc_cache.c +++ b/drivers/staging/lustre/lustre/osc/osc_cache.c @@ -1837,12 +1837,6 @@ static int try_to_add_extent_for_io(struct client_obd *cli, oap2 = list_first_entry(&tmp->oe_pages, struct osc_async_page, oap_pending_item); EASSERT(tmp->oe_owner == current, tmp); -#if 0 - if (overlapped(tmp, ext)) { - OSC_EXTENT_DUMP(D_ERROR, tmp, "overlapped %p.\n", ext); - EASSERT(0, ext); - } -#endif if (oap2cl_page(oap)->cp_type != oap2cl_page(oap2)->cp_type) { CDEBUG(D_CACHE, "Do not permit different type of IO" " for a same RPC\n"); diff --git a/drivers/staging/lustre/lustre/osc/osc_dev.c b/drivers/staging/lustre/lustre/osc/osc_dev.c index 9222c9f..91fdec4 100644 --- a/drivers/staging/lustre/lustre/osc/osc_dev.c +++ b/drivers/staging/lustre/lustre/osc/osc_dev.c @@ -218,7 +218,7 @@ static struct lu_device *osc_device_alloc(const struct lu_env *env, int rc; od = kzalloc(sizeof(*od), GFP_NOFS); - if (od == NULL) + if (!od) return ERR_PTR(-ENOMEM); cl_device_init(&od->od_cl, t); diff --git a/drivers/staging/lustre/lustre/osc/osc_page.c b/drivers/staging/lustre/lustre/osc/osc_page.c index 43dfa73..f9cf5ce 100644 --- a/drivers/staging/lustre/lustre/osc/osc_page.c +++ b/drivers/staging/lustre/lustre/osc/osc_page.c @@ -471,7 +471,7 @@ static int osc_page_flush(const struct lu_env *env, struct cl_io *io) { struct osc_page *opg = cl2osc_page(slice); - int rc = 0; + int rc; rc = osc_flush_async_page(env, io, opg); return rc; diff --git a/drivers/staging/lustre/lustre/osc/osc_request.c b/drivers/staging/lustre/lustre/osc/osc_request.c index f84b4c7..12113df 100644 --- a/drivers/staging/lustre/lustre/osc/osc_request.c +++ b/drivers/staging/lustre/lustre/osc/osc_request.c @@ -119,7 +119,7 @@ static int osc_packmd(struct obd_export *exp, struct lov_mds_md **lmmp, if (*lmmp == NULL) { *lmmp = kzalloc(lmm_size, GFP_NOFS); - if (*lmmp == NULL) + if (!*lmmp) return -ENOMEM; } @@ -1909,7 +1909,7 @@ int osc_build_rpc(const struct lu_env *env, struct client_obd *cli, mpflag = cfs_memory_pressure_get_and_set(); crattr = kzalloc(sizeof(*crattr), GFP_NOFS); - if (crattr == NULL) { + if (!crattr) { rc = -ENOMEM; goto out; } @@ -2665,7 +2665,7 @@ static int osc_iocontrol(unsigned int cmd, struct obd_export *exp, int len, buf = NULL; len = 0; - if (obd_ioctl_getdata(&buf, &len, (void *)uarg)) { + if (obd_ioctl_getdata(&buf, &len, uarg)) { err = -EINVAL; goto out; } @@ -2695,7 +2695,7 @@ static int osc_iocontrol(unsigned int cmd, struct obd_export *exp, int len, memcpy(data->ioc_inlbuf2, &obd->obd_uuid, sizeof(uuid)); - err = copy_to_user((void *)uarg, buf, len); + err = copy_to_user(uarg, buf, len); if (err) err = -EFAULT; obd_ioctl_freedata(buf, len); diff --git a/drivers/staging/lustre/lustre/ptlrpc/client.c b/drivers/staging/lustre/lustre/ptlrpc/client.c index a12cd66..c83a34a 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/client.c +++ b/drivers/staging/lustre/lustre/ptlrpc/client.c @@ -971,7 +971,7 @@ int ptlrpc_set_add_cb(struct ptlrpc_request_set *set, struct ptlrpc_set_cbdata *cbdata; cbdata = kzalloc(sizeof(*cbdata), GFP_NOFS); - if (cbdata == NULL) + if (!cbdata) return -ENOMEM; cbdata->psc_interpret = fn; diff --git a/drivers/staging/lustre/lustre/ptlrpc/events.c b/drivers/staging/lustre/lustre/ptlrpc/events.c index 8cb1929..c8ef9e5 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/events.c +++ b/drivers/staging/lustre/lustre/ptlrpc/events.c @@ -485,7 +485,7 @@ int ptlrpc_uuid_to_peer(struct obd_uuid *uuid, return rc; } -void ptlrpc_ni_fini(void) +static void ptlrpc_ni_fini(void) { wait_queue_head_t waitq; struct l_wait_info lwi; @@ -529,7 +529,7 @@ lnet_pid_t ptl_get_pid(void) return pid; } -int ptlrpc_ni_init(void) +static int ptlrpc_ni_init(void) { int rc; lnet_pid_t pid; diff --git a/drivers/staging/lustre/lustre/ptlrpc/import.c b/drivers/staging/lustre/lustre/ptlrpc/import.c index c9b8481..1eae389 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/import.c +++ b/drivers/staging/lustre/lustre/ptlrpc/import.c @@ -555,14 +555,12 @@ static int import_select_connection(struct obd_import *imp) imp_conn->oic_last_attempt = cfs_time_current_64(); /* switch connection, don't mind if it's same as the current one */ - if (imp->imp_connection) - ptlrpc_connection_put(imp->imp_connection); + ptlrpc_connection_put(imp->imp_connection); imp->imp_connection = ptlrpc_connection_addref(imp_conn->oic_conn); dlmexp = class_conn2export(&imp->imp_dlm_handle); LASSERT(dlmexp != NULL); - if (dlmexp->exp_connection) - ptlrpc_connection_put(dlmexp->exp_connection); + ptlrpc_connection_put(dlmexp->exp_connection); dlmexp->exp_connection = ptlrpc_connection_addref(imp_conn->oic_conn); class_export_put(dlmexp); diff --git a/drivers/staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c b/drivers/staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c index aaaabbf..53f9af1 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c +++ b/drivers/staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c @@ -652,7 +652,7 @@ static ssize_t ptlrpc_lprocfs_nrs_seq_write(struct file *file, return -EINVAL; cmd = kzalloc(LPROCFS_NRS_WR_MAX_CMD, GFP_NOFS); - if (cmd == NULL) + if (!cmd) return -ENOMEM; /** * strsep() modifies its argument, so keep a copy @@ -819,7 +819,7 @@ ptlrpc_lprocfs_svc_req_history_start(struct seq_file *s, loff_t *pos) } srhi = kzalloc(sizeof(*srhi), GFP_NOFS); - if (srhi == NULL) + if (!srhi) return NULL; srhi->srhi_seq = 0; @@ -1219,7 +1219,7 @@ int lprocfs_wr_evict_client(struct file *file, const char __user *buffer, char *tmpbuf; kbuf = kzalloc(BUFLEN, GFP_NOFS); - if (kbuf == NULL) + if (!kbuf) return -ENOMEM; /* @@ -1303,7 +1303,7 @@ int lprocfs_wr_import(struct file *file, const char __user *buffer, return -EINVAL; kbuf = kzalloc(count + 1, GFP_NOFS); - if (kbuf == NULL) + if (!kbuf) return -ENOMEM; if (copy_from_user(kbuf, buffer, count)) { diff --git a/drivers/staging/lustre/lustre/ptlrpc/nrs.c b/drivers/staging/lustre/lustre/ptlrpc/nrs.c index 9516aca..d37cdd5 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/nrs.c +++ b/drivers/staging/lustre/lustre/ptlrpc/nrs.c @@ -1156,7 +1156,7 @@ int ptlrpc_nrs_policy_register(struct ptlrpc_nrs_pol_conf *conf) } desc = kzalloc(sizeof(*desc), GFP_NOFS); - if (desc == NULL) { + if (!desc) { rc = -ENOMEM; goto fail; } diff --git a/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c b/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c index 2787bfd..84937ad 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c +++ b/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c @@ -52,6 +52,8 @@ #include "../include/obd_cksum.h" #include "../include/lustre/ll_fiemap.h" +#include "ptlrpc_internal.h" + static inline int lustre_msg_hdr_size_v2(int count) { return cfs_size_round(offsetof(struct lustre_msg_v2, diff --git a/drivers/staging/lustre/lustre/ptlrpc/pinger.c b/drivers/staging/lustre/lustre/ptlrpc/pinger.c index d05c37c..f8edb79 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/pinger.c +++ b/drivers/staging/lustre/lustre/ptlrpc/pinger.c @@ -318,8 +318,6 @@ int ptlrpc_start_pinger(void) strcpy(pinger_thread.t_name, "ll_ping"); - /* CLONE_VM and CLONE_FILES just avoid a needless copy, because we - * just drop the VM and FILES in cfs_daemonize_ctxt() right away. */ rc = PTR_ERR(kthread_run(ptlrpc_pinger_main, &pinger_thread, "%s", pinger_thread.t_name)); if (IS_ERR_VALUE(rc)) { diff --git a/drivers/staging/lustre/lustre/ptlrpc/ptlrpc_module.c b/drivers/staging/lustre/lustre/ptlrpc/ptlrpc_module.c index 5268887..ae99180 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/ptlrpc_module.c +++ b/drivers/staging/lustre/lustre/ptlrpc/ptlrpc_module.c @@ -51,7 +51,7 @@ extern spinlock_t ptlrpc_rs_debug_lock; extern struct mutex pinger_mutex; extern struct mutex ptlrpcd_mutex; -__init int ptlrpc_init(void) +static int __init ptlrpc_init(void) { int rc, cleanup_phase = 0; diff --git a/drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c b/drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c index e591cff..17cc81d 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c +++ b/drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c @@ -739,7 +739,7 @@ static int ptlrpcd_init(void) size = offsetof(struct ptlrpcd, pd_threads[nthreads]); ptlrpcds = kzalloc(size, GFP_NOFS); - if (ptlrpcds == NULL) { + if (!ptlrpcds) { rc = -ENOMEM; goto out; } diff --git a/drivers/staging/lustre/lustre/ptlrpc/sec_bulk.c b/drivers/staging/lustre/lustre/ptlrpc/sec_bulk.c index 69d73c4..2ee3e8b 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/sec_bulk.c +++ b/drivers/staging/lustre/lustre/ptlrpc/sec_bulk.c @@ -415,7 +415,7 @@ static int enc_pools_add_pages(int npages) for (i = 0; i < npools; i++) { pools[i] = kzalloc(PAGE_CACHE_SIZE, GFP_NOFS); - if (pools[i] == NULL) + if (!pools[i]) goto out_pools; for (j = 0; j < PAGES_PER_POOL && alloced < npages; j++) { diff --git a/drivers/staging/lustre/lustre/ptlrpc/sec_config.c b/drivers/staging/lustre/lustre/ptlrpc/sec_config.c index 31da43e..e7f2f33 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/sec_config.c +++ b/drivers/staging/lustre/lustre/ptlrpc/sec_config.c @@ -564,7 +564,7 @@ struct sptlrpc_conf *sptlrpc_conf_get(const char *fsname, return NULL; conf = kzalloc(sizeof(*conf), GFP_NOFS); - if (conf == NULL) + if (!conf) return NULL; strcpy(conf->sc_fsname, fsname); diff --git a/drivers/staging/lustre/lustre/ptlrpc/sec_plain.c b/drivers/staging/lustre/lustre/ptlrpc/sec_plain.c index 53ce0d1..a243db6 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/sec_plain.c +++ b/drivers/staging/lustre/lustre/ptlrpc/sec_plain.c @@ -444,7 +444,7 @@ struct ptlrpc_sec *plain_create_sec(struct obd_import *imp, LASSERT(SPTLRPC_FLVR_POLICY(sf->sf_rpc) == SPTLRPC_POLICY_PLAIN); plsec = kzalloc(sizeof(*plsec), GFP_NOFS); - if (plsec == NULL) + if (!plsec) return NULL; /* diff --git a/drivers/staging/lustre/lustre/ptlrpc/service.c b/drivers/staging/lustre/lustre/ptlrpc/service.c index 9117f1c..003344c 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/service.c +++ b/drivers/staging/lustre/lustre/ptlrpc/service.c @@ -43,7 +43,7 @@ #include "ptlrpc_internal.h" /* The following are visible and mutable through /sys/module/ptlrpc */ -int test_req_buffer_pressure = 0; +int test_req_buffer_pressure; module_param(test_req_buffer_pressure, int, 0444); MODULE_PARM_DESC(test_req_buffer_pressure, "set non-zero to put pressure on request buffer pools"); module_param(at_min, int, 0644); @@ -69,7 +69,7 @@ LIST_HEAD(ptlrpc_all_services); /** Used to protect the \e ptlrpc_all_services list */ struct mutex ptlrpc_all_services_mutex; -struct ptlrpc_request_buffer_desc * +static struct ptlrpc_request_buffer_desc * ptlrpc_alloc_rqbd(struct ptlrpc_service_part *svcpt) { struct ptlrpc_service *svc = svcpt->scp_service; @@ -101,7 +101,7 @@ ptlrpc_alloc_rqbd(struct ptlrpc_service_part *svcpt) return rqbd; } -void +static void ptlrpc_free_rqbd(struct ptlrpc_request_buffer_desc *rqbd) { struct ptlrpc_service_part *svcpt = rqbd->rqbd_svcpt; @@ -118,7 +118,7 @@ ptlrpc_free_rqbd(struct ptlrpc_request_buffer_desc *rqbd) kfree(rqbd); } -int +static int ptlrpc_grow_req_bufs(struct ptlrpc_service_part *svcpt, int post) { struct ptlrpc_service *svc = svcpt->scp_service; @@ -732,7 +732,7 @@ ptlrpc_register_service(struct ptlrpc_service_conf *conf, service = kzalloc(offsetof(struct ptlrpc_service, srv_parts[ncpts]), GFP_NOFS); - if (service == NULL) { + if (!service) { kfree(cpts); return ERR_PTR(-ENOMEM); } @@ -2298,7 +2298,7 @@ static int ptlrpc_main(void *arg) } env = kzalloc(sizeof(*env), GFP_NOFS); - if (env == NULL) { + if (!env) { rc = -ENOMEM; goto out_srv_fini; } @@ -2826,9 +2826,7 @@ void ptlrpc_hr_fini(void) ptlrpc_stop_hr_threads(); cfs_percpt_for_each(hrp, i, ptlrpc_hr.hr_partitions) { - if (hrp->hrp_thrs != NULL) { - kfree(hrp->hrp_thrs); - } + kfree(hrp->hrp_thrs); } cfs_percpt_free(ptlrpc_hr.hr_partitions); @@ -3054,7 +3052,7 @@ EXPORT_SYMBOL(ptlrpc_unregister_service); * Right now, it just checks to make sure that requests aren't languishing * in the queue. We'll use this health check to govern whether a node needs * to be shot, so it's intentionally non-aggressive. */ -int ptlrpc_svcpt_health_check(struct ptlrpc_service_part *svcpt) +static int ptlrpc_svcpt_health_check(struct ptlrpc_service_part *svcpt) { struct ptlrpc_request *request = NULL; struct timeval right_now; diff --git a/drivers/staging/lustre/sysfs-fs-lustre b/drivers/staging/lustre/sysfs-fs-lustre index 1e302e8..873e2cf 100644 --- a/drivers/staging/lustre/sysfs-fs-lustre +++ b/drivers/staging/lustre/sysfs-fs-lustre @@ -40,6 +40,109 @@ Description: e.g. dd.1253 nodelocal - use jobid_name value from above. +What: /sys/fs/lustre/timeout +Date: June 2015 +Contact: "Oleg Drokin" <oleg.drokin@intel.com> +Description: + Controls "lustre timeout" variable, also known as obd_timeout + in some old manual. In the past obd_timeout was of paramount + importance as the timeout value used everywhere and where + other timeouts were derived from. These days it's much less + important as network timeouts are mostly determined by + AT (adaptive timeouts). + Unit: seconds, default: 100 + +What: /sys/fs/lustre/max_dirty_mb +Date: June 2015 +Contact: "Oleg Drokin" <oleg.drokin@intel.com> +Description: + Controls total number of dirty cache (in megabytes) allowed + across all mounted lustre filesystems. + Since writeout of dirty pages in Lustre is somewhat expensive, + when you allow to many dirty pages, this might lead to + performance degradations as kernel tries to desperately + find some pages to free/writeout. + Default 1/2 RAM. Min value 4, max value 9/10 of RAM. + +What: /sys/fs/lustre/debug_peer_on_timeout +Date: June 2015 +Contact: "Oleg Drokin" <oleg.drokin@intel.com> +Description: + Control if lnet debug information should be printed when + an RPC timeout occurs. + 0 disabled (default) + 1 enabled + +What: /sys/fs/lustre/dump_on_timeout +Date: June 2015 +Contact: "Oleg Drokin" <oleg.drokin@intel.com> +Description: + Controls if Lustre debug log should be dumped when an RPC + timeout occurs. This is useful if yout debug buffer typically + rolls over by the time you notice RPC timeouts. + +What: /sys/fs/lustre/dump_on_eviction +Date: June 2015 +Contact: "Oleg Drokin" <oleg.drokin@intel.com> +Description: + Controls if Lustre debug log should be dumped when an this + client is evicted from one of the servers. + This is useful if yout debug buffer typically rolls over + by the time you notice the eviction event. + +What: /sys/fs/lustre/at_min +Date: July 2015 +Contact: "Oleg Drokin" <oleg.drokin@intel.com> +Description: + Controls minimum adaptive timeout in seconds. If you encounter + a case where clients timeout due to server-reported processing + time being too short, you might consider increasing this value. + One common case of this if the underlying network has + unpredictable long delays. + Default: 0 + +What: /sys/fs/lustre/at_max +Date: July 2015 +Contact: "Oleg Drokin" <oleg.drokin@intel.com> +Description: + Controls maximum adaptive timeout in seconds. If at_max timeout + is reached for an RPC, the RPC will time out. + Some genuinuely slow network hardware might warrant increasing + this value. + Setting this value to 0 disables Adaptive Timeouts + functionality and old-style obd_timeout value is then used. + Default: 600 + +What: /sys/fs/lustre/at_extra +Date: July 2015 +Contact: "Oleg Drokin" <oleg.drokin@intel.com> +Description: + Controls how much extra time to request for unfinished requests + in processing in seconds. Normally a server-side parameter, it + is also used on the client for responses to various LDLM ASTs + that are handled with a special server thread on the client. + This is a way for the servers to ask the clients not to time + out the request that reached current servicing time estimate + yet and give it some more time. + Default: 30 + +What: /sys/fs/lustre/at_early_margin +Date: July 2015 +Contact: "Oleg Drokin" <oleg.drokin@intel.com> +Description: + Controls when to send the early reply for requests that are + about to timeout as an offset to the estimated service time in + seconds.. + Default: 5 + +What: /sys/fs/lustre/at_history +Date: July 2015 +Contact: "Oleg Drokin" <oleg.drokin@intel.com> +Description: + Controls for how many seconds to remember slowest events + encountered by adaptive timeouts code. + Default: 600 + What: /sys/fs/lustre/llite/<fsname>-<uuid>/blocksize Date: May 2015 Contact: "Oleg Drokin" <oleg.drokin@intel.com> |