2007-11-15 12:11:31

by Aneesh Kumar K.V

[permalink] [raw]
Subject: ext2/3/4 block bitmap validation patches


This series contain the block bitmap validation
patch reworked as per Linus suggestion. I am
attaching below the iozone and lmbench results.

The lmbench summary is inlined below


File & VM system latencies in microseconds - smaller is better
--------------------------------------------------------------
OS 0K File 10K File Mmap Prot Page
Create Delete Create Delete Latency Fault Fault
--------- ------------- ------ ------ ------ ------ ------- ----- -----
Linux 2.6.23 48.9 33.9 142.1 69.6 16.2K 1.444 5.00000
Linux 2.6.24-rc2-git5 45.2 36.0 135.0 68.3 13.6K 0.774 3.00000
Linux 2.6.24-rc2-git5-withpatch 63.0 31.7 136.2 57.4 12.3K 0.716 3.00000


------------ Iozone 2.6.24-rc2-git5 -------

Iozone: Performance Test of File I/O
Version $Revision: 3.226 $
Compiled for 64 bit mode.
Build: linux

Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
Al Slater, Scott Rhine, Mike Wisner, Ken Goss
Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
Randy Dunlap, Mark Montague, Dan Million,
Jean-Marc Zucconi, Jeff Blomberg,
Erik Habbinga, Kris Strecker.

Run began: Thu Nov 15 04:27:14 2007

