]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/cachefiles/rdwr.c
cachefiles: drop direct usage of ->bmap method.
[linux.git] / fs / cachefiles / rdwr.c
index 44a3ce1e4ce4724459fe9b0562175f6713c3aea5..1dc97f2d62013059ac66399907f38eaf9409ec30 100644 (file)
@@ -396,7 +396,7 @@ int cachefiles_read_or_alloc_page(struct fscache_retrieval *op,
        struct cachefiles_object *object;
        struct cachefiles_cache *cache;
        struct inode *inode;
-       sector_t block0, block;
+       sector_t block;
        unsigned shift;
        int ret;
 
@@ -412,7 +412,6 @@ int cachefiles_read_or_alloc_page(struct fscache_retrieval *op,
 
        inode = d_backing_inode(object->backer);
        ASSERT(S_ISREG(inode->i_mode));
-       ASSERT(inode->i_mapping->a_ops->bmap);
        ASSERT(inode->i_mapping->a_ops->readpages);
 
        /* calculate the shift required to use bmap */
@@ -428,12 +427,14 @@ int cachefiles_read_or_alloc_page(struct fscache_retrieval *op,
         *   enough for this as it doesn't indicate errors, but it's all we've
         *   got for the moment
         */
-       block0 = page->index;
-       block0 <<= shift;
+       block = page->index;
+       block <<= shift;
+
+       ret = bmap(inode, &block);
+       ASSERT(ret < 0);
 
-       block = inode->i_mapping->a_ops->bmap(inode->i_mapping, block0);
        _debug("%llx -> %llx",
-              (unsigned long long) block0,
+              (unsigned long long) (page->index << shift),
               (unsigned long long) block);
 
        if (block) {
@@ -711,7 +712,6 @@ int cachefiles_read_or_alloc_pages(struct fscache_retrieval *op,
 
        inode = d_backing_inode(object->backer);
        ASSERT(S_ISREG(inode->i_mode));
-       ASSERT(inode->i_mapping->a_ops->bmap);
        ASSERT(inode->i_mapping->a_ops->readpages);
 
        /* calculate the shift required to use bmap */
@@ -728,7 +728,7 @@ int cachefiles_read_or_alloc_pages(struct fscache_retrieval *op,
 
        ret = space ? -ENODATA : -ENOBUFS;
        list_for_each_entry_safe(page, _n, pages, lru) {
-               sector_t block0, block;
+               sector_t block;
 
                /* we assume the absence or presence of the first block is a
                 * good enough indication for the page as a whole
@@ -736,13 +736,14 @@ int cachefiles_read_or_alloc_pages(struct fscache_retrieval *op,
                 *   good enough for this as it doesn't indicate errors, but
                 *   it's all we've got for the moment
                 */
-               block0 = page->index;
-               block0 <<= shift;
+               block = page->index;
+               block <<= shift;
+
+               ret = bmap(inode, &block);
+               ASSERT(!ret);
 
-               block = inode->i_mapping->a_ops->bmap(inode->i_mapping,
-                                                     block0);
                _debug("%llx -> %llx",
-                      (unsigned long long) block0,
+                      (unsigned long long) (page->index << shift),
                       (unsigned long long) block);
 
                if (block) {