Re: [PATCH] Revert "dm raid: remove unnecessary discard limits for raid10"
Hi Song, I love your patch! Perhaps something to improve: [auto build test WARNING on dm/for-next] [also build test WARNING on linux/master linus/master v5.10-rc7 next-20201209] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Song-Liu/Revert-dm-raid-remove-unnecessary-discard-limits-for-raid10/20201210-060948 base: https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git for-next config: x86_64-randconfig-a006-20201209 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 1968804ac726e7674d5de22bc2204b45857da344) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/0day-ci/linux/commit/c041d7bf65519d8a09a4193a0963fdcadcfd639b git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Song-Liu/Revert-dm-raid-remove-unnecessary-discard-limits-for-raid10/20201210-060948 git checkout c041d7bf65519d8a09a4193a0963fdcadcfd639b # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> drivers/md/dm-raid.c:3739:33: warning: comparison of distinct pointer types >> ('typeof (__x) *' (aka 'int *') and 'typeof (__y) *' (aka 'unsigned int *')) >> [-Wcompare-distinct-pointer-types] limits->max_discard_sectors = min_not_zero(rs->md.chunk_sectors, ^~ include/linux/minmax.h:84:39: note: expanded from macro 'min_not_zero' __x == 0 ? __y : ((__y == 0) ? __x : min(__x, __y)); }) ^ include/linux/minmax.h:51:19: note: expanded from macro 'min' #define min(x, y) __careful_cmp(x, y, <) ^~ include/linux/minmax.h:42:24: note: expanded from macro '__careful_cmp' __builtin_choose_expr(__safe_cmp(x, y), \ ^~~~ include/linux/minmax.h:32:4: note: expanded from macro '__safe_cmp' (__typecheck(x, y) && __no_side_effects(x, y)) ^ include/linux/minmax.h:18:28: note: expanded from macro '__typecheck' (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) ~~ ^ ~~ 1 warning generated. vim +3739 drivers/md/dm-raid.c 3723 3724 static void raid_io_hints(struct dm_target *ti, struct queue_limits *limits) 3725 { 3726 struct raid_set *rs = ti->private; 3727 unsigned int chunk_size_bytes = to_bytes(rs->md.chunk_sectors); 3728 3729 blk_limits_io_min(limits, chunk_size_bytes); 3730 blk_limits_io_opt(limits, chunk_size_bytes * mddev_data_stripes(rs)); 3731 3732 /* 3733 * RAID10 personality requires bio splitting, 3734 * RAID0/1/4/5/6 don't and process large discard bios properly. 3735 */ 3736 if (rs_is_raid10(rs)) { 3737 limits->discard_granularity = max(chunk_size_bytes, 3738 limits->discard_granularity); > 3739 limits->max_discard_sectors = > min_not_zero(rs->md.chunk_sectors, 3740 limits->max_discard_sectors); 3741 } 3742 } 3743 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org .config.gz Description: application/gzip
Re: [PATCH] Revert "dm raid: remove unnecessary discard limits for raid10"
Hi Song, I love your patch! Perhaps something to improve: [auto build test WARNING on dm/for-next] [also build test WARNING on linux/master linus/master v5.10-rc7 next-20201209] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Song-Liu/Revert-dm-raid-remove-unnecessary-discard-limits-for-raid10/20201210-060948 base: https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git for-next config: x86_64-randconfig-s022-20201210 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.3-179-ga00755aa-dirty # https://github.com/0day-ci/linux/commit/c041d7bf65519d8a09a4193a0963fdcadcfd639b git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Song-Liu/Revert-dm-raid-remove-unnecessary-discard-limits-for-raid10/20201210-060948 git checkout c041d7bf65519d8a09a4193a0963fdcadcfd639b # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot "sparse warnings: (new ones prefixed by >>)" >> drivers/md/dm-raid.c:3739:47: sparse: sparse: incompatible types in >> comparison expression (different signedness): >> drivers/md/dm-raid.c:3739:47: sparse:int * >> drivers/md/dm-raid.c:3739:47: sparse:unsigned int * vim +3739 drivers/md/dm-raid.c 3723 3724 static void raid_io_hints(struct dm_target *ti, struct queue_limits *limits) 3725 { 3726 struct raid_set *rs = ti->private; 3727 unsigned int chunk_size_bytes = to_bytes(rs->md.chunk_sectors); 3728 3729 blk_limits_io_min(limits, chunk_size_bytes); 3730 blk_limits_io_opt(limits, chunk_size_bytes * mddev_data_stripes(rs)); 3731 3732 /* 3733 * RAID10 personality requires bio splitting, 3734 * RAID0/1/4/5/6 don't and process large discard bios properly. 3735 */ 3736 if (rs_is_raid10(rs)) { 3737 limits->discard_granularity = max(chunk_size_bytes, 3738 limits->discard_granularity); > 3739 limits->max_discard_sectors = > min_not_zero(rs->md.chunk_sectors, 3740 limits->max_discard_sectors); 3741 } 3742 } 3743 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org .config.gz Description: application/gzip
Re: Revert "dm raid: remove unnecessary discard limits for raid10"
> On Dec 9, 2020, at 2:36 PM, Mike Snitzer wrote: > > On Wed, Dec 09 2020 at 4:58pm -0500, > Song Liu wrote: > >> This reverts commit f0e90b6c663a7e3b4736cb318c6c7c589f152c28. >> >> Matthew Ruffell reported data corruption in raid10 due to the changes >> in discard handling [1]. Revert these changes before we find a proper fix. >> >> [1] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1907262/ >> Cc: Matthew Ruffell >> Cc: Xiao Ni >> Cc: Mike Snitzer >> Signed-off-by: Song Liu > > If you're reverting all the MD code that enabled this DM change, then > obviously the DM change must be reverted too. But please do _not_ > separate the DM revert from the MD reverts. Good point! I should have thought about it through. Thanks, Song [...]
Re: Revert "dm raid: remove unnecessary discard limits for raid10"
On Wed, Dec 09 2020 at 4:58pm -0500, Song Liu wrote: > This reverts commit f0e90b6c663a7e3b4736cb318c6c7c589f152c28. > > Matthew Ruffell reported data corruption in raid10 due to the changes > in discard handling [1]. Revert these changes before we find a proper fix. > > [1] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1907262/ > Cc: Matthew Ruffell > Cc: Xiao Ni > Cc: Mike Snitzer > Signed-off-by: Song Liu > --- > drivers/md/dm-raid.c | 11 +++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c > index 9c1f7c4de65b3..dc8568ab96f24 100644 > --- a/drivers/md/dm-raid.c > +++ b/drivers/md/dm-raid.c > @@ -3728,6 +3728,17 @@ static void raid_io_hints(struct dm_target *ti, struct > queue_limits *limits) > > blk_limits_io_min(limits, chunk_size_bytes); > blk_limits_io_opt(limits, chunk_size_bytes * mddev_data_stripes(rs)); > + > + /* > + * RAID10 personality requires bio splitting, > + * RAID0/1/4/5/6 don't and process large discard bios properly. > + */ > + if (rs_is_raid10(rs)) { > + limits->discard_granularity = max(chunk_size_bytes, > + limits->discard_granularity); > + limits->max_discard_sectors = min_not_zero(rs->md.chunk_sectors, > + > limits->max_discard_sectors); > + } > } > > static void raid_postsuspend(struct dm_target *ti) > -- > 2.24.1 > Short of you sending a v2 pull request to Jens... Jens please pick this up once you pull Song's MD pull that reverts all the MD raid10 discard changes. Thanks! Acked-by: Mike Snitzer
Re: Revert "dm raid: remove unnecessary discard limits for raid10"
On Wed, Dec 09 2020 at 4:58pm -0500, Song Liu wrote: > This reverts commit f0e90b6c663a7e3b4736cb318c6c7c589f152c28. > > Matthew Ruffell reported data corruption in raid10 due to the changes > in discard handling [1]. Revert these changes before we find a proper fix. > > [1] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1907262/ > Cc: Matthew Ruffell > Cc: Xiao Ni > Cc: Mike Snitzer > Signed-off-by: Song Liu If you're reverting all the MD code that enabled this DM change, then obviously the DM change must be reverted too. But please do _not_ separate the DM revert from the MD reverts. Please include this in a v2 pull request to Jens. Mike > --- > drivers/md/dm-raid.c | 11 +++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c > index 9c1f7c4de65b3..dc8568ab96f24 100644 > --- a/drivers/md/dm-raid.c > +++ b/drivers/md/dm-raid.c > @@ -3728,6 +3728,17 @@ static void raid_io_hints(struct dm_target *ti, struct > queue_limits *limits) > > blk_limits_io_min(limits, chunk_size_bytes); > blk_limits_io_opt(limits, chunk_size_bytes * mddev_data_stripes(rs)); > + > + /* > + * RAID10 personality requires bio splitting, > + * RAID0/1/4/5/6 don't and process large discard bios properly. > + */ > + if (rs_is_raid10(rs)) { > + limits->discard_granularity = max(chunk_size_bytes, > + limits->discard_granularity); > + limits->max_discard_sectors = min_not_zero(rs->md.chunk_sectors, > + > limits->max_discard_sectors); > + } > } > > static void raid_postsuspend(struct dm_target *ti) > -- > 2.24.1 >
[PATCH] Revert "dm raid: remove unnecessary discard limits for raid10"
This reverts commit f0e90b6c663a7e3b4736cb318c6c7c589f152c28. Matthew Ruffell reported data corruption in raid10 due to the changes in discard handling [1]. Revert these changes before we find a proper fix. [1] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1907262/ Cc: Matthew Ruffell Cc: Xiao Ni Cc: Mike Snitzer Signed-off-by: Song Liu --- drivers/md/dm-raid.c | 11 +++ 1 file changed, 11 insertions(+) diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c index 9c1f7c4de65b3..dc8568ab96f24 100644 --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c @@ -3728,6 +3728,17 @@ static void raid_io_hints(struct dm_target *ti, struct queue_limits *limits) blk_limits_io_min(limits, chunk_size_bytes); blk_limits_io_opt(limits, chunk_size_bytes * mddev_data_stripes(rs)); + + /* +* RAID10 personality requires bio splitting, +* RAID0/1/4/5/6 don't and process large discard bios properly. +*/ + if (rs_is_raid10(rs)) { + limits->discard_granularity = max(chunk_size_bytes, + limits->discard_granularity); + limits->max_discard_sectors = min_not_zero(rs->md.chunk_sectors, + limits->max_discard_sectors); + } } static void raid_postsuspend(struct dm_target *ti) -- 2.24.1