diff options
author | Dimitri John Ledkov <xnox@ubuntu.com> | 2018-05-15 12:17:39 +0100 |
---|---|---|
committer | Dimitri John Ledkov <xnox@ubuntu.com> | 2018-05-15 12:17:39 +0100 |
commit | 8d2a04e139c44f4d157b36ccfe85a19b44da02e8 (patch) | |
tree | 2d2231aa4cd553bdaa89d9123505cd4df7373228 /debian/patches/0006-imsm-pass-already-existing-map-to-imsm_num_data_memb.patch | |
parent | a8860e1d7bee9524596cf3c5186219cf18d78ffe (diff) |
Import patches since rc1.
Diffstat (limited to 'debian/patches/0006-imsm-pass-already-existing-map-to-imsm_num_data_memb.patch')
-rw-r--r-- | debian/patches/0006-imsm-pass-already-existing-map-to-imsm_num_data_memb.patch | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/debian/patches/0006-imsm-pass-already-existing-map-to-imsm_num_data_memb.patch b/debian/patches/0006-imsm-pass-already-existing-map-to-imsm_num_data_memb.patch new file mode 100644 index 00000000..0a406e80 --- /dev/null +++ b/debian/patches/0006-imsm-pass-already-existing-map-to-imsm_num_data_memb.patch @@ -0,0 +1,178 @@ +From 9529d3436771d9f38884861683dee3b40ab9d180 Mon Sep 17 00:00:00 2001 +From: Mariusz Dabrowski <mariusz.dabrowski@intel.com> +Date: Thu, 5 Apr 2018 13:38:37 +0200 +Subject: [PATCH 6/9] imsm: pass already existing map to imsm_num_data_members + +In almost every place where imsm_num_data_members is called there is +already existing map so it can be used it to avoid mistake when specifying +map for imsm_num_data_members. + +Signed-off-by: Mariusz Dabrowski <mariusz.dabrowski@intel.com> +Signed-off-by: Jes Sorensen <jsorensen@fb.com> +--- + super-intel.c | 41 +++++++++++++++++++++-------------------- + 1 file changed, 21 insertions(+), 20 deletions(-) + +diff --git a/super-intel.c b/super-intel.c +index fe2a705b..3fc3cf4c 100644 +--- a/super-intel.c ++++ b/super-intel.c +@@ -2767,13 +2767,11 @@ static __u32 num_stripes_per_unit_rebuild(struct imsm_dev *dev) + return num_stripes_per_unit_resync(dev); + } + +-static __u8 imsm_num_data_members(struct imsm_dev *dev, int second_map) ++static __u8 imsm_num_data_members(struct imsm_map *map) + { + /* named 'imsm_' because raid0, raid1 and raid10 + * counter-intuitively have the same number of data disks + */ +- struct imsm_map *map = get_imsm_map(dev, second_map); +- + switch (get_imsm_raid_level(map)) { + case 0: + return map->num_members; +@@ -2862,7 +2860,7 @@ static __u64 blocks_per_migr_unit(struct intel_super *super, + */ + stripes_per_unit = num_stripes_per_unit_resync(dev); + migr_chunk = migr_strip_blocks_resync(dev); +- disks = imsm_num_data_members(dev, MAP_0); ++ disks = imsm_num_data_members(map); + blocks_per_unit = stripes_per_unit * migr_chunk * disks; + stripe = __le16_to_cpu(map->blocks_per_strip) * disks; + segment = blocks_per_unit / stripe; +@@ -3381,7 +3379,7 @@ static void getinfo_super_imsm_volume(struct supertype *st, struct mdinfo *info, + (unsigned long long)blocks_per_unit, + info->reshape_progress); + +- used_disks = imsm_num_data_members(dev, MAP_1); ++ used_disks = imsm_num_data_members(prev_map); + if (used_disks > 0) { + array_blocks = blocks_per_member(map) * + used_disks; +@@ -8140,9 +8138,9 @@ static void handle_missing(struct intel_super *super, struct imsm_dev *dev) + static unsigned long long imsm_set_array_size(struct imsm_dev *dev, + long long new_size) + { +- int used_disks = imsm_num_data_members(dev, MAP_0); + unsigned long long array_blocks; +- struct imsm_map *map; ++ struct imsm_map *map = get_imsm_map(dev, MAP_0); ++ int used_disks = imsm_num_data_members(map); + + if (used_disks == 0) { + /* when problems occures +@@ -8155,17 +8153,15 @@ static unsigned long long imsm_set_array_size(struct imsm_dev *dev, + + /* set array size in metadata + */ +- if (new_size <= 0) { ++ if (new_size <= 0) + /* OLCE size change is caused by added disks + */ +- map = get_imsm_map(dev, MAP_0); + array_blocks = blocks_per_member(map) * used_disks; +- } else { ++ else + /* Online Volume Size Change + * Using available free space + */ + array_blocks = new_size; +- } + + array_blocks = round_size_to_mb(array_blocks, used_disks); + set_imsm_dev_size(dev, array_blocks); +@@ -8274,7 +8270,7 @@ static int imsm_set_array_state(struct active_array *a, int consistent) + int used_disks; + struct mdinfo *mdi; + +- used_disks = imsm_num_data_members(dev, MAP_0); ++ used_disks = imsm_num_data_members(map); + if (used_disks > 0) { + array_blocks = + blocks_per_member(map) * +@@ -9132,8 +9128,10 @@ static int apply_reshape_migration_update(struct imsm_update_reshape_migration * + */ + if (u->new_chunksize > 0) { + unsigned long long num_data_stripes; ++ struct imsm_map *dest_map = ++ get_imsm_map(dev, MAP_0); + int used_disks = +- imsm_num_data_members(dev, MAP_0); ++ imsm_num_data_members(dest_map); + + if (used_disks == 0) + return ret_val; +@@ -9210,7 +9208,7 @@ static int apply_size_change_update(struct imsm_update_size_change *u, + if (id->index == (unsigned)u->subdev) { + struct imsm_dev *dev = get_imsm_dev(super, u->subdev); + struct imsm_map *map = get_imsm_map(dev, MAP_0); +- int used_disks = imsm_num_data_members(dev, MAP_0); ++ int used_disks = imsm_num_data_members(map); + unsigned long long blocks_per_member; + unsigned long long num_data_stripes; + +@@ -10589,7 +10587,7 @@ void init_migr_record_imsm(struct supertype *st, struct imsm_dev *dev, + max(map_dest->blocks_per_strip, map_src->blocks_per_strip); + migr_rec->dest_depth_per_unit *= + max(map_dest->blocks_per_strip, map_src->blocks_per_strip); +- new_data_disks = imsm_num_data_members(dev, MAP_0); ++ new_data_disks = imsm_num_data_members(map_dest); + migr_rec->blocks_per_unit = + __cpu_to_le32(migr_rec->dest_depth_per_unit * new_data_disks); + migr_rec->dest_depth_per_unit = +@@ -10657,7 +10655,7 @@ int save_backup_imsm(struct supertype *st, + int dest_layout = 0; + int dest_chunk; + unsigned long long start; +- int data_disks = imsm_num_data_members(dev, MAP_0); ++ int data_disks = imsm_num_data_members(map_dest); + + targets = xmalloc(new_disks * sizeof(int)); + +@@ -11279,6 +11277,7 @@ enum imsm_reshape_type imsm_analyze_change(struct supertype *st, + int imsm_layout = -1; + int data_disks; + struct imsm_dev *dev; ++ struct imsm_map *map; + struct intel_super *super; + unsigned long long current_size; + unsigned long long free_size; +@@ -11369,7 +11368,8 @@ enum imsm_reshape_type imsm_analyze_change(struct supertype *st, + + super = st->sb; + dev = get_imsm_dev(super, super->current_vol); +- data_disks = imsm_num_data_members(dev , MAP_0); ++ map = get_imsm_map(dev, MAP_0); ++ data_disks = imsm_num_data_members(map); + /* compute current size per disk member + */ + current_size = info.custom_array_size / data_disks; +@@ -11838,7 +11838,7 @@ static int imsm_manage_reshape( + struct intel_dev *dv; + unsigned int sector_size = super->sector_size; + struct imsm_dev *dev = NULL; +- struct imsm_map *map_src; ++ struct imsm_map *map_src, *map_dest; + int migr_vol_qan = 0; + int ndata, odata; /* [bytes] */ + int chunk; /* [bytes] */ +@@ -11876,12 +11876,13 @@ static int imsm_manage_reshape( + goto abort; + } + ++ map_dest = get_imsm_map(dev, MAP_0); + map_src = get_imsm_map(dev, MAP_1); + if (map_src == NULL) + goto abort; + +- ndata = imsm_num_data_members(dev, MAP_0); +- odata = imsm_num_data_members(dev, MAP_1); ++ ndata = imsm_num_data_members(map_dest); ++ odata = imsm_num_data_members(map_src); + + chunk = __le16_to_cpu(map_src->blocks_per_strip) * 512; + old_data_stripe_length = odata * chunk; +-- +2.17.0 + |