aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHugh Dickins <hughd@google.com>2011-06-27 19:18:19 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-06-27 21:00:14 -0400
commite2377fe0b65e3c7577ff6df1701c56ef477d336f (patch)
treeba110d07556128a0eff42496294c7dd4880ecfd7
parent5949eac4d9b5bf936c12cb7ec3a09084c1326834 (diff)
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>
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index fa560ceba66..85f713746a1 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1696,13 +1696,10 @@ i915_gem_object_truncate(struct drm_i915_gem_object *obj)
1696 /* Our goal here is to return as much of the memory as 1696 /* Our goal here is to return as much of the memory as
1697 * is possible back to the system as we are called from OOM. 1697 * is possible back to the system as we are called from OOM.
1698 * To do this we must instruct the shmfs to drop all of its 1698 * To do this we must instruct the shmfs to drop all of its
1699 * backing pages, *now*. Here we mirror the actions taken 1699 * backing pages, *now*.
1700 * when by shmem_delete_inode() to release the backing store.
1701 */ 1700 */
1702 inode = obj->base.filp->f_path.dentry->d_inode; 1701 inode = obj->base.filp->f_path.dentry->d_inode;
1703 truncate_inode_pages(inode->i_mapping, 0); 1702 shmem_truncate_range(inode, 0, (loff_t)-1);
1704 if (inode->i_op->truncate_range)
1705 inode->i_op->truncate_range(inode, 0, (loff_t)-1);
1706 1703
1707 obj->madv = __I915_MADV_PURGED; 1704 obj->madv = __I915_MADV_PURGED;
1708} 1705}