Whamcloud - gitweb
LU-1365 tests: createmany outputs stat after 2 seconds
[fs/lustre-release.git] / libcfs / libcfs / libcfs_ptask.c
index 96d984d..648c0a3 100644 (file)
@@ -1,3 +1,33 @@
+/*
+ * GPL HEADER START
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 only,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License version 2 for more details (a copy is included
+ * in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License
+ * version 2 along with this program; If not, see
+ * http://www.gnu.org/licenses/gpl-2.0.html
+ *
+ * GPL HEADER END
+ */
+/*
+ * Copyright (c) 2017, Intel Corporation.
+ * Use is subject to license terms.
+ */
+/*
+ * This file is part of Lustre, http://www.lustre.org/
+ *
+ * parallel task interface
+ */
 #include <linux/errno.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
@@ -5,6 +35,10 @@
 #include <linux/cpu.h>
 #include <linux/slab.h>
 #include <linux/sched.h>
+#ifdef HAVE_SCHED_HEADERS
+#include <linux/sched/signal.h>
+#include <linux/sched/mm.h>
+#endif
 #include <linux/moduleparam.h>
 #include <linux/mmu_context.h>
 
@@ -360,11 +394,11 @@ static int cfs_ptengine_padata_init(struct cfs_ptask_engine *engine,
        {
                char *pa_mask_buff, *cb_mask_buff;
 
-               pa_mask_buff = (char *)__get_free_page(GFP_TEMPORARY);
+               pa_mask_buff = (char *)__get_free_page(GFP_KERNEL);
                if (pa_mask_buff == NULL)
                        GOTO(err_free_par_mask, rc = -ENOMEM);
 
-               cb_mask_buff = (char *)__get_free_page(GFP_TEMPORARY);
+               cb_mask_buff = (char *)__get_free_page(GFP_KERNEL);
                if (cb_mask_buff == NULL) {
                        free_page((unsigned long)pa_mask_buff);
                        GOTO(err_free_par_mask, rc = -ENOMEM);
@@ -384,7 +418,7 @@ static int cfs_ptengine_padata_init(struct cfs_ptask_engine *engine,
        }
 
        engine->pte_weight = cpumask_weight(par_mask);
-       engine->pte_pinst  = padata_alloc(engine->pte_wq, par_mask, all_mask);
+       engine->pte_pinst  = padata_alloc_possible(engine->pte_wq);
        if (engine->pte_pinst == NULL)
                GOTO(err_free_par_mask, rc = -ENOMEM);
 
@@ -394,6 +428,10 @@ static int cfs_ptengine_padata_init(struct cfs_ptask_engine *engine,
        if (rc)
                GOTO(err_free_padata, rc);
 
+       rc = cfs_ptengine_set_cpumask(engine, par_mask);
+       if (rc)
+               GOTO(err_unregister, rc);
+
        rc = padata_start(engine->pte_pinst);
        if (rc)
                GOTO(err_unregister, rc);