• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asus-wl-520gu-7.0.1.45/src/linux/linux/drivers/md/

Lines Matching defs:rdev

224 	mdk_rdev_t * rdev;
227 ITERATE_RDEV(mddev,rdev,tmp) {
228 if (rdev->desc_nr == nr)
229 return rdev;
237 mdk_rdev_t *rdev;
239 ITERATE_RDEV(mddev,rdev,tmp) {
240 if (rdev->dev == dev)
241 return rdev;
314 mdk_rdev_t * rdev;
326 ITERATE_RDEV(mddev,rdev,tmp) {
327 rdev->size &= mask;
328 md_size[mdidx(mddev)] += rdev->size;
344 mdk_rdev_t *rdev;
350 ITERATE_RDEV(mddev,rdev,tmp) {
351 if (rdev->faulty) {
353 mdidx(mddev), partition_name(rdev->dev));
359 ITERATE_RDEV(mddev,rdev,tmp) {
376 ITERATE_RDEV(mddev,rdev,tmp) {
377 if (rdev->desc_nr == i)
443 static int alloc_disk_sb(mdk_rdev_t * rdev)
445 if (rdev->sb)
448 rdev->sb = (mdp_super_t *) __get_free_page(GFP_KERNEL);
449 if (!rdev->sb) {
453 md_clear_page(rdev->sb);
458 static void free_disk_sb(mdk_rdev_t * rdev)
460 if (rdev->sb) {
461 free_page((unsigned long) rdev->sb);
462 rdev->sb = NULL;
463 rdev->sb_offset = 0;
464 rdev->size = 0;
466 if (!rdev->faulty)
471 static int read_disk_sb(mdk_rdev_t * rdev)
475 kdev_t dev = rdev->dev;
479 if (!rdev->sb) {
488 sb_offset = calc_dev_sboffset(rdev->dev, rdev->mddev, 1);
489 rdev->sb_offset = sb_offset;
496 memcpy (rdev->sb, sb, MD_SB_BYTES);
498 printk(NO_SB,partition_name(rdev->dev));
501 printk(KERN_INFO " [events: %08lx]\n", (unsigned long)rdev->sb->events_lo);
524 static int check_disk_sb(mdk_rdev_t * rdev)
529 sb = rdev->sb;
536 printk(BAD_MAGIC, partition_name(rdev->dev));
541 printk(BAD_MINOR, partition_name(rdev->dev), sb->md_minor);
546 printk(BAD_CSUM, partition_name(rdev->dev));
569 mdk_rdev_t *rdev;
571 ITERATE_RDEV(mddev,rdev,tmp)
572 if (dev_unit(rdev->dev) == dev_unit(dev))
573 return rdev;
581 mdk_rdev_t *rdev;
583 ITERATE_RDEV(mddev1,rdev,tmp)
584 if (match_dev_unit(mddev2, rdev->dev))
593 static void bind_rdev_to_array(mdk_rdev_t * rdev, mddev_t * mddev)
597 if (rdev->mddev) {
601 same_pdev = match_dev_unit(mddev, rdev->dev);
606 mdidx(mddev), partition_name(rdev->dev),
609 md_list_add(&rdev->same_set, &mddev->disks);
610 rdev->mddev = mddev;
612 printk(KERN_INFO "md: bind<%s,%d>\n", partition_name(rdev->dev), mddev->nb_dev);
615 static void unbind_rdev_from_array(mdk_rdev_t * rdev)
617 if (!rdev->mddev) {
621 md_list_del(&rdev->same_set);
622 MD_INIT_LIST_HEAD(&rdev->same_set);
623 rdev->mddev->nb_dev--;
624 printk(KERN_INFO "md: unbind<%s,%d>\n", partition_name(rdev->dev),
625 rdev->mddev->nb_dev);
626 rdev->mddev = NULL;
636 static int lock_rdev(mdk_rdev_t *rdev)
641 bdev = bdget(rdev->dev);
646 rdev->bdev = bdev;
650 static void unlock_rdev(mdk_rdev_t *rdev)
652 struct block_device *bdev = rdev->bdev;
653 rdev->bdev = NULL;
661 static void export_rdev(mdk_rdev_t * rdev)
663 printk(KERN_INFO "md: export_rdev(%s)\n",partition_name(rdev->dev));
664 if (rdev->mddev)
666 unlock_rdev(rdev);
667 free_disk_sb(rdev);
668 md_list_del(&rdev->all);
669 MD_INIT_LIST_HEAD(&rdev->all);
670 if (rdev->pending.next != &rdev->pending) {
672 partition_name(rdev->dev));
673 md_list_del(&rdev->pending);
674 MD_INIT_LIST_HEAD(&rdev->pending);
677 md_autodetect_dev(rdev->dev);
679 rdev->dev = 0;
680 rdev->faulty = 0;
681 kfree(rdev);
684 static void kick_rdev_from_array(mdk_rdev_t * rdev)
686 unbind_rdev_from_array(rdev);
687 export_rdev(rdev);
693 mdk_rdev_t *rdev;
701 ITERATE_RDEV(mddev,rdev,tmp) {
702 if (!rdev->mddev) {
706 kick_rdev_from_array(rdev);
783 static void print_rdev(mdk_rdev_t *rdev)
785 printk(KERN_INFO "md: rdev %s: O:%s, SZ:%08ld F:%d DN:%d ",
786 partition_name(rdev->dev), partition_name(rdev->old_dev),
787 rdev->size, rdev->faulty, rdev->desc_nr);
788 if (rdev->sb) {
789 printk(KERN_INFO "md: rdev superblock:\n");
790 print_sb(rdev->sb);
792 printk(KERN_INFO "md: no rdev superblock!\n");
798 mdk_rdev_t *rdev;
808 ITERATE_RDEV(mddev,rdev,tmp2)
809 printk("<%s>", partition_name(rdev->dev));
817 ITERATE_RDEV(mddev,rdev,tmp2)
818 print_rdev(rdev);
876 mdk_rdev_t *rdev;
880 rdev = md_list_entry(tmp, mdk_rdev_t, all);
881 if (rdev->dev == dev)
882 return rdev;
891 static int write_disk_sb(mdk_rdev_t * rdev)
898 if (!rdev->sb) {
902 if (rdev->faulty) {
906 if (rdev->sb->md_magic != MD_SB_MAGIC) {
911 dev = rdev->dev;
912 sb_offset = calc_dev_sboffset(dev, rdev->mddev, 1);
913 if (rdev->sb_offset != sb_offset) {
915 partition_name(dev), rdev->sb_offset, sb_offset);
923 size = calc_dev_size(dev, rdev->mddev, 1);
924 if (size != rdev->size) {
926 partition_name(dev), rdev->size, size);
940 memcpy(sb, rdev->sb, MD_SB_BYTES);
953 static void set_this_disk(mddev_t *mddev, mdk_rdev_t *rdev)
960 if (MKDEV(desc->major,desc->minor) == rdev->dev) {
961 rdev->sb->this_disk = *desc;
962 rdev->desc_nr = desc->number;
975 mdk_rdev_t *rdev;
979 ITERATE_RDEV(mddev,rdev,tmp) {
980 if (rdev->faulty || rdev->alias_device)
982 sb = rdev->sb;
984 set_this_disk(mddev, rdev);
994 mdk_rdev_t *rdev;
1028 ITERATE_RDEV(mddev,rdev,tmp) {
1030 if (rdev->faulty)
1032 if (rdev->alias_device)
1035 printk("%s ", partition_name(rdev->dev));
1036 if (!rdev->faulty && !rdev->alias_device) {
1038 (unsigned long)rdev->sb->events_lo);
1039 err += write_disk_sb(rdev);
1061 * a faulty rdev _never_ has rdev->sb set.
1066 mdk_rdev_t *rdev;
1072 rdev = (mdk_rdev_t *) kmalloc(sizeof(*rdev), GFP_KERNEL);
1073 if (!rdev) {
1077 memset(rdev, 0, sizeof(*rdev));
1086 if ((err = alloc_disk_sb(rdev)))
1089 rdev->dev = newdev;
1090 if (lock_rdev(rdev)) {
1096 rdev->desc_nr = -1;
1097 rdev->faulty = 0;
1110 if ((err = read_disk_sb(rdev))) {
1115 if ((err = check_disk_sb(rdev))) {
1121 if (rdev->sb->level != -4) {
1122 rdev->old_dev = MKDEV(rdev->sb->this_disk.major,
1123 rdev->sb->this_disk.minor);
1124 rdev->desc_nr = rdev->sb->this_disk.number;
1126 rdev->old_dev = MKDEV(0, 0);
1127 rdev->desc_nr = -1;
1130 md_list_add(&rdev->all, &all_raid_disks);
1131 MD_INIT_LIST_HEAD(&rdev->pending);
1133 if (rdev->faulty && rdev->sb)
1134 free_disk_sb(rdev);
1138 if (rdev->sb) {
1139 if (rdev->bdev)
1140 unlock_rdev(rdev);
1141 free_disk_sb(rdev);
1143 kfree(rdev);
1170 mdk_rdev_t *rdev, *rdev2, *freshest;
1176 ITERATE_RDEV(mddev,rdev,tmp) {
1177 if (rdev->faulty) {
1181 if (!rdev->sb) {
1185 if (check_disk_sb(rdev))
1195 ITERATE_RDEV(mddev,rdev,tmp) {
1197 sb = rdev->sb;
1200 if (!sb_equal(sb, rdev->sb)) {
1201 printk(INCONSISTENT, partition_name(rdev->dev));
1202 kick_rdev_from_array(rdev);
1218 ITERATE_RDEV(mddev,rdev,tmp) {
1225 if (calc_sb_csum(rdev->sb) != rdev->sb->sb_csum) {
1226 if (rdev->sb->events_lo || rdev->sb->events_hi)
1227 if ((rdev->sb->events_lo--)==0)
1228 rdev->sb->events_hi--;
1232 partition_name(rdev->dev),
1233 (unsigned long)rdev->sb->events_lo);
1235 freshest = rdev;
1241 ev1 = md_event(rdev->sb);
1246 freshest = rdev;
1261 ITERATE_RDEV(mddev,rdev,tmp) {
1266 ev1 = md_event(rdev->sb);
1271 partition_name(rdev->dev));
1272 kick_rdev_from_array(rdev);
1282 ITERATE_RDEV(mddev,rdev,tmp) {
1284 if (rdev->faulty || rdev->alias_device) {
1288 ev1 = md_event(rdev->sb);
1292 if ((rdev->dev != rdev->old_dev) &&
1297 partition_name(rdev->old_dev), partition_name(rdev->dev));
1298 if (rdev->desc_nr == -1) {
1302 desc = &sb->disks[rdev->desc_nr];
1303 if (rdev->old_dev != MKDEV(desc->major, desc->minor)) {
1307 desc->major = MAJOR(rdev->dev);
1308 desc->minor = MINOR(rdev->dev);
1309 desc = &rdev->sb->this_disk;
1310 desc->major = MAJOR(rdev->dev);
1311 desc->minor = MINOR(rdev->dev);
1341 ITERATE_RDEV(mddev,rdev,tmp) {
1342 if (rdev->desc_nr != desc->number)
1345 mdidx(mddev),partition_name(rdev->dev));
1346 kick_rdev_from_array(rdev);
1362 rdev = find_rdev(mddev, dev);
1363 if(rdev)
1372 * Is this device present in the rdev ring?
1375 ITERATE_RDEV(mddev,rdev,tmp) {
1379 * we cannot check rdev->number.
1382 if ((sb->level == -4) && (rdev->dev ==
1387 if (rdev->desc_nr == desc->number) {
1402 * superblock are in the rdev ring.
1420 rdev = find_rdev(mddev, dev);
1421 if (!rdev) {
1432 if ((rdev->desc_nr != -1) && (rdev->desc_nr != i)) {
1436 rdev->desc_nr = i;
1438 rdev->alias_device = 1;
1448 ITERATE_RDEV(mddev,rdev,tmp) {
1449 if (rdev->desc_nr == -1)
1450 kick_rdev_from_array(rdev);
1457 ITERATE_RDEV(mddev,rdev,tmp) {
1458 if (rdev->desc_nr == -1) {
1466 if ((rdev2 != rdev) &&
1467 (rdev2->desc_nr == rdev->desc_nr)) {
1476 if ((rdev2 != rdev) &&
1477 (rdev2->dev == rdev->dev)) {
1516 mdk_rdev_t *rdev;
1524 ITERATE_RDEV(mddev,rdev,tmp) {
1525 if (rdev->faulty)
1527 if (rdev->size) {
1531 rdev->size = calc_dev_size(rdev->dev, mddev, persistent);
1532 if (rdev->size < sb->chunk_size / 1024) {
1535 partition_name(rdev->dev),
1536 rdev->size, sb->chunk_size / 1024);
1611 mdk_rdev_t *rdev;
1703 ITERATE_RDEV(mddev,rdev,tmp) {
1704 if (rdev->faulty)
1706 invalidate_device(rdev->dev, 1);
1707 if (get_hardsect_size(rdev->dev)
1710 get_hardsect_size(rdev->dev);
1881 mdk_rdev_t *rdev;
1892 ITERATE_RDEV(mddev,rdev,tmp) {
1893 printk("<%s>", partition_name(rdev->dev));
1924 mdk_rdev_t *rdev0, *rdev;
1936 ITERATE_RDEV_PENDING(rdev,tmp) {
1937 if (uuid_equal(rdev0, rdev)) {
1938 if (!sb_equal(rdev0->sb, rdev->sb)) {
1941 partition_name(rdev->dev), partition_name(rdev0->dev));
1944 printk(KERN_INFO "md: adding %s ...\n", partition_name(rdev->dev));
1945 md_list_del(&rdev->pending);
1946 md_list_add(&rdev->pending, &candidates);
1959 ITERATE_RDEV_GENERIC(candidates,pending,rdev,tmp)
1960 export_rdev(rdev);
1971 ITERATE_RDEV_GENERIC(candidates,pending,rdev,tmp) {
1972 bind_rdev_to_array(rdev, mddev);
1973 md_list_del(&rdev->pending);
1974 MD_INIT_LIST_HEAD(&rdev->pending);
2017 mdk_rdev_t *start_rdev = NULL, *rdev;
2062 rdev = find_rdev_all(dev);
2063 if (!rdev) {
2067 md_list_add(&rdev->pending, &pending_raid_disks);
2177 mdk_rdev_t *rdev;
2194 rdev = find_rdev_all(dev);
2195 if (!rdev) {
2202 if (!uuid_equal(rdev0, rdev)) {
2204 partition_name(rdev->dev), partition_name(rdev0->dev));
2205 export_rdev(rdev);
2208 if (!sb_equal(rdev0->sb, rdev->sb)) {
2210 partition_name(rdev->dev), partition_name(rdev0->dev));
2211 export_rdev(rdev);
2215 bind_rdev_to_array(rdev, mddev);
2238 rdev = find_rdev_all(dev);
2239 if (!rdev) {
2244 rdev->old_dev = dev;
2245 rdev->desc_nr = info->number;
2247 bind_rdev_to_array(rdev, mddev);
2254 rdev->sb_offset = calc_dev_sboffset(dev, mddev, persistent);
2272 mdk_rdev_t *rdev;
2281 rdev = find_rdev(mddev, dev);
2282 if (!rdev) {
2287 if (rdev->desc_nr == -1) {
2291 disk = &mddev->sb->disks[rdev->desc_nr];
2295 q = blk_get_queue(rdev->dev);
2309 mdk_rdev_t *rdev;
2324 rdev = find_rdev(mddev, dev);
2325 if (!rdev)
2328 if (rdev->desc_nr == -1) {
2332 disk = &mddev->sb->disks[rdev->desc_nr];
2353 kick_rdev_from_array(rdev);
2368 mdk_rdev_t *rdev;
2392 rdev = find_rdev(mddev, dev);
2393 if (rdev)
2401 rdev = find_rdev_all(dev);
2402 if (!rdev) {
2406 if (rdev->faulty) {
2412 bind_rdev_to_array(rdev, mddev);
2418 rdev->old_dev = dev;
2419 rdev->size = size;
2420 rdev->sb_offset = calc_dev_sboffset(dev, mddev, persistent);
2478 unbind_rdev_from_array(rdev);
2481 export_rdev(rdev);
3034 int md_error(mddev_t *mddev, kdev_t rdev)
3038 dprintk("md_error dev:(%d:%d), rdev:(%d:%d), (caller: %p,%p,%p,%p).\n",
3039 MAJOR(dev),MINOR(dev),MAJOR(rdev),MINOR(rdev),
3047 rrdev = find_rdev(mddev, rdev);
3051 || mddev->pers->error_handler(mddev,rdev) <= 0) {
3071 mdk_rdev_t *rdev;
3076 ITERATE_RDEV_ALL(rdev,tmp) {
3077 if (!rdev->same_set.next && !rdev->same_set.prev) {
3083 partition_name(rdev->dev));
3159 mdk_rdev_t *rdev;
3186 ITERATE_RDEV(mddev,rdev,tmp2) {
3188 partition_name(rdev->dev), rdev->desc_nr);
3189 if (rdev->faulty) {
3193 size += rdev->size;
3258 mdk_rdev_t *rdev;
3261 ITERATE_RDEV(mddev,rdev,tmp) {
3262 if (rdev->faulty)
3264 if (!rdev->sb) {
3268 disk = &sb->disks[rdev->desc_nr];
3295 mdk_rdev_t * rdev;
3301 ITERATE_RDEV(mddev,rdev,tmp) {
3302 int major = MAJOR(rdev->dev);
3303 int idx = disk_index(rdev->dev);
3311 if ((curr_events - rdev->last_events) > 32) {
3312 rdev->last_events = curr_events;
3720 mdk_rdev_t *rdev;
3736 rdev = find_rdev_all(dev);
3737 if (!rdev) {
3741 if (rdev->faulty) {
3745 md_list_add(&rdev->pending, &pending_raid_disks);