Auto Mode
Command line used: /usr/local/autobench/sources/iozone/src/current/iozone -a -f /usr/local/autobench/var/tmp//iozone.tmpfile.4344
Output is in Kbytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
random random bkwd record stride
KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
64 4 130320 512471 842003 1232453 942521 420873 752329 365314 969761 150232 508587 789967 1232453
64 8 139461 576282 969761 1679761 1452528 520419 1049372 402569 1562436 168424 582535 809014 1492919
64 16 154201 621657 1066042 1892980 1933893 555990 1087638 361380 2067979 201860 752329 998622 1828508
64 32 152363 653436 1017549 2067979 2067979 614542 1279447 258159 1991276 271200 1049372 969761 1933893
64 64 157273 640954 1033216 1734015 1892980 645579 983980 153408 1879725 156905 647135 998622 1679761
128 4 143364 504196 836500 1254941 1024942 457376 789741 463696 983630 144794 484625 819893 1183041
128 8 148314 579270 1017175 1622919 1504659 561107 1009524 515822 1162547 158005 584313 983630 1539168
128 16 152919 633995 1093856 1878447 1939522 653282 1306873 482881 2027414 172971 670413 1057236 1802755
128 32 153663 659704 1076312 1939522 2027414 670413 1196221 400110 2027414 202837 795593 1074159 1852520
128 64 155713 670413 1032829 1755594 2035099 710329 1346196 258011 1967960 271173 1114289 1032829 1684006
128 128 157034 673778 992724 1778862 2066432 656477 1007629 157264 1939522 157449 667081 983630 1658003
256 4 141751 513063 822913 1202660 991629 457143 773697 485678 996229 144149 481972 831194 1190657
256 8 152459 584252 1015065 1588832 1471270 570288 1012194 580775 1445521 153111 577651 985259 1629830
256 16 152372 643033 1108314 1911233 2015259 635423 1169901 596587 2533571 159716 641497 1093639 1897721
256 32 154499 673696 1080434 1790149 2097948 673696 1376935 528987 2228578 173077 709299 1114064 1911233
256 64 153286 677095 1049800 1766587 2015259 684432 1185399 388501 1924938 199698 799625 1007446 1740810
256 128 154233 695516 1040643 1778290 2081678 733527 1347557 257813 1981783 270613 1142514 1031644 1755037
256 256 155731 705570 1011241 1802167 2045979 662883 1044693 154677 1497953 157444 680528 1048775 1766587
512 4 141712 507462 811349 1179413 990625 439085 778128 484343 917804 140737 465044 831132 1139970
512 8 149882 569502 1004057 1527582 1459080 546460 1022219 581689 1339827 149715 538377 996139 1500891
512 16 151746 622855 1091308 1778004 1917728 625212 1204552 623578 1619757 155571 597551 1079785 1700565
512 32 154031 636894 1080328 1795846 2055390 655558 1230786 623578 2246778 161625 623759 1073309 1662389
512 64 156239 649806 1011625 1551867 1840480 694797 1286838 520374 1938502 172629 664895 1028091 1551867
512 128 155718 643189 996139 1467055 1821745 653166 1120344 381516 1904125 199454 769761 1009722 1438555
512 256 156387 653166 981121 1299295 1716880 673867 1196499 256268 1541840 270164 1075459 949875 1358474
512 512 155718 662434 890404 1038532 1108203 615359 944444 153481 907717 157350 660600 911184 1022219
1024 4 142482 496367 784640 890369 936987 431186 718005 494253 720655 140694 458383 804480 833196
1024 8 147761 569186 964120 917570 1265904 523214 920125 622476 982648 148924 545544 968904 1013967
1024 16 151099 602988 1035479 1144163 1460472 595381 1070048 672369 1116792 154241 594969 1049138 1125277
1024 32 155435 640771 1065535 1154311 1633188 652650 1121458 697483 1223356 157950 622837 1056883 1122924
1024 64 153733 656742 1013010 1042770 1440391 656842 1075676 610270 1865912 162744 637537 983774 1034232
1024 128 154730 659363 994941 1022902 1525848 684478 1107005 527844 2052253 174956 674163 996094 1029029
1024 256 154986 667147 967813 976172 1229309 642400 1033237 403328 1815435 198026 748538 953418 992182
1024 512 156073 657345 866304 835953 1003073 688648 882683 264325 974400 260036 850521 840698 821247
1024 1024 144939 521119 741431 696578 737738 541759 754057 150411 747496 146917 509195 735086 682737
2048 4 143558 499014 805371 773742 765059 434365 674153 500730 669060 141650 465029 796854 744955
2048 8 150587 570653 953398 866374 1013465 529073 847316 626097 865588 147560 534838 937785 874845
2048 16 154379 619460 1042745 947718 1225591 597943 978485 710099 997576 153293 592417 1027036 931379
2048 32 156062 641623 1053487 973826 1281543 638238 1019963 724962 1039087 155067 603403 1035829 939426
2048 64 156791 645674 996650 912676 1155678 632458 988393 712100 1033337 159427 609872 981728 916767
2048 128 157866 652244 969211 909776 1173038 659151 987484 652641 2148662 164909 634655 979378 907374
2048 256 157866 660469 974710 903841 1153196 690020 990330 549235 1943069 174048 654530 967356 924562
2048 512 156599 639998 848321 785271 867424 659151 843821 402663 1003871 189804 596034 843821 781698
2048 1024 146914 518377 711569 651799 702377 575933 707176 243459 711628 242394 683378 711628 656632
2048 2048 144112 487737 718353 666257 711864 480050 715600 145054 714291 146714 490662 713342 665329
4096 4 143850 500727 811872 756395 707432 431202 678729 489192 667003 142981 472002 805666 756129
4096 8 152216 576819 958815 890434 925250 543807 856902 610800 850117 149998 546645 941579 870933
4096 16 156491 625728 1040648 974312 1087622 620978 995138 715833 991748 155387 586227 1016872 948807
4096 32 158575 658742 1063847 995368 1177687 666537 1040333 741764 1045970 157315 604397 1033574 952120
4096 64 158502 654426 979869 902408 1079286 657154 975474 760211 989862 159111 602531 973153 919998
4096 128 158636 656200 1000994 914902 1066886 660337 1004388 718107 1028623 161687 606167 971502 910201
4096 256 158581 651201 991977 914513 1083848 655050 1005623 666356 1874548 165347 610626 1004388 942715
4096 512 157781 636909 832043 759371 836784 690486 828312 547883 1040901 165549 519000 822483 763183
4096 1024 145099 521458 703896 648521 699568 519597 700881 343970 694702 179719 491769 697325 645233
4096 2048 143046 488956 691682 644120 684271 502823 689572 228444 689682 239221 635636 698260 651621
4096 4096 143446 492728 700652 655775 698005 466897 703291 146726 705486 147907 493790 710123 663858
8192 4 140312 495069 832684 779967 693354 452967 678324 487214 674291 143203 467124 802520 749839
8192 8 146445 575647 971634 906689 890822 553031 852624 604171 871393 150968 541688 947938 876617
8192 16 153233 633863 1074520 996488 1058140 639205 988405 688409 1011091 155398 588293 1037093 962624
8192 32 152909 649954 1073077 997820 1085896 628610 1037876 750117 1052694 157299 612573 1061016 991428
8192 64 153359 653788 980116 889185 1021461 642156 969359 749839 987922 157973 602804 990085 914070
8192 128 155010 649034 1025394 954893 1068472 699751 1013119 743446 1036842 159928 604490 996373 931541
8192 256 153127 653477 1019794 944888 1060983 656198 1028894 708348 1025914 160879 602181 1017258 951113
8192 512 152528 643322 829889 752120 835661 641796 828728 633128 989372 155174 500274 836332 772479
8192 1024 145330 530776 705527 654885 700821 592584 704196 444080 697124 155717 440076 699153 654000
8192 2048 144949 504401 696418 654000 695009 499605 692767 321480 697011 177128 481574 693228 651186
8192 4096 143528 499176 701680 658575 699394 506117 703778 231184 702325 240559 637805 699808 651495
8192 8192 143202 498235 708948 664883 707794 468009 712845 143668 713156 148413 502021 698257 645401
16384 4 138869 484647 828516 758068 672547 424433 683920 486968 669005 141614 456748 811253 753314
16384 8 147681 563372 973904 899224 867847 526006 868121 594722 863268 148431 532883 964662 866917
16384 16 149441 611591 1074215 960040 1004541 590541 985736 672192 997310 153788 576376 1053223 949192
16384 32 150746 631144 1075829 986104 1054646 627209 1038595 719833 1052610 155141 591843 1074366 971604
16384 64 151134 641226 1016879 921125 1018401 644274 1000431 733752 1013863 155877 582334 1012668 931968
16384 128 150890 642257 1005702 925654 1019035 653974 1009425 729995 1015992 156327 582893 1023619 931703
16384 256 150563 634424 1006129 924247 1015811 651037 1013355 730803 1018597 157650 576942 1014552 916030
16384 512 150150 634354 830278 769709 834259 646511 835537 682751 838832 149542 479443 829746 756974
16384 1024 143762 528295 701156 656698 698881 532000 701335 505149 702906 145095 410542 693332 642431
16384 2048 142843 498752 689914 646182 688490 532276 688863 407591 693535 154305 424742 684976 642611
16384 4096 141348 494969 699571 654840 699514 487909 701463 325111 696063 177156 480933 691365 648487
16384 8192 141543 494072 696268 647900 688200 501039 698348 227404 691309 237552 630611 694677 647253
16384 16384 140237 486534 688662 645654 685468 462079 692068 139096 686530 145559 487853 698852 639674
32768 64 146112 585123 996174 894739 990445 593571 982515 703596 973585 151496 550668 986181 892253
32768 128 148494 598503 1011236 908862 1010827 604632 1004224 708602 1012704 151360 550981 996231 897626
32768 256 148464 596997 1002203 901583 1005959 614310 1000977 724267 1009335 153000 545334 993811 897385
32768 512 148435 596389 818177 752336 820203 608778 819753 687422 824370 144064 459180 818036 746201
32768 1024 140829 505928 690419 640726 692388 512329 691159 527079 694413 138361 387109 688852 639751
32768 2048 139494 477744 683718 634582 682750 476902 685280 444703 683892 141493 392906 682479 634239
32768 4096 138425 475202 689965 643887 690926 488710 691486 389085 688158 149959 412493 688289 639186
32768 8192 138224 480201 687106 641719 685751 476861 687047 310874 688534 175196 466016 684505 641854
32768 16384 138358 475429 681531 635198 685047 489418 682039 220191 686227 234174 616891 689750 643619
65536 64 143631 613938 789457 723100 779318 517613 898467 827998 895630 175353 599449 1035669 969881
65536 128 147361 602358 921769 835277 912440 539471 914644 786406 919469 149986 548831 1017245 932061
65536 256 146175 551612 907047 833570 907287 581756 902476 818320 908303 155607 594235 1031282 949620
65536 512 145870 591901 698818 649906 698342 578975 697176 827121 705948 144674 464814 820152 775418
65536 1024 140178 504402 690907 646750 690114 512400 693560 568158 695726 136222 344694 561014 527720
65536 2048 139321 416792 559066 521384 559682 437300 560442 498945 561812 132705 358012 655878 616502
65536 4096 137232 394011 495857 467430 496481 406805 497313 433176 496845 132784 341063 588220 555351
65536 8192 138266 445450 568518 538514 570319 474122 571722 440818 567927 152168 406629 676941 647658
65536 16384 138694 474427 567627 535494 566886 457509 570007 338297 565253 173341 452978 676081 648665
131072 64 136855 511598 1009028 832198 893335 572969 995465 708393 979691 142581 429004 970523 878469
131072 128 137580 521121 1016117 735268 802885 512937 931987 817774 931133 150939 430137 914720 740816
131072 256 139957 460705 996032 913036 1002180 595546 899664 733183 900151 146704 410381 866510 930723
131072 512 142134 455677 823414 565611 610830 508421 689123 755994 688721 136758 391237 782510 731591
131072 1024 131049 419547 685691 520894 553167 463923 686215 546990 689449 130012 333139 694156 539644
131072 2048 132996 428020 692060 540081 578133 478447 573122 565795 571585 135296 358994 733236 547113
131072 4096 133055 421678 693436 542909 572376 467091 695551 488445 696406 133799 342282 696450 525713
131072 8192 134273 426384 684799 547298 576899 469918 513299 434857 495968 129304 321650 669516 590015
131072 16384 134713 375377 698517 479446 506092 419320 511528 377248 495246 137609 336362 681991 613084
262144 64 94805 121654 783796 751549 809878 497948 942771 736499 816241 98081 118634 810740 870588
262144 128 96587 95839 1015491 903302 1005469 590334 964569 740668 1008524 96226 114251 748499 766023
262144 256 98407 116668 985422 790717 872940 513944 926211 768068 996597 96943 94703 851744 782797
262144 512 97576 100056 820322 744881 821446 548403 675942 765138 682467 96865 94146 700249 640742
262144 1024 93907 97642 683528 640516 685440 462089 681518 557658 688837 94626 115594 565821 585237
262144 2048 91280 99634 686062 634053 685470 432846 684729 511976 691380 96467 64530 590823 577936
262144 4096 96159 108586 561889 531364 562819 422905 684593 509613 687015 97517 114762 628976 648089
262144 8192 97189 99319 551422 534015 569574 413363 683571 513053 689375 98903 98955 702309 652081
262144 16384 95414 117266 678270 640414 684327 438756 563027 492299 561525 116791 145231 738805 697894
524288 64 48560 52305 897750 822148 881783 32373 855198 710935 861239 48379 54311 808197 744142
524288 128 48358 52869 885392 814917 883427 42085 874305 863501 883250 49254 50916 832828 757939
524288 256 50072 52188 954691 879667 953056 47536 826493 708534 841771 49119 53906 881187 791728
524288 512 50236 54205 706450 645444 703183 54014 612508 792429 638351 48282 52905 765886 702458
524288 1024 49889 43363 693080 650939 698818 52537 599173 647750 605221 48939 52870 688330 641722
524288 2048 48427 50908 596007 563427 594561 51588 594484 588692 598113 49054 51103 711996 663385
524288 4096 47625 51704 587604 552084 586827 53544 583673 576017 590639 49288 54334 575152 542308
524288 8192 47555 51499 594387 563754 588669 61742 512565 472743 519704 51018 55440 587742 629483
524288 16384 48851 54008 581143 549852 584456 57741 581745 487074 690026 51680 56395 586320 565199

