Whamcloud - gitweb
LU-1346 libcfs: tcpip/time/type related cleanup
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_io.c
index 529c8f9..eb6b2a0 100644 (file)
 #define ClearPageConstant(page) do {} while (0)
 #endif
 
-#ifndef HAS_GENERIC_ERROR_REMOVE_PAGE
-int generic_error_remove_page(struct address_space *mapping, struct page *page)
-{
-        if (mapping == NULL)
-                return -EINVAL;
-
-        if (mapping != page->mapping)
-                return -EIO;
-        /*
-         * Only punch for normal data pages for now.
-         * Handling other types like directories would need more auditing.
-         */
-        if (!S_ISREG(mapping->host->i_mode))
-                return -EIO;
-
-        if (page_mapped(page)) {
-                unmap_mapping_range(mapping,
-                                    (loff_t)page->index << PAGE_CACHE_SHIFT,
-                                    PAGE_CACHE_SIZE, 0);
-        }
-        truncate_complete_page(mapping, page);
-        return 0;
-}
-#endif
-
 static int __osd_init_iobuf(struct osd_device *d, struct osd_iobuf *iobuf,
                            int rw, int line, int pages)
 {
@@ -597,8 +572,8 @@ static int osd_write_prep(const struct lu_env *env, struct dt_object *dt,
         if (isize > osd->od_readcache_max_filesize)
                 cache = 0;
 
-        cfs_gettimeofday(&start);
-        for (i = 0; i < npages; i++) {
+       do_gettimeofday(&start);
+       for (i = 0; i < npages; i++) {
 
                 if (cache == 0)
                         generic_error_remove_page(inode->i_mapping,
@@ -628,11 +603,11 @@ static int osd_write_prep(const struct lu_env *env, struct dt_object *dt,
                         if (off)
                                memset(p + off, 0, PAGE_CACHE_SIZE - off);
                         kunmap(lnb[i].page);
-                }
-        }
-        cfs_gettimeofday(&end);
-        timediff = cfs_timeval_sub(&end, &start, NULL);
-        lprocfs_counter_add(osd->od_stats, LPROC_OSD_GET_PAGE, timediff);
+               }
+       }
+       do_gettimeofday(&end);
+       timediff = cfs_timeval_sub(&end, &start, NULL);
+       lprocfs_counter_add(osd->od_stats, LPROC_OSD_GET_PAGE, timediff);
 
         if (iobuf->dr_npages) {
                rc = osd->od_fsops->fs_map_inode_pages(inode, iobuf->dr_pages,
@@ -895,8 +870,8 @@ static int osd_read_prep(const struct lu_env *env, struct dt_object *dt,
        if (i_size_read(inode) > osd->od_readcache_max_filesize)
                cache = 0;
 
-        cfs_gettimeofday(&start);
-        for (i = 0; i < npages; i++) {
+       do_gettimeofday(&start);
+       for (i = 0; i < npages; i++) {
 
                if (i_size_read(inode) <= lnb[i].lnb_file_offset)
                         /* If there's no more data, abort early.
@@ -919,12 +894,12 @@ static int osd_read_prep(const struct lu_env *env, struct dt_object *dt,
                                             LPROC_OSD_CACHE_MISS, 1);
                         osd_iobuf_add_page(iobuf, lnb[i].page);
                 }
-                if (cache == 0)
-                        generic_error_remove_page(inode->i_mapping,lnb[i].page);
-        }
-        cfs_gettimeofday(&end);
-        timediff = cfs_timeval_sub(&end, &start, NULL);
-        lprocfs_counter_add(osd->od_stats, LPROC_OSD_GET_PAGE, timediff);
+               if (cache == 0)
+                       generic_error_remove_page(inode->i_mapping,lnb[i].page);
+       }
+       do_gettimeofday(&end);
+       timediff = cfs_timeval_sub(&end, &start, NULL);
+       lprocfs_counter_add(osd->od_stats, LPROC_OSD_GET_PAGE, timediff);
 
         if (iobuf->dr_npages) {
                rc = osd->od_fsops->fs_map_inode_pages(inode, iobuf->dr_pages,