mm: split swap_type_of
swap_type_of is used for two entirely different purposes: (1) check what swap type a given device/offset corresponds to (2) find the first available swap device that can be written to Mixing both in a single function creates an unreadable mess. Create two separate functions instead, and switch both to pass a dev_t instead of a struct block_device to further simplify the code. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:

committed by
Jens Axboe

parent
bb3247a399
commit
21bd900572
@@ -69,8 +69,7 @@ static int snapshot_open(struct inode *inode, struct file *filp)
|
||||
memset(&data->handle, 0, sizeof(struct snapshot_handle));
|
||||
if ((filp->f_flags & O_ACCMODE) == O_RDONLY) {
|
||||
/* Hibernating. The image device should be accessible. */
|
||||
data->swap = swsusp_resume_device ?
|
||||
swap_type_of(swsusp_resume_device, 0, NULL) : -1;
|
||||
data->swap = swap_type_of(swsusp_resume_device, 0);
|
||||
data->mode = O_RDONLY;
|
||||
data->free_bitmaps = false;
|
||||
error = __pm_notifier_call_chain(PM_HIBERNATION_PREPARE, -1, &nr_calls);
|
||||
@@ -210,7 +209,6 @@ struct compat_resume_swap_area {
|
||||
static int snapshot_set_swap_area(struct snapshot_data *data,
|
||||
void __user *argp)
|
||||
{
|
||||
struct block_device *bdev;
|
||||
sector_t offset;
|
||||
dev_t swdev;
|
||||
|
||||
@@ -237,16 +235,10 @@ static int snapshot_set_swap_area(struct snapshot_data *data,
|
||||
* User space encodes device types as two-byte values,
|
||||
* so we need to recode them
|
||||
*/
|
||||
if (!swdev) {
|
||||
data->swap = -1;
|
||||
return -EINVAL;
|
||||
}
|
||||
data->swap = swap_type_of(swdev, offset, &bdev);
|
||||
data->swap = swap_type_of(swdev, offset);
|
||||
if (data->swap < 0)
|
||||
return -ENODEV;
|
||||
|
||||
data->dev = bdev->bd_dev;
|
||||
bdput(bdev);
|
||||
return swdev ? -ENODEV : -EINVAL;
|
||||
data->dev = swdev;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user