]> git.ipfire.org Git - people/ms/linux.git/commitdiff
dm cache metadata: do not allow the data block size to change
authorMike Snitzer <snitzer@redhat.com>
Mon, 14 Jul 2014 20:59:39 +0000 (16:59 -0400)
committerJiri Slaby <jslaby@suse.cz>
Tue, 29 Jul 2014 15:01:46 +0000 (17:01 +0200)
commit 048e5a07f282c57815b3901d4a68a77fa131ce0a upstream.

The block size for the dm-cache's data device must remained fixed for
the life of the cache.  Disallow any attempt to change the cache's data
block size.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Acked-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
drivers/md/dm-cache-metadata.c

index 1d38019bb022245d63e0d52c63af42a82363f32c..b564c0610259a7e897be161fdd43a565778d88c0 100644 (file)
@@ -407,6 +407,15 @@ static int __open_metadata(struct dm_cache_metadata *cmd)
 
        disk_super = dm_block_data(sblock);
 
+       /* Verify the data block size hasn't changed */
+       if (le32_to_cpu(disk_super->data_block_size) != cmd->data_block_size) {
+               DMERR("changing the data block size (from %u to %llu) is not supported",
+                     le32_to_cpu(disk_super->data_block_size),
+                     (unsigned long long)cmd->data_block_size);
+               r = -EINVAL;
+               goto bad;
+       }
+
        r = __check_incompat_features(disk_super, cmd);
        if (r < 0)
                goto bad;