]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
loop: Call loop_config_discard() only after new config is applied
authorMartijn Coenen <maco@android.com>
Wed, 13 May 2020 13:38:35 +0000 (15:38 +0200)
committerJens Axboe <axboe@kernel.dk>
Thu, 21 May 2020 14:20:34 +0000 (08:20 -0600)
loop_set_status() calls loop_config_discard() to configure discard for
the loop device; however, the discard configuration depends on whether
the loop device uses encryption, and when we call it the encryption
configuration has not been updated yet. Move the call down so we apply
the correct discard configuration based on the new configuration.

Signed-off-by: Martijn Coenen <maco@android.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bob Liu <bob.liu@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/loop.c

index da693e6a834e583f47403cbd0f54c3f5908f441c..f1754262fc94439f7503e44a5457ed99e5d32e3a 100644 (file)
@@ -1334,8 +1334,6 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info)
                }
        }
 
-       loop_config_discard(lo);
-
        memcpy(lo->lo_file_name, info->lo_file_name, LO_NAME_SIZE);
        memcpy(lo->lo_crypt_name, info->lo_crypt_name, LO_NAME_SIZE);
        lo->lo_file_name[LO_NAME_SIZE-1] = 0;
@@ -1359,6 +1357,8 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info)
                lo->lo_key_owner = uid;
        }
 
+       loop_config_discard(lo);
+
        /* update dio if lo_offset or transfer is changed */
        __loop_update_dio(lo, lo->use_dio);