| 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; |
| } |