[PATCH v2 6/7] zram: remove zram_rw_page

2017-08-10 Thread Minchan Kim
With on-stack-bio, rw_page interface doesn't provide a clear performance
benefit for zram and surely has a maintenance burden, so remove the
last user to remove rw_page completely.

Reviewed-by: Sergey Senozhatsky 
Signed-off-by: Minchan Kim 
---
 drivers/block/zram/zram_drv.c | 52 ---
 1 file changed, 52 deletions(-)

diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index a60441bd6f0c..b30f70d593d0 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -1268,57 +1268,6 @@ static void zram_slot_free_notify(struct block_device 
*bdev,
atomic64_inc(>stats.notify_free);
 }
 
-static int zram_rw_page(struct block_device *bdev, sector_t sector,
-  struct page *page, bool is_write)
-{
-   int offset, ret;
-   u32 index;
-   struct zram *zram;
-   struct bio_vec bv;
-
-   if (PageTransHuge(page))
-   return -ENOTSUPP;
-   zram = bdev->bd_disk->private_data;
-
-   if (!valid_io_request(zram, sector, PAGE_SIZE)) {
-   atomic64_inc(>stats.invalid_io);
-   ret = -EINVAL;
-   goto out;
-   }
-
-   index = sector >> SECTORS_PER_PAGE_SHIFT;
-   offset = (sector & (SECTORS_PER_PAGE - 1)) << SECTOR_SHIFT;
-
-   bv.bv_page = page;
-   bv.bv_len = PAGE_SIZE;
-   bv.bv_offset = 0;
-
-   ret = zram_bvec_rw(zram, , index, offset, is_write, NULL);
-out:
-   /*
-* If I/O fails, just return error(ie, non-zero) without
-* calling page_endio.
-* It causes resubmit the I/O with bio request by upper functions
-* of rw_page(e.g., swap_readpage, __swap_writepage) and
-* bio->bi_end_io does things to handle the error
-* (e.g., SetPageError, set_page_dirty and extra works).
-*/
-   if (unlikely(ret < 0))
-   return ret;
-
-   switch (ret) {
-   case 0:
-   page_endio(page, is_write, 0);
-   break;
-   case 1:
-   ret = 0;
-   break;
-   default:
-   WARN_ON(1);
-   }
-   return ret;
-}
-
 static void zram_reset_device(struct zram *zram)
 {
struct zcomp *comp;
@@ -1460,7 +1409,6 @@ static int zram_open(struct block_device *bdev, fmode_t 
mode)
 static const struct block_device_operations zram_devops = {
.open = zram_open,
.swap_slot_free_notify = zram_slot_free_notify,
-   .rw_page = zram_rw_page,
.owner = THIS_MODULE
 };
 
-- 
2.7.4



[PATCH v2 6/7] zram: remove zram_rw_page

2017-08-10 Thread Minchan Kim
With on-stack-bio, rw_page interface doesn't provide a clear performance
benefit for zram and surely has a maintenance burden, so remove the
last user to remove rw_page completely.

Reviewed-by: Sergey Senozhatsky 
Signed-off-by: Minchan Kim 
---
 drivers/block/zram/zram_drv.c | 52 ---
 1 file changed, 52 deletions(-)

diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index a60441bd6f0c..b30f70d593d0 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -1268,57 +1268,6 @@ static void zram_slot_free_notify(struct block_device 
*bdev,
atomic64_inc(>stats.notify_free);
 }
 
-static int zram_rw_page(struct block_device *bdev, sector_t sector,
-  struct page *page, bool is_write)
-{
-   int offset, ret;
-   u32 index;
-   struct zram *zram;
-   struct bio_vec bv;
-
-   if (PageTransHuge(page))
-   return -ENOTSUPP;
-   zram = bdev->bd_disk->private_data;
-
-   if (!valid_io_request(zram, sector, PAGE_SIZE)) {
-   atomic64_inc(>stats.invalid_io);
-   ret = -EINVAL;
-   goto out;
-   }
-
-   index = sector >> SECTORS_PER_PAGE_SHIFT;
-   offset = (sector & (SECTORS_PER_PAGE - 1)) << SECTOR_SHIFT;
-
-   bv.bv_page = page;
-   bv.bv_len = PAGE_SIZE;
-   bv.bv_offset = 0;
-
-   ret = zram_bvec_rw(zram, , index, offset, is_write, NULL);
-out:
-   /*
-* If I/O fails, just return error(ie, non-zero) without
-* calling page_endio.
-* It causes resubmit the I/O with bio request by upper functions
-* of rw_page(e.g., swap_readpage, __swap_writepage) and
-* bio->bi_end_io does things to handle the error
-* (e.g., SetPageError, set_page_dirty and extra works).
-*/
-   if (unlikely(ret < 0))
-   return ret;
-
-   switch (ret) {
-   case 0:
-   page_endio(page, is_write, 0);
-   break;
-   case 1:
-   ret = 0;
-   break;
-   default:
-   WARN_ON(1);
-   }
-   return ret;
-}
-
 static void zram_reset_device(struct zram *zram)
 {
struct zcomp *comp;
@@ -1460,7 +1409,6 @@ static int zram_open(struct block_device *bdev, fmode_t 
mode)
 static const struct block_device_operations zram_devops = {
.open = zram_open,
.swap_slot_free_notify = zram_slot_free_notify,
-   .rw_page = zram_rw_page,
.owner = THIS_MODULE
 };
 
-- 
2.7.4