iozone test complete.



------------------------- Iozone with patch -----

Iozone: Performance Test of File I/O
Version $Revision: 3.226 $
Compiled for 64 bit mode.
Build: linux

Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
Al Slater, Scott Rhine, Mike Wisner, Ken Goss
Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
Randy Dunlap, Mark Montague, Dan Million,
Jean-Marc Zucconi, Jeff Blomberg,
Erik Habbinga, Kris Strecker.

Run began: Thu Nov 15 03:20:09 2007

Auto Mode
Command line used: /usr/local/autobench/sources/iozone/src/current/iozone -a -f /usr/local/autobench/var/tmp//iozone.tmpfile.4437
Output is in Kbytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
random random bkwd record stride
KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
64 4 145115 528618 901377 1452528 1105556 484710 831569 438043 1304314 164502 560635 842003 1460430
64 8 168424 621657 1083249 1828508 1734015 615952 1124074 488236 1879725 191083 659861 1002351 1734015
64 16 172982 659861 1143223 2203800 2133730 666414 1163036 388021 2358717 222250 780776 983980 1879725
64 32 173879 686877 1163036 2298136 2379626 720041 1421755 297664 2278628 304761 1143223 1070292 2067979
64 64 175241 695778 1066042 1828508 2067979 659861 1017549 171108 2006158 171108 674790 1033216 1879725
128 4 155353 533241 907174 1406136 1152564 472678 836500 498114 1130717 158378 526444 883293 1346196
128 8 159412 618653 1085013 1827299 1727352 592046 1085013 544601 2004703 160797 606082 962469 1684006
128 16 169530 677178 1162547 2066432 2248149 681476 1440082 509943 2673584 188256 695603 1105114 1967960
128 32 164341 692017 1185654 2132084 2166499 702889 1240443 397444 2367096 205791 824932 1105114 2140585
128 64 171152 711270 1048974 1939522 2166499 743788 1391557 277624 2175277 292922 1152564 1022989 1911894
128 128 164290 688467 1040839 1802755 2140585 643880 1085013 162845 1911894 162451 699227 1085013 1827299
256 4 157260 547044 876662 1398455 1137672 490560 855703 530031 1158540 158116 523570 876662 1306564
256 8 165910 633548 1062263 1814348 1673001 613985 1112909 622890 1639786 168965 618227 1035624 1715775
256 16 169098 682691 1163562 2097948 2152625 679237 1274008 621448 2392442 177015 691930 1123389 1985448
256 32 171228 716876 1158540 2187712 2435861 746272 1514860 577962 2392442 189780 742146 1128110 2118645
256 64 168329 727563 1070737 1942349 2170027 723153 1219045 423933 2210228 218827 842278 1075025 1924938
256 128 170440 733527 1062263 1894373 2135500 746272 1445521 282578 2081678 291872 1202660 1019886 1802167
256 256 170901 755195 1058076 1868008 2131261 682691 1103757 170332 1300235 170089 750970 1062263 1907837
512 4 157257 558396 851903 1382969 1120344 499553 844865 542320 1004057 155718 519241 882718 1302447
512 8 166010 652174 1049187 1711407 1614885 622133 1085242 629796 1402845 164057 613075 1045103 1712772
512 16 170032 706221 1153441 1968713 2049505 683736 1289156 673655 1770674 171007 675563 1138158 1985091
512 32 170899 729492 1152822 2024389 2285029 735488 1316016 654759 2613128 176794 708084 1120344 2032051
512 64 170831 748563 1082507 1791352 1940253 782951 1391933 549959 2091421 186724 750656 1034530 1528669
512 128 170437 753025 1057974 1695195 1947291 730484 1210664 414267 1999881 216593 859060 1019791 1772135
512 256 171294 740050 1053304 1520013 1807941 748563 1368865 287796 1585086 292580 1140576 967855 1610042
512 512 171294 732478 912733 1051757 1125630 679195 929322 170154 899731 173845 735488 936209 1024169
1024 4 159499 550862 814705 985354 1016847 488964 782781 551428 798646 155644 526163 859026 904621
1024 8 165217 649688 1019987 1126458 1387798 611748 975063 654341 1095150 162332 612097 1008964 1105865
1024 16 166886 695225 1103592 1197769 1633188 670166 1128826 735716 1199106 170524 671423 1096268 1220228
1024 32 172040 731455 1117664 1244266 1925298 720051 1185209 736725 1311117 172566 689090 1082454 1050164
1024 64 169254 745291 1034232 1142945 1577984 720655 1099636 676819 2160657 179018 709114 1025099 1130014
1024 128 172448 746846 1030016 1055584 1678504 775152 1140214 567906 2202766 189524 740408 975063 973296
1024 256 172247 740919 998874 977950 1286763 707245 1034481 433887 1885572 217501 835140 971534 1022171
1024 512 169957 724179 901394 856970 971534 753000 902340 289422 981974 281788 920914 867879 829816
1024 1024 157487 570471 755782 692870 748538 583174 740408 161460 742071 160752 569790 771670 717046
2048 4 155957 544397 851601 813995 850084 468555 726740 558193 714588 154343 514681 834557 803412
2048 8 164880 632086 998968 931682 1109408 587675 862719 683813 914717 164037 600199 982289 923767
2048 16 169634 678841 1044266 1003871 1279252 628985 1032344 785558 1056727 168851 664711 1073902 1008823
2048 32 172160 718894 1095262 1018391 1386635 719135 1065510 801912 1113579 170510 673044 1054004 1000015
2048 64 172624 741226 1020933 953927 1232980 736145 1019479 771656 1065642 173135 675001 1016824 951602
2048 128 172725 730883 1038961 988962 1272054 728837 1033337 693530 2133188 181863 695214 984203 967792
2048 256 174504 736713 1027159 981728 1216049 759109 1036955 580644 1971160 188269 694933 1010841 985558
2048 512 171885 711805 869267 814612 896296 695439 879322 431334 1108835 203457 636394 876720 802512
2048 1024 162126 567149 731443 684958 736208 645238 733254 260658 739376 259210 709161 722097 685395
2048 2048 157900 529464 725758 683106 723679 549973 729890 160188 731443 159017 524710 730138 692356
4096 4 158846 551205 872969 836948 778256 474243 734471 573354 725078 158544 527705 851592 804722
4096 8 166986 630643 990319 949016 983178 598564 874658 705341 903357 165508 607002 991519 939005
4096 16 170503 694450 1080780 1028377 1141230 681070 1022683 787388 1034071 170752 657054 1073084 1017113
4096 32 172665 722668 1097838 1037757 1233405 728584 1064440 822483 1082414 172222 682097 1088242 1025798
4096 64 170937 732716 1006860 959029 1080780 753080 1000994 820989 1023232 173214 662578 1007864 949016
4096 128 170901 729357 1041405 991748 1117622 760076 1043049 760480 1064177 175500 658111 982279 944425
4096 256 173646 727689 1057040 1000702 1157064 772830 1048396 701740 2092858 179578 663422 1011901 969912
4096 512 173558 709272 896849 833698 890803 766178 889282 584214 1153103 177978 563259 887169 838295
4096 1024 163742 570157 698857 669185 707928 587068 710123 376233 721364 191778 520132 711741 671592
4096 2048 160169 527009 720124 680288 719460 554855 716699 254219 719973 258356 671670 712095 673144
4096 4096 159359 524323 726488 691654 727288 515543 729078 156929 726765 160651 537193 707811 676244
8192 4 156670 544676 875389 845927 749986 500945 723411 569050 727147 155298 513316 861236 783685
8192 8 164013 619621 1006648 954760 937080 606775 901314 688353 904875 160806 592421 986277 921572
8192 16 169129 675856 1089374 1032263 1091242 690900 1022860 784454 1053339 167344 645437 1084183 1025271
8192 32 171653 706092 1095033 1033443 1126666 707182 1069437 834971 1080026 163878 648201 1090099 1029264
8192 64 170973 712033 1002565 959372 1054859 765611 995391 838905 1017619 167803 643069 1016265 967967
8192 128 167656 703058 1048646 988888 1078906 736025 1043708 823563 1051084 172216 641700 1005911 963191
8192 256 171470 700350 1057163 970866 1095626 742370 1052662 785800 1075496 170365 637308 1050634 974777
8192 512 170937 682325 862858 812444 880481 768625 858160 697421 1134141 168503 543230 869452 825800
8192 1024 161374 570941 704817 669835 694293 609833 704196 491599 698314 164092 460433 701909 662780
8192 2048 158827 529500 719217 680124 719488 570193 712284 356141 711546 191885 508311 716084 677028
8192 4096 158781 539231 706949 670148 703173 584142 710987 248476 702397 259330 674079 713393 677362
8192 8192 159083 539875 713274 684091 721058 524625 721891 155958 721134 160624 537317 725274 691415
16384 4 154934 533263 888263 836432 725020 481667 726691 573949 721632 151818 509626 877981 808447
16384 8 162243 616662 1019473 950347 912454 593494 911836 685728 908209 158160 584474 1016052 926016
16384 16 165409 664259 1101736 1009737 1052820 663508 1032447 792184 1037168 163925 632683 1099902 1005835
16384 32 163646 690961 1119504 1021504 1088059 710221 1075072 840031 1086838 165080 643140 1125740 1027983
16384 64 167110 695275 1051740 966494 1057844 731924 1030496 851818 1047572 163908 635556 1024184 958019
16384 128 164785 698710 1037936 957912 1050599 737691 1027522 841234 1041254 167839 634424 1069517 995259
16384 256 167769 694060 1038406 969357 1050181 743606 1040324 829146 1046439 167260 633938 1046837 965462
16384 512 166612 688345 877511 819857 878970 742633 880095 786859 880197 156400 519022 881201 812663
16384 1024 159207 574314 715240 672850 712474 601731 710860 564849 712504 152649 434038 717211 678397
16384 2048 158299 537602 708529 667154 706635 575218 708310 443927 703748 161320 450345 704744 663668
16384 4096 155823 533371 714118 672824 712098 547684 713873 350579 705750 188707 505740 704022 672383
16384 8192 156823 536440 704476 672219 700912 559947 705540 246143 710559 252847 660320 706911 671148
16384 16384 156697 534986 698526 664966 698760 526514 704231 152781 702747 157872 524104 709781 677721
32768 64 161050 689214 1036213 963140 1029861 725035 1016629 851580 1016351 163013 628813 1039567 965976
32768 128 164900 700230 1053803 990331 1047003 741155 1045530 870655 1051908 161205 627644 1064380 986478
32768 256 163535 694634 1038240 966146 1039096 737338 1033462 836604 1040055 162817 618919 1067646 988003
32768 512 164972 676300 864157 809484 861271 725421 861903 802133 863815 152179 513106 869268 807591
32768 1024 155241 567754 707825 671613 706478 600422 709571 607143 703870 145633 419635 705778 671433
32768 2048 154343 534150 699663 666067 698305 555201 702768 511399 698124 149159 427345 702406 665300
32768 4096 153363 526883 706388 670702 702467 560319 707395 448808 696123 160054 448287 706711 670663
32768 8192 152412 530106 698202 664245 698902 544835 696687 347184 696567 186108 503318 695904 659914
32768 16384 153513 522923 706221 672468 708496 554572 709692 242010 709077 252044 657015 710081 672731
65536 64 163718 662775 1035735 956646 1022357 688041 1016865 835993 1010094 157916 610814 1040105 964416
65536 128 161080 662334 1064346 986438 1064140 704008 1054700 844069 1052838 160902 607281 1044397 972878
65536 256 163695 662709 1069797 990330 1071900 709018 1066858 853488 1068562 159848 604971 902313 818727
65536 512 163885 664772 868718 813525 867440 706694 866510 826671 871256 149186 500060 866191 805803
65536 1024 152755 554571 578361 538141 574943 489817 578310 633161 576749 127291 383392 675850 636903
65536 2048 151197 522837 499151 474733 499359 405936 500748 454934 501734 118014 333893 594620 554933
65536 4096 149857 517453 697399 662535 694252 538916 696177 499333 693803 146920 420529 702068 665503
65536 8192 149895 448600 572941 538828 575518 473950 573082 432241 577908 140299 407815 674641 628311
65536 16384 150449 517392 706716 669493 706296 532242 576399 330847 575721 163341 455560 686004 645217
131072 64 135190 501684 1028821 826733 907832 562395 1000336 824958 988513 144832 466915 1004946 834344
131072 128 148747 571547 915760 832986 915876 564693 920113 828201 923405 138228 426718 967956 963176
131072 256 149525 487401 1016810 824098 914910 560491 1014897 814596 1012358 148661 463401 1065825 868026
131072 512 147126 573466 612563 578686 617381 500209 711520 809776 708381 130304 361990 869886 681346
131072 1024 145183 396323 723574 495059 519922 435896 522257 534791 522253 114826 310849 687125 603428
131072 2048 139723 371461 698715 532148 565397 460841 554459 572602 554952 134089 358313 743663 618686
131072 4096 145136 422214 715056 544721 587395 468592 716006 541045 715345 140140 406342 689199 478413
131072 8192 143020 479479 698643 471859 498932 401757 571219 496558 565062 130953 317394 752936 552261
131072 16384 147072 476415 713208 528981 565857 479899 566513 456849 560891 148311 333132 743666 532198
262144 64 109131 126917 979395 783766 853144 535282 935654 806386 964154 111844 130975 919657 827602
262144 128 107484 136281 1054413 835534 908874 514408 1007676 802240 1045652 103588 138334 935583 876053
262144 256 106536 136231 1062869 976956 1052314 616542 946590 870107 943130 108022 131492 933368 894927
262144 512 107253 136534 669528 630046 667634 468226 845895 828036 865884 110263 135448 815992 688915
262144 1024 108751 117577 508401 482037 504404 405854 508215 534956 509768 99525 128766 674927 604871
262144 2048 101826 124891 705116 531197 563473 430763 508411 475646 509871 101795 123505 692676 653045
262144 4096 109128 136590 703164 667158 702555 481200 505152 464889 507429 104793 125792 676624 601960
262144 8192 110683 134150 735458 550076 580937 450792 736663 527357 586617 109386 144790 705552 545928
262144 16384 106066 134581 566518 530749 569911 429373 703358 491302 558886 118560 152073 567543 559008
524288 64 57684 61027 884468 799027 874658 33856 873546 812538 864364 54096 59898 983374 887388
524288 128 57987 59807 990648 906052 980287 43634 914438 813388 927920 56511 61812 874626 806557
524288 256 57906 60142 921588 831042 921620 52272 910672 832751 926579 56156 60823 998068 945823
524288 512 55839 59849 829021 769726 825984 55761 720853 844683 730337 56071 59475 665837 628859
524288 1024 56431 59248 719291 556538 598200 52235 591773 680569 592484 56506 59962 721738 685469
524288 2048 55560 59630 523500 496988 526327 52940 713783 573277 717602 55538 59875 583873 549562
524288 4096 57434 59828 520696 493131 519368 56613 704936 564150 706367 56933 60631 700217 662208
524288 8192 55414 59453 707171 666464 713224 82967 708556 557686 705217 55801 62895 568482 535383
524288 16384 57343 58529 716448 675619 718734 52381 717670 515555 582629 60237 63967 604468 561318

