i915: Call aops write_begin() and write_end() directly
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 3 Mar 2022 18:43:29 +0000 (13:43 -0500)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Sun, 8 May 2022 18:45:56 +0000 (14:45 -0400)
pagecache_write_begin() and pagecache_write_end() are now trivial
wrappers, so call the aops directly.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
drivers/gpu/drm/i915/gem/i915_gem_shmem.c

index 3a1c782..e92cc9d 100644 (file)
@@ -408,6 +408,7 @@ shmem_pwrite(struct drm_i915_gem_object *obj,
             const struct drm_i915_gem_pwrite *arg)
 {
        struct address_space *mapping = obj->base.filp->f_mapping;
+       const struct address_space_operations *aops = mapping->a_ops;
        char __user *user_data = u64_to_user_ptr(arg->data_ptr);
        u64 remain, offset;
        unsigned int pg;
@@ -465,9 +466,8 @@ shmem_pwrite(struct drm_i915_gem_object *obj,
                if (err)
                        return err;
 
-               err = pagecache_write_begin(obj->base.filp, mapping,
-                                           offset, len, 0,
-                                           &page, &data);
+               err = aops->write_begin(obj->base.filp, mapping, offset, len,
+                                       &page, &data);
                if (err < 0)
                        return err;
 
@@ -477,9 +477,8 @@ shmem_pwrite(struct drm_i915_gem_object *obj,
                                                      len);
                kunmap_atomic(vaddr);
 
-               err = pagecache_write_end(obj->base.filp, mapping,
-                                         offset, len, len - unwritten,
-                                         page, data);
+               err = aops->write_end(obj->base.filp, mapping, offset, len,
+                                     len - unwritten, page, data);
                if (err < 0)
                        return err;
 
@@ -622,6 +621,7 @@ i915_gem_object_create_shmem_from_data(struct drm_i915_private *dev_priv,
 {
        struct drm_i915_gem_object *obj;
        struct file *file;
+       const struct address_space_operations *aops;
        resource_size_t offset;
        int err;
 
@@ -633,15 +633,15 @@ i915_gem_object_create_shmem_from_data(struct drm_i915_private *dev_priv,
        GEM_BUG_ON(obj->write_domain != I915_GEM_DOMAIN_CPU);
 
        file = obj->base.filp;
+       aops = file->f_mapping->a_ops;
        offset = 0;
        do {
                unsigned int len = min_t(typeof(size), size, PAGE_SIZE);
                struct page *page;
                void *pgdata, *vaddr;
 
-               err = pagecache_write_begin(file, file->f_mapping,
-                                           offset, len, 0,
-                                           &page, &pgdata);
+               err = aops->write_begin(file, file->f_mapping, offset, len,
+                                       &page, &pgdata);
                if (err < 0)
                        goto fail;
 
@@ -649,9 +649,8 @@ i915_gem_object_create_shmem_from_data(struct drm_i915_private *dev_priv,
                memcpy(vaddr, data, len);
                kunmap(page);
 
-               err = pagecache_write_end(file, file->f_mapping,
-                                         offset, len, len,
-                                         page, pgdata);
+               err = aops->write_end(file, file->f_mapping, offset, len, len,
+                                     page, pgdata);
                if (err < 0)
                        goto fail;