Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
List overview
Download
lvm2-commits
May 2017
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
lvm2-commits@lists.fedorahosted.org
7 participants
94 discussions
Start a n
N
ew thread
master - tests: longer delay
by Zdenek Kabelac
31 May '17
31 May '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=743ffb1962ef272e5023c…
Commit: 743ffb1962ef272e5023c1ac652c5bcde86ff5fd Parent: 42b87c23e2e5745eba0f66328319b541303db3aa Author: Zdenek Kabelac <zkabelac(a)redhat.com> AuthorDate: Wed May 31 13:58:19 2017 +0200 Committer: Zdenek Kabelac <zkabelac(a)redhat.com> CommitterDate: Wed May 31 13:59:42 2017 +0200 tests: longer delay Slower sync a bit more and use bigger raid arrays to be more sure we will catch raid being sychronized. --- test/shell/lvcreate-raid-nosync.sh | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/shell/lvcreate-raid-nosync.sh b/test/shell/lvcreate-raid-nosync.sh index 1f01f47..bd7ec81 100644 --- a/test/shell/lvcreate-raid-nosync.sh +++ b/test/shell/lvcreate-raid-nosync.sh @@ -35,7 +35,7 @@ _sync() { # Delay 1st leg so that rebuilding status characters # can be read before resync finished too quick. -aux delay_dev "$dev1" 0 90 $(get first_extent_sector "$dev1") +aux delay_dev "$dev1" 0 100 $(get first_extent_sector "$dev1") # raid0/raid0_meta don't support resynchronization for r in raid0 raid0_meta @@ -58,7 +58,7 @@ lvremove --yes $vg/$lv1 for r in $segtypes do # raid4/5 support resynchronization - lvcreate --type $r -Zn -i 3 -l 4 -n $lv1 $vg + lvcreate --type $r -Zn -i 3 -L10 -n $lv1 $vg check raid_leg_status $vg $lv1 "aaaa" _sync "AAAA" @@ -77,7 +77,7 @@ _sync "AAAAA" not lvcreate --type raid6 --nosync -Zn -i 3 -l 1 -n $lv1 $vg # raid10 supports resynchronization -lvcreate --type raid10 -m 1 -Zn -i 3 -l 4 -n $lv1 $vg +lvcreate --type raid10 -m 1 -Zn -i 3 -L10 -n $lv1 $vg check raid_leg_status $vg $lv1 "aaaaaa" _sync "AAAAAA"
1
0
0
0
master - tests: add some extra udev waits
by Zdenek Kabelac
31 May '17
31 May '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=42b87c23e2e5745eba0f6…
Commit: 42b87c23e2e5745eba0f66328319b541303db3aa Parent: 091c55a13fbd385f5ea230bcc9bc2b2f0e29af9f Author: Zdenek Kabelac <zkabelac(a)redhat.com> AuthorDate: Wed May 31 13:23:34 2017 +0200 Committer: Zdenek Kabelac <zkabelac(a)redhat.com> CommitterDate: Wed May 31 13:23:34 2017 +0200 tests: add some extra udev waits To get less random results on older systems with systemd (i.e. fc23) put few extra udev wait operations to avoid any udev event collision. --- test/shell/fsadm-renamed.sh | 18 +++++++++++++++++- 1 files changed, 17 insertions(+), 1 deletions(-) diff --git a/test/shell/fsadm-renamed.sh b/test/shell/fsadm-renamed.sh index 5142e51..9f3cd3c 100644 --- a/test/shell/fsadm-renamed.sh +++ b/test/shell/fsadm-renamed.sh @@ -64,8 +64,19 @@ esac echo "$i" "$i" $MKFS_ARGS "$dev_vg_lv" +# Adding couple udev wait ops as some older systemd +# might get confused and was 'randomly/racy' umounting +# devices just mounted. +# +# See for explanation: +#
https://github.com/systemd/systemd/commit/628c89cc68ab96fce2de7ebba5933725d…
+#
https://github.com/systemd/systemd/pull/2017
+aux udev_wait + mount "$dev_vg_lv" "$mount_dir" +aux udev_wait + lvrename $vg_lv $vg_lv_ren mount | tee out @@ -80,9 +91,12 @@ not umount "$dev_vg_lv" lvcreate -L20 -n $lv1 $vg "$i" $MKFS_ARGS "$dev_vg_lv" +aux udev_wait + mount "$dev_vg_lv" "$mount_dolar_dir" -mount | grep $vg +mount | tee out +grep $vg out not lvresize -L+10M -r $vg_lv_ren @@ -91,6 +105,8 @@ umount "$mount_dir" # FIXME: lvresize CANNOT handle/propagage '--yes' to fsadm echo y | lvresize -L+10M -r $vg_lv +aux udev_wait + umount "$mount_dolar_dir" lvremove -ff $vg
1
0
0
0
master - tests: skip reshaping raid10
by Zdenek Kabelac
31 May '17
31 May '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=091c55a13fbd385f5ea23…
Commit: 091c55a13fbd385f5ea230bcc9bc2b2f0e29af9f Parent: 3719f4bc5441cb5f29ad4beb91ccaa6b234ea8e1 Author: Zdenek Kabelac <zkabelac(a)redhat.com> AuthorDate: Wed May 31 12:59:53 2017 +0200 Committer: Zdenek Kabelac <zkabelac(a)redhat.com> CommitterDate: Wed May 31 12:59:53 2017 +0200 tests: skip reshaping raid10 Needs newer target >= 1.10.1 for reshaping of raid10 LVs. --- test/shell/lvconvert-raid-regionsize.sh | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/test/shell/lvconvert-raid-regionsize.sh b/test/shell/lvconvert-raid-regionsize.sh index 762dada..d2c8a54 100644 --- a/test/shell/lvconvert-raid-regionsize.sh +++ b/test/shell/lvconvert-raid-regionsize.sh @@ -64,7 +64,7 @@ _test_regionsizes raid1 # Clean up lvremove --yes $vg -if aux have_raid 1 10 0; then +if aux have_raid 1 10 1; then # Create 5-way raid6 lvcreate --yes -aey --type raid6 -i 3 --stripesize 128K -R 256K -L8M -n $lv1 $vg check lv_field $vg/$lv1 segtype "raid6" @@ -83,6 +83,7 @@ else echo "Skipping RAID6 tests" fi +if aux have_raid 1 10 1; then # Create 6-way raid01 lvcreate --yes -aey --type raid10 -i 3 -m 1 --stripesize 128K -R 256K -L8M -n $lv1 $vg check lv_field $vg/$lv1 segtype "raid10" @@ -94,5 +95,8 @@ aux wait_for_sync $vg $lv1 fsck -fn "$DM_DEV_DIR/$vg/$lv1" _test_regionsizes raid10 +else + echo "Skipping RAID10 tests" +fi vgremove -ff $vg
1
0
0
0
master - lvconvert: reject changing number of stripes on single core
by Heinz Mauelshagen
30 May '17
30 May '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=3719f4bc5441cb5f29ad4…
Commit: 3719f4bc5441cb5f29ad4beb91ccaa6b234ea8e1 Parent: c245996d700458f6ab159a387483736f1c1a6fbf Author: Heinz Mauelshagen <heinzm(a)redhat.com> AuthorDate: Tue May 30 19:14:32 2017 +0200 Committer: Heinz Mauelshagen <heinzm(a)redhat.com> CommitterDate: Tue May 30 19:14:32 2017 +0200 lvconvert: reject changing number of stripes on single core Reject any stripe adding/removing reshape on raid4/5/6/10 because of related MD kernel deadlock on single core systems until we get a proper fix in MD. Related: rhbz1443999 --- lib/metadata/raid_manip.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c index 8a70600..80541fd 100644 --- a/lib/metadata/raid_manip.c +++ b/lib/metadata/raid_manip.c @@ -2322,6 +2322,12 @@ static int _raid_reshape(struct logical_volume *lv, /* Handle disk addition reshaping */ if (old_image_count < new_image_count) { + /* FIXME: remove once MD kernel rhbz1443999 got fixed. */ + if (sysconf(_SC_NPROCESSORS_ONLN) < 2) { + log_error("Can't add stripes to LV %s on single core.", display_lvname(lv)); + return 0; + } + if (!_raid_reshape_add_images(lv, new_segtype, yes, old_image_count, new_image_count, new_stripes, new_stripe_size, allocate_pvs)) @@ -2329,6 +2335,12 @@ static int _raid_reshape(struct logical_volume *lv, /* Handle disk removal reshaping */ } else if (old_image_count > new_image_count) { + /* FIXME: remove once MD kernel rhbz1443999 got fixed. */ + if (sysconf(_SC_NPROCESSORS_ONLN) < 2) { + log_error("Can't remove stripes from LV %s on single core.", display_lvname(lv)); + return 0; + } + if (!_raid_reshape_remove_images(lv, new_segtype, yes, force, old_image_count, new_image_count, new_stripes, new_stripe_size,
1
0
0
0
master - tests: missed to export lvm binary for fsadm
by Heinz Mauelshagen
30 May '17
30 May '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=c245996d700458f6ab159…
Commit: c245996d700458f6ab159a387483736f1c1a6fbf Parent: b876e8c915a9434fa947ceb447dab32d5ecc74d3 Author: Zdenek Kabelac <zkabelac(a)redhat.com> AuthorDate: Tue May 30 12:59:21 2017 +0200 Committer: Heinz Mauelshagen <heinzm(a)redhat.com> CommitterDate: Tue May 30 18:43:56 2017 +0200 tests: missed to export lvm binary for fsadm --- test/shell/lvresize-full.sh | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/test/shell/lvresize-full.sh b/test/shell/lvresize-full.sh index 17ee6aa..3eef11a 100644 --- a/test/shell/lvresize-full.sh +++ b/test/shell/lvresize-full.sh @@ -20,6 +20,7 @@ SKIP_WITH_LVMPOLLD=1 FSCK=${FSCK-fsck} MKFS=${MKFS-mkfs.ext3} RESIZEFS=${RESIZEFS-resize2fs} +export LVM_BINARY=$(which lvm) which $FSCK || skip which $MKFS || skip
1
0
0
0
master - tests: drop extra debug vvvv
by Heinz Mauelshagen
30 May '17
30 May '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=b876e8c915a9434fa947c…
Commit: b876e8c915a9434fa947ceb447dab32d5ecc74d3 Parent: 7c84c5c421806d5ee3fbe885862839a27df7b36a Author: Zdenek Kabelac <zkabelac(a)redhat.com> AuthorDate: Tue May 30 12:58:32 2017 +0200 Committer: Heinz Mauelshagen <heinzm(a)redhat.com> CommitterDate: Tue May 30 18:43:56 2017 +0200 tests: drop extra debug vvvv Also show output of mount so when it fails we can check the state. --- test/shell/fsadm-renamed.sh | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/test/shell/fsadm-renamed.sh b/test/shell/fsadm-renamed.sh index 3444840..5142e51 100644 --- a/test/shell/fsadm-renamed.sh +++ b/test/shell/fsadm-renamed.sh @@ -68,7 +68,8 @@ mount "$dev_vg_lv" "$mount_dir" lvrename $vg_lv $vg_lv_ren -mount | grep $vg +mount | tee out +grep $vg out # fails on renamed LV fail lvresize -L+10M -r $vg_lv_ren @@ -88,7 +89,7 @@ not lvresize -L+10M -r $vg_lv_ren umount "$mount_dir" # FIXME: lvresize CANNOT handle/propagage '--yes' to fsadm -echo y | lvresize -L+10M -vvvv -r $vg_lv +echo y | lvresize -L+10M -r $vg_lv umount "$mount_dolar_dir"
1
0
0
0
master - tmp
by Heinz Mauelshagen
30 May '17
30 May '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=a54d21ccd156a38a8cbc7…
Commit: a54d21ccd156a38a8cbc71ee77e0752c26e4ee7f Parent: c245996d700458f6ab159a387483736f1c1a6fbf Author: Heinz Mauelshagen <heinzm(a)redhat.com> AuthorDate: Wed May 24 22:55:01 2017 +0200 Committer: Heinz Mauelshagen <heinzm(a)redhat.com> CommitterDate: Tue May 30 18:43:56 2017 +0200 tmp --- tools/lvconvert.c | 22 +++++++++++++++++++++- 1 files changed, 21 insertions(+), 1 deletions(-) diff --git a/tools/lvconvert.c b/tools/lvconvert.c index 821146f..3423428 100644 --- a/tools/lvconvert.c +++ b/tools/lvconvert.c @@ -1293,6 +1293,20 @@ static int _lvconvert_raid(struct logical_volume *lv, struct lvconvert_params *l if (!seg_is_mirrored(seg) && !seg_is_linear(seg)) { log_error("--mirrors/-m is not compatible with %s.", lvseg_name(seg)); + log_error("You can convert %s LV %s to %s indirectly.", + lvseg_name(seg), display_lvname(lv), lp->type_str); + if (seg_is_any_raid5(seg)) { + if (seg->area_count == 2) + log_error("Convert %s LV %s to raid1.", + lvseg_name(seg), display_lvname(lv)); + else + log_error("Convert %s LV %s to 2 stripes, then to raid1 and to linear.", + lvseg_name(seg), display_lvname(lv)); + } else + log_error("Convert %s LV %s to raid5 with 2 stripes and then to raid1.", + lvseg_name(seg), display_lvname(lv)); + + log_error("Mind to extend the LV before removing stripes to avoid data loss."); return 0; } if (seg_is_raid10(seg)) { @@ -1442,7 +1456,13 @@ try_new_takeover_or_reshape: return 1; } - log_error("Conversion operation not yet supported."); + if (seg_is_mirror(seg) || seg_is_linear(seg)) { + log_error("Convert %s LV %s to raid1 with 2 images (i.e. --mirrors 1) first.", + lvseg_name(seg), display_lvname(lv)); + log_error("Conversion operation failed."); + } else + log_error("Conversion operation not yet supported."); + return 0; }
1
0
0
0
master - tests: also check new flag with segtype
by Heinz Mauelshagen
30 May '17
30 May '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=7c84c5c421806d5ee3fbe…
Commit: 7c84c5c421806d5ee3fbe885862839a27df7b36a Parent: fb86bddda2e2944699d9c0705a16642ed1dc99b5 Author: Zdenek Kabelac <zkabelac(a)redhat.com> AuthorDate: Tue May 30 16:10:22 2017 +0200 Committer: Heinz Mauelshagen <heinzm(a)redhat.com> CommitterDate: Tue May 30 18:43:56 2017 +0200 tests: also check new flag with segtype Make sure new unknown flag is having same behavior as old unknown segtype. --- test/shell/unknown-segment.sh | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/test/shell/unknown-segment.sh b/test/shell/unknown-segment.sh index 27cea88..20fc920 100644 --- a/test/shell/unknown-segment.sh +++ b/test/shell/unknown-segment.sh @@ -18,9 +18,10 @@ aux prepare_vg 4 lvcreate -an -Zn -l 1 -n $lv1 $vg lvcreate -an -Zn -l 2 --type mirror -m 1 -n $lv2 $vg +lvcreate -an -Zn --type zero -l 1 -n $lv3 $vg vgcfgbackup -f bak0 $vg -sed -e 's,striped,unstriped,;s,mirror,unmirror,' -i.orig bak0 +sed -e 's,striped,unstriped,;s,mirror,unmirror,;s,zero,zero+NEWFLAG,' -i.orig bak0 vgcfgrestore -f bak0 $vg # we have on-disk metadata with unknown segments now @@ -28,11 +29,13 @@ not lvchange -aey $vg/$lv1 # check that activation is refused # try once more to catch invalid memory access with valgrind # when clvmd flushes cmd mem pool -not lvchange -aey $vg/$lv1 # check that activation is refused +not lvchange -aey $vg/$lv2 # check that activation is refused + +not lvchange -aey $vg/$lv3 # check that activation is refused vgcfgbackup -f bak1 $vg cat bak1 -sed -e 's,unstriped,striped,;s,unmirror,mirror,' -i.orig bak1 +sed -e 's,unstriped,striped,;s,unmirror,mirror,;s,zero+NEWFLAG,zero,' -i.orig bak1 vgcfgrestore -f bak1 $vg vgcfgbackup -f bak2 $vg
1
0
0
0
master - tests: missed to export lvm binary for fsadm
by Heinz Mauelshagen
30 May '17
30 May '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=c245996d700458f6ab159…
Commit: c245996d700458f6ab159a387483736f1c1a6fbf Parent: b876e8c915a9434fa947ceb447dab32d5ecc74d3 Author: Zdenek Kabelac <zkabelac(a)redhat.com> AuthorDate: Tue May 30 12:59:21 2017 +0200 Committer: Heinz Mauelshagen <heinzm(a)redhat.com> CommitterDate: Tue May 30 18:43:56 2017 +0200 tests: missed to export lvm binary for fsadm --- test/shell/lvresize-full.sh | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/test/shell/lvresize-full.sh b/test/shell/lvresize-full.sh index 17ee6aa..3eef11a 100644 --- a/test/shell/lvresize-full.sh +++ b/test/shell/lvresize-full.sh @@ -20,6 +20,7 @@ SKIP_WITH_LVMPOLLD=1 FSCK=${FSCK-fsck} MKFS=${MKFS-mkfs.ext3} RESIZEFS=${RESIZEFS-resize2fs} +export LVM_BINARY=$(which lvm) which $FSCK || skip which $MKFS || skip
1
0
0
0
master - flags: improve unknown flags logic
by Heinz Mauelshagen
30 May '17
30 May '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=fb86bddda2e2944699d9c…
Commit: fb86bddda2e2944699d9c0705a16642ed1dc99b5 Parent: d1ac6108c39ff8a3496624508a0e709c503d7d9f Author: Zdenek Kabelac <zkabelac(a)redhat.com> AuthorDate: Tue May 30 15:59:42 2017 +0200 Committer: Heinz Mauelshagen <heinzm(a)redhat.com> CommitterDate: Tue May 30 18:43:45 2017 +0200 flags: improve unknown flags logic Use same logic as with unknown segment type - so preserve such name fully with all flags just with UNKNOWN segment type bits. --- lib/format_text/flags.c | 34 ++++++++++++++++++++++------------ 1 files changed, 22 insertions(+), 12 deletions(-) diff --git a/lib/format_text/flags.c b/lib/format_text/flags.c index 2b934da..d86ceb7 100644 --- a/lib/format_text/flags.c +++ b/lib/format_text/flags.c @@ -229,16 +229,22 @@ int read_segtype_lvflags(uint64_t *status, char *segtype_str) unsigned i; const struct flag *flags = _lv_flags; char *delim; - char *flag; + char *flag, *buffer, *str; - if (!(delim = strchr(segtype_str, '+'))) + if (!(str = strchr(segtype_str, '+'))) return 1; /* No flags */ - *delim = '\0'; /* Cut away 1st. '+' */ + if (!(buffer = dm_strdup(str + 1))) { + log_error("Cannot duplicate segment string."); + return 0; + } + + delim = buffer; + do { - flag = delim + 1; - if ((delim = strchr(segtype_str, '+'))) - *delim = '\0'; + flag = delim; + if ((delim = strchr(delim, '+'))) + *delim++ = '\0'; for (i = 0; flags[i].description; i++) if ((flags[i].kind & SEGTYPE_FLAG) && @@ -247,12 +253,16 @@ int read_segtype_lvflags(uint64_t *status, char *segtype_str) break; } - if (!flags[i].description) { - log_error("Unknown flag %s passed with segment type %s.", - flag, segtype_str); - return 0; /* Unknown flag is incompatible */ - } - } while (delim); /* Till no more flags in type appear */ + } while (delim && flags[i].description); /* Till no more flags in type appear */ + + if (!flags[i].description) + /* Unknown flag is incompatible - returns unmodified segtype_str */ + log_warn("WARNING: Unrecognised flag %s in segment type %s.", + flag, segtype_str); + else + *str = '\0'; /* Cut away 1st. '+' */ + + dm_free(buffer); return 1; }
1
0
0
0
← Newer
1
2
3
4
5
6
7
8
9
10
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
Results per page:
10
25
50
100
200