Re: [PATCHv3 2/2] staging: ion: debugfs to shrink pool

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/01/2015 04:02 AM, Gioh Kim wrote:
This patch enables debugfs file /sys/kernel/debug/ion/heaps/system_shrink

Nit: This technically enables debugfs shrinking for all heaps, not just
the system heap although the system heap is the only one with a shrinker
right now.

to shrink pool and get pool size. It is already implemented
but not complete. This patch completes and enables it.

Reading the file returns pool size
in page unit and writing the number of pages shrinks pool.
It flushes all pages to write zero at the file.

Signed-off-by: Gioh Kim <gioh.kim@xxxxxxx>

Reviewed-by: Laura Abbott <labbott@xxxxxxxxxx>

---
  drivers/staging/android/ion/ion.c |   22 +++++++++-------------
  1 file changed, 9 insertions(+), 13 deletions(-)

diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
index 6f48112..9327e8a 100644
--- a/drivers/staging/android/ion/ion.c
+++ b/drivers/staging/android/ion/ion.c
@@ -1466,7 +1466,6 @@ static const struct file_operations debug_heap_fops = {
  	.release = single_release,
  };

-#ifdef DEBUG_HEAP_SHRINKER
  static int debug_shrink_set(void *data, u64 val)
  {
  	struct ion_heap *heap = data;
@@ -1474,15 +1473,14 @@ static int debug_shrink_set(void *data, u64 val)
  	int objs;

  	sc.gfp_mask = -1;
-	sc.nr_to_scan = 0;
-
-	if (!val)
-		return 0;
+	sc.nr_to_scan = val;

-	objs = heap->shrinker.shrink(&heap->shrinker, &sc);
-	sc.nr_to_scan = objs;
+	if (!val) {
+		objs = heap->shrinker.count_objects(&heap->shrinker, &sc);
+		sc.nr_to_scan = objs;
+	}

-	heap->shrinker.shrink(&heap->shrinker, &sc);
+	heap->shrinker.scan_objects(&heap->shrinker, &sc);
  	return 0;
  }

@@ -1495,14 +1493,13 @@ static int debug_shrink_get(void *data, u64 *val)
  	sc.gfp_mask = -1;
  	sc.nr_to_scan = 0;

-	objs = heap->shrinker.shrink(&heap->shrinker, &sc);
+	objs = heap->shrinker.count_objects(&heap->shrinker, &sc);
  	*val = objs;
  	return 0;
  }

  DEFINE_SIMPLE_ATTRIBUTE(debug_shrink_fops, debug_shrink_get,
  			debug_shrink_set, "%llu\n");
-#endif

  void ion_device_add_heap(struct ion_device *dev, struct ion_heap *heap)
  {
@@ -1540,8 +1537,7 @@ void ion_device_add_heap(struct ion_device *dev, struct ion_heap *heap)
  			path, heap->name);
  	}

-#ifdef DEBUG_HEAP_SHRINKER
-	if (heap->shrinker.shrink) {
+	if (heap->shrinker.count_objects && heap->shrinker.scan_objects) {
  		char debug_name[64];

  		snprintf(debug_name, 64, "%s_shrink", heap->name);
@@ -1556,7 +1552,7 @@ void ion_device_add_heap(struct ion_device *dev, struct ion_heap *heap)
  				path, debug_name);
  		}
  	}
-#endif
+
  	up_write(&dev->lock);
  }



_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel



[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux