Unverified Commit be914f8f authored by Christian Brauner's avatar Christian Brauner
Browse files
parent 217759bb
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -426,11 +426,11 @@ static void reset_bdev(struct zram *zram)
	if (!zram->backing_dev)
		return;

	bdev_release(zram->bdev_handle);
	fput(zram->bdev_file);
	/* hope filp_close flush all of IO */
	filp_close(zram->backing_dev, NULL);
	zram->backing_dev = NULL;
	zram->bdev_handle = NULL;
	zram->bdev_file = NULL;
	zram->disk->fops = &zram_devops;
	kvfree(zram->bitmap);
	zram->bitmap = NULL;
@@ -476,7 +476,7 @@ static ssize_t backing_dev_store(struct device *dev,
	struct address_space *mapping;
	unsigned int bitmap_sz;
	unsigned long nr_pages, *bitmap = NULL;
	struct bdev_handle *bdev_handle = NULL;
	struct file *bdev_file = NULL;
	int err;
	struct zram *zram = dev_to_zram(dev);

@@ -513,11 +513,11 @@ static ssize_t backing_dev_store(struct device *dev,
		goto out;
	}

	bdev_handle = bdev_open_by_dev(inode->i_rdev,
	bdev_file = bdev_file_open_by_dev(inode->i_rdev,
				BLK_OPEN_READ | BLK_OPEN_WRITE, zram, NULL);
	if (IS_ERR(bdev_handle)) {
		err = PTR_ERR(bdev_handle);
		bdev_handle = NULL;
	if (IS_ERR(bdev_file)) {
		err = PTR_ERR(bdev_file);
		bdev_file = NULL;
		goto out;
	}

@@ -531,7 +531,7 @@ static ssize_t backing_dev_store(struct device *dev,

	reset_bdev(zram);

	zram->bdev_handle = bdev_handle;
	zram->bdev_file = bdev_file;
	zram->backing_dev = backing_dev;
	zram->bitmap = bitmap;
	zram->nr_pages = nr_pages;
@@ -544,8 +544,8 @@ static ssize_t backing_dev_store(struct device *dev,
out:
	kvfree(bitmap);

	if (bdev_handle)
		bdev_release(bdev_handle);
	if (bdev_file)
		fput(bdev_file);

	if (backing_dev)
		filp_close(backing_dev, NULL);
@@ -587,7 +587,7 @@ static void read_from_bdev_async(struct zram *zram, struct page *page,
{
	struct bio *bio;

	bio = bio_alloc(zram->bdev_handle->bdev, 1, parent->bi_opf, GFP_NOIO);
	bio = bio_alloc(file_bdev(zram->bdev_file), 1, parent->bi_opf, GFP_NOIO);
	bio->bi_iter.bi_sector = entry * (PAGE_SIZE >> 9);
	__bio_add_page(bio, page, PAGE_SIZE, 0);
	bio_chain(bio, parent);
@@ -703,7 +703,7 @@ static ssize_t writeback_store(struct device *dev,
			continue;
		}

		bio_init(&bio, zram->bdev_handle->bdev, &bio_vec, 1,
		bio_init(&bio, file_bdev(zram->bdev_file), &bio_vec, 1,
			 REQ_OP_WRITE | REQ_SYNC);
		bio.bi_iter.bi_sector = blk_idx * (PAGE_SIZE >> 9);
		__bio_add_page(&bio, page, PAGE_SIZE, 0);
@@ -785,7 +785,7 @@ static void zram_sync_read(struct work_struct *work)
	struct bio_vec bv;
	struct bio bio;

	bio_init(&bio, zw->zram->bdev_handle->bdev, &bv, 1, REQ_OP_READ);
	bio_init(&bio, file_bdev(zw->zram->bdev_file), &bv, 1, REQ_OP_READ);
	bio.bi_iter.bi_sector = zw->entry * (PAGE_SIZE >> 9);
	__bio_add_page(&bio, zw->page, PAGE_SIZE, 0);
	zw->error = submit_bio_wait(&bio);
+1 −1
Original line number Diff line number Diff line
@@ -132,7 +132,7 @@ struct zram {
	spinlock_t wb_limit_lock;
	bool wb_limit_enable;
	u64 bd_wb_limit;
	struct bdev_handle *bdev_handle;
	struct file *bdev_file;
	unsigned long *bitmap;
	unsigned long nr_pages;
#endif