Whamcloud - gitweb
cl_page_list_own(): if page was truncated concurrently, remove it from the queue...
authornikita <nikita>
Wed, 12 Nov 2008 20:58:06 +0000 (20:58 +0000)
committernikita <nikita>
Wed, 12 Nov 2008 20:58:06 +0000 (20:58 +0000)
lustre/obdclass/cl_io.c

index 1be2176..62357e7 100644 (file)
@@ -1126,16 +1126,18 @@ int cl_page_list_own(const struct lu_env *env,
                      struct cl_io *io, struct cl_page_list *plist)
 {
         struct cl_page *page;
+        struct cl_page *temp;
         int result;
-        int rc;
 
         LINVRNT(plist->pl_owner == cfs_current());
 
         ENTRY;
         result = 0;
-        cl_page_list_for_each(page, plist) {
-                rc = cl_page_own(env, io, page);
+        cl_page_list_for_each_safe(page, temp, plist) {
+                if (cl_page_own(env, io, page) == 0)
                 result = result ?: page->cp_error;
+                else
+                        cl_page_list_del(env, plist, page);
         }
         RETURN(result);
 }