- Timestamp:
- Mar 30, 2012, 2:49:37 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20111122/Nebulous-Server/bin/neb-admin
r32682 r33638 313 313 SELECT S.*,vol_id FROM ( 314 314 -- Select objects that are in our so_id range, with two copies (and two requested copies) 315 SELECT MAX(ins_id) AS MAXins_id,MIN(ins_id) AS MINins_id,so_id,ext_id ,value AS user_copiesFROM315 SELECT MAX(ins_id) AS MAXins_id,MIN(ins_id) AS MINins_id,so_id,ext_id FROM 316 316 storage_object JOIN storage_object_xattr USING(so_id) RIGHT JOIN instance USING(so_id) 317 317 WHERE name = 'user.copies' AND value >= 2 … … 469 469 my $so_id = $obj->{so_id}; 470 470 my $key = $obj->{ext_id}; 471 my $copies = $obj->{user_copies};471 # my $copies = $obj->{user_copies}; 472 472 473 473 my $source_vol_id = $obj->{vol_id}; … … 487 487 my %md = ( 488 488 key => $key, 489 copies => $copies,489 # copies => $copies, 490 490 so_id => $so_id, 491 491 source_vol_id => $source_vol_id, … … 543 543 'ipp056.0' => 64,'ipp057.0' => 65,'ipp058.0' => 66,'ipp059.0' => 67,'ipp060.0' => 68,'ipp061.0' => 69,'ipp062.0' => 70, 544 544 'ipp063.0' => 71,'ipp064.0' => 72,'ipp065.0' => 73,'ipp066.0' => 74); 545 %{ $destination{VOL} } = ('ota01' => 7, 'ota02' => 8, 'ota03' => 3, 'ota04' => 3, 'ota05' => 4, 'ota06' => 4, 546 'ota10' => 50, 'ota11' => 50, 'ota12' => 6, 'ota13' => 6, 'ota14' => 7, 'ota15' => 8, 'ota16' => 15, 'ota17' => 15, 547 'ota20' => 16, 'ota21' => 18, 'ota22' => 18, 'ota23' => 17, 'ota24' => 9, 'ota25' => 9, 'ota26' => 10, 'ota27' => 11, 548 'ota30' => 12, 'ota31' => 52, 'ota32' => 14, 'ota33' => 14, 'ota34' => 19, 'ota35' => 16, 'ota36' => 20, 'ota37' => 12, 549 'ota40' => 32, 'ota41' => 11, 'ota42' => 10, 'ota43' => 17, 'ota44' => 49, 'ota45' => 23, 'ota46' => 24, 'ota47' => 25, 550 'ota50' => 26, 'ota51' => 27, 'ota52' => 28, 'ota53' => 29, 'ota54' => 30, 'ota55' => 31, 'ota56' => 51, 'ota57' => 33, 551 'ota60' => 34, 'ota61' => 35, 'ota62' => 36, 'ota63' => 37, 'ota64' => 38, 'ota65' => 39, 'ota66' => 41, 'ota67' => 42, 552 'ota71' => 43, 'ota72' => 44, 'ota73' => 45, 'ota74' => 46, 'ota75' => 47, 'ota76' => 48); 545 # This is replaced below. 546 # %{ $destination{VOL} } = ('ota01' => 7, 'ota02' => 8, 'ota03' => 3, 'ota04' => 3, 'ota05' => 4, 'ota06' => 4, 547 # 'ota10' => 50, 'ota11' => 50, 'ota12' => 6, 'ota13' => 6, 'ota14' => 7, 'ota15' => 8, 'ota16' => 15, 'ota17' => 15, 548 # 'ota20' => 16, 'ota21' => 18, 'ota22' => 18, 'ota23' => 17, 'ota24' => 9, 'ota25' => 9, 'ota26' => 10, 'ota27' => 11, 549 # 'ota30' => 12, 'ota31' => 52, 'ota32' => 14, 'ota33' => 14, 'ota34' => 19, 'ota35' => 16, 'ota36' => 20, 'ota37' => 12, 550 # 'ota40' => 32, 'ota41' => 11, 'ota42' => 10, 'ota43' => 17, 'ota44' => 49, 'ota45' => 23, 'ota46' => 24, 'ota47' => 25, 551 # 'ota50' => 26, 'ota51' => 27, 'ota52' => 28, 'ota53' => 29, 'ota54' => 30, 'ota55' => 31, 'ota56' => 51, 'ota57' => 33, 552 # 'ota60' => 34, 'ota61' => 35, 'ota62' => 36, 'ota63' => 37, 'ota64' => 38, 'ota65' => 39, 'ota66' => 41, 'ota67' => 42, 553 # 'ota71' => 43, 'ota72' => 44, 'ota73' => 45, 'ota74' => 46, 'ota75' => 47, 'ota76' => 48); 553 554 %{ $destination{HOST} } = ('ota01' => 'ipp010','ota02' => 'ipp011','ota03' => 'ipp006','ota04' => 'ipp054','ota05' => 'ipp007','ota06' => 'ipp055', 554 555 'ota10' => 'ipp008','ota11' => 'ipp056','ota12' => 'ipp009','ota13' => 'ipp057','ota14' => 'ipp058','ota15' => 'ipp059','ota16' => 'ipp012','ota17' => 'ipp060', … … 577 578 'ipp023' => 1,'ipp024' => 1,'ipp025' => 1,'ipp026' => 1,'ipp028' => 1,'ipp029' => 1,'ipp030' => 1,'ipp031' => 1,'ipp032' => 1,'ipp033' => 1, 578 579 'ipp034' => 1,'ipp035' => 1,'ipp036' => 1,'ipp038' => 1,'ipp039' => 1,'ipp040' => 1,'ipp041' => 1,'ipp042' => 1,'ipp045' => 1,'ipp046' => 1, 579 'ipp047' => 1,'ipp048' => 1,'ipp049' => 1,'ipp050' => 1,'ipp051' => 1,'ipp052' => 1); 580 'ipp047' => 1,'ipp048' => 1,'ipp049' => 1,'ipp050' => 1,'ipp051' => 1,'ipp052' => 1, 581 # These hosts are blocked due to concern about their RAID arrays. 582 # 'ipp054' => 1,'ipp055' => 1,'ipp056' => 1,'ipp057' => 1,'ipp058' => 1,'ipp059' => 1, 583 # 'ipp060' => 1,'ipp061' => 1,'ipp062' => 1,'ipp063' => 1,'ipp064' => 1,'ipp065' => 1, 'ipp066' => 1 584 # 'ipp064' => 1, 'ipp066' => 1 585 'ipp064' => 1 586 ); 580 587 if (not defined $so_id_start) { $so_id_start = 0; } 581 588 if (not defined $so_id_range) { $so_id_range = 100000; } … … 597 604 598 605 # Determine a list of first instances 606 # my $query = $dbh->prepare( 607 # " 608 # SELECT S.so_id,ext_id,ins_id,uri,substr(uri,-10,5) AS class_id,vol_id,name AS vol_name,host AS vol_host FROM ( 609 # select * FROM ( 610 # select MAX(ins_id) AS MAXins_id, MIN(ins_id) AS MINins_id, so_id,ext_id,value AS user_copies FROM storage_object 611 # JOIN storage_object_xattr USING(so_id) 612 # RIGHT JOIN instance USING(so_id) 613 # WHERE name = 'user.copies' 614 # AND value >= 2 615 # AND ext_id LIKE '%ota%fits' 616 # AND so_id >= $so_id_start 617 # AND so_id < $so_id_end 618 # GROUP BY so_id 619 # ) AS V 620 # WHERE MAXins_id != MINins_id 621 # ) AS S 622 # JOIN instance ON (S.MINins_id = instance.ins_id AND S.so_id = instance.so_id) 623 # JOIN volume USING(vol_id) WHERE volume.available = 1 624 # LIMIT $limit 625 # OFFSET $offset 626 # "); 599 627 my $query = $dbh->prepare( 600 628 " 601 SELECT S.so_id,ext_id,ins_id,uri,substr(uri,-10,5) AS class_id,vol_id,name AS vol_name,host AS vol_host FROM ( 602 select * FROM ( 603 select MAX(ins_id) AS MAXins_id, MIN(ins_id) AS MINins_id, so_id,ext_id,value AS user_copies FROM storage_object 604 JOIN storage_object_xattr USING(so_id) 605 RIGHT JOIN instance USING(so_id) 606 WHERE name = 'user.copies' 607 AND value >= 2 608 AND ext_id LIKE '%ota%fits' 609 AND so_id >= $so_id_start 610 AND so_id < $so_id_end 611 GROUP BY so_id 612 ) AS V 613 WHERE MAXins_id != MINins_id 614 ) AS S 615 JOIN instance ON (S.MINins_id = instance.ins_id AND S.so_id = instance.so_id) JOIN volume USING(vol_id) WHERE volume.available = 1 616 LIMIT $limit 617 OFFSET $offset 629 SELECT Z.so_id,ext_id,Z.ins_id,Z.uri,substr(Z.uri,-10,5) AS class_id,Z.vol_id,vol_name,vol_host, 630 instance.vol_id AS second_vol_id,volume.name AS second_name,volume.host AS second_host FROM ( 631 SELECT S.so_id,ext_id,ins_id,uri,substr(uri,-10,5) AS class_id,vol_id,name AS vol_name,host AS vol_host,MAXins_id FROM ( 632 select * FROM ( 633 select MAX(ins_id) AS MAXins_id, MIN(ins_id) AS MINins_id, so_id,ext_id FROM storage_object 634 JOIN storage_object_xattr USING(so_id) 635 RIGHT JOIN instance USING(so_id) 636 WHERE name = 'user.copies' 637 AND value >= 2 638 AND ext_id LIKE '%ota%fits' 639 AND so_id >= $so_id_start 640 AND so_id < $so_id_end 641 GROUP BY so_id 642 ) AS V 643 WHERE MAXins_id != MINins_id 644 ) AS S 645 JOIN instance ON (S.MINins_id = instance.ins_id AND S.so_id = instance.so_id) 646 JOIN volume USING(vol_id) WHERE volume.available = 1 647 AND volume.name AS $requested_source 648 ) AS Z 649 JOIN instance ON (MAXins_id = instance.ins_id AND Z.so_id = instance.so_id) 650 JOIN volume ON(instance.vol_id = volume.vol_id) WHERE volume.available = 1 651 LIMIT $limit 652 OFFSET $offset 618 653 "); 654 619 655 $query->execute(); 620 656 … … 650 686 my $source_host = $obj->{vol_host}; 651 687 688 my $second_vol_id = $obj->{second_vol_id}; 689 my $second_vol_name = $obj->{second_name}; 690 my $second_vol_host = $obj->{second_host}; 652 691 653 692 my $destination_vol_id = $destination{VOL}{$class_id}; … … 660 699 next; 661 700 } 662 if (defined($blocked_volume{$destination_host})) { 663 next; 664 } 701 665 702 $destination_uri =~ s/$source_name/$destination_name/; 666 703 … … 680 717 destination_host => $destination_host, 681 718 destination_uri => $destination_uri, 719 second_host => $second_vol_host, 720 second_vol_id => $second_vol_id 721 # blocked_host_bool => defined($blocked_volume{$destination_host}) 682 722 ); 723 724 if ((defined($blocked_volume{$destination_host}))|| 725 ($source_vol_id == $destination_vol_id)|| 726 ($second_vol_id == $destination_vol_id)|| 727 ($source_name eq $destination_name)|| 728 ($second_vol_name eq $destination_name)) { 729 # print_metadata("targetFailed", \%md); 730 next; 731 } 732 683 733 if ($source_vol_id != $destination_vol_id) { 684 734 print_metadata("targetPending", \%md);
Note:
See TracChangeset
for help on using the changeset viewer.
