Whamcloud - gitweb
LU-2800 autoconf: remove LIBCFS_HAVE_IS_COMPAT_TASK test
[fs/lustre-release.git] / libcfs / libcfs / tracefile.c
index 76b76ec..3a96dae 100644 (file)
@@ -1,6 +1,4 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
  * GPL HEADER START
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -28,6 +26,8 @@
 /*
  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright (c) 2012, 2013, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -52,7 +52,7 @@ union cfs_trace_data_union (*cfs_trace_data[TCD_MAX_TYPES])[CFS_NR_CPUS] __cache
 char cfs_tracefile[TRACEFILE_NAME_SIZE];
 long long cfs_tracefile_size = CFS_TRACEFILE_SIZE;
 static struct tracefiled_ctl trace_tctl;
-cfs_mutex_t cfs_trace_thread_mutex;
+struct mutex cfs_trace_thread_mutex;
 static int thread_running = 0;
 
 cfs_atomic_t cfs_tage_allocated = CFS_ATOMIC_INIT(0);
@@ -68,41 +68,41 @@ cfs_tage_from_list(cfs_list_t *list)
 
 static struct cfs_trace_page *cfs_tage_alloc(int gfp)
 {
-        cfs_page_t            *page;
-        struct cfs_trace_page *tage;
-
-        /* My caller is trying to free memory */
-        if (!cfs_in_interrupt() && cfs_memory_pressure_get())
-                return NULL;
-
-        /*
-         * Don't spam console with allocation failures: they will be reported
-         * by upper layer anyway.
-         */
-        gfp |= CFS_ALLOC_NOWARN;
-        page = cfs_alloc_page(gfp);
-        if (page == NULL)
-                return NULL;
-
-        tage = cfs_alloc(sizeof(*tage), gfp);
-        if (tage == NULL) {
-                cfs_free_page(page);
-                return NULL;
-        }
-
-        tage->page = page;
-        cfs_atomic_inc(&cfs_tage_allocated);
-        return tage;
+       struct page            *page;
+       struct cfs_trace_page *tage;
+
+       /* My caller is trying to free memory */
+       if (!cfs_in_interrupt() && memory_pressure_get())
+               return NULL;
+
+       /*
+        * Don't spam console with allocation failures: they will be reported
+        * by upper layer anyway.
+        */
+       gfp |= __GFP_NOWARN;
+       page = alloc_page(gfp);
+       if (page == NULL)
+               return NULL;
+
+       tage = kmalloc(sizeof(*tage), gfp);
+       if (tage == NULL) {
+               __free_page(page);
+               return NULL;
+       }
+
+       tage->page = page;
+       cfs_atomic_inc(&cfs_tage_allocated);
+       return tage;
 }
 
 static void cfs_tage_free(struct cfs_trace_page *tage)
 {
-        __LASSERT(tage != NULL);
-        __LASSERT(tage->page != NULL);
+       __LASSERT(tage != NULL);
+       __LASSERT(tage->page != NULL);
 
-        cfs_free_page(tage->page);
-        cfs_free(tage);
-        cfs_atomic_dec(&cfs_tage_allocated);
+       __free_page(tage->page);
+       kfree(tage);
+       cfs_atomic_dec(&cfs_tage_allocated);
 }
 
 static void cfs_tage_to_tail(struct cfs_trace_page *tage,
@@ -144,25 +144,26 @@ cfs_trace_get_tage_try(struct cfs_trace_cpu_data *tcd, unsigned long len)
         if (tcd->tcd_cur_pages > 0) {
                 __LASSERT(!cfs_list_empty(&tcd->tcd_pages));
                 tage = cfs_tage_from_list(tcd->tcd_pages.prev);
-                if (tage->used + len <= CFS_PAGE_SIZE)
+               if (tage->used + len <= PAGE_CACHE_SIZE)
                         return tage;
         }
 
         if (tcd->tcd_cur_pages < tcd->tcd_max_pages) {
-                if (tcd->tcd_cur_stock_pages > 0) {
-                        tage = cfs_tage_from_list(tcd->tcd_stock_pages.prev);
-                        -- tcd->tcd_cur_stock_pages;
-                        cfs_list_del_init(&tage->linkage);
-                } else {
-                        tage = cfs_tage_alloc(CFS_ALLOC_ATOMIC);
-                        if (tage == NULL) {
-                                if (printk_ratelimit())
-                                        printk(CFS_KERN_WARNING
-                                               "cannot allocate a tage (%ld)\n",
-                                       tcd->tcd_cur_pages);
-                                return NULL;
-                        }
-                }
+               if (tcd->tcd_cur_stock_pages > 0) {
+                       tage = cfs_tage_from_list(tcd->tcd_stock_pages.prev);
+                       --tcd->tcd_cur_stock_pages;
+                       cfs_list_del_init(&tage->linkage);
+               } else {
+                       tage = cfs_tage_alloc(GFP_ATOMIC);
+                       if (unlikely(tage == NULL)) {
+                               if ((!memory_pressure_get() ||
+                                    cfs_in_interrupt()) && printk_ratelimit())
+                                       printk(CFS_KERN_WARNING
+                                              "cannot allocate a tage (%ld)\n",
+                                              tcd->tcd_cur_pages);
+                               return NULL;
+                       }
+               }
 
                 tage->used = 0;
                 tage->cpu = cfs_smp_processor_id();
@@ -200,7 +201,7 @@ static void cfs_tcd_shrink(struct cfs_trace_cpu_data *tcd)
                        pgcount + 1, tcd->tcd_cur_pages);
 
         CFS_INIT_LIST_HEAD(&pc.pc_pages);
-        cfs_spin_lock_init(&pc.pc_lock);
+       spin_lock_init(&pc.pc_lock);
 
         cfs_list_for_each_entry_safe_typed(tage, tmp, &tcd->tcd_pages,
                                            struct cfs_trace_page, linkage) {
@@ -224,7 +225,7 @@ static struct cfs_trace_page *cfs_trace_get_tage(struct cfs_trace_cpu_data *tcd,
          * from here: this will lead to infinite recursion.
          */
 
-        if (len > CFS_PAGE_SIZE) {
+       if (len > PAGE_CACHE_SIZE) {
                 printk(CFS_KERN_ERR
                        "cowardly refusing to write %lu bytes in a page\n", len);
                 return NULL;
@@ -316,7 +317,7 @@ int libcfs_debug_vmsg2(struct libcfs_debug_msg_data *msgdata,
         for (i = 0; i < 2; i++) {
                 tage = cfs_trace_get_tage(tcd, needed + known_size + 1);
                 if (tage == NULL) {
-                        if (needed + known_size > CFS_PAGE_SIZE)
+                       if (needed + known_size > PAGE_CACHE_SIZE)
                                 mask |= D_ERROR;
 
                         cfs_trace_put_tcd(tcd);
@@ -324,10 +325,10 @@ int libcfs_debug_vmsg2(struct libcfs_debug_msg_data *msgdata,
                         goto console;
                 }
 
-                string_buf = (char *)cfs_page_address(tage->page) +
+               string_buf = (char *)page_address(tage->page) +
                                         tage->used + known_size;
 
-                max_nob = CFS_PAGE_SIZE - tage->used - known_size;
+               max_nob = PAGE_CACHE_SIZE - tage->used - known_size;
                 if (max_nob <= 0) {
                         printk(CFS_KERN_EMERG "negative max_nob: %d\n",
                                max_nob);
@@ -364,7 +365,7 @@ int libcfs_debug_vmsg2(struct libcfs_debug_msg_data *msgdata,
                        "newline\n", file, msgdata->msg_line, msgdata->msg_fn);
 
         header.ph_len = known_size + needed;
-        debug_buf = (char *)cfs_page_address(tage->page) + tage->used;
+       debug_buf = (char *)page_address(tage->page) + tage->used;
 
         if (libcfs_debug_binary) {
                 memcpy(debug_buf, &header, sizeof(header));
@@ -391,7 +392,7 @@ int libcfs_debug_vmsg2(struct libcfs_debug_msg_data *msgdata,
         __LASSERT(debug_buf == string_buf);
 
         tage->used += needed;
-        __LASSERT (tage->used <= CFS_PAGE_SIZE);
+       __LASSERT(tage->used <= PAGE_CACHE_SIZE);
 
 console:
         if ((mask & libcfs_printk) == 0) {
@@ -480,15 +481,6 @@ console:
 EXPORT_SYMBOL(libcfs_debug_vmsg2);
 
 void
-libcfs_assertion_failed(const char *expr, struct libcfs_debug_msg_data *msgdata)
-{
-        libcfs_debug_msg(msgdata, "ASSERTION(%s) failed\n", expr);
-        /* cfs_enter_debugger(); */
-        lbug_with_loc(msgdata);
-}
-EXPORT_SYMBOL(libcfs_assertion_failed);
-
-void
 cfs_trace_assertion_failed(const char *str,
                            struct libcfs_debug_msg_data *msgdata)
 {
@@ -534,10 +526,10 @@ panic_collect_pages(struct page_collection *pc)
 
 static void collect_pages_on_all_cpus(struct page_collection *pc)
 {
-        struct cfs_trace_cpu_data *tcd;
-        int i, cpu;
+       struct cfs_trace_cpu_data *tcd;
+       int i, cpu;
 
-        cfs_spin_lock(&pc->pc_lock);
+       spin_lock(&pc->pc_lock);
         cfs_for_each_possible_cpu(cpu) {
                 cfs_tcd_for_each_type_lock(tcd, i, cpu) {
                         cfs_list_splice_init(&tcd->tcd_pages, &pc->pc_pages);
@@ -549,7 +541,7 @@ static void collect_pages_on_all_cpus(struct page_collection *pc)
                         }
                 }
         }
-        cfs_spin_unlock(&pc->pc_lock);
+       spin_unlock(&pc->pc_lock);
 }
 
 static void collect_pages(struct page_collection *pc)
@@ -570,7 +562,7 @@ static void put_pages_back_on_all_cpus(struct page_collection *pc)
         struct cfs_trace_page *tmp;
         int i, cpu;
 
-        cfs_spin_lock(&pc->pc_lock);
+       spin_lock(&pc->pc_lock);
         cfs_for_each_possible_cpu(cpu) {
                 cfs_tcd_for_each_type_lock(tcd, i, cpu) {
                         cur_head = tcd->tcd_pages.next;
@@ -590,7 +582,7 @@ static void put_pages_back_on_all_cpus(struct page_collection *pc)
                         }
                 }
         }
-        cfs_spin_unlock(&pc->pc_lock);
+       spin_unlock(&pc->pc_lock);
 }
 
 static void put_pages_back(struct page_collection *pc)
@@ -604,12 +596,12 @@ static void put_pages_back(struct page_collection *pc)
  * if we have been steadily writing (and otherwise discarding) pages via the
  * debug daemon. */
 static void put_pages_on_tcd_daemon_list(struct page_collection *pc,
-                                         struct cfs_trace_cpu_data *tcd)
+                                        struct cfs_trace_cpu_data *tcd)
 {
-        struct cfs_trace_page *tage;
-        struct cfs_trace_page *tmp;
+       struct cfs_trace_page *tage;
+       struct cfs_trace_page *tmp;
 
-        cfs_spin_lock(&pc->pc_lock);
+       spin_lock(&pc->pc_lock);
         cfs_list_for_each_entry_safe_typed(tage, tmp, &pc->pc_pages,
                                            struct cfs_trace_page, linkage) {
 
@@ -634,7 +626,7 @@ static void put_pages_on_tcd_daemon_list(struct page_collection *pc,
                         tcd->tcd_cur_daemon_pages--;
                 }
         }
-        cfs_spin_unlock(&pc->pc_lock);
+       spin_unlock(&pc->pc_lock);
 }
 
 static void put_pages_on_daemon_list(struct page_collection *pc)
@@ -650,24 +642,24 @@ static void put_pages_on_daemon_list(struct page_collection *pc)
 
 void cfs_trace_debug_print(void)
 {
-        struct page_collection pc;
-        struct cfs_trace_page *tage;
-        struct cfs_trace_page *tmp;
+       struct page_collection pc;
+       struct cfs_trace_page *tage;
+       struct cfs_trace_page *tmp;
 
-        cfs_spin_lock_init(&pc.pc_lock);
+       spin_lock_init(&pc.pc_lock);
 
         pc.pc_want_daemon_pages = 1;
         collect_pages(&pc);
         cfs_list_for_each_entry_safe_typed(tage, tmp, &pc.pc_pages,
                                            struct cfs_trace_page, linkage) {
-                char *p, *file, *fn;
-                cfs_page_t *page;
+               char *p, *file, *fn;
+               struct page *page;
 
-                __LASSERT_TAGE_INVARIANT(tage);
+               __LASSERT_TAGE_INVARIANT(tage);
 
-                page = tage->page;
-                p = cfs_page_address(page);
-                while (p < ((char *)cfs_page_address(page) + tage->used)) {
+               page = tage->page;
+               p = page_address(page);
+               while (p < ((char *)page_address(page) + tage->used)) {
                         struct ptldebug_header *hdr;
                         int len;
                         hdr = (void *)p;
@@ -690,27 +682,26 @@ void cfs_trace_debug_print(void)
 
 int cfs_tracefile_dump_all_pages(char *filename)
 {
-        struct page_collection pc;
-        cfs_file_t *filp;
-        struct cfs_trace_page *tage;
-        struct cfs_trace_page *tmp;
-        int rc;
-
-        CFS_DECL_MMSPACE;
-
-        cfs_tracefile_write_lock();
-
-        filp = cfs_filp_open(filename,
-                             O_CREAT|O_EXCL|O_WRONLY|O_LARGEFILE, 0600, &rc);
-        if (!filp) {
-                if (rc != -EEXIST)
-                        printk(CFS_KERN_ERR
-                               "LustreError: can't open %s for dump: rc %d\n",
-                               filename, rc);
-                goto out;
-        }
-
-        cfs_spin_lock_init(&pc.pc_lock);
+       struct page_collection  pc;
+       struct file             *filp;
+       struct cfs_trace_page   *tage;
+       struct cfs_trace_page   *tmp;
+       int rc;
+
+       DECL_MMSPACE;
+
+       cfs_tracefile_write_lock();
+
+       filp = filp_open(filename, O_CREAT|O_EXCL|O_WRONLY|O_LARGEFILE, 0600);
+       if (IS_ERR(filp)) {
+               rc = PTR_ERR(filp);
+               filp = NULL;
+               printk(KERN_ERR "LustreError: can't open %s for dump: rc %d\n",
+                     filename, rc);
+               goto out;
+       }
+
+       spin_lock_init(&pc.pc_lock);
         pc.pc_want_daemon_pages = 1;
         collect_pages(&pc);
         if (cfs_list_empty(&pc.pc_pages)) {
@@ -720,14 +711,14 @@ int cfs_tracefile_dump_all_pages(char *filename)
 
         /* ok, for now, just write the pages.  in the future we'll be building
          * iobufs with the pages and calling generic_direct_IO */
-        CFS_MMSPACE_OPEN;
+       MMSPACE_OPEN;
         cfs_list_for_each_entry_safe_typed(tage, tmp, &pc.pc_pages,
                                            struct cfs_trace_page, linkage) {
 
                 __LASSERT_TAGE_INVARIANT(tage);
 
-                rc = cfs_filp_write(filp, cfs_page_address(tage->page),
-                                    tage->used, cfs_filp_poff(filp));
+               rc = filp_write(filp, page_address(tage->page),
+                               tage->used, filp_poff(filp));
                 if (rc != (int)tage->used) {
                         printk(CFS_KERN_WARNING "wanted to write %u but wrote "
                                "%d\n", tage->used, rc);
@@ -738,24 +729,24 @@ int cfs_tracefile_dump_all_pages(char *filename)
                 cfs_list_del(&tage->linkage);
                 cfs_tage_free(tage);
         }
-        CFS_MMSPACE_CLOSE;
-        rc = cfs_filp_fsync(filp);
-        if (rc)
-                printk(CFS_KERN_ERR "sync returns %d\n", rc);
- close:
-        cfs_filp_close(filp);
- out:
-        cfs_tracefile_write_unlock();
-        return rc;
+       MMSPACE_CLOSE;
+       rc = filp_fsync(filp);
+       if (rc)
+               printk(CFS_KERN_ERR "sync returns %d\n", rc);
+close:
+       filp_close(filp, NULL);
+out:
+       cfs_tracefile_write_unlock();
+       return rc;
 }
 
 void cfs_trace_flush_pages(void)
 {
-        struct page_collection pc;
-        struct cfs_trace_page *tage;
-        struct cfs_trace_page *tmp;
+       struct page_collection pc;
+       struct cfs_trace_page *tage;
+       struct cfs_trace_page *tmp;
 
-        cfs_spin_lock_init(&pc.pc_lock);
+       spin_lock_init(&pc.pc_lock);
 
         pc.pc_want_daemon_pages = 1;
         collect_pages(&pc);
@@ -777,7 +768,7 @@ int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
         if (usr_buffer_nob > knl_buffer_nob)
                 return -EOVERFLOW;
 
-        if (cfs_copy_from_user((void *)knl_buffer,
+       if (copy_from_user((void *)knl_buffer,
                            (void *)usr_buffer, usr_buffer_nob))
                 return -EFAULT;
 
@@ -795,6 +786,7 @@ int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
         knl_buffer[nob + 1] = 0;                /* terminate */
         return 0;
 }
+EXPORT_SYMBOL(cfs_trace_copyin_string);
 
 int cfs_trace_copyout_string(char *usr_buffer, int usr_buffer_nob,
                              const char *knl_buffer, char *append)
@@ -807,11 +799,11 @@ int cfs_trace_copyout_string(char *usr_buffer, int usr_buffer_nob,
         if (nob > usr_buffer_nob)
                 nob = usr_buffer_nob;
 
-        if (cfs_copy_to_user(usr_buffer, knl_buffer, nob))
+       if (copy_to_user(usr_buffer, knl_buffer, nob))
                 return -EFAULT;
 
         if (append != NULL && nob < usr_buffer_nob) {
-                if (cfs_copy_to_user(usr_buffer + nob, append, 1))
+               if (copy_to_user(usr_buffer + nob, append, 1))
                         return -EFAULT;
 
                 nob++;
@@ -823,10 +815,10 @@ EXPORT_SYMBOL(cfs_trace_copyout_string);
 
 int cfs_trace_allocate_string_buffer(char **str, int nob)
 {
-        if (nob > 2 * CFS_PAGE_SIZE)            /* string must be "sensible" */
+       if (nob > 2 * PAGE_CACHE_SIZE)  /* string must be "sensible" */
                 return -EINVAL;
 
-        *str = cfs_alloc(nob, CFS_ALLOC_STD | CFS_ALLOC_ZERO);
+       *str = kmalloc(nob, GFP_IOFS | __GFP_ZERO);
         if (*str == NULL)
                 return -ENOMEM;
 
@@ -835,7 +827,7 @@ int cfs_trace_allocate_string_buffer(char **str, int nob)
 
 void cfs_trace_free_string_buffer(char *str, int nob)
 {
-        cfs_free(str);
+       kfree(str);
 }
 
 int cfs_trace_dump_debug_buffer_usrstr(void *usr_str, int usr_str_nob)
@@ -931,19 +923,21 @@ int cfs_trace_set_debug_mb(int mb)
         struct cfs_trace_cpu_data *tcd;
 
         if (mb < cfs_num_possible_cpus()) {
-                printk(KERN_ERR "Cannot set debug_mb to %d, the value should be >= %d\n",
-                       mb, cfs_num_possible_cpus());
-                return -EINVAL;
+                printk(CFS_KERN_WARNING
+                       "Lustre: %d MB is too small for debug buffer size, "
+                       "setting it to %d MB.\n", mb, cfs_num_possible_cpus());
+                mb = cfs_num_possible_cpus();
         }
 
         if (mb > limit) {
-                printk(CFS_KERN_ERR "Lustre: Refusing to set debug buffer size "
-                       "to %dMB - limit is %d\n", mb, limit);
-                return -EINVAL;
+                printk(CFS_KERN_WARNING
+                       "Lustre: %d MB is too large for debug buffer size, "
+                       "setting it to %d MB.\n", mb, limit);
+                mb = limit;
         }
 
         mb /= cfs_num_possible_cpus();
-        pages = mb << (20 - CFS_PAGE_SHIFT);
+       pages = mb << (20 - PAGE_CACHE_SHIFT);
 
         cfs_tracefile_write_lock();
 
@@ -981,27 +975,26 @@ int cfs_trace_get_debug_mb(void)
 
         cfs_tracefile_read_unlock();
 
-        return (total_pages >> (20 - CFS_PAGE_SHIFT)) + 1;
+       return (total_pages >> (20 - PAGE_CACHE_SHIFT)) + 1;
 }
 
 static int tracefiled(void *arg)
 {
-        struct page_collection pc;
-        struct tracefiled_ctl *tctl = arg;
-        struct cfs_trace_page *tage;
-        struct cfs_trace_page *tmp;
-        cfs_file_t *filp;
-        int last_loop = 0;
-        int rc;
+       struct page_collection pc;
+       struct tracefiled_ctl *tctl = arg;
+       struct cfs_trace_page *tage;
+       struct cfs_trace_page *tmp;
+       struct file *filp;
+       int last_loop = 0;
+       int rc;
 
-        CFS_DECL_MMSPACE;
+       DECL_MMSPACE;
 
-        /* we're started late enough that we pick up init's fs context */
-        /* this is so broken in uml?  what on earth is going on? */
-        cfs_daemonize("ktracefiled");
+       /* we're started late enough that we pick up init's fs context */
+       /* this is so broken in uml?  what on earth is going on? */
 
-        cfs_spin_lock_init(&pc.pc_lock);
-        cfs_complete(&tctl->tctl_start);
+       spin_lock_init(&pc.pc_lock);
+       complete(&tctl->tctl_start);
 
         while (1) {
                 cfs_waitlink_t __wait;
@@ -1014,13 +1007,16 @@ static int tracefiled(void *arg)
                 filp = NULL;
                 cfs_tracefile_read_lock();
                 if (cfs_tracefile[0] != 0) {
-                        filp = cfs_filp_open(cfs_tracefile,
-                                             O_CREAT | O_RDWR | O_LARGEFILE,
-                                             0600, &rc);
-                        if (!(filp))
-                                printk(CFS_KERN_WARNING "couldn't open %s: "
-                                       "%d\n", cfs_tracefile, rc);
-                }
+                       filp = filp_open(cfs_tracefile,
+                                        O_CREAT | O_RDWR | O_LARGEFILE,
+                                        0600);
+                       if (IS_ERR(filp)) {
+                               rc = PTR_ERR(filp);
+                               filp = NULL;
+                               printk(CFS_KERN_WARNING "couldn't open %s: "
+                                      "%d\n", cfs_tracefile, rc);
+                       }
+               }
                 cfs_tracefile_read_unlock();
                 if (filp == NULL) {
                         put_pages_on_daemon_list(&pc);
@@ -1028,7 +1024,7 @@ static int tracefiled(void *arg)
                         goto end_loop;
                 }
 
-                CFS_MMSPACE_OPEN;
+               MMSPACE_OPEN;
 
                 cfs_list_for_each_entry_safe_typed(tage, tmp, &pc.pc_pages,
                                                    struct cfs_trace_page,
@@ -1039,11 +1035,11 @@ static int tracefiled(void *arg)
 
                         if (f_pos >= (off_t)cfs_tracefile_size)
                                 f_pos = 0;
-                        else if (f_pos > (off_t)cfs_filp_size(filp))
-                                f_pos = cfs_filp_size(filp);
+                       else if (f_pos > (off_t)filp_size(filp))
+                               f_pos = filp_size(filp);
 
-                        rc = cfs_filp_write(filp, cfs_page_address(tage->page),
-                                            tage->used, &f_pos);
+                       rc = filp_write(filp, page_address(tage->page),
+                                       tage->used, &f_pos);
                         if (rc != (int)tage->used) {
                                 printk(CFS_KERN_WARNING "wanted to write %u "
                                        "but wrote %d\n", tage->used, rc);
@@ -1051,9 +1047,9 @@ static int tracefiled(void *arg)
                                 __LASSERT(cfs_list_empty(&pc.pc_pages));
                         }
                 }
-                CFS_MMSPACE_CLOSE;
+               MMSPACE_CLOSE;
 
-                cfs_filp_close(filp);
+               filp_close(filp, NULL);
                 put_pages_on_daemon_list(&pc);
                 if (!cfs_list_empty(&pc.pc_pages)) {
                         int i;
@@ -1094,7 +1090,7 @@ end_loop:
                                     cfs_time_seconds(1));
                 cfs_waitq_del(&tctl->tctl_waitq, &__wait);
         }
-        cfs_complete(&tctl->tctl_stop);
+       complete(&tctl->tctl_stop);
         return 0;
 }
 
@@ -1103,24 +1099,24 @@ int cfs_trace_start_thread(void)
         struct tracefiled_ctl *tctl = &trace_tctl;
         int rc = 0;
 
-        cfs_mutex_lock(&cfs_trace_thread_mutex);
+       mutex_lock(&cfs_trace_thread_mutex);
         if (thread_running)
                 goto out;
 
-        cfs_init_completion(&tctl->tctl_start);
-        cfs_init_completion(&tctl->tctl_stop);
-        cfs_waitq_init(&tctl->tctl_waitq);
-        cfs_atomic_set(&tctl->tctl_shutdown, 0);
+       init_completion(&tctl->tctl_start);
+       init_completion(&tctl->tctl_stop);
+       cfs_waitq_init(&tctl->tctl_waitq);
+       cfs_atomic_set(&tctl->tctl_shutdown, 0);
 
-        if (cfs_create_thread(tracefiled, tctl, 0) < 0) {
-                rc = -ECHILD;
-                goto out;
-        }
+       if (IS_ERR(kthread_run(tracefiled, tctl, "ktracefiled"))) {
+               rc = -ECHILD;
+               goto out;
+       }
 
-        cfs_wait_for_completion(&tctl->tctl_start);
-        thread_running = 1;
+       wait_for_completion(&tctl->tctl_start);
+       thread_running = 1;
 out:
-        cfs_mutex_unlock(&cfs_trace_thread_mutex);
+       mutex_unlock(&cfs_trace_thread_mutex);
         return rc;
 }
 
@@ -1128,15 +1124,15 @@ void cfs_trace_stop_thread(void)
 {
         struct tracefiled_ctl *tctl = &trace_tctl;
 
-        cfs_mutex_lock(&cfs_trace_thread_mutex);
+       mutex_lock(&cfs_trace_thread_mutex);
         if (thread_running) {
                 printk(CFS_KERN_INFO
                        "Lustre: shutting down debug daemon thread...\n");
                 cfs_atomic_set(&tctl->tctl_shutdown, 1);
-                cfs_wait_for_completion(&tctl->tctl_stop);
+               wait_for_completion(&tctl->tctl_stop);
                 thread_running = 0;
         }
-        cfs_mutex_unlock(&cfs_trace_thread_mutex);
+       mutex_unlock(&cfs_trace_thread_mutex);
 }
 
 int cfs_tracefile_init(int max_pages)
@@ -1196,14 +1192,14 @@ static void trace_cleanup_on_all_cpus(void)
 
 static void cfs_trace_cleanup(void)
 {
-        struct page_collection pc;
+       struct page_collection pc;
 
-        CFS_INIT_LIST_HEAD(&pc.pc_pages);
-        cfs_spin_lock_init(&pc.pc_lock);
+       CFS_INIT_LIST_HEAD(&pc.pc_pages);
+       spin_lock_init(&pc.pc_lock);
 
-        trace_cleanup_on_all_cpus();
+       trace_cleanup_on_all_cpus();
 
-        cfs_tracefile_fini_arch();
+       cfs_tracefile_fini_arch();
 }
 
 void cfs_tracefile_exit(void)