Whamcloud - gitweb
LU-8655 tests: customize run_mdtest()
[fs/lustre-release.git] / lustre / mgs / mgs_nids.c
index 54ce929..b4ce943 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -27,7 +23,7 @@
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2012, Intel Corporation.
+ * Copyright (c) 2011, 2015, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -43,6 +39,7 @@
 #define DEBUG_SUBSYSTEM S_MGS
 #define D_MGS D_CONFIG
 
+#include <linux/kthread.h>
 #include <linux/pagemap.h>
 
 #include <obd.h>
@@ -95,7 +92,7 @@ static int mgs_nidtbl_read(struct obd_export *exp, struct mgs_nidtbl *tbl,
 
         /* make sure unit_size is power 2 */
         LASSERT((unit_size & (unit_size - 1)) == 0);
-       LASSERT(nrpages << PAGE_CACHE_SHIFT >= units_total * unit_size);
+       LASSERT(nrpages << PAGE_SHIFT >= units_total * unit_size);
 
        mutex_lock(&tbl->mn_lock);
         LASSERT(nidtbl_is_sane(tbl));
@@ -134,27 +131,18 @@ static int mgs_nidtbl_read(struct obd_export *exp, struct mgs_nidtbl *tbl,
                                 break;
                         }
 
-                        /* check if we need to consume remaining bytes. */
-                        if (last_in_unit != NULL && bytes_in_unit) {
-#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 6, 50, 0)
-                               /* May need to swab back to update the length.*/
-                               if (exp->exp_need_mne_swab)
-                                       lustre_swab_mgs_nidtbl_entry(last_in_unit);
-#endif
+                       /* check if we need to consume remaining bytes. */
+                       if (last_in_unit != NULL && bytes_in_unit) {
                                last_in_unit->mne_length += bytes_in_unit;
-#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 6, 50, 0)
-                               if (exp->exp_need_mne_swab)
-                                       lustre_swab_mgs_nidtbl_entry(last_in_unit);
-#endif
-                                rc  += bytes_in_unit;
-                                buf += bytes_in_unit;
-                                last_in_unit = NULL;
-                        }
-                        LASSERT((rc & (unit_size - 1)) == 0);
+                               rc  += bytes_in_unit;
+                               buf += bytes_in_unit;
+                               last_in_unit = NULL;
+                       }
+                       LASSERT((rc & (unit_size - 1)) == 0);
 
                        if (units_in_page == 0) {
                                /* allocate a new page */
-                               pages[index] = alloc_page(GFP_IOFS);
+                               pages[index] = alloc_page(GFP_KERNEL);
                                if (pages[index] == NULL) {
                                        rc = -ENOMEM;
                                        break;
@@ -168,7 +156,7 @@ static int mgs_nidtbl_read(struct obd_export *exp, struct mgs_nidtbl *tbl,
                                buf = kmap(pages[index]);
                                ++index;
 
-                               units_in_page = PAGE_CACHE_SIZE / unit_size;
+                               units_in_page = PAGE_SIZE / unit_size;
                                LASSERT(units_in_page > 0);
                        }
 
@@ -188,19 +176,13 @@ static int mgs_nidtbl_read(struct obd_export *exp, struct mgs_nidtbl *tbl,
                 entry->mne_type      = tgt->mnt_type;
                 entry->mne_nid_type  = 0;
                 entry->mne_nid_size  = sizeof(lnet_nid_t);
-                entry->mne_nid_count = mti->mti_nid_count;
-                memcpy(entry->u.nids, mti->mti_nids,
-                       mti->mti_nid_count * sizeof(lnet_nid_t));
+               entry->mne_nid_count = mti->mti_nid_count;
+               memcpy(entry->u.nids, mti->mti_nids,
+                      mti->mti_nid_count * sizeof(lnet_nid_t));
 
-#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 6, 50, 0)
-               /* For LU-1644, swab entry for 2.2 clients. */
-               if (exp->exp_need_mne_swab)
-                       lustre_swab_mgs_nidtbl_entry(entry);
-#endif
-
-                version = tgt->mnt_version;
-                rc     += entry_len;
-                buf    += entry_len;
+               version = tgt->mnt_version;
+               rc     += entry_len;
+               buf    += entry_len;
 
                 bytes_in_unit -= entry_len;
                 last_in_unit   = entry;
@@ -646,7 +628,7 @@ int mgs_get_ir_logs(struct ptlrpc_request *req)
                RETURN(rc);
 
         bufsize = body->mcb_units << body->mcb_bits;
-       nrpages = (bufsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
+       nrpages = (bufsize + PAGE_SIZE - 1) >> PAGE_SHIFT;
         if (nrpages > PTLRPC_MAX_BRW_PAGES)
                 RETURN(-EINVAL);
 
@@ -662,28 +644,32 @@ int mgs_get_ir_logs(struct ptlrpc_request *req)
                 GOTO(out, rc = -EINVAL);
 
         res->mcr_offset = body->mcb_offset;
-       unit_size = min_t(int, 1 << body->mcb_bits, PAGE_CACHE_SIZE);
+       unit_size = min_t(int, 1 << body->mcb_bits, PAGE_SIZE);
        bytes = mgs_nidtbl_read(req->rq_export, &fsdb->fsdb_nidtbl, res,
                                pages, nrpages, bufsize / unit_size, unit_size);
        if (bytes < 0)
                GOTO(out, rc = bytes);
 
        /* start bulk transfer */
-       page_count = (bytes + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
+       page_count = (bytes + PAGE_SIZE - 1) >> PAGE_SHIFT;
        LASSERT(page_count <= nrpages);
        desc = ptlrpc_prep_bulk_exp(req, page_count, 1,
-                                   BULK_PUT_SOURCE, MGS_BULK_PORTAL);
+                                   PTLRPC_BULK_PUT_SOURCE |
+                                       PTLRPC_BULK_BUF_KIOV,
+                                   MGS_BULK_PORTAL,
+                                   &ptlrpc_bulk_kiov_pin_ops);
        if (desc == NULL)
                GOTO(out, rc = -ENOMEM);
 
        for (i = 0; i < page_count && bytes > 0; i++) {
-               ptlrpc_prep_bulk_page_pin(desc, pages[i], 0,
-                                         min_t(int, bytes, PAGE_CACHE_SIZE));
-               bytes -= PAGE_CACHE_SIZE;
+               desc->bd_frag_ops->add_kiov_frag(desc, pages[i], 0,
+                                                min_t(int, bytes,
+                                                     PAGE_SIZE));
+               bytes -= PAGE_SIZE;
         }
 
         rc = target_bulk_io(req->rq_export, desc, &lwi);
-       ptlrpc_free_bulk_pin(desc);
+       ptlrpc_free_bulk(desc);
 
 out:
        for (i = 0; i < nrpages; i++) {
@@ -755,7 +741,7 @@ int lprocfs_wr_ir_state(struct file *file, const char __user *buffer,
         char *ptr;
         int rc = 0;
 
-       if (count == 0 || count >= PAGE_CACHE_SIZE)
+       if (count == 0 || count >= PAGE_SIZE)
                return -EINVAL;
 
        OBD_ALLOC(kbuf, count + 1);