diff for duplicates of <202601130531.LGfcZsa4-lkp@intel.com> diff --git a/a/1.txt b/N1/1.txt index 745c509..eaf08cb 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,13 +1,29 @@ +BCC: lkp@intel.com +CC: oe-kbuild-all@lists.linux.dev +In-Reply-To: <20260112042857.2334264-6-yukuai@fnnas.com> +References: <20260112042857.2334264-6-yukuai@fnnas.com> +TO: Yu Kuai <yukuai@fnnas.com> +TO: linux-raid@vger.kernel.org +TO: linan122@huawei.com +CC: yukuai@fnnas.com + Hi Yu, kernel test robot noticed the following build warnings: +[auto build test WARNING on linus/master] +[also build test WARNING on v6.19-rc5 next-20260109] +[cannot apply to song-md/md-next] +[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#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Yu-Kuai/md-merge-mddev-has_superblock-into-mddev_flags/20260112-123233 base: linus/master patch link: https://lore.kernel.org/r/20260112042857.2334264-6-yukuai%40fnnas.com patch subject: [PATCH v4 05/11] md/raid5: make sure max_sectors is not less than io_opt +:::::: branch date: 18 hours ago +:::::: commit date: 18 hours ago config: i386-randconfig-141-20260113 (https://download.01.org/0day-ci/archive/20260113/202601130531.LGfcZsa4-lkp@intel.com/config) compiler: gcc-14 (Debian 14.2.0-19) 14.2.0 smatch version: v0.5.0-8985-g2614ff1a @@ -15,14 +31,254 @@ smatch version: v0.5.0-8985-g2614ff1a If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> -| Reported-by: Dan Carpenter <dan.carpenter@linaro.org> +| Reported-by: Dan Carpenter <error27@gmail.com> | Closes: https://lore.kernel.org/r/202601130531.LGfcZsa4-lkp@intel.com/ New smatch warnings: drivers/md/raid5.c:8100 raid5_run() warn: missing error code 'ret' +Old smatch warnings: +drivers/md/raid5.c:2880 raid5_end_write_request() error: uninitialized symbol 'rdev'. +drivers/md/raid5.c:2885 raid5_end_write_request() error: uninitialized symbol 'rdev'. +drivers/md/raid5.c:8580 raid5_start_reshape() warn: mixing irq and irqsave + vim +/ret +8100 drivers/md/raid5.c +16ef510139315a Christoph Hellwig 2020-09-24 7829 +849674e4fb175e Shaohua Li 2016-01-20 7830 static int raid5_run(struct mddev *mddev) +91adb56473febe NeilBrown 2009-03-31 7831 { +d1688a6d5515f1 NeilBrown 2011-10-11 7832 struct r5conf *conf; +c148ffdcda00b6 NeilBrown 2009-11-13 7833 int dirty_parity_disks = 0; +3cb03002000f13 NeilBrown 2011-10-11 7834 struct md_rdev *rdev; +713cf5a63954bd Shaohua Li 2015-08-13 7835 struct md_rdev *journal_dev = NULL; +c148ffdcda00b6 NeilBrown 2009-11-13 7836 sector_t reshape_offset = 0; +c567c86b90d471 Yu Kuai 2023-06-22 7837 int i; +b5254dd5fdd9ab NeilBrown 2012-05-21 7838 long long min_offset_diff = 0; +b5254dd5fdd9ab NeilBrown 2012-05-21 7839 int first = 1; +f63f17350e5373 Christoph Hellwig 2024-03-03 7840 int ret = -EIO; +91adb56473febe NeilBrown 2009-03-31 7841 +907a99c314a5a6 Li Nan 2025-07-22 7842 if (mddev->resync_offset != MaxSector) +cc6167b4f3b3ca NeilBrown 2016-11-02 7843 pr_notice("md/raid:%s: not clean -- starting background reconstruction\n", +8c6ac868b107ed Andre Noll 2009-06-18 7844 mdname(mddev)); +b5254dd5fdd9ab NeilBrown 2012-05-21 7845 +b5254dd5fdd9ab NeilBrown 2012-05-21 7846 rdev_for_each(rdev, mddev) { +b5254dd5fdd9ab NeilBrown 2012-05-21 7847 long long diff; +713cf5a63954bd Shaohua Li 2015-08-13 7848 +f2076e7d0643d1 Shaohua Li 2015-10-08 7849 if (test_bit(Journal, &rdev->flags)) { +713cf5a63954bd Shaohua Li 2015-08-13 7850 journal_dev = rdev; +f2076e7d0643d1 Shaohua Li 2015-10-08 7851 continue; +f2076e7d0643d1 Shaohua Li 2015-10-08 7852 } +b5254dd5fdd9ab NeilBrown 2012-05-21 7853 if (rdev->raid_disk < 0) +b5254dd5fdd9ab NeilBrown 2012-05-21 7854 continue; +b5254dd5fdd9ab NeilBrown 2012-05-21 7855 diff = (rdev->new_data_offset - rdev->data_offset); +b5254dd5fdd9ab NeilBrown 2012-05-21 7856 if (first) { +b5254dd5fdd9ab NeilBrown 2012-05-21 7857 min_offset_diff = diff; +b5254dd5fdd9ab NeilBrown 2012-05-21 7858 first = 0; +b5254dd5fdd9ab NeilBrown 2012-05-21 7859 } else if (mddev->reshape_backwards && +b5254dd5fdd9ab NeilBrown 2012-05-21 7860 diff < min_offset_diff) +b5254dd5fdd9ab NeilBrown 2012-05-21 7861 min_offset_diff = diff; +b5254dd5fdd9ab NeilBrown 2012-05-21 7862 else if (!mddev->reshape_backwards && +b5254dd5fdd9ab NeilBrown 2012-05-21 7863 diff > min_offset_diff) +b5254dd5fdd9ab NeilBrown 2012-05-21 7864 min_offset_diff = diff; +b5254dd5fdd9ab NeilBrown 2012-05-21 7865 } +b5254dd5fdd9ab NeilBrown 2012-05-21 7866 +230b55fa8d6400 NeilBrown 2017-10-17 7867 if ((test_bit(MD_HAS_JOURNAL, &mddev->flags) || journal_dev) && +230b55fa8d6400 NeilBrown 2017-10-17 7868 (mddev->bitmap_info.offset || mddev->bitmap_info.file)) { +230b55fa8d6400 NeilBrown 2017-10-17 7869 pr_notice("md/raid:%s: array cannot have both journal and bitmap\n", +230b55fa8d6400 NeilBrown 2017-10-17 7870 mdname(mddev)); +c567c86b90d471 Yu Kuai 2023-06-22 7871 return -EINVAL; +230b55fa8d6400 NeilBrown 2017-10-17 7872 } +230b55fa8d6400 NeilBrown 2017-10-17 7873 +91adb56473febe NeilBrown 2009-03-31 7874 if (mddev->reshape_position != MaxSector) { +91adb56473febe NeilBrown 2009-03-31 7875 /* Check that we can continue the reshape. +b5254dd5fdd9ab NeilBrown 2012-05-21 7876 * Difficulties arise if the stripe we would write to +b5254dd5fdd9ab NeilBrown 2012-05-21 7877 * next is at or after the stripe we would read from next. +b5254dd5fdd9ab NeilBrown 2012-05-21 7878 * For a reshape that changes the number of devices, this +b5254dd5fdd9ab NeilBrown 2012-05-21 7879 * is only possible for a very short time, and mdadm makes +b5254dd5fdd9ab NeilBrown 2012-05-21 7880 * sure that time appears to have past before assembling +b5254dd5fdd9ab NeilBrown 2012-05-21 7881 * the array. So we fail if that time hasn't passed. +b5254dd5fdd9ab NeilBrown 2012-05-21 7882 * For a reshape that keeps the number of devices the same +b5254dd5fdd9ab NeilBrown 2012-05-21 7883 * mdadm must be monitoring the reshape can keeping the +b5254dd5fdd9ab NeilBrown 2012-05-21 7884 * critical areas read-only and backed up. It will start +b5254dd5fdd9ab NeilBrown 2012-05-21 7885 * the array in read-only mode, so we check for that. +91adb56473febe NeilBrown 2009-03-31 7886 */ +91adb56473febe NeilBrown 2009-03-31 7887 sector_t here_new, here_old; +91adb56473febe NeilBrown 2009-03-31 7888 int old_disks; +18b0033491f584 Andre Noll 2009-03-31 7889 int max_degraded = (mddev->level == 6 ? 2 : 1); +05256d9884d327 NeilBrown 2015-07-15 7890 int chunk_sectors; +05256d9884d327 NeilBrown 2015-07-15 7891 int new_data_disks; +91adb56473febe NeilBrown 2009-03-31 7892 +713cf5a63954bd Shaohua Li 2015-08-13 7893 if (journal_dev) { +cc6167b4f3b3ca NeilBrown 2016-11-02 7894 pr_warn("md/raid:%s: don't support reshape with journal - aborting.\n", +713cf5a63954bd Shaohua Li 2015-08-13 7895 mdname(mddev)); +c567c86b90d471 Yu Kuai 2023-06-22 7896 return -EINVAL; +713cf5a63954bd Shaohua Li 2015-08-13 7897 } +713cf5a63954bd Shaohua Li 2015-08-13 7898 +88ce4930e2b803 NeilBrown 2009-03-31 7899 if (mddev->new_level != mddev->level) { +cc6167b4f3b3ca NeilBrown 2016-11-02 7900 pr_warn("md/raid:%s: unsupported reshape required - aborting.\n", +91adb56473febe NeilBrown 2009-03-31 7901 mdname(mddev)); +c567c86b90d471 Yu Kuai 2023-06-22 7902 return -EINVAL; +91adb56473febe NeilBrown 2009-03-31 7903 } +91adb56473febe NeilBrown 2009-03-31 7904 old_disks = mddev->raid_disks - mddev->delta_disks; +91adb56473febe NeilBrown 2009-03-31 7905 /* reshape_position must be on a new-stripe boundary, and one +91adb56473febe NeilBrown 2009-03-31 7906 * further up in new geometry must map after here in old +91adb56473febe NeilBrown 2009-03-31 7907 * geometry. +05256d9884d327 NeilBrown 2015-07-15 7908 * If the chunk sizes are different, then as we perform reshape +05256d9884d327 NeilBrown 2015-07-15 7909 * in units of the largest of the two, reshape_position needs +05256d9884d327 NeilBrown 2015-07-15 7910 * be a multiple of the largest chunk size times new data disks. +91adb56473febe NeilBrown 2009-03-31 7911 */ +91adb56473febe NeilBrown 2009-03-31 7912 here_new = mddev->reshape_position; +05256d9884d327 NeilBrown 2015-07-15 7913 chunk_sectors = max(mddev->chunk_sectors, mddev->new_chunk_sectors); +05256d9884d327 NeilBrown 2015-07-15 7914 new_data_disks = mddev->raid_disks - max_degraded; +05256d9884d327 NeilBrown 2015-07-15 7915 if (sector_div(here_new, chunk_sectors * new_data_disks)) { +cc6167b4f3b3ca NeilBrown 2016-11-02 7916 pr_warn("md/raid:%s: reshape_position not on a stripe boundary\n", +cc6167b4f3b3ca NeilBrown 2016-11-02 7917 mdname(mddev)); +c567c86b90d471 Yu Kuai 2023-06-22 7918 return -EINVAL; +91adb56473febe NeilBrown 2009-03-31 7919 } +05256d9884d327 NeilBrown 2015-07-15 7920 reshape_offset = here_new * chunk_sectors; +91adb56473febe NeilBrown 2009-03-31 7921 /* here_new is the stripe we will write to */ +91adb56473febe NeilBrown 2009-03-31 7922 here_old = mddev->reshape_position; +05256d9884d327 NeilBrown 2015-07-15 7923 sector_div(here_old, chunk_sectors * (old_disks-max_degraded)); +91adb56473febe NeilBrown 2009-03-31 7924 /* here_old is the first stripe that we might need to read +91adb56473febe NeilBrown 2009-03-31 7925 * from */ +67ac6011db5d2b NeilBrown 2009-08-13 7926 if (mddev->delta_disks == 0) { +67ac6011db5d2b NeilBrown 2009-08-13 7927 /* We cannot be sure it is safe to start an in-place +b5254dd5fdd9ab NeilBrown 2012-05-21 7928 * reshape. It is only safe if user-space is monitoring +67ac6011db5d2b NeilBrown 2009-08-13 7929 * and taking constant backups. +67ac6011db5d2b NeilBrown 2009-08-13 7930 * mdadm always starts a situation like this in +67ac6011db5d2b NeilBrown 2009-08-13 7931 * readonly mode so it can take control before +67ac6011db5d2b NeilBrown 2009-08-13 7932 * allowing any writes. So just check for that. +67ac6011db5d2b NeilBrown 2009-08-13 7933 */ +b5254dd5fdd9ab NeilBrown 2012-05-21 7934 if (abs(min_offset_diff) >= mddev->chunk_sectors && +b5254dd5fdd9ab NeilBrown 2012-05-21 7935 abs(min_offset_diff) >= mddev->new_chunk_sectors) +b5254dd5fdd9ab NeilBrown 2012-05-21 7936 /* not really in-place - so OK */; +b5254dd5fdd9ab NeilBrown 2012-05-21 7937 else if (mddev->ro == 0) { +cc6167b4f3b3ca NeilBrown 2016-11-02 7938 pr_warn("md/raid:%s: in-place reshape must be started in read-only mode - aborting\n", +0c55e02259115c NeilBrown 2010-05-03 7939 mdname(mddev)); +c567c86b90d471 Yu Kuai 2023-06-22 7940 return -EINVAL; +67ac6011db5d2b NeilBrown 2009-08-13 7941 } +2c810cddc44d6f NeilBrown 2012-05-21 7942 } else if (mddev->reshape_backwards +05256d9884d327 NeilBrown 2015-07-15 7943 ? (here_new * chunk_sectors + min_offset_diff <= +05256d9884d327 NeilBrown 2015-07-15 7944 here_old * chunk_sectors) +05256d9884d327 NeilBrown 2015-07-15 7945 : (here_new * chunk_sectors >= +05256d9884d327 NeilBrown 2015-07-15 7946 here_old * chunk_sectors + (-min_offset_diff))) { +91adb56473febe NeilBrown 2009-03-31 7947 /* Reading from the same stripe as writing to - bad */ +cc6167b4f3b3ca NeilBrown 2016-11-02 7948 pr_warn("md/raid:%s: reshape_position too early for auto-recovery - aborting.\n", +0c55e02259115c NeilBrown 2010-05-03 7949 mdname(mddev)); +c567c86b90d471 Yu Kuai 2023-06-22 7950 return -EINVAL; +91adb56473febe NeilBrown 2009-03-31 7951 } +cc6167b4f3b3ca NeilBrown 2016-11-02 7952 pr_debug("md/raid:%s: reshape will continue\n", mdname(mddev)); +91adb56473febe NeilBrown 2009-03-31 7953 /* OK, we should be able to continue; */ +91adb56473febe NeilBrown 2009-03-31 7954 } else { +91adb56473febe NeilBrown 2009-03-31 7955 BUG_ON(mddev->level != mddev->new_level); +91adb56473febe NeilBrown 2009-03-31 7956 BUG_ON(mddev->layout != mddev->new_layout); +664e7c413f1e90 Andre Noll 2009-06-18 7957 BUG_ON(mddev->chunk_sectors != mddev->new_chunk_sectors); +91adb56473febe NeilBrown 2009-03-31 7958 BUG_ON(mddev->delta_disks != 0); +91adb56473febe NeilBrown 2009-03-31 7959 } +245f46c2c221ef NeilBrown 2009-03-31 7960 +3418d036c81dcb Artur Paszkiewicz 2017-03-09 7961 if (test_bit(MD_HAS_JOURNAL, &mddev->flags) && +3418d036c81dcb Artur Paszkiewicz 2017-03-09 7962 test_bit(MD_HAS_PPL, &mddev->flags)) { +3418d036c81dcb Artur Paszkiewicz 2017-03-09 7963 pr_warn("md/raid:%s: using journal device and PPL not allowed - disabling PPL\n", +3418d036c81dcb Artur Paszkiewicz 2017-03-09 7964 mdname(mddev)); +3418d036c81dcb Artur Paszkiewicz 2017-03-09 7965 clear_bit(MD_HAS_PPL, &mddev->flags); +ddc088238cd698 Pawel Baldysiak 2017-08-16 7966 clear_bit(MD_HAS_MULTIPLE_PPLS, &mddev->flags); +3418d036c81dcb Artur Paszkiewicz 2017-03-09 7967 } +3418d036c81dcb Artur Paszkiewicz 2017-03-09 7968 +245f46c2c221ef NeilBrown 2009-03-31 7969 if (mddev->private == NULL) +91adb56473febe NeilBrown 2009-03-31 7970 conf = setup_conf(mddev); +245f46c2c221ef NeilBrown 2009-03-31 7971 else +245f46c2c221ef NeilBrown 2009-03-31 7972 conf = mddev->private; +91adb56473febe NeilBrown 2009-03-31 7973 +c567c86b90d471 Yu Kuai 2023-06-22 7974 if (IS_ERR(conf)) +c567c86b90d471 Yu Kuai 2023-06-22 7975 return PTR_ERR(conf); +91adb56473febe NeilBrown 2009-03-31 7976 +486b0f7bcd64be Song Liu 2016-08-19 7977 if (test_bit(MD_HAS_JOURNAL, &mddev->flags)) { +486b0f7bcd64be Song Liu 2016-08-19 7978 if (!journal_dev) { +cc6167b4f3b3ca NeilBrown 2016-11-02 7979 pr_warn("md/raid:%s: journal disk is missing, force array readonly\n", +7dde2ad3c5b4af Shaohua Li 2015-10-08 7980 mdname(mddev)); +7dde2ad3c5b4af Shaohua Li 2015-10-08 7981 mddev->ro = 1; +7dde2ad3c5b4af Shaohua Li 2015-10-08 7982 set_disk_ro(mddev->gendisk, 1); +907a99c314a5a6 Li Nan 2025-07-22 7983 } else if (mddev->resync_offset == MaxSector) +486b0f7bcd64be Song Liu 2016-08-19 7984 set_bit(MD_JOURNAL_CLEAN, &mddev->flags); +7dde2ad3c5b4af Shaohua Li 2015-10-08 7985 } +7dde2ad3c5b4af Shaohua Li 2015-10-08 7986 +b5254dd5fdd9ab NeilBrown 2012-05-21 7987 conf->min_offset_diff = min_offset_diff; +44693154398272 Yu Kuai 2023-05-23 7988 rcu_assign_pointer(mddev->thread, conf->thread); +44693154398272 Yu Kuai 2023-05-23 7989 rcu_assign_pointer(conf->thread, NULL); +91adb56473febe NeilBrown 2009-03-31 7990 mddev->private = conf; +91adb56473febe NeilBrown 2009-03-31 7991 +17045f52ac76d9 NeilBrown 2011-12-23 7992 for (i = 0; i < conf->raid_disks && conf->previous_raid_disks; +17045f52ac76d9 NeilBrown 2011-12-23 7993 i++) { +ad8606702f2689 Yu Kuai 2023-11-25 7994 rdev = conf->disks[i].rdev; +17045f52ac76d9 NeilBrown 2011-12-23 7995 if (!rdev) +c148ffdcda00b6 NeilBrown 2009-11-13 7996 continue; +ad8606702f2689 Yu Kuai 2023-11-25 7997 if (conf->disks[i].replacement && +17045f52ac76d9 NeilBrown 2011-12-23 7998 conf->reshape_progress != MaxSector) { +17045f52ac76d9 NeilBrown 2011-12-23 7999 /* replacements and reshape simply do not mix. */ +cc6167b4f3b3ca NeilBrown 2016-11-02 8000 pr_warn("md: cannot handle concurrent replacement and reshape.\n"); +17045f52ac76d9 NeilBrown 2011-12-23 8001 goto abort; +17045f52ac76d9 NeilBrown 2011-12-23 8002 } +7bc436121e557b Tom Rix 2023-03-27 8003 if (test_bit(In_sync, &rdev->flags)) +2f115882499f3e NeilBrown 2010-06-17 8004 continue; +c148ffdcda00b6 NeilBrown 2009-11-13 8005 /* This disc is not fully in-sync. However if it +c148ffdcda00b6 NeilBrown 2009-11-13 8006 * just stored parity (beyond the recovery_offset), +c148ffdcda00b6 NeilBrown 2009-11-13 8007 * when we don't need to be concerned about the +c148ffdcda00b6 NeilBrown 2009-11-13 8008 * array being dirty. +c148ffdcda00b6 NeilBrown 2009-11-13 8009 * When reshape goes 'backwards', we never have +c148ffdcda00b6 NeilBrown 2009-11-13 8010 * partially completed devices, so we only need +c148ffdcda00b6 NeilBrown 2009-11-13 8011 * to worry about reshape going forwards. +c148ffdcda00b6 NeilBrown 2009-11-13 8012 */ +c148ffdcda00b6 NeilBrown 2009-11-13 8013 /* Hack because v0.91 doesn't store recovery_offset properly. */ +c148ffdcda00b6 NeilBrown 2009-11-13 8014 if (mddev->major_version == 0 && +c148ffdcda00b6 NeilBrown 2009-11-13 8015 mddev->minor_version > 90) +c148ffdcda00b6 NeilBrown 2009-11-13 8016 rdev->recovery_offset = reshape_offset; +c148ffdcda00b6 NeilBrown 2009-11-13 8017 +c148ffdcda00b6 NeilBrown 2009-11-13 8018 if (rdev->recovery_offset < reshape_offset) { +c148ffdcda00b6 NeilBrown 2009-11-13 8019 /* We need to check old and new layout */ +c148ffdcda00b6 NeilBrown 2009-11-13 8020 if (!only_parity(rdev->raid_disk, +c148ffdcda00b6 NeilBrown 2009-11-13 8021 conf->algorithm, +c148ffdcda00b6 NeilBrown 2009-11-13 8022 conf->raid_disks, +c148ffdcda00b6 NeilBrown 2009-11-13 8023 conf->max_degraded)) +c148ffdcda00b6 NeilBrown 2009-11-13 8024 continue; +c148ffdcda00b6 NeilBrown 2009-11-13 8025 } +c148ffdcda00b6 NeilBrown 2009-11-13 8026 if (!only_parity(rdev->raid_disk, +c148ffdcda00b6 NeilBrown 2009-11-13 8027 conf->prev_algo, +c148ffdcda00b6 NeilBrown 2009-11-13 8028 conf->previous_raid_disks, +c148ffdcda00b6 NeilBrown 2009-11-13 8029 conf->max_degraded)) +c148ffdcda00b6 NeilBrown 2009-11-13 8030 continue; +c148ffdcda00b6 NeilBrown 2009-11-13 8031 dirty_parity_disks++; +c148ffdcda00b6 NeilBrown 2009-11-13 8032 } +91adb56473febe NeilBrown 2009-03-31 8033 +17045f52ac76d9 NeilBrown 2011-12-23 8034 /* +17045f52ac76d9 NeilBrown 2011-12-23 8035 * 0 for a fully functional array, 1 or 2 for a degraded array. +17045f52ac76d9 NeilBrown 2011-12-23 8036 */ +2e38a37f23c98d Song Liu 2017-01-24 8037 mddev->degraded = raid5_calc_degraded(conf); +91adb56473febe NeilBrown 2009-03-31 8038 +674806d62fb02a NeilBrown 2010-06-16 8039 if (has_failed(conf)) { +cc6167b4f3b3ca NeilBrown 2016-11-02 8040 pr_crit("md/raid:%s: not enough operational devices (%d/%d failed)\n", +02c2de8cc83588 NeilBrown 2006-10-03 8041 mdname(mddev), mddev->degraded, conf->raid_disks); +^1da177e4c3f41 Linus Torvalds 2005-04-16 8042 goto abort; +^1da177e4c3f41 Linus Torvalds 2005-04-16 8043 } +^1da177e4c3f41 Linus Torvalds 2005-04-16 8044 +91adb56473febe NeilBrown 2009-03-31 8045 /* device size must be a multiple of chunk size */ +c5eec74f252dfb Guoqing Jiang 2020-12-16 8046 mddev->dev_sectors &= ~((sector_t)mddev->chunk_sectors - 1); +91adb56473febe NeilBrown 2009-03-31 8047 mddev->resync_max_sectors = mddev->dev_sectors; +91adb56473febe NeilBrown 2009-03-31 8048 +c148ffdcda00b6 NeilBrown 2009-11-13 8049 if (mddev->degraded > dirty_parity_disks && +907a99c314a5a6 Li Nan 2025-07-22 8050 mddev->resync_offset != MaxSector) { +4536bf9ba2d034 Artur Paszkiewicz 2017-03-09 8051 if (test_bit(MD_HAS_PPL, &mddev->flags)) +4536bf9ba2d034 Artur Paszkiewicz 2017-03-09 8052 pr_crit("md/raid:%s: starting dirty degraded array with PPL.\n", +4536bf9ba2d034 Artur Paszkiewicz 2017-03-09 8053 mdname(mddev)); +4536bf9ba2d034 Artur Paszkiewicz 2017-03-09 8054 else if (mddev->ok_start_degraded) +cc6167b4f3b3ca NeilBrown 2016-11-02 8055 pr_crit("md/raid:%s: starting dirty degraded array - data corruption possible.\n", +6ff8d8ec06690f NeilBrown 2006-01-06 8056 mdname(mddev)); +6ff8d8ec06690f NeilBrown 2006-01-06 8057 else { +cc6167b4f3b3ca NeilBrown 2016-11-02 8058 pr_crit("md/raid:%s: cannot start dirty degraded array.\n", +^1da177e4c3f41 Linus Torvalds 2005-04-16 8059 mdname(mddev)); +^1da177e4c3f41 Linus Torvalds 2005-04-16 8060 goto abort; +^1da177e4c3f41 Linus Torvalds 2005-04-16 8061 } +6ff8d8ec06690f NeilBrown 2006-01-06 8062 } +^1da177e4c3f41 Linus Torvalds 2005-04-16 8063 cc6167b4f3b3ca NeilBrown 2016-11-02 8064 pr_info("md/raid:%s: raid level %d active with %d out of %d devices, algorithm %d\n", cc6167b4f3b3ca NeilBrown 2016-11-02 8065 mdname(mddev), conf->level, ^1da177e4c3f41 Linus Torvalds 2005-04-16 8066 mddev->raid_disks-mddev->degraded, mddev->raid_disks, @@ -60,9 +316,6 @@ f63f17350e5373 Christoph Hellwig 2024-03-03 8092 goto abort; 01fce9e38c0e92 Yu Kuai 2026-01-12 8098 845b9e229fe071 Artur Paszkiewicz 2017-04-04 8099 if (log_init(conf, journal_dev, raid5_has_ppl(conf))) 5aabf7c49d9ebe Song Liu 2016-11-17 @8100 goto abort; - -Presumably we should propagate the error code from log_init()? - 5c7e81c3de9eb3 Shaohua Li 2015-08-13 8101 ^1da177e4c3f41 Linus Torvalds 2005-04-16 8102 return 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 8103 abort: @@ -73,6 +326,7 @@ Presumably we should propagate the error code from log_init()? cc6167b4f3b3ca NeilBrown 2016-11-02 8108 pr_warn("md/raid:%s: failed to run raid set.\n", mdname(mddev)); f63f17350e5373 Christoph Hellwig 2024-03-03 8109 return ret; ^1da177e4c3f41 Linus Torvalds 2005-04-16 8110 } +^1da177e4c3f41 Linus Torvalds 2005-04-16 8111 -- 0-DAY CI Kernel Test Service diff --git a/a/content_digest b/N1/content_digest index e1472e5..609b629 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,26 +1,37 @@ - "ref\020260112042857.2334264-6-yukuai@fnnas.com\0" - "From\0Dan Carpenter <dan.carpenter@linaro.org>\0" + "From\0kernel test robot <lkp@intel.com>\0" "Subject\0Re: [PATCH v4 05/11] md/raid5: make sure max_sectors is not less than io_opt\0" - "Date\0Tue, 13 Jan 2026 08:06:05 +0300\0" - "To\0oe-kbuild@lists.linux.dev" - Yu Kuai <yukuai@fnnas.com> - linux-raid@vger.kernel.org - " linan122@huawei.com\0" + "Date\0Tue, 13 Jan 2026 06:15:30 +0800\0" + "To\0oe-kbuild@lists.linux.dev\0" "Cc\0lkp@intel.com" - oe-kbuild-all@lists.linux.dev - " yukuai@fnnas.com\0" + " Dan Carpenter <error27@gmail.com>\0" "\00:1\0" "b\0" + "BCC: lkp@intel.com\n" + "CC: oe-kbuild-all@lists.linux.dev\n" + "In-Reply-To: <20260112042857.2334264-6-yukuai@fnnas.com>\n" + "References: <20260112042857.2334264-6-yukuai@fnnas.com>\n" + "TO: Yu Kuai <yukuai@fnnas.com>\n" + "TO: linux-raid@vger.kernel.org\n" + "TO: linan122@huawei.com\n" + "CC: yukuai@fnnas.com\n" + "\n" "Hi Yu,\n" "\n" "kernel test robot noticed the following build warnings:\n" "\n" + "[auto build test WARNING on linus/master]\n" + "[also build test WARNING on v6.19-rc5 next-20260109]\n" + "[cannot apply to song-md/md-next]\n" + "[If your patch is applied to the wrong git tree, kindly drop us a note.\n" + "And when submitting patch, we suggest to use '--base' as documented in\n" "https://git-scm.com/docs/git-format-patch#_base_tree_information]\n" "\n" "url: https://github.com/intel-lab-lkp/linux/commits/Yu-Kuai/md-merge-mddev-has_superblock-into-mddev_flags/20260112-123233\n" "base: linus/master\n" "patch link: https://lore.kernel.org/r/20260112042857.2334264-6-yukuai%40fnnas.com\n" "patch subject: [PATCH v4 05/11] md/raid5: make sure max_sectors is not less than io_opt\n" + ":::::: branch date: 18 hours ago\n" + ":::::: commit date: 18 hours ago\n" "config: i386-randconfig-141-20260113 (https://download.01.org/0day-ci/archive/20260113/202601130531.LGfcZsa4-lkp@intel.com/config)\n" "compiler: gcc-14 (Debian 14.2.0-19) 14.2.0\n" "smatch version: v0.5.0-8985-g2614ff1a\n" @@ -28,14 +39,254 @@ "If you fix the issue in a separate patch/commit (i.e. not just a new version of\n" "the same patch/commit), kindly add following tags\n" "| Reported-by: kernel test robot <lkp@intel.com>\n" - "| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>\n" + "| Reported-by: Dan Carpenter <error27@gmail.com>\n" "| Closes: https://lore.kernel.org/r/202601130531.LGfcZsa4-lkp@intel.com/\n" "\n" "New smatch warnings:\n" "drivers/md/raid5.c:8100 raid5_run() warn: missing error code 'ret'\n" "\n" + "Old smatch warnings:\n" + "drivers/md/raid5.c:2880 raid5_end_write_request() error: uninitialized symbol 'rdev'.\n" + "drivers/md/raid5.c:2885 raid5_end_write_request() error: uninitialized symbol 'rdev'.\n" + "drivers/md/raid5.c:8580 raid5_start_reshape() warn: mixing irq and irqsave\n" + "\n" "vim +/ret +8100 drivers/md/raid5.c\n" "\n" + "16ef510139315a Christoph Hellwig 2020-09-24 7829 \n" + "849674e4fb175e Shaohua Li 2016-01-20 7830 static int raid5_run(struct mddev *mddev)\n" + "91adb56473febe NeilBrown 2009-03-31 7831 {\n" + "d1688a6d5515f1 NeilBrown 2011-10-11 7832 \tstruct r5conf *conf;\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 7833 \tint dirty_parity_disks = 0;\n" + "3cb03002000f13 NeilBrown 2011-10-11 7834 \tstruct md_rdev *rdev;\n" + "713cf5a63954bd Shaohua Li 2015-08-13 7835 \tstruct md_rdev *journal_dev = NULL;\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 7836 \tsector_t reshape_offset = 0;\n" + "c567c86b90d471 Yu Kuai 2023-06-22 7837 \tint i;\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7838 \tlong long min_offset_diff = 0;\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7839 \tint first = 1;\n" + "f63f17350e5373 Christoph Hellwig 2024-03-03 7840 \tint ret = -EIO;\n" + "91adb56473febe NeilBrown 2009-03-31 7841 \n" + "907a99c314a5a6 Li Nan 2025-07-22 7842 \tif (mddev->resync_offset != MaxSector)\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 7843 \t\tpr_notice(\"md/raid:%s: not clean -- starting background reconstruction\\n\",\n" + "8c6ac868b107ed Andre Noll 2009-06-18 7844 \t\t\t mdname(mddev));\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7845 \n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7846 \trdev_for_each(rdev, mddev) {\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7847 \t\tlong long diff;\n" + "713cf5a63954bd Shaohua Li 2015-08-13 7848 \n" + "f2076e7d0643d1 Shaohua Li 2015-10-08 7849 \t\tif (test_bit(Journal, &rdev->flags)) {\n" + "713cf5a63954bd Shaohua Li 2015-08-13 7850 \t\t\tjournal_dev = rdev;\n" + "f2076e7d0643d1 Shaohua Li 2015-10-08 7851 \t\t\tcontinue;\n" + "f2076e7d0643d1 Shaohua Li 2015-10-08 7852 \t\t}\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7853 \t\tif (rdev->raid_disk < 0)\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7854 \t\t\tcontinue;\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7855 \t\tdiff = (rdev->new_data_offset - rdev->data_offset);\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7856 \t\tif (first) {\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7857 \t\t\tmin_offset_diff = diff;\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7858 \t\t\tfirst = 0;\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7859 \t\t} else if (mddev->reshape_backwards &&\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7860 \t\t\t diff < min_offset_diff)\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7861 \t\t\tmin_offset_diff = diff;\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7862 \t\telse if (!mddev->reshape_backwards &&\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7863 \t\t\t diff > min_offset_diff)\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7864 \t\t\tmin_offset_diff = diff;\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7865 \t}\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7866 \n" + "230b55fa8d6400 NeilBrown 2017-10-17 7867 \tif ((test_bit(MD_HAS_JOURNAL, &mddev->flags) || journal_dev) &&\n" + "230b55fa8d6400 NeilBrown 2017-10-17 7868 \t (mddev->bitmap_info.offset || mddev->bitmap_info.file)) {\n" + "230b55fa8d6400 NeilBrown 2017-10-17 7869 \t\tpr_notice(\"md/raid:%s: array cannot have both journal and bitmap\\n\",\n" + "230b55fa8d6400 NeilBrown 2017-10-17 7870 \t\t\t mdname(mddev));\n" + "c567c86b90d471 Yu Kuai 2023-06-22 7871 \t\treturn -EINVAL;\n" + "230b55fa8d6400 NeilBrown 2017-10-17 7872 \t}\n" + "230b55fa8d6400 NeilBrown 2017-10-17 7873 \n" + "91adb56473febe NeilBrown 2009-03-31 7874 \tif (mddev->reshape_position != MaxSector) {\n" + "91adb56473febe NeilBrown 2009-03-31 7875 \t\t/* Check that we can continue the reshape.\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7876 \t\t * Difficulties arise if the stripe we would write to\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7877 \t\t * next is at or after the stripe we would read from next.\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7878 \t\t * For a reshape that changes the number of devices, this\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7879 \t\t * is only possible for a very short time, and mdadm makes\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7880 \t\t * sure that time appears to have past before assembling\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7881 \t\t * the array. So we fail if that time hasn't passed.\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7882 \t\t * For a reshape that keeps the number of devices the same\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7883 \t\t * mdadm must be monitoring the reshape can keeping the\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7884 \t\t * critical areas read-only and backed up. It will start\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7885 \t\t * the array in read-only mode, so we check for that.\n" + "91adb56473febe NeilBrown 2009-03-31 7886 \t\t */\n" + "91adb56473febe NeilBrown 2009-03-31 7887 \t\tsector_t here_new, here_old;\n" + "91adb56473febe NeilBrown 2009-03-31 7888 \t\tint old_disks;\n" + "18b0033491f584 Andre Noll 2009-03-31 7889 \t\tint max_degraded = (mddev->level == 6 ? 2 : 1);\n" + "05256d9884d327 NeilBrown 2015-07-15 7890 \t\tint chunk_sectors;\n" + "05256d9884d327 NeilBrown 2015-07-15 7891 \t\tint new_data_disks;\n" + "91adb56473febe NeilBrown 2009-03-31 7892 \n" + "713cf5a63954bd Shaohua Li 2015-08-13 7893 \t\tif (journal_dev) {\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 7894 \t\t\tpr_warn(\"md/raid:%s: don't support reshape with journal - aborting.\\n\",\n" + "713cf5a63954bd Shaohua Li 2015-08-13 7895 \t\t\t\tmdname(mddev));\n" + "c567c86b90d471 Yu Kuai 2023-06-22 7896 \t\t\treturn -EINVAL;\n" + "713cf5a63954bd Shaohua Li 2015-08-13 7897 \t\t}\n" + "713cf5a63954bd Shaohua Li 2015-08-13 7898 \n" + "88ce4930e2b803 NeilBrown 2009-03-31 7899 \t\tif (mddev->new_level != mddev->level) {\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 7900 \t\t\tpr_warn(\"md/raid:%s: unsupported reshape required - aborting.\\n\",\n" + "91adb56473febe NeilBrown 2009-03-31 7901 \t\t\t\tmdname(mddev));\n" + "c567c86b90d471 Yu Kuai 2023-06-22 7902 \t\t\treturn -EINVAL;\n" + "91adb56473febe NeilBrown 2009-03-31 7903 \t\t}\n" + "91adb56473febe NeilBrown 2009-03-31 7904 \t\told_disks = mddev->raid_disks - mddev->delta_disks;\n" + "91adb56473febe NeilBrown 2009-03-31 7905 \t\t/* reshape_position must be on a new-stripe boundary, and one\n" + "91adb56473febe NeilBrown 2009-03-31 7906 \t\t * further up in new geometry must map after here in old\n" + "91adb56473febe NeilBrown 2009-03-31 7907 \t\t * geometry.\n" + "05256d9884d327 NeilBrown 2015-07-15 7908 \t\t * If the chunk sizes are different, then as we perform reshape\n" + "05256d9884d327 NeilBrown 2015-07-15 7909 \t\t * in units of the largest of the two, reshape_position needs\n" + "05256d9884d327 NeilBrown 2015-07-15 7910 \t\t * be a multiple of the largest chunk size times new data disks.\n" + "91adb56473febe NeilBrown 2009-03-31 7911 \t\t */\n" + "91adb56473febe NeilBrown 2009-03-31 7912 \t\there_new = mddev->reshape_position;\n" + "05256d9884d327 NeilBrown 2015-07-15 7913 \t\tchunk_sectors = max(mddev->chunk_sectors, mddev->new_chunk_sectors);\n" + "05256d9884d327 NeilBrown 2015-07-15 7914 \t\tnew_data_disks = mddev->raid_disks - max_degraded;\n" + "05256d9884d327 NeilBrown 2015-07-15 7915 \t\tif (sector_div(here_new, chunk_sectors * new_data_disks)) {\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 7916 \t\t\tpr_warn(\"md/raid:%s: reshape_position not on a stripe boundary\\n\",\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 7917 \t\t\t\tmdname(mddev));\n" + "c567c86b90d471 Yu Kuai 2023-06-22 7918 \t\t\treturn -EINVAL;\n" + "91adb56473febe NeilBrown 2009-03-31 7919 \t\t}\n" + "05256d9884d327 NeilBrown 2015-07-15 7920 \t\treshape_offset = here_new * chunk_sectors;\n" + "91adb56473febe NeilBrown 2009-03-31 7921 \t\t/* here_new is the stripe we will write to */\n" + "91adb56473febe NeilBrown 2009-03-31 7922 \t\there_old = mddev->reshape_position;\n" + "05256d9884d327 NeilBrown 2015-07-15 7923 \t\tsector_div(here_old, chunk_sectors * (old_disks-max_degraded));\n" + "91adb56473febe NeilBrown 2009-03-31 7924 \t\t/* here_old is the first stripe that we might need to read\n" + "91adb56473febe NeilBrown 2009-03-31 7925 \t\t * from */\n" + "67ac6011db5d2b NeilBrown 2009-08-13 7926 \t\tif (mddev->delta_disks == 0) {\n" + "67ac6011db5d2b NeilBrown 2009-08-13 7927 \t\t\t/* We cannot be sure it is safe to start an in-place\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7928 \t\t\t * reshape. It is only safe if user-space is monitoring\n" + "67ac6011db5d2b NeilBrown 2009-08-13 7929 \t\t\t * and taking constant backups.\n" + "67ac6011db5d2b NeilBrown 2009-08-13 7930 \t\t\t * mdadm always starts a situation like this in\n" + "67ac6011db5d2b NeilBrown 2009-08-13 7931 \t\t\t * readonly mode so it can take control before\n" + "67ac6011db5d2b NeilBrown 2009-08-13 7932 \t\t\t * allowing any writes. So just check for that.\n" + "67ac6011db5d2b NeilBrown 2009-08-13 7933 \t\t\t */\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7934 \t\t\tif (abs(min_offset_diff) >= mddev->chunk_sectors &&\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7935 \t\t\t abs(min_offset_diff) >= mddev->new_chunk_sectors)\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7936 \t\t\t\t/* not really in-place - so OK */;\n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7937 \t\t\telse if (mddev->ro == 0) {\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 7938 \t\t\t\tpr_warn(\"md/raid:%s: in-place reshape must be started in read-only mode - aborting\\n\",\n" + "0c55e02259115c NeilBrown 2010-05-03 7939 \t\t\t\t\tmdname(mddev));\n" + "c567c86b90d471 Yu Kuai 2023-06-22 7940 \t\t\t\treturn -EINVAL;\n" + "67ac6011db5d2b NeilBrown 2009-08-13 7941 \t\t\t}\n" + "2c810cddc44d6f NeilBrown 2012-05-21 7942 \t\t} else if (mddev->reshape_backwards\n" + "05256d9884d327 NeilBrown 2015-07-15 7943 \t\t ? (here_new * chunk_sectors + min_offset_diff <=\n" + "05256d9884d327 NeilBrown 2015-07-15 7944 \t\t here_old * chunk_sectors)\n" + "05256d9884d327 NeilBrown 2015-07-15 7945 \t\t : (here_new * chunk_sectors >=\n" + "05256d9884d327 NeilBrown 2015-07-15 7946 \t\t here_old * chunk_sectors + (-min_offset_diff))) {\n" + "91adb56473febe NeilBrown 2009-03-31 7947 \t\t\t/* Reading from the same stripe as writing to - bad */\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 7948 \t\t\tpr_warn(\"md/raid:%s: reshape_position too early for auto-recovery - aborting.\\n\",\n" + "0c55e02259115c NeilBrown 2010-05-03 7949 \t\t\t\tmdname(mddev));\n" + "c567c86b90d471 Yu Kuai 2023-06-22 7950 \t\t\treturn -EINVAL;\n" + "91adb56473febe NeilBrown 2009-03-31 7951 \t\t}\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 7952 \t\tpr_debug(\"md/raid:%s: reshape will continue\\n\", mdname(mddev));\n" + "91adb56473febe NeilBrown 2009-03-31 7953 \t\t/* OK, we should be able to continue; */\n" + "91adb56473febe NeilBrown 2009-03-31 7954 \t} else {\n" + "91adb56473febe NeilBrown 2009-03-31 7955 \t\tBUG_ON(mddev->level != mddev->new_level);\n" + "91adb56473febe NeilBrown 2009-03-31 7956 \t\tBUG_ON(mddev->layout != mddev->new_layout);\n" + "664e7c413f1e90 Andre Noll 2009-06-18 7957 \t\tBUG_ON(mddev->chunk_sectors != mddev->new_chunk_sectors);\n" + "91adb56473febe NeilBrown 2009-03-31 7958 \t\tBUG_ON(mddev->delta_disks != 0);\n" + "91adb56473febe NeilBrown 2009-03-31 7959 \t}\n" + "245f46c2c221ef NeilBrown 2009-03-31 7960 \n" + "3418d036c81dcb Artur Paszkiewicz 2017-03-09 7961 \tif (test_bit(MD_HAS_JOURNAL, &mddev->flags) &&\n" + "3418d036c81dcb Artur Paszkiewicz 2017-03-09 7962 \t test_bit(MD_HAS_PPL, &mddev->flags)) {\n" + "3418d036c81dcb Artur Paszkiewicz 2017-03-09 7963 \t\tpr_warn(\"md/raid:%s: using journal device and PPL not allowed - disabling PPL\\n\",\n" + "3418d036c81dcb Artur Paszkiewicz 2017-03-09 7964 \t\t\tmdname(mddev));\n" + "3418d036c81dcb Artur Paszkiewicz 2017-03-09 7965 \t\tclear_bit(MD_HAS_PPL, &mddev->flags);\n" + "ddc088238cd698 Pawel Baldysiak 2017-08-16 7966 \t\tclear_bit(MD_HAS_MULTIPLE_PPLS, &mddev->flags);\n" + "3418d036c81dcb Artur Paszkiewicz 2017-03-09 7967 \t}\n" + "3418d036c81dcb Artur Paszkiewicz 2017-03-09 7968 \n" + "245f46c2c221ef NeilBrown 2009-03-31 7969 \tif (mddev->private == NULL)\n" + "91adb56473febe NeilBrown 2009-03-31 7970 \t\tconf = setup_conf(mddev);\n" + "245f46c2c221ef NeilBrown 2009-03-31 7971 \telse\n" + "245f46c2c221ef NeilBrown 2009-03-31 7972 \t\tconf = mddev->private;\n" + "91adb56473febe NeilBrown 2009-03-31 7973 \n" + "c567c86b90d471 Yu Kuai 2023-06-22 7974 \tif (IS_ERR(conf))\n" + "c567c86b90d471 Yu Kuai 2023-06-22 7975 \t\treturn PTR_ERR(conf);\n" + "91adb56473febe NeilBrown 2009-03-31 7976 \n" + "486b0f7bcd64be Song Liu 2016-08-19 7977 \tif (test_bit(MD_HAS_JOURNAL, &mddev->flags)) {\n" + "486b0f7bcd64be Song Liu 2016-08-19 7978 \t\tif (!journal_dev) {\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 7979 \t\t\tpr_warn(\"md/raid:%s: journal disk is missing, force array readonly\\n\",\n" + "7dde2ad3c5b4af Shaohua Li 2015-10-08 7980 \t\t\t\tmdname(mddev));\n" + "7dde2ad3c5b4af Shaohua Li 2015-10-08 7981 \t\t\tmddev->ro = 1;\n" + "7dde2ad3c5b4af Shaohua Li 2015-10-08 7982 \t\t\tset_disk_ro(mddev->gendisk, 1);\n" + "907a99c314a5a6 Li Nan 2025-07-22 7983 \t\t} else if (mddev->resync_offset == MaxSector)\n" + "486b0f7bcd64be Song Liu 2016-08-19 7984 \t\t\tset_bit(MD_JOURNAL_CLEAN, &mddev->flags);\n" + "7dde2ad3c5b4af Shaohua Li 2015-10-08 7985 \t}\n" + "7dde2ad3c5b4af Shaohua Li 2015-10-08 7986 \n" + "b5254dd5fdd9ab NeilBrown 2012-05-21 7987 \tconf->min_offset_diff = min_offset_diff;\n" + "44693154398272 Yu Kuai 2023-05-23 7988 \trcu_assign_pointer(mddev->thread, conf->thread);\n" + "44693154398272 Yu Kuai 2023-05-23 7989 \trcu_assign_pointer(conf->thread, NULL);\n" + "91adb56473febe NeilBrown 2009-03-31 7990 \tmddev->private = conf;\n" + "91adb56473febe NeilBrown 2009-03-31 7991 \n" + "17045f52ac76d9 NeilBrown 2011-12-23 7992 \tfor (i = 0; i < conf->raid_disks && conf->previous_raid_disks;\n" + "17045f52ac76d9 NeilBrown 2011-12-23 7993 \t i++) {\n" + "ad8606702f2689 Yu Kuai 2023-11-25 7994 \t\trdev = conf->disks[i].rdev;\n" + "17045f52ac76d9 NeilBrown 2011-12-23 7995 \t\tif (!rdev)\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 7996 \t\t\tcontinue;\n" + "ad8606702f2689 Yu Kuai 2023-11-25 7997 \t\tif (conf->disks[i].replacement &&\n" + "17045f52ac76d9 NeilBrown 2011-12-23 7998 \t\t conf->reshape_progress != MaxSector) {\n" + "17045f52ac76d9 NeilBrown 2011-12-23 7999 \t\t\t/* replacements and reshape simply do not mix. */\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 8000 \t\t\tpr_warn(\"md: cannot handle concurrent replacement and reshape.\\n\");\n" + "17045f52ac76d9 NeilBrown 2011-12-23 8001 \t\t\tgoto abort;\n" + "17045f52ac76d9 NeilBrown 2011-12-23 8002 \t\t}\n" + "7bc436121e557b Tom Rix 2023-03-27 8003 \t\tif (test_bit(In_sync, &rdev->flags))\n" + "2f115882499f3e NeilBrown 2010-06-17 8004 \t\t\tcontinue;\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8005 \t\t/* This disc is not fully in-sync. However if it\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8006 \t\t * just stored parity (beyond the recovery_offset),\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8007 \t\t * when we don't need to be concerned about the\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8008 \t\t * array being dirty.\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8009 \t\t * When reshape goes 'backwards', we never have\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8010 \t\t * partially completed devices, so we only need\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8011 \t\t * to worry about reshape going forwards.\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8012 \t\t */\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8013 \t\t/* Hack because v0.91 doesn't store recovery_offset properly. */\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8014 \t\tif (mddev->major_version == 0 &&\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8015 \t\t mddev->minor_version > 90)\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8016 \t\t\trdev->recovery_offset = reshape_offset;\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8017 \n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8018 \t\tif (rdev->recovery_offset < reshape_offset) {\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8019 \t\t\t/* We need to check old and new layout */\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8020 \t\t\tif (!only_parity(rdev->raid_disk,\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8021 \t\t\t\t\t conf->algorithm,\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8022 \t\t\t\t\t conf->raid_disks,\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8023 \t\t\t\t\t conf->max_degraded))\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8024 \t\t\t\tcontinue;\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8025 \t\t}\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8026 \t\tif (!only_parity(rdev->raid_disk,\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8027 \t\t\t\t conf->prev_algo,\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8028 \t\t\t\t conf->previous_raid_disks,\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8029 \t\t\t\t conf->max_degraded))\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8030 \t\t\tcontinue;\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8031 \t\tdirty_parity_disks++;\n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8032 \t}\n" + "91adb56473febe NeilBrown 2009-03-31 8033 \n" + "17045f52ac76d9 NeilBrown 2011-12-23 8034 \t/*\n" + "17045f52ac76d9 NeilBrown 2011-12-23 8035 \t * 0 for a fully functional array, 1 or 2 for a degraded array.\n" + "17045f52ac76d9 NeilBrown 2011-12-23 8036 \t */\n" + "2e38a37f23c98d Song Liu 2017-01-24 8037 \tmddev->degraded = raid5_calc_degraded(conf);\n" + "91adb56473febe NeilBrown 2009-03-31 8038 \n" + "674806d62fb02a NeilBrown 2010-06-16 8039 \tif (has_failed(conf)) {\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 8040 \t\tpr_crit(\"md/raid:%s: not enough operational devices (%d/%d failed)\\n\",\n" + "02c2de8cc83588 NeilBrown 2006-10-03 8041 \t\t\tmdname(mddev), mddev->degraded, conf->raid_disks);\n" + "^1da177e4c3f41 Linus Torvalds 2005-04-16 8042 \t\tgoto abort;\n" + "^1da177e4c3f41 Linus Torvalds 2005-04-16 8043 \t}\n" + "^1da177e4c3f41 Linus Torvalds 2005-04-16 8044 \n" + "91adb56473febe NeilBrown 2009-03-31 8045 \t/* device size must be a multiple of chunk size */\n" + "c5eec74f252dfb Guoqing Jiang 2020-12-16 8046 \tmddev->dev_sectors &= ~((sector_t)mddev->chunk_sectors - 1);\n" + "91adb56473febe NeilBrown 2009-03-31 8047 \tmddev->resync_max_sectors = mddev->dev_sectors;\n" + "91adb56473febe NeilBrown 2009-03-31 8048 \n" + "c148ffdcda00b6 NeilBrown 2009-11-13 8049 \tif (mddev->degraded > dirty_parity_disks &&\n" + "907a99c314a5a6 Li Nan 2025-07-22 8050 \t mddev->resync_offset != MaxSector) {\n" + "4536bf9ba2d034 Artur Paszkiewicz 2017-03-09 8051 \t\tif (test_bit(MD_HAS_PPL, &mddev->flags))\n" + "4536bf9ba2d034 Artur Paszkiewicz 2017-03-09 8052 \t\t\tpr_crit(\"md/raid:%s: starting dirty degraded array with PPL.\\n\",\n" + "4536bf9ba2d034 Artur Paszkiewicz 2017-03-09 8053 \t\t\t\tmdname(mddev));\n" + "4536bf9ba2d034 Artur Paszkiewicz 2017-03-09 8054 \t\telse if (mddev->ok_start_degraded)\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 8055 \t\t\tpr_crit(\"md/raid:%s: starting dirty degraded array - data corruption possible.\\n\",\n" + "6ff8d8ec06690f NeilBrown 2006-01-06 8056 \t\t\t\tmdname(mddev));\n" + "6ff8d8ec06690f NeilBrown 2006-01-06 8057 \t\telse {\n" + "cc6167b4f3b3ca NeilBrown 2016-11-02 8058 \t\t\tpr_crit(\"md/raid:%s: cannot start dirty degraded array.\\n\",\n" + "^1da177e4c3f41 Linus Torvalds 2005-04-16 8059 \t\t\t\tmdname(mddev));\n" + "^1da177e4c3f41 Linus Torvalds 2005-04-16 8060 \t\t\tgoto abort;\n" + "^1da177e4c3f41 Linus Torvalds 2005-04-16 8061 \t\t}\n" + "6ff8d8ec06690f NeilBrown 2006-01-06 8062 \t}\n" + "^1da177e4c3f41 Linus Torvalds 2005-04-16 8063 \n" "cc6167b4f3b3ca NeilBrown 2016-11-02 8064 \tpr_info(\"md/raid:%s: raid level %d active with %d out of %d devices, algorithm %d\\n\",\n" "cc6167b4f3b3ca NeilBrown 2016-11-02 8065 \t\tmdname(mddev), conf->level,\n" "^1da177e4c3f41 Linus Torvalds 2005-04-16 8066 \t\tmddev->raid_disks-mddev->degraded, mddev->raid_disks,\n" @@ -73,9 +324,6 @@ "01fce9e38c0e92 Yu Kuai 2026-01-12 8098 \n" "845b9e229fe071 Artur Paszkiewicz 2017-04-04 8099 \tif (log_init(conf, journal_dev, raid5_has_ppl(conf)))\n" "5aabf7c49d9ebe Song Liu 2016-11-17 @8100 \t\tgoto abort;\n" - "\n" - "Presumably we should propagate the error code from log_init()?\n" - "\n" "5c7e81c3de9eb3 Shaohua Li 2015-08-13 8101 \n" "^1da177e4c3f41 Linus Torvalds 2005-04-16 8102 \treturn 0;\n" "^1da177e4c3f41 Linus Torvalds 2005-04-16 8103 abort:\n" @@ -86,9 +334,10 @@ "cc6167b4f3b3ca NeilBrown 2016-11-02 8108 \tpr_warn(\"md/raid:%s: failed to run raid set.\\n\", mdname(mddev));\n" "f63f17350e5373 Christoph Hellwig 2024-03-03 8109 \treturn ret;\n" "^1da177e4c3f41 Linus Torvalds 2005-04-16 8110 }\n" + "^1da177e4c3f41 Linus Torvalds 2005-04-16 8111 \n" "\n" "-- \n" "0-DAY CI Kernel Test Service\n" https://github.com/intel/lkp-tests/wiki -3fdbc810032302be86d1a99a36232f530e8d9416634947280cd1a44c9abf907c +a61c071b9768ee3ff7a8e63c29e8d5eb24422d6b1057e197669a03686b629407
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.