Whamcloud - gitweb
LU-8560 libcfs: handle PAGE_CACHE_* removal in newer kernels
[fs/lustre-release.git] / lnet / lnet / lib-md.c
index 255a22b..c78221c 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2012, Intel Corporation.
+ * Copyright (c) 2012, 2013, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -81,7 +81,7 @@ lnet_md_unlink(lnet_libmd_t *md)
 
        LASSERT(!list_empty(&md->md_list));
        list_del_init(&md->md_list);
-       lnet_md_free_locked(md);
+       lnet_md_free(md);
 }
 
 static int
@@ -127,9 +127,6 @@ lnet_md_build(lnet_libmd_t *lmd, lnet_md_t *umd, int unlink)
                         return -EINVAL;
 
         } else if ((umd->options & LNET_MD_KIOV) != 0) {
-#ifndef __KERNEL__
-                return -EINVAL;
-#else
                 lmd->md_niov = niov = umd->length;
                 memcpy(lmd->md_iov.kiov, umd->start,
                        niov * sizeof (lmd->md_iov.kiov[0]));
@@ -137,7 +134,7 @@ lnet_md_build(lnet_libmd_t *lmd, lnet_md_t *umd, int unlink)
                 for (i = 0; i < (int)niov; i++) {
                         /* We take the page pointer on trust */
                         if (lmd->md_iov.kiov[i].kiov_offset +
-                           lmd->md_iov.kiov[i].kiov_len > PAGE_CACHE_SIZE)
+                           lmd->md_iov.kiov[i].kiov_len > PAGE_SIZE)
                                 return -EINVAL; /* invalid length */
 
                         total_length += lmd->md_iov.kiov[i].kiov_len;
@@ -149,7 +146,6 @@ lnet_md_build(lnet_libmd_t *lmd, lnet_md_t *umd, int unlink)
                     (umd->max_size < 0 ||
                      umd->max_size > total_length)) // illegal max_size
                         return -EINVAL;
-#endif
         } else {   /* contiguous */
                 lmd->md_length = umd->length;
                 lmd->md_niov = niov = 1;
@@ -219,7 +215,7 @@ lnet_md_deconstruct(lnet_libmd_t *lmd, lnet_md_t *umd)
         lnet_eq2handle(&umd->eq_handle, lmd->md_eq);
 }
 
-int
+static int
 lnet_md_validate(lnet_md_t *umd)
 {
         if (umd->start == NULL && umd->length != 0) {
@@ -274,7 +270,6 @@ LNetMDAttach(lnet_handle_me_t meh, lnet_md_t umd,
        int                     cpt;
        int                     rc;
 
-        LASSERT (the_lnet.ln_init);
         LASSERT (the_lnet.ln_refcount > 0);
 
         if (lnet_md_validate(&umd) != 0)
@@ -290,11 +285,12 @@ LNetMDAttach(lnet_handle_me_t meh, lnet_md_t umd,
                 return -ENOMEM;
 
        rc = lnet_md_build(md, &umd, unlink);
+       if (rc != 0)
+               goto out_free;
+
        cpt = lnet_cpt_of_cookie(meh.cookie);
 
        lnet_res_lock(cpt);
-       if (rc != 0)
-               goto failed;
 
        me = lnet_handle2me(&meh);
        if (me == NULL)
@@ -305,7 +301,7 @@ LNetMDAttach(lnet_handle_me_t meh, lnet_md_t umd,
                rc = lnet_md_link(md, umd.eq_handle, cpt);
 
        if (rc != 0)
-               goto failed;
+               goto out_unlock;
 
        /* attach this MD to portal of ME and check if it matches any
         * blocked msgs on this portal */
@@ -320,10 +316,10 @@ LNetMDAttach(lnet_handle_me_t meh, lnet_md_t umd,
 
        return 0;
 
- failed:
-       lnet_md_free_locked(md);
-
+out_unlock:
        lnet_res_unlock(cpt);
+out_free:
+       lnet_md_free(md);
        return rc;
 }
 EXPORT_SYMBOL(LNetMDAttach);
@@ -351,7 +347,6 @@ LNetMDBind(lnet_md_t umd, lnet_unlink_t unlink, lnet_handle_md_t *handle)
        int             cpt;
        int             rc;
 
-        LASSERT (the_lnet.ln_init);
         LASSERT (the_lnet.ln_refcount > 0);
 
         if (lnet_md_validate(&umd) != 0)
@@ -367,24 +362,25 @@ LNetMDBind(lnet_md_t umd, lnet_unlink_t unlink, lnet_handle_md_t *handle)
                 return -ENOMEM;
 
        rc = lnet_md_build(md, &umd, unlink);
+       if (rc != 0)
+               goto out_free;
 
        cpt = lnet_res_lock_current();
-       if (rc != 0)
-               goto failed;
 
        rc = lnet_md_link(md, umd.eq_handle, cpt);
        if (rc != 0)
-               goto failed;
+               goto out_unlock;
 
        lnet_md2handle(handle, md);
 
        lnet_res_unlock(cpt);
        return 0;
 
- failed:
-       lnet_md_free_locked(md);
-
+ out_unlock:
        lnet_res_unlock(cpt);
+
+ out_free:
+       lnet_md_free(md);
        return rc;
 }
 EXPORT_SYMBOL(LNetMDBind);
@@ -426,7 +422,6 @@ LNetMDUnlink (lnet_handle_md_t mdh)
        lnet_libmd_t    *md;
        int             cpt;
 
-       LASSERT(the_lnet.ln_init);
        LASSERT(the_lnet.ln_refcount > 0);
 
        cpt = lnet_cpt_of_cookie(mdh.cookie);