From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <44B53BE8.5030309@stc.donpac.ru> Date: Wed, 12 Jul 2006 22:14:00 +0400 From: Eugene Prokopiev User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.7.2) Gecko/20040808 X-Accept-Language: ru-ru, ru MIME-Version: 1.0 To: ALT Linux Sisyphus discussion list References: <44B4F747.6070108@stc.donpac.ru> <20060712141206.GE15699@master.mivlgu.local> In-Reply-To: <20060712141206.GE15699@master.mivlgu.local> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [sisyphus] mdadm: No arrays found in config file X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.7 Precedence: list Reply-To: ALT Linux Sisyphus discussion list List-Id: ALT Linux Sisyphus discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Jul 2006 18:14:03 -0000 Archived-At: List-Archive: List-Post: вообще-то, на момент вызова: >># mdadm --assemble --scan уже было: # cat /proc/mdstat Personalities : [raid0] [raid1] md1 : active raid1 hdc3[0] hda3[1] 77071744 blocks [2/2] [UU] md0 : active raid1 hdc1[0] hda1[1] 96256 blocks [2/2] [UU] unused devices: Но раньше это не было проблемой. Я попытался запустить mdadm (и без патчей), собранный с отладочной информацией, под gdb: # gdb mdadm (gdb) break main Breakpoint 1 at 0x8049a50: file mdadm.c, line 40. (gdb) run --assemble --scan Starting program: /home/john/mdadm --assemble --scan Breakpoint 1, main (argc=3, argv=0xbf853f64) at mdadm.c:40 warning: Source file is more recent than executable. 40 int mode = 0; (gdb) next 47 int chunk = 0; (gdb) next 48 long long size = -1; (gdb) next 49 int level = UnSet; (gdb) next 50 int layout = UnSet; (gdb) next 51 int raiddisks = 0; (gdb) next 52 int max_disks = MD_SB_DISKS; /* just a default */ (gdb) next 53 int sparedisks = 0; (gdb) next 55 char *configfile = NULL; (gdb) next 57 char *update = NULL; (gdb) next 58 int scan = 0; (gdb) next 59 char devmode = 0; (gdb) next 60 int runstop = 0; (gdb) next 61 int readonly = 0; (gdb) next 62 int write_behind = 0; (gdb) next 63 int bitmap_fd = -1; (gdb) next 64 char *bitmap_file = NULL; (gdb) next 65 char *backup_file = NULL; (gdb) next 66 int bitmap_chunk = UnSet; (gdb) next 67 int SparcAdjust = 0; (gdb) next 68 mddev_dev_t devlist = NULL; (gdb) next 69 mddev_dev_t *devlistend = & devlist; (gdb) next 71 int devs_found = 0; (gdb) next 72 int verbose = 0; (gdb) next 73 int quiet = 0; (gdb) next 74 int brief = 0; (gdb) next 75 int force = 0; (gdb) next 76 int test = 0; (gdb) next 77 int assume_clean = 0; (gdb) next 88 int autof = 0; (gdb) next 90 char *homehost = NULL; (gdb) next 92 char *mailaddr = NULL; (gdb) next 93 char *program = NULL; (gdb) next 94 int delay = 0; (gdb) next 95 int daemonise = 0; (gdb) next 96 char *pidfile = NULL; (gdb) next 97 int oneshot = 0; (gdb) next 98 struct supertype *ss = NULL; (gdb) next 99 int writemostly = 0; (gdb) next 100 int re_add = 0; (gdb) next 101 char *shortopt = short_options; (gdb) next 102 int dosyslog = 0; (gdb) next 103 int auto_update_home = 0; (gdb) next 106 int print_help = 0; (gdb) next 108 int mdfd = -1; (gdb) next 110 srandom(time(0) ^ getpid()); (gdb) next 112 ident.uuid_set=0; (gdb) next 113 ident.level = UnSet; (gdb) next 114 ident.raid_disks = UnSet; (gdb) next 115 ident.super_minor= UnSet; (gdb) next 116 ident.devices=0; (gdb) next 117 ident.spare_group = NULL; (gdb) 118 ident.autof = 0; (gdb) next 119 ident.st = NULL; (gdb) next 120 ident.bitmap_fd = -1; (gdb) next 121 ident.bitmap_file = NULL; (gdb) next 122 ident.name[0] = 0; (gdb) 124 while ((option_index = -1) , (gdb) next 128 int newmode = mode; (gdb) next 130 switch(opt) { (gdb) next 173 switch(opt) { (gdb) next 188 case 'A': newmode = ASSEMBLE; shortopt = short_bitmap_auto_options; break; (gdb) next 205 if (mode && newmode == mode) { (gdb) next 207 } else if (mode && newmode != mode) { (gdb) next 218 } else if (!mode && newmode) { (gdb) next 219 mode = newmode; (gdb) next 262 switch(opt) { (gdb) next 124 while ((option_index = -1) , (gdb) next 128 int newmode = mode; (gdb) next 130 switch(opt) { (gdb) next 173 switch(opt) { (gdb) next 205 if (mode && newmode == mode) { (gdb) next 262 switch(opt) { (gdb) next 272 if (opt == 1) { (gdb) next 303 switch (O(mode,opt)) { (gdb) next 613 scan = 1; (gdb) next 614 continue; (gdb) next 124 while ((option_index = -1) , (gdb) next 832 if (print_help) { (gdb) next 850 if (!mode && devs_found) { (gdb) next 856 if (!mode) { (gdb) next 870 if (mode==MANAGE || mode == BUILD || mode == CREATE || mode == GROW || (gdb) next 892 if (raiddisks) { (gdb) next 905 if (sparedisks) { (gdb) next 913 if (homehost == NULL) (gdb) next 914 homehost = conf_get_homehost(configfile); (gdb) next 915 if (homehost && strcmp(homehost, "")==0) { (gdb) next 922 rv = 0; (gdb) next 923 switch(mode) { (gdb) next 937 if (devs_found == 1 && ident.uuid_set == 0 && (gdb) next 957 } else if (!scan) (gdb) next 961 else if (devs_found>0) { (gdb) next 990 mddev_ident_t array_list = conf_get_ident(configfile, NULL); (gdb) next 991 mddev_dev_t devlist = conf_get_devs(configfile); (gdb) next 992 int cnt = 0; (gdb) next 993 if (devlist == NULL) { (gdb) next 997 if (update) { (gdb) next 1001 if (backup_file) { (gdb) next 1005 for (; array_list; array_list = array_list->next) { (gdb) next 1007 mdfd = open_mddev(array_list->devname, (gdb) next 1009 if (mdfd < 0) { (gdb) next 1013 if (ioctl(mdfd, GET_ARRAY_INFO, &array)>=0) (gdb) next 1023 close(mdfd); (gdb) next 1005 for (; array_list; array_list = array_list->next) { (gdb) next 1007 mdfd = open_mddev(array_list->devname, (gdb) next 1009 if (mdfd < 0) { (gdb) next 1013 if (ioctl(mdfd, GET_ARRAY_INFO, &array)>=0) (gdb) next 1023 close(mdfd); (gdb) next 1005 for (; array_list; array_list = array_list->next) { (gdb) next 1025 if (homehost) { (gdb) next 1075 } else if (cnt == 0 && rv == 0) { (gdb) next 1076 fprintf(stderr, Name ": No arrays found in config file\n"); (gdb) next mdadm: No arrays found in config file 1077 rv = 1; (gdb) Но понять назначение переменных cnt и rv в плохо прокомментрованном коде я не могу :( Поможете? -- С уважением, Прокопьев Евгений