Revert "mm: zram: fix swapcached issue on Zram Writeback"

This reverts commit b44c3d3fd10f8832db8347f183d388a110575404.
This commit is contained in:
UtsavBalar1231 2022-04-26 21:19:21 +05:30 committed by spakkkk
parent b5bbbd64eb
commit b5cdf15959
4 changed files with 1 additions and 48 deletions

View File

@ -25,7 +25,6 @@
#include <linux/genhd.h>
#include <linux/highmem.h>
#include <linux/slab.h>
#include <linux/swap.h>
#include <linux/backing-dev.h>
#include <linux/string.h>
#include <linux/vmalloc.h>
@ -1674,28 +1673,6 @@ static void zram_slot_free_notify(struct block_device *bdev,
zram_slot_unlock(zram, index);
}
/* Moto huangzq2: check sync_io state on swap entry,
* return 0 on wb page, else return 1.
*/
static int zram_ioctl(struct block_device *bdev, fmode_t mode,
unsigned int cmd, unsigned long index)
{
struct zram *zram;
int has_sync_io = 1;
if (cmd != SWP_SYNCHRONOUS_IO) return -EINVAL;
#ifdef CONFIG_ZRAM_WRITEBACK
zram = bdev->bd_disk->private_data;
zram_slot_lock(zram, index);
has_sync_io = zram_test_flag(zram, index, ZRAM_WB) ? 0 : 1;
zram_slot_unlock(zram, index);
#endif
return has_sync_io;
}
static int zram_rw_page(struct block_device *bdev, sector_t sector,
struct page *page, unsigned int op)
{
@ -1889,7 +1866,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,
.ioctl = zram_ioctl,
.rw_page = zram_rw_page,
.owner = THIS_MODULE
};

View File

@ -403,7 +403,6 @@ extern void end_swap_bio_write(struct bio *bio);
extern int __swap_writepage(struct page *page, struct writeback_control *wbc,
bio_end_io_t end_write_func);
extern int swap_set_page_dirty(struct page *page);
extern bool swap_slot_has_sync_io(swp_entry_t entry);
int add_swap_extent(struct swap_info_struct *sis, unsigned long start_page,
unsigned long nr_pages, sector_t start_block);

View File

@ -3302,14 +3302,8 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
* and can then take the readahead path instead of SWP_SYNCHRONOUS_IO.
*/
si = swp_swap_info(entry);
/* Moto huangzq2: check sync_io on each page if we enabled Zram wb.
* Zram writeback will remove SWP_SYNCHRONOUS_IO flag as it has disk
* IO operation on writeback page during swap in.
*/
if (si->flags & SWP_SYNCHRONOUS_IO && __swap_count(si, entry) == 1)
skip_swapcache = true;
else if (__swap_count(si, entry) == 1 && swap_slot_has_sync_io(entry))
skip_swapcache = true;
page = lookup_swap_cache(entry, vma, vmf->address);
swapcache = page;
@ -3337,7 +3331,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
ret = VM_FAULT_RETRY;
goto out;
} else {
page = swapin_readahead(entry, GFP_HIGHUSER_MOVABLE | __GFP_CMA,
page = swapin_readahead(entry, GFP_HIGHUSER_MOVABLE,
vmf);
swapcache = page;
}

View File

@ -73,22 +73,6 @@ void end_swap_bio_write(struct bio *bio)
bio_put(bio);
}
/* Moto huangzq2: check sync_io state on swap entry */
bool swap_slot_has_sync_io(swp_entry_t entry)
{
struct swap_info_struct *sis;
struct gendisk *disk;
sis = swp_swap_info(entry);
disk = sis->bdev->bd_disk;
if (disk->fops->ioctl) {
return disk->fops->ioctl(sis->bdev, 0,
SWP_SYNCHRONOUS_IO, swp_offset(entry)) == 1;
}
return false;
}
static void swap_slot_free_notify(struct page *page)
{
struct swap_info_struct *sis;