iozone test complete.


2007-11-15 12:11:32

by Aneesh Kumar K.V

[permalink] [raw]
Subject: [PATCH 1/4] Add buffer head related helper functions

Add buffer head related helper function
bh_uptodate_or_lock and bh_submit_read
which can be used by file system

Signed-off-by: Aneesh Kumar K.V <[email protected]>
---
include/linux/buffer_head.h | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
index da0d83f..82cc9ef 100644
--- a/include/linux/buffer_head.h
+++ b/include/linux/buffer_head.h
@@ -327,6 +327,35 @@ static inline void lock_buffer(struct buffer_head *bh)

extern int __set_page_dirty_buffers(struct page *page);

+/* Return true if the buffer is up-to-date.
+ * Return false, with the buffer locked, if not.
+ */
+static inline int bh_uptodate_or_lock(struct buffer_head *bh)
+{
+ if (!buffer_uptodate(bh)) {
+ lock_buffer(bh);
+ if (!buffer_uptodate(bh))
+ return 0;
+ unlock_buffer(bh);
+ }
+ return 1;
+}
+/*
+ * Submit a locked buffer for reading,
+ * return a negative error and release
+ * the buffer if failed.
+ */
+static inline int bh_submit_read(struct buffer_head *bh)
+{
+ get_bh(bh);
+ bh->b_end_io = end_buffer_read_sync;
+ submit_bh(READ, bh);
+ wait_on_buffer(bh);
+ if (buffer_uptodate(bh))
+ return 0;
+ brelse(bh);
+ return -EIO;
+}
#else /* CONFIG_BLOCK */

