*
* 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
*/
* 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/
#define DEBUG_SUBSYSTEM S_MGS
#define D_MGS D_CONFIG
-#ifdef __KERNEL__
+#include <linux/kthread.h>
#include <linux/pagemap.h>
-#endif
#include <obd.h>
#include <obd_class.h>
/* 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));
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;
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);
}
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;
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);
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++) {
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);