Commit f059a1d2 authored by Xie Yongji's avatar Xie Yongji Committed by Jens Axboe

block: Add invalidate_disk() helper to invalidate the gendisk

To hide internal implementation and simplify some driver code,
this adds a helper to invalidate the gendisk. It will clean the
gendisk's associated buffer/page caches and reset its internal
states.
Signed-off-by: default avatarXie Yongji <xieyongji@bytedance.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210922123711.187-2-xieyongji@bytedance.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent e94f6852
...@@ -624,6 +624,26 @@ void del_gendisk(struct gendisk *disk) ...@@ -624,6 +624,26 @@ void del_gendisk(struct gendisk *disk)
} }
EXPORT_SYMBOL(del_gendisk); EXPORT_SYMBOL(del_gendisk);
/**
* invalidate_disk - invalidate the disk
* @disk: the struct gendisk to invalidate
*
* A helper to invalidates the disk. It will clean the disk's associated
* buffer/page caches and reset its internal states so that the disk
* can be reused by the drivers.
*
* Context: can sleep
*/
void invalidate_disk(struct gendisk *disk)
{
struct block_device *bdev = disk->part0;
invalidate_bdev(bdev);
bdev->bd_inode->i_mapping->wb_err = 0;
set_capacity(disk, 0);
}
EXPORT_SYMBOL(invalidate_disk);
/* sysfs access to bad-blocks list. */ /* sysfs access to bad-blocks list. */
static ssize_t disk_badblocks_show(struct device *dev, static ssize_t disk_badblocks_show(struct device *dev,
struct device_attribute *attr, struct device_attribute *attr,
......
...@@ -213,6 +213,8 @@ static inline int add_disk(struct gendisk *disk) ...@@ -213,6 +213,8 @@ static inline int add_disk(struct gendisk *disk)
} }
extern void del_gendisk(struct gendisk *gp); extern void del_gendisk(struct gendisk *gp);
void invalidate_disk(struct gendisk *disk);
void set_disk_ro(struct gendisk *disk, bool read_only); void set_disk_ro(struct gendisk *disk, bool read_only);
static inline int get_disk_ro(struct gendisk *disk) static inline int get_disk_ro(struct gendisk *disk)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment