Merge branch 'akpm' (patches from Andrew)
[cascardo/linux.git] / drivers / staging / lustre / lustre / llite / vvp_page.c
index 2e566d9..046e84d 100644 (file)
@@ -44,8 +44,6 @@
 #include <linux/page-flags.h>
 #include <linux/pagemap.h>
 
-#include "../include/lustre_lite.h"
-
 #include "llite_internal.h"
 #include "vvp_internal.h"
 
@@ -243,13 +241,10 @@ static void vvp_vmpage_error(struct inode *inode, struct page *vmpage, int ioret
                obj->vob_discard_page_warned = 0;
        } else {
                SetPageError(vmpage);
-               if (ioret == -ENOSPC)
-                       set_bit(AS_ENOSPC, &inode->i_mapping->flags);
-               else
-                       set_bit(AS_EIO, &inode->i_mapping->flags);
+               mapping_set_error(inode->i_mapping, ioret);
 
                if ((ioret == -ESHUTDOWN || ioret == -EINTR) &&
-                    obj->vob_discard_page_warned == 0) {
+                   obj->vob_discard_page_warned == 0) {
                        obj->vob_discard_page_warned = 1;
                        ll_dirty_page_discard_warn(vmpage, ioret);
                }
@@ -444,18 +439,10 @@ static int vvp_transient_page_prep(const struct lu_env *env,
        return 0;
 }
 
-static void vvp_transient_page_verify(const struct cl_page *page)
-{
-       struct inode *inode = vvp_object_inode(page->cp_obj);
-
-       LASSERT(!inode_trylock(inode));
-}
-
 static int vvp_transient_page_own(const struct lu_env *env,
                                  const struct cl_page_slice *slice,
                                  struct cl_io *unused, int nonblock)
 {
-       vvp_transient_page_verify(slice->cpl_page);
        return 0;
 }
 
@@ -463,21 +450,18 @@ static void vvp_transient_page_assume(const struct lu_env *env,
                                      const struct cl_page_slice *slice,
                                      struct cl_io *unused)
 {
-       vvp_transient_page_verify(slice->cpl_page);
 }
 
 static void vvp_transient_page_unassume(const struct lu_env *env,
                                        const struct cl_page_slice *slice,
                                        struct cl_io *unused)
 {
-       vvp_transient_page_verify(slice->cpl_page);
 }
 
 static void vvp_transient_page_disown(const struct lu_env *env,
                                      const struct cl_page_slice *slice,
                                      struct cl_io *unused)
 {
-       vvp_transient_page_verify(slice->cpl_page);
 }
 
 static void vvp_transient_page_discard(const struct lu_env *env,
@@ -486,8 +470,6 @@ static void vvp_transient_page_discard(const struct lu_env *env,
 {
        struct cl_page *page = slice->cpl_page;
 
-       vvp_transient_page_verify(slice->cpl_page);
-
        /*
         * For transient pages, remove it from the radix tree.
         */
@@ -511,7 +493,6 @@ vvp_transient_page_completion(const struct lu_env *env,
                              const struct cl_page_slice *slice,
                              int ioret)
 {
-       vvp_transient_page_verify(slice->cpl_page);
 }
 
 static void vvp_transient_page_fini(const struct lu_env *env,
@@ -522,8 +503,7 @@ static void vvp_transient_page_fini(const struct lu_env *env,
        struct vvp_object *clobj = cl2vvp(clp->cp_obj);
 
        vvp_page_fini_common(vpg);
-       LASSERT(!inode_trylock(clobj->vob_inode));
-       clobj->vob_transient_pages--;
+       atomic_dec(&clobj->vob_transient_pages);
 }
 
 static const struct cl_page_operations vvp_transient_page_ops = {
@@ -549,7 +529,7 @@ static const struct cl_page_operations vvp_transient_page_ops = {
 };
 
 int vvp_page_init(const struct lu_env *env, struct cl_object *obj,
-               struct cl_page *page, pgoff_t index)
+                 struct cl_page *page, pgoff_t index)
 {
        struct vvp_page *vpg = cl_object_page_slice(obj, page);
        struct page     *vmpage = page->cp_vmpage;
@@ -570,10 +550,9 @@ int vvp_page_init(const struct lu_env *env, struct cl_object *obj,
        } else {
                struct vvp_object *clobj = cl2vvp(obj);
 
-               LASSERT(!inode_trylock(clobj->vob_inode));
                cl_page_slice_add(page, &vpg->vpg_cl, obj, index,
                                  &vvp_transient_page_ops);
-               clobj->vob_transient_pages++;
+               atomic_inc(&clobj->vob_transient_pages);
        }
        return 0;
 }