static inline void buffer_init(void) {}
--
1.5.3.5.652.gf192c-dirty

2007-11-15 12:11:35

by Aneesh Kumar K.V

[permalink] [raw]
Subject: [PATCH 2/4] ext2: add block bitmap validation

When a new block bitmap is read from disk in read_block_bitmap()
there are a few bits that should ALWAYS be set. In particular,
the blocks given corresponding to block bitmap, inode bitmap and inode tables.
Validate the block bitmap against these blocks.

Signed-off-by: Aneesh Kumar K.V <[email protected]>
---
fs/ext2/balloc.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 71 insertions(+), 9 deletions(-)

diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c
index 377ad17..7477ae3 100644
--- a/fs/ext2/balloc.c
+++ b/fs/ext2/balloc.c
@@ -69,9 +69,48 @@ struct ext2_group_desc * ext2_get_group_desc(struct super_block * sb,
return desc + offset;
}

+static int ext2_valid_block_bitmap(struct super_block *sb,
+ struct ext2_group_desc *desc,
+ unsigned int block_group,
+ struct buffer_head *bh)
+{
+ ext2_grpblk_t offset;
+ ext2_grpblk_t next_zero_bit;
+ ext2_fsblk_t bitmap_blk;
+ ext2_fsblk_t group_first_block;
+
+ group_first_block = ext2_group_first_block_no(sb, block_group);
+
+ /* check whether block bitmap block number is set */
+ bitmap_blk = le32_to_cpu(desc->bg_block_bitmap);
+ offset = bitmap_blk - group_first_block;
+ if (!ext2_test_bit(offset, bh->b_data)) {
+ /* bad block bitmap */
+ return 0;
+ }
+ /* check whether the inode bitmap block number is set */
+ bitmap_blk = le32_to_cpu(desc->bg_inode_bitmap);
+ offset = bitmap_blk - group_first_block;
+ if (!ext2_test_bit(offset, bh->b_data)) {
+ /* bad block bitmap */
+ return 0;
+ }
+ /* check whether the inode table block number is set */
+ bitmap_blk = le32_to_cpu(desc->bg_inode_table);
+ offset = bitmap_blk - group_first_block;
+ next_zero_bit = ext2_find_next_zero_bit(bh->b_data,
+ EXT2_SB(sb)->s_itb_per_group + 1,
+ offset);
+ if (next_zero_bit >= offset + EXT2_SB(sb)->s_itb_per_group)
+ /* good bitmap for inode tables */
+ return 1;
+
+ return 0;
+}
+
/*
- * Read the bitmap for a given block_group, reading into the specified
- * slot in the superblock's bitmap cache.
+ * Read the bitmap for a given block_group,and validate the
+ * bits for block/inode/inode tables are set in the bitmaps
*
* Return buffer_head on success or NULL in case of failure.
*/
@@ -80,17 +119,40 @@ read_block_bitmap(struct super_block *sb, unsigned int block_group)
{
struct ext2_group_desc * desc;
struct buffer_head * bh = NULL;
-
- desc = ext2_get_group_desc (sb, block_group, NULL);
+ ext2_fsblk_t bitmap_blk;
+
+ desc = ext2_get_group_desc(sb, block_group, NULL);
if (!desc)
- goto error_out;
- bh = sb_bread(sb, le32_to_cpu(desc->bg_block_bitmap));
- if (!bh)
- ext2_error (sb, "read_block_bitmap",
+ return NULL;
+ bitmap_blk = le32_to_cpu(desc->bg_block_bitmap);
+ bh = sb_getblk(sb, bitmap_blk);
+ if (unlikely(!bh)) {
+ ext2_error(sb, __FUNCTION__,
"Cannot read block bitmap - "
"block_group = %d, block_bitmap = %u",
block_group, le32_to_cpu(desc->bg_block_bitmap));
-error_out:
+ return NULL;
+ }
+ if (likely(bh_uptodate_or_lock(bh)))
+ return bh;
+
+ if (bh_submit_read(bh) < 0) {
+ brelse(bh);
+ ext2_error(sb, __FUNCTION__,
+ "Cannot read block bitmap - "
+ "block_group = %d, block_bitmap = %u",
+ block_group, le32_to_cpu(desc->bg_block_bitmap));
+ return NULL;
+ }
+ if (!ext2_valid_block_bitmap(sb, desc, block_group, bh)) {
+ brelse(bh);
+ ext2_error(sb, __FUNCTION__,
+ "Invalid block bitmap - "
+ "block_group = %d, block = %lu",
+ block_group, bitmap_blk);
+ return NULL;
+ }
+
return bh;
}

--
1.5.3.5.652.gf192c-dirty

2007-11-15 12:12:54

by Aneesh Kumar K.V

[permalink] [raw]
Subject: [PATCH 3/4] ext3: add block bitmap validation

When a new block bitmap is read from disk in read_block_bitmap()
there are a few bits that should ALWAYS be set. In particular,
the blocks given corresponding to block bitmap, inode bitmap and inode tables.
Validate the block bitmap against these blocks.

Signed-off-by: Aneesh Kumar K.V <[email protected]>
---
fs/ext3/balloc.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 69 insertions(+), 8 deletions(-)

diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c
index a8ba7e8..8f732b8 100644
--- a/fs/ext3/balloc.c
+++ b/fs/ext3/balloc.c
@@ -80,13 +80,52 @@ struct ext3_group_desc * ext3_get_group_desc(struct super_block * sb,
return desc + offset;
}

+static int ext3_valid_block_bitmap(struct super_block *sb,
+ struct ext3_group_desc *desc,
+ unsigned int block_group,
+ struct buffer_head *bh)
+{
+ ext3_grpblk_t offset;
+ ext3_grpblk_t next_zero_bit;
+ ext3_fsblk_t bitmap_blk;
+ ext3_fsblk_t group_first_block;
+
+ group_first_block = ext3_group_first_block_no(sb, block_group);
+
+ /* check whether block bitmap block number is set */
+ bitmap_blk = le32_to_cpu(desc->bg_block_bitmap);
+ offset = bitmap_blk - group_first_block;
+ if (!ext3_test_bit(offset, bh->b_data)) {
+ /* bad block bitmap */
+ return 0;
+ }
+ /* check whether the inode bitmap block number is set */
+ bitmap_blk = le32_to_cpu(desc->bg_inode_bitmap);
+ offset = bitmap_blk - group_first_block;
+ if (!ext3_test_bit(offset, bh->b_data)) {
+ /* bad block bitmap */
+ return 0;
+ }
+ /* check whether the inode table block number is set */
+ bitmap_blk = le32_to_cpu(desc->bg_inode_table);
+ offset = bitmap_blk - group_first_block;
+ next_zero_bit = ext3_find_next_zero_bit(bh->b_data,
+ EXT3_SB(sb)->s_itb_per_group + 1,
+ offset);
+ if (next_zero_bit >= offset + EXT3_SB(sb)->s_itb_per_group)
+ /* good bitmap for inode tables */
+ return 1;
+
+ return 0;
+}
+
/**
* read_block_bitmap()
* @sb: super block
* @block_group: given block group
*
- * Read the bitmap for a given block_group, reading into the specified
- * slot in the superblock's bitmap cache.
+ * Read the bitmap for a given block_group,and validate the
+ * bits for block/inode/inode tables are set in the bitmaps
*
* Return buffer_head on success or NULL in case of failure.
*/
@@ -95,17 +134,39 @@ read_block_bitmap(struct super_block *sb, unsigned int block_group)
{
struct ext3_group_desc * desc;
struct buffer_head * bh = NULL;
+ ext3_fsblk_t bitmap_blk;

- desc = ext3_get_group_desc (sb, block_group, NULL);
+ desc = ext3_get_group_desc(sb, block_group, NULL);
if (!desc)
- goto error_out;
- bh = sb_bread(sb, le32_to_cpu(desc->bg_block_bitmap));
- if (!bh)
- ext3_error (sb, "read_block_bitmap",
+ return NULL;
+ bitmap_blk = le32_to_cpu(desc->bg_block_bitmap);
+ bh = sb_getblk(sb, bitmap_blk);
+ if (unlikely(!bh)) {
+ ext3_error(sb, __FUNCTION__,
+ "Cannot read block bitmap - "
+ "block_group = %d, block_bitmap = %u",
+ block_group, le32_to_cpu(desc->bg_block_bitmap));
+ return NULL;
+ }
+ if (likely(bh_uptodate_or_lock(bh)))
+ return bh;
+
+ if (bh_submit_read(bh) < 0) {
+ brelse(bh);
+ ext3_error(sb, __FUNCTION__,
"Cannot read block bitmap - "
"block_group = %d, block_bitmap = %u",
block_group, le32_to_cpu(desc->bg_block_bitmap));
-error_out:
+ return NULL;
+ }
+ if (!ext3_valid_block_bitmap(sb, desc, block_group, bh)) {
+ brelse(bh);
+ ext3_error(sb, __FUNCTION__,
+ "Invalid block bitmap - "
+ "block_group = %d, block = %lu",
+ block_group, bitmap_blk);
+ return NULL;
+ }
return bh;
}
/*
--
1.5.3.5.652.gf192c-dirty

2007-11-15 12:42:20

by Aneesh Kumar K.V

[permalink] [raw]
Subject: [PATCH 4/4] ext4: add block bitmap validation

When a new block bitmap is read from disk in read_block_bitmap()
there are a few bits that should ALWAYS be set. In particular,
the blocks given corresponding to block bitmap, inode bitmap and inode tables.
Validate the block bitmap against these blocks.

Signed-off-by: Aneesh Kumar K.V <[email protected]>
---
fs/ext4/balloc.c | 96 +++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 80 insertions(+), 16 deletions(-)

diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
index 71ee95e..2657a1e 100644
--- a/fs/ext4/balloc.c
+++ b/fs/ext4/balloc.c
@@ -189,13 +189,62 @@ struct ext4_group_desc * ext4_get_group_desc(struct super_block * sb,
return desc;
}

+static int ext4_valid_block_bitmap(struct super_block *sb,
+ struct ext4_group_desc *desc,
+ unsigned int block_group,
+ struct buffer_head *bh)
+{
+ ext4_grpblk_t offset;
+ ext4_grpblk_t next_zero_bit;
+ ext4_fsblk_t bitmap_blk;
+ ext4_fsblk_t group_first_block;
+
+ if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_FLEX_BG)) {
+ /* with FLEX_BG, the inode/block bitmaps and itable
+ * blocks may not be in the group at all
+ * so the bitmap validation will be skipped for those groups
+ * or it has to also read the block group where the bitmaps
+ * are located to verify they are set.
+ */
+ return 1;
+ }
+ group_first_block = ext4_group_first_block_no(sb, block_group);
+
+ /* check whether block bitmap block number is set */
+ bitmap_blk = ext4_block_bitmap(sb, desc);
+ offset = bitmap_blk - group_first_block;
+ if (!ext4_test_bit(offset, bh->b_data)) {
+ /* bad block bitmap */
+ return 0;
+ }
+
+ /* check whether the inode bitmap block number is set */
+ bitmap_blk = ext4_inode_bitmap(sb, desc);
+ offset = bitmap_blk - group_first_block;
+ if (!ext4_test_bit(offset, bh->b_data)) {
+ /* bad block bitmap */
+ return 0;
+ }
+
+ /* check whether the inode table block number is set */
+ bitmap_blk = ext4_inode_table(sb, desc);
+ offset = bitmap_blk - group_first_block;
+ next_zero_bit = ext4_find_next_zero_bit(bh->b_data,
+ EXT4_SB(sb)->s_itb_per_group + 1,
+ offset);
+ if (next_zero_bit >= offset + EXT4_SB(sb)->s_itb_per_group)
+ /* good bitmap for inode tables */
+ return 1;
+
+ return 0;
+}
/**
* read_block_bitmap()
* @sb: super block
* @block_group: given block group
*
- * Read the bitmap for a given block_group, reading into the specified
- * slot in the superblock's bitmap cache.
+ * Read the bitmap for a given block_group,and validate the
+ * bits for block/inode/inode tables are set in the bitmaps
*
* Return buffer_head on success or NULL in case of failure.
*/
@@ -210,25 +259,40 @@ read_block_bitmap(struct super_block *sb, unsigned int block_group)
if (!desc)
return NULL;
bitmap_blk = ext4_block_bitmap(sb, desc);
+ bh = sb_getblk(sb, bitmap_blk);
+ if (unlikely(!bh)) {
+ ext4_error(sb, __FUNCTION__,
+ "Cannot read block bitmap - "
+ "block_group = %d, block_bitmap = %llu",
+ block_group, bitmap_blk);
+ return NULL;
+ }
+ if (bh_uptodate_or_lock(bh))
+ return bh;
+
if (desc->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {
- bh = sb_getblk(sb, bitmap_blk);
- if (!buffer_uptodate(bh)) {
- lock_buffer(bh);
- if (!buffer_uptodate(bh)) {
- ext4_init_block_bitmap(sb, bh, block_group,
- desc);
- set_buffer_uptodate(bh);
- }
- unlock_buffer(bh);
- }
- } else {
- bh = sb_bread(sb, bitmap_blk);
+ ext4_init_block_bitmap(sb, bh, block_group, desc);
+ set_buffer_uptodate(bh);
+ unlock_buffer(bh);
+ return bh;
}
- if (!bh)
- ext4_error (sb, __FUNCTION__,
+ if (bh_submit_read(bh) < 0) {
+ brelse(bh);
+ ext4_error(sb, __FUNCTION__,
"Cannot read block bitmap - "
"block_group = %d, block_bitmap = %llu",
block_group, bitmap_blk);
+ return NULL;
+ }
+ if (!ext4_valid_block_bitmap(sb, desc, block_group, bh)) {
+ brelse(bh);
+ ext4_error(sb, __FUNCTION__,
+ "Invalid block bitmap - "
+ "block_group = %d, block = %llu",
+ block_group, bitmap_blk);
+ return NULL;
+ }
+
return bh;
}
/*
--
1.5.3.5.652.gf192c-dirty

2007-11-16 21:34:47

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 1/4] Add buffer head related helper functions

On Thu, 15 Nov 2007 17:40:43 +0530
"Aneesh Kumar K.V" <[email protected]> wrote:

> Add buffer head related helper function
> bh_uptodate_or_lock and bh_submit_read
> which can be used by file system
>

The patches look sane.

> ---
> include/linux/buffer_head.h | 29 +++++++++++++++++++++++++++++
> 1 files changed, 29 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
> index da0d83f..82cc9ef 100644
> --- a/include/linux/buffer_head.h
> +++ b/include/linux/buffer_head.h
> @@ -327,6 +327,35 @@ static inline void lock_buffer(struct buffer_head *bh)
>
> extern int __set_page_dirty_buffers(struct page *page);
>
> +/* Return true if the buffer is up-to-date.
> + * Return false, with the buffer locked, if not.
> + */
> +static inline int bh_uptodate_or_lock(struct buffer_head *bh)
> +{
> + if (!buffer_uptodate(bh)) {
> + lock_buffer(bh);
> + if (!buffer_uptodate(bh))
> + return 0;
> + unlock_buffer(bh);
> + }
> + return 1;
> +}
> +/*
> + * Submit a locked buffer for reading,
> + * return a negative error and release
> + * the buffer if failed.
> + */
> +static inline int bh_submit_read(struct buffer_head *bh)
> +{
> + get_bh(bh);
> + bh->b_end_io = end_buffer_read_sync;
> + submit_bh(READ, bh);
> + wait_on_buffer(bh);
> + if (buffer_uptodate(bh))
> + return 0;
> + brelse(bh);
> + return -EIO;
> +}
> #else /* CONFIG_BLOCK */

But these are waaaaaay too big to be inlined. Could I ask that they be
turned into regular EXPORT_SYMBOL()ed functions in buffer.c?

Might as well turn the comments into regular kerneldoc format, too.

The function names are a bit awkward, but I can't think of anything better.

I'm surprised that we don't already have a function which does what
bh_submit_read() does.

bh_submit_read() might become a bit simpler if it called ll_rw_block().

I'd have thought that to be more general, bh_submit_read() should return
immediately if the buffer is uptodate. ll_rw_block() sort of helps there.