X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Flibcfs%2Fmodule.c;h=950db2fccaac88f048fe7442a61f0309c29ec770;hb=7629b7f51568a8cb2bedf2460cbfb1f9446769ca;hp=8ab7e6ca7148fa17ed130631618f901e808d14b4;hpb=8c47378b057e72d6125f4baffe8721e0734d0d3f;p=fs%2Flustre-release.git diff --git a/libcfs/libcfs/module.c b/libcfs/libcfs/module.c index 8ab7e6c..950db2f 100644 --- a/libcfs/libcfs/module.c +++ b/libcfs/libcfs/module.c @@ -185,35 +185,35 @@ static int libcfs_psdev_release(unsigned long flags, void *args) } static struct rw_semaphore ioctl_list_sem; -static cfs_list_t ioctl_list; +static struct list_head ioctl_list; int libcfs_register_ioctl(struct libcfs_ioctl_handler *hand) { - int rc = 0; + int rc = 0; down_write(&ioctl_list_sem); - if (!cfs_list_empty(&hand->item)) - rc = -EBUSY; - else - cfs_list_add_tail(&hand->item, &ioctl_list); + if (!list_empty(&hand->item)) + rc = -EBUSY; + else + list_add_tail(&hand->item, &ioctl_list); up_write(&ioctl_list_sem); - return rc; + return rc; } EXPORT_SYMBOL(libcfs_register_ioctl); int libcfs_deregister_ioctl(struct libcfs_ioctl_handler *hand) { - int rc = 0; + int rc = 0; down_write(&ioctl_list_sem); - if (cfs_list_empty(&hand->item)) - rc = -ENOENT; - else - cfs_list_del_init(&hand->item); + if (list_empty(&hand->item)) + rc = -ENOENT; + else + list_del_init(&hand->item); up_write(&ioctl_list_sem); - return rc; + return rc; } EXPORT_SYMBOL(libcfs_deregister_ioctl); @@ -237,41 +237,6 @@ static int libcfs_ioctl_int(struct cfs_psdev_file *pfile,unsigned long cmd, RETURN(-EINVAL); libcfs_debug_mark_buffer(data->ioc_inlbuf1); RETURN(0); -#if LWT_SUPPORT - case IOC_LIBCFS_LWT_CONTROL: - err = lwt_control ((data->ioc_flags & 1) != 0, - (data->ioc_flags & 2) != 0); - break; - - case IOC_LIBCFS_LWT_SNAPSHOT: { - cfs_cycles_t now; - int ncpu; - int total_size; - - err = lwt_snapshot (&now, &ncpu, &total_size, - data->ioc_pbuf1, data->ioc_plen1); - data->ioc_u64[0] = now; - data->ioc_u32[0] = ncpu; - data->ioc_u32[1] = total_size; - - /* Hedge against broken user/kernel typedefs (e.g. cycles_t) */ - data->ioc_u32[2] = sizeof(lwt_event_t); - data->ioc_u32[3] = offsetof(lwt_event_t, lwte_where); - - if (err == 0 && - libcfs_ioctl_popdata(arg, data, sizeof (*data))) - err = -EFAULT; - break; - } - - case IOC_LIBCFS_LWT_LOOKUP_STRING: - err = lwt_lookup_string (&data->ioc_count, data->ioc_pbuf1, - data->ioc_pbuf2, data->ioc_plen2); - if (err == 0 && - libcfs_ioctl_popdata(arg, data, sizeof (*data))) - err = -EFAULT; - break; -#endif case IOC_LIBCFS_MEMHOG: if (pfile->private_data == NULL) { err = -EINVAL; @@ -304,25 +269,25 @@ static int libcfs_ioctl_int(struct cfs_psdev_file *pfile,unsigned long cmd, } default: { - struct libcfs_ioctl_handler *hand; - err = -EINVAL; + struct libcfs_ioctl_handler *hand; + + err = -EINVAL; down_read(&ioctl_list_sem); - cfs_list_for_each_entry_typed(hand, &ioctl_list, - struct libcfs_ioctl_handler, item) { - err = hand->handle_ioctl(cmd, data); - if (err != -EINVAL) { - if (err == 0) - err = libcfs_ioctl_popdata(arg, - data, sizeof (*data)); - break; - } - } + list_for_each_entry(hand, &ioctl_list, item) { + err = hand->handle_ioctl(cmd, data); + if (err != -EINVAL) { + if (err == 0) + err = libcfs_ioctl_popdata(arg, + data, sizeof (*data)); + break; + } + } up_read(&ioctl_list_sem); - break; - } - } + break; + } + } - RETURN(err); + RETURN(err); } static int libcfs_ioctl(struct cfs_psdev_file *pfile, @@ -384,8 +349,8 @@ static int init_libcfs_module(void) init_rwsem(&cfs_tracefile_sem); mutex_init(&cfs_trace_thread_mutex); init_rwsem(&ioctl_list_sem); - CFS_INIT_LIST_HEAD(&ioctl_list); - cfs_waitq_init(&cfs_race_waitq); + INIT_LIST_HEAD(&ioctl_list); + init_waitqueue_head(&cfs_race_waitq); rc = libcfs_debug_init(5 * 1024 * 1024); if (rc < 0) { @@ -397,17 +362,10 @@ static int init_libcfs_module(void) if (rc != 0) goto cleanup_debug; -#if LWT_SUPPORT - rc = lwt_init(); - if (rc != 0) { - CERROR("lwt_init: error %d\n", rc); - goto cleanup_debug; - } -#endif rc = misc_register(&libcfs_dev); if (rc) { CERROR("misc_register: error %d\n", rc); - goto cleanup_lwt; + goto cleanup_cpu; } rc = cfs_wi_startup(); @@ -440,17 +398,15 @@ static int init_libcfs_module(void) CDEBUG (D_OTHER, "portals setup OK\n"); return 0; - cleanup_crypto: +cleanup_crypto: cfs_crypto_unregister(); - cleanup_wi: +cleanup_wi: cfs_wi_shutdown(); - cleanup_deregister: +cleanup_deregister: misc_deregister(&libcfs_dev); - cleanup_lwt: -#if LWT_SUPPORT - lwt_fini(); -#endif - cleanup_debug: +cleanup_cpu: + cfs_cpu_fini(); +cleanup_debug: libcfs_debug_cleanup(); return rc; } @@ -462,7 +418,7 @@ static void exit_libcfs_module(void) remove_proc(); CDEBUG(D_MALLOC, "before Portals cleanup: kmem %d\n", - cfs_atomic_read(&libcfs_kmemory)); + atomic_read(&libcfs_kmemory)); if (cfs_sched_rehash != NULL) { cfs_wi_sched_destroy(cfs_sched_rehash); @@ -476,14 +432,11 @@ static void exit_libcfs_module(void) if (rc) CERROR("misc_deregister error %d\n", rc); -#if LWT_SUPPORT - lwt_fini(); -#endif cfs_cpu_fini(); - if (cfs_atomic_read(&libcfs_kmemory) != 0) + if (atomic_read(&libcfs_kmemory) != 0) CERROR("Portals memory leaked: %d bytes\n", - cfs_atomic_read(&libcfs_kmemory)); + atomic_read(&libcfs_kmemory)); rc = libcfs_debug_cleanup(); if (rc)