Skip to content

Commit 620faea

Browse files
Christoph Hellwigjfvogel
authored andcommitted
loop: factor out a loop_assign_backing_file helper
[ Upstream commit d278164 ] Split the code for setting up a backing file into a helper in preparation of adding more code to this path. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Link: https://lore.kernel.org/r/20250131120120.1315125-2-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk> Stable-dep-of: f5c84ef ("loop: Add sanity check for read/write_iter") Signed-off-by: Sasha Levin <sashal@kernel.org> (cherry picked from commit a781ffe410d83fa8092d30d53f583d0ce8732a7b) Signed-off-by: Jack Vogel <jack.vogel@oracle.com>
1 parent fb3eb5f commit 620faea

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

drivers/block/loop.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,14 @@ static int loop_validate_file(struct file *file, struct block_device *bdev)
493493
return 0;
494494
}
495495

496+
static void loop_assign_backing_file(struct loop_device *lo, struct file *file)
497+
{
498+
lo->lo_backing_file = file;
499+
lo->old_gfp_mask = mapping_gfp_mask(file->f_mapping);
500+
mapping_set_gfp_mask(file->f_mapping,
501+
lo->old_gfp_mask & ~(__GFP_IO | __GFP_FS));
502+
}
503+
496504
/*
497505
* loop_change_fd switched the backing store of a loopback device to
498506
* a new file. This is useful for operating system installers to free up
@@ -545,10 +553,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
545553
disk_force_media_change(lo->lo_disk);
546554
blk_mq_freeze_queue(lo->lo_queue);
547555
mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask);
548-
lo->lo_backing_file = file;
549-
lo->old_gfp_mask = mapping_gfp_mask(file->f_mapping);
550-
mapping_set_gfp_mask(file->f_mapping,
551-
lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
556+
loop_assign_backing_file(lo, file);
552557
loop_update_dio(lo);
553558
blk_mq_unfreeze_queue(lo->lo_queue);
554559
partscan = lo->lo_flags & LO_FLAGS_PARTSCAN;
@@ -940,7 +945,6 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
940945
const struct loop_config *config)
941946
{
942947
struct file *file = fget(config->fd);
943-
struct address_space *mapping;
944948
struct queue_limits lim;
945949
int error;
946950
loff_t size;
@@ -976,8 +980,6 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
976980
if (error)
977981
goto out_unlock;
978982

979-
mapping = file->f_mapping;
980-
981983
if ((config->info.lo_flags & ~LOOP_CONFIGURE_SETTABLE_FLAGS) != 0) {
982984
error = -EINVAL;
983985
goto out_unlock;
@@ -1009,9 +1011,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
10091011

10101012
lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO;
10111013
lo->lo_device = bdev;
1012-
lo->lo_backing_file = file;
1013-
lo->old_gfp_mask = mapping_gfp_mask(mapping);
1014-
mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
1014+
loop_assign_backing_file(lo, file);
10151015

10161016
lim = queue_limits_start_update(lo->lo_queue);
10171017
loop_update_limits(lo, &lim, config->block_size);

0 commit comments

Comments
 (0)