moto_swap: Add reset_bdev to close backing dev for ramboost2.0

reboot process will write 1 to /sys/block/zram0/reset to close backing 
device fd

Change-Id: Id11caf26c3edff89a0bf64fc706799c1d54901ee
Reviewed-on: https://gerrit.mot.com/2816017
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Wang Wang <wangwang1@lenovo.com>
Submit-Approved: Jira Key
This commit is contained in:
Xiaojun Ji 2023-12-06 13:50:52 +08:00 • committed by liyun zhang
commit c61cab09a2
4 changed files with 66 additions and 0 deletions

View file

@ -4400,6 +4400,15 @@ ssize_t hybridswap_loop_device_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
int len = 0;
struct zram *zram = dev_to_zram(dev);
down_read(&zram->init_lock);
if (!zram->backing_dev) {
memcpy(buf, "none\n", 5);
up_read(&zram->init_lock);
return 5;
}
up_read(&zram->init_lock);
len = sprintf(buf, "%s\n", loop_device);

View file

@ -791,7 +791,27 @@ static int read_from_bdev(struct zram *zram, struct bio_vec *bvec,
return read_from_bdev_async(zram, bvec, entry, parent);
}
#else
#ifdef CONFIG_HYBRIDSWAP_CORE
static void reset_bdev(struct zram *zram)
{
struct block_device *bdev;
if (!zram->backing_dev)
return;
bdev = zram->bdev;
if (zram->old_block_size)
set_blocksize(bdev, zram->old_block_size);
blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL);
/* hope filp_close flush all of IO */
filp_close(zram->backing_dev, NULL);
zram->backing_dev = NULL;
zram->old_block_size = 0;
zram->bdev = NULL;
}
#else
static inline void reset_bdev(struct zram *zram) {};
#endif
static int read_from_bdev(struct zram *zram, struct bio_vec *bvec,
unsigned long entry, struct bio *parent, bool sync)
{

View file

@ -782,7 +782,24 @@ static int read_from_bdev(struct zram *zram, struct bio_vec *bvec,
return read_from_bdev_async(zram, bvec, entry, parent);
}
#else
#ifdef CONFIG_HYBRIDSWAP_CORE
static void reset_bdev(struct zram *zram)
{
struct block_device *bdev;
if (!zram->backing_dev)
return;
bdev = zram->bdev;
blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL);
/* hope filp_close flush all of IO */
filp_close(zram->backing_dev, NULL);
zram->backing_dev = NULL;
zram->bdev = NULL;
}
#else
static inline void reset_bdev(struct zram *zram) {};
#endif
static int read_from_bdev(struct zram *zram, struct bio_vec *bvec,
unsigned long entry, struct bio *parent, bool sync)
{

View file

@ -776,7 +776,27 @@ static int read_from_bdev(struct zram *zram, struct bio_vec *bvec,
return read_from_bdev_async(zram, bvec, entry, parent);
}
#else
#ifdef CONFIG_HYBRIDSWAP_CORE
static void reset_bdev(struct zram *zram)
{
struct block_device *bdev;
if (!zram->backing_dev)
return;
bdev = zram->bdev;
if (zram->old_block_size)
set_blocksize(bdev, zram->old_block_size);
blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL);
/* hope filp_close flush all of IO */
filp_close(zram->backing_dev, NULL);
zram->backing_dev = NULL;
zram->old_block_size = 0;
zram->bdev = NULL;
}
#else
static inline void reset_bdev(struct zram *zram) {};
#endif
static int read_from_bdev(struct zram *zram, struct bio_vec *bvec,
unsigned long entry, struct bio *parent, bool sync)
{