blob: 5112bf6396b1e033304b6459e08a870212e251a4 [file] [log] [blame]
Backport e2377fe0b -- this could likely be implemented
on compat.git but I'd much prefer a better review of that.
For now this stays as a patch.
commit e2377fe0b65e3c7577ff6df1701c56ef477d336f
Author: Hugh Dickins <hughd@google.com>
Date: Mon Jun 27 16:18:19 2011 -0700
drm/i915: use shmem_truncate_range
The interface to ->truncate_range is changing very slightly: once "tmpfs:
take control of its truncate_range" has been applied, this can be applied.
For now there is only a slight inefficiency while this remains unapplied,
but it will soon become essential for managing shmem's use of swap.
Change i915_gem_object_truncate() to use shmem_truncate_range() directly:
which should also spare i915 later change if we switch from
inode_operations->truncate_range to file_operations->fallocate.
Signed-off-by: Hugh Dickins <hughd@google.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Keith Packard <keithp@keithp.com>
Cc: Dave Airlie <airlied@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1620,7 +1620,13 @@ i915_gem_object_truncate(struct drm_i915
* backing pages, *now*.
*/
inode = file_inode(obj->base.filp);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0))
shmem_truncate_range(inode, 0, (loff_t)-1);
+#else
+ truncate_inode_pages(inode->i_mapping, 0);
+ if (inode->i_op->truncate_range)
+ inode->i_op->truncate_range(inode, 0, (loff_t)-1);
+#endif
obj->madv = __I915_MADV_PURGED;
}