diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/block/zram/zram_drv.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index 089e72cd37be..36e54be402df 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c | |||
| @@ -622,11 +622,18 @@ static void zram_reset_device(struct zram *zram, bool reset_capacity) | |||
| 622 | memset(&zram->stats, 0, sizeof(zram->stats)); | 622 | memset(&zram->stats, 0, sizeof(zram->stats)); |
| 623 | 623 | ||
| 624 | zram->disksize = 0; | 624 | zram->disksize = 0; |
| 625 | if (reset_capacity) { | 625 | if (reset_capacity) |
| 626 | set_capacity(zram->disk, 0); | 626 | set_capacity(zram->disk, 0); |
| 627 | revalidate_disk(zram->disk); | 627 | |
| 628 | } | ||
| 629 | up_write(&zram->init_lock); | 628 | up_write(&zram->init_lock); |
| 629 | |||
| 630 | /* | ||
| 631 | * Revalidate disk out of the init_lock to avoid lockdep splat. | ||
| 632 | * It's okay because disk's capacity is protected by init_lock | ||
| 633 | * so that revalidate_disk always sees up-to-date capacity. | ||
| 634 | */ | ||
| 635 | if (reset_capacity) | ||
| 636 | revalidate_disk(zram->disk); | ||
| 630 | } | 637 | } |
| 631 | 638 | ||
| 632 | static ssize_t disksize_store(struct device *dev, | 639 | static ssize_t disksize_store(struct device *dev, |
| @@ -666,8 +673,15 @@ static ssize_t disksize_store(struct device *dev, | |||
| 666 | zram->comp = comp; | 673 | zram->comp = comp; |
| 667 | zram->disksize = disksize; | 674 | zram->disksize = disksize; |
| 668 | set_capacity(zram->disk, zram->disksize >> SECTOR_SHIFT); | 675 | set_capacity(zram->disk, zram->disksize >> SECTOR_SHIFT); |
| 669 | revalidate_disk(zram->disk); | ||
| 670 | up_write(&zram->init_lock); | 676 | up_write(&zram->init_lock); |
| 677 | |||
| 678 | /* | ||
| 679 | * Revalidate disk out of the init_lock to avoid lockdep splat. | ||
| 680 | * It's okay because disk's capacity is protected by init_lock | ||
| 681 | * so that revalidate_disk always sees up-to-date capacity. | ||
| 682 | */ | ||
| 683 | revalidate_disk(zram->disk); | ||
| 684 | |||
| 671 | return len; | 685 | return len; |
| 672 | 686 | ||
| 673 | out_destroy_comp: | 687 | out_destroy_comp: |
