* xfs_io bmap confused
@ 2015-07-08 7:01 Ming Lin
2015-07-08 8:53 ` Christoph Hellwig
2015-07-09 2:07 ` Dave Chinner
0 siblings, 2 replies; 8+ messages in thread
From: Ming Lin @ 2015-07-08 7:01 UTC (permalink / raw)
To: xfs; +Cc: Christoph Hellwig
Hi list,
I am testing some direct-io patches.
xfs_tests/xfs/080 failed.
It's strange.
There is no hole in "rwtest.file",
but when read it at some offset it returns zero because of hole.
root@block:~# xfs_io -c bmap /mnt/test/rwtest.file
/mnt/test/rwtest.file:
0: [0..125671]: 160..125831
Then I read at file offset 659456,
root@block:~# dd if=/mnt/test/rwtest.file of=tmp.file bs=512 skip=1288 count=1
The code actually goes to below if statements.
Any idea what's wrong?
139 static struct bio *
140 do_mpage_readpage(struct bio *bio, struct page *page, unsigned nr_pages,
141 sector_t *last_block_in_bio, struct buffer_head *map_bh,
142 unsigned long *first_logical_block, get_block_t get_block)
143 {
....
....
209 if (!buffer_mapped(map_bh)) {
210 fully_mapped = 0;
211 if (first_hole == blocks_per_page)
212 first_hole = page_block;
213 page_block++;
214 block_in_file++;
215 continue;
216 }
....
....
249 if (first_hole != blocks_per_page) {
250 zero_user_segment(page, first_hole << blkbits, PAGE_CACHE_SIZE);
251 if (first_hole == 0) {
252 SetPageUptodate(page);
253 unlock_page(page);
254 goto out;
255 }
Thanks,
Ming
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: xfs_io bmap confused 2015-07-08 7:01 xfs_io bmap confused Ming Lin @ 2015-07-08 8:53 ` Christoph Hellwig 2015-07-08 13:57 ` Ming Lin 2015-07-09 2:07 ` Dave Chinner 1 sibling, 1 reply; 8+ messages in thread From: Christoph Hellwig @ 2015-07-08 8:53 UTC (permalink / raw) To: Ming Lin; +Cc: Christoph Hellwig, xfs On Wed, Jul 08, 2015 at 12:01:53AM -0700, Ming Lin wrote: > Hi list, > > I am testing some direct-io patches. > xfs_tests/xfs/080 failed. > > It's strange. > There is no hole in "rwtest.file", > but when read it at some offset it returns zero because of hole. > > root@block:~# xfs_io -c bmap /mnt/test/rwtest.file > /mnt/test/rwtest.file: > 0: [0..125671]: 160..125831 Sounds like you see an unwritten extent. What does xfs_bmap -pv show on the file? _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: xfs_io bmap confused 2015-07-08 8:53 ` Christoph Hellwig @ 2015-07-08 13:57 ` Ming Lin 2015-07-08 23:40 ` Ming Lin 0 siblings, 1 reply; 8+ messages in thread From: Ming Lin @ 2015-07-08 13:57 UTC (permalink / raw) To: Christoph Hellwig; +Cc: xfs On Wed, 2015-07-08 at 10:53 +0200, Christoph Hellwig wrote: > On Wed, Jul 08, 2015 at 12:01:53AM -0700, Ming Lin wrote: > > Hi list, > > > > I am testing some direct-io patches. > > xfs_tests/xfs/080 failed. > > > > It's strange. > > There is no hole in "rwtest.file", > > but when read it at some offset it returns zero because of hole. > > > > root@block:~# xfs_io -c bmap /mnt/test/rwtest.file > > /mnt/test/rwtest.file: > > 0: [0..125671]: 160..125831 > > Sounds like you see an unwritten extent. What does xfs_bmap -pv show on > the file? root@block:~# xfs_bmap -pv /mnt/test/rwtest.file /mnt/test/rwtest.file: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS 0: [0..743]: 160..903 0 (160..903) 744 00000 1: [744..783]: 904..943 0 (904..943) 40 10000 2: [784..951]: 944..1111 0 (944..1111) 168 00000 3: [952..1023]: 1112..1183 0 (1112..1183) 72 10000 4: [1024..1287]: 1184..1447 0 (1184..1447) 264 00000 5: [1288..1383]: 1448..1543 0 (1448..1543) 96 10000 6: [1384..1951]: 1544..2111 0 (1544..2111) 568 00000 7: [1952..2415]: 2112..2575 0 (2112..2575) 464 10000 8: [2416..2591]: 2576..2751 0 (2576..2751) 176 00000 9: [2592..3111]: 2752..3271 0 (2752..3271) 520 10000 10: [3112..3255]: 3272..3415 0 (3272..3415) 144 00000 11: [3256..3375]: 3416..3535 0 (3416..3535) 120 10000 12: [3376..3671]: 3536..3831 0 (3536..3831) 296 00000 13: [3672..4415]: 3832..4575 0 (3832..4575) 744 10000 14: [4416..4463]: 4576..4623 0 (4576..4623) 48 00000 15: [4464..4479]: 4624..4639 0 (4624..4639) 16 10000 16: [4480..5087]: 4640..5247 0 (4640..5247) 608 00000 17: [5088..5303]: 5248..5463 0 (5248..5463) 216 10000 18: [5304..5439]: 5464..5599 0 (5464..5599) 136 00000 19: [5440..5599]: 5600..5759 0 (5600..5759) 160 10000 20: [5600..5647]: 5760..5807 0 (5760..5807) 48 00000 21: [5648..5695]: 5808..5855 0 (5808..5855) 48 10000 22: [5696..5719]: 5856..5879 0 (5856..5879) 24 00000 23: [5720..5831]: 5880..5991 0 (5880..5991) 112 10000 24: [5832..5903]: 5992..6063 0 (5992..6063) 72 00000 25: [5904..6879]: 6064..7039 0 (6064..7039) 976 10000 26: [6880..7047]: 7040..7207 0 (7040..7207) 168 00000 27: [7048..7319]: 7208..7479 0 (7208..7479) 272 10000 28: [7320..7583]: 7480..7743 0 (7480..7743) 264 00000 29: [7584..7751]: 7744..7911 0 (7744..7911) 168 10000 30: [7752..7775]: 7912..7935 0 (7912..7935) 24 00000 31: [7776..8263]: 7936..8423 0 (7936..8423) 488 10000 32: [8264..8823]: 8424..8983 0 (8424..8983) 560 00000 33: [8824..8863]: 8984..9023 0 (8984..9023) 40 10000 34: [8864..9183]: 9024..9343 0 (9024..9343) 320 00000 35: [9184..9479]: 9344..9639 0 (9344..9639) 296 10000 36: [9480..9679]: 9640..9839 0 (9640..9839) 200 00000 37: [9680..9807]: 9840..9967 0 (9840..9967) 128 10000 38: [9808..10143]: 9968..10303 0 (9968..10303) 336 00000 39: [10144..10359]: 10304..10519 0 (10304..10519) 216 10000 40: [10360..10551]: 10520..10711 0 (10520..10711) 192 00000 41: [10552..10831]: 10712..10991 0 (10712..10991) 280 10000 42: [10832..10999]: 10992..11159 0 (10992..11159) 168 00000 43: [11000..11951]: 11160..12111 0 (11160..12111) 952 10000 44: [11952..12103]: 12112..12263 0 (12112..12263) 152 00000 45: [12104..13255]: 12264..13415 0 (12264..13415) 1152 10000 46: [13256..13559]: 13416..13719 0 (13416..13719) 304 00000 47: [13560..13703]: 13720..13863 0 (13720..13863) 144 10000 48: [13704..13839]: 13864..13999 0 (13864..13999) 136 00000 49: [13840..13991]: 14000..14151 0 (14000..14151) 152 10000 50: [13992..14455]: 14152..14615 0 (14152..14615) 464 00000 51: [14456..15639]: 14616..15799 0 (14616..15799) 1184 10000 52: [15640..15671]: 15800..15831 0 (15800..15831) 32 00000 53: [15672..15919]: 15832..16079 0 (15832..16079) 248 10000 54: [15920..15983]: 16080..16143 0 (16080..16143) 64 00000 55: [15984..16223]: 16144..16383 0 (16144..16383) 240 10000 56: [16224..16439]: 16384..16599 0 (16384..16599) 216 00000 57: [16440..16863]: 16600..17023 0 (16600..17023) 424 10000 58: [16864..16919]: 17024..17079 0 (17024..17079) 56 00000 59: [16920..17031]: 17080..17191 0 (17080..17191) 112 10000 60: [17032..17911]: 17192..18071 0 (17192..18071) 880 00000 61: [17912..18191]: 18072..18351 0 (18072..18351) 280 10000 62: [18192..18327]: 18352..18487 0 (18352..18487) 136 00000 63: [18328..18487]: 18488..18647 0 (18488..18647) 160 10000 64: [18488..18551]: 18648..18711 0 (18648..18711) 64 00000 65: [18552..18639]: 18712..18799 0 (18712..18799) 88 10000 66: [18640..19079]: 18800..19239 0 (18800..19239) 440 00000 67: [19080..19279]: 19240..19439 0 (19240..19439) 200 10000 68: [19280..19607]: 19440..19767 0 (19440..19767) 328 00000 69: [19608..20199]: 19768..20359 0 (19768..20359) 592 10000 70: [20200..20591]: 20360..20751 0 (20360..20751) 392 00000 71: [20592..20639]: 20752..20799 0 (20752..20799) 48 10000 72: [20640..20767]: 20800..20927 0 (20800..20927) 128 00000 73: [20768..20951]: 20928..21111 0 (20928..21111) 184 10000 74: [20952..21343]: 21112..21503 0 (21112..21503) 392 00000 75: [21344..21583]: 21504..21743 0 (21504..21743) 240 10000 76: [21584..21855]: 21744..22015 0 (21744..22015) 272 00000 77: [21856..22279]: 22016..22439 0 (22016..22439) 424 10000 78: [22280..22479]: 22440..22639 0 (22440..22639) 200 00000 79: [22480..22543]: 22640..22703 0 (22640..22703) 64 10000 80: [22544..22671]: 22704..22831 0 (22704..22831) 128 00000 81: [22672..22903]: 22832..23063 0 (22832..23063) 232 10000 82: [22904..23087]: 23064..23247 0 (23064..23247) 184 00000 83: [23088..23207]: 23248..23367 0 (23248..23367) 120 10000 84: [23208..23455]: 23368..23615 0 (23368..23615) 248 00000 85: [23456..23487]: 23616..23647 0 (23616..23647) 32 10000 86: [23488..24455]: 23648..24615 0 (23648..24615) 968 00000 87: [24456..25071]: 24616..25231 0 (24616..25231) 616 10000 88: [25072..25311]: 25232..25471 0 (25232..25471) 240 00000 89: [25312..25487]: 25472..25647 0 (25472..25647) 176 10000 90: [25488..25799]: 25648..25959 0 (25648..25959) 312 00000 91: [25800..25831]: 25960..25991 0 (25960..25991) 32 10000 92: [25832..26087]: 25992..26247 0 (25992..26247) 256 00000 93: [26088..26351]: 26248..26511 0 (26248..26511) 264 10000 94: [26352..26551]: 26512..26711 0 (26512..26711) 200 00000 95: [26552..26695]: 26712..26855 0 (26712..26855) 144 10000 96: [26696..26847]: 26856..27007 0 (26856..27007) 152 00000 97: [26848..27463]: 27008..27623 0 (27008..27623) 616 10000 98: [27464..27583]: 27624..27743 0 (27624..27743) 120 00000 99: [27584..27655]: 27744..27815 0 (27744..27815) 72 10000 100: [27656..28063]: 27816..28223 0 (27816..28223) 408 00000 101: [28064..28535]: 28224..28695 0 (28224..28695) 472 10000 102: [28536..28679]: 28696..28839 0 (28696..28839) 144 00000 103: [28680..29175]: 28840..29335 0 (28840..29335) 496 10000 104: [29176..29407]: 29336..29567 0 (29336..29567) 232 00000 105: [29408..29487]: 29568..29647 0 (29568..29647) 80 10000 106: [29488..29743]: 29648..29903 0 (29648..29903) 256 00000 107: [29744..30175]: 29904..30335 0 (29904..30335) 432 10000 108: [30176..30247]: 30336..30407 0 (30336..30407) 72 00000 109: [30248..30535]: 30408..30695 0 (30408..30695) 288 10000 110: [30536..30607]: 30696..30767 0 (30696..30767) 72 00000 111: [30608..30719]: 30768..30879 0 (30768..30879) 112 10000 112: [30720..30943]: 30880..31103 0 (30880..31103) 224 00000 113: [30944..31111]: 31104..31271 0 (31104..31271) 168 10000 114: [31112..31239]: 31272..31399 0 (31272..31399) 128 00000 115: [31240..31439]: 31400..31599 0 (31400..31599) 200 10000 116: [31440..31671]: 31600..31831 0 (31600..31831) 232 00000 117: [31672..31815]: 31832..31975 0 (31832..31975) 144 10000 118: [31816..31967]: 31976..32127 0 (31976..32127) 152 00000 119: [31968..32159]: 32128..32319 0 (32128..32319) 192 10000 120: [32160..32247]: 32320..32407 0 (32320..32407) 88 00000 121: [32248..32495]: 32408..32655 0 (32408..32655) 248 10000 122: [32496..32599]: 32656..32759 0 (32656..32759) 104 00000 123: [32600..32711]: 32760..32871 0 (32760..32871) 112 10000 124: [32712..32799]: 32872..32959 0 (32872..32959) 88 00000 125: [32800..32983]: 32960..33143 0 (32960..33143) 184 10000 126: [32984..33223]: 33144..33383 0 (33144..33383) 240 00000 127: [33224..33415]: 33384..33575 0 (33384..33575) 192 10000 128: [33416..33895]: 33576..34055 0 (33576..34055) 480 00000 129: [33896..33959]: 34056..34119 0 (34056..34119) 64 10000 130: [33960..34215]: 34120..34375 0 (34120..34375) 256 00000 131: [34216..34543]: 34376..34703 0 (34376..34703) 328 10000 132: [34544..35831]: 34704..35991 0 (34704..35991) 1288 00000 133: [35832..35895]: 35992..36055 0 (35992..36055) 64 10000 134: [35896..36615]: 36056..36775 0 (36056..36775) 720 00000 135: [36616..37119]: 36776..37279 0 (36776..37279) 504 10000 136: [37120..37511]: 37280..37671 0 (37280..37671) 392 00000 137: [37512..38439]: 37672..38599 0 (37672..38599) 928 10000 138: [38440..38927]: 38600..39087 0 (38600..39087) 488 00000 139: [38928..39167]: 39088..39327 0 (39088..39327) 240 10000 140: [39168..39279]: 39328..39439 0 (39328..39439) 112 00000 141: [39280..39407]: 39440..39567 0 (39440..39567) 128 10000 142: [39408..39639]: 39568..39799 0 (39568..39799) 232 00000 143: [39640..39799]: 39800..39959 0 (39800..39959) 160 10000 144: [39800..39807]: 39960..39967 0 (39960..39967) 8 00000 145: [39808..40319]: 39968..40479 0 (39968..40479) 512 10000 146: [40320..40871]: 40480..41031 0 (40480..41031) 552 00000 147: [40872..40935]: 41032..41095 0 (41032..41095) 64 10000 148: [40936..41247]: 41096..41407 0 (41096..41407) 312 00000 149: [41248..41439]: 41408..41599 0 (41408..41599) 192 10000 150: [41440..42039]: 41600..42199 0 (41600..42199) 600 00000 151: [42040..42303]: 42200..42463 0 (42200..42463) 264 10000 152: [42304..42535]: 42464..42695 0 (42464..42695) 232 00000 153: [42536..42919]: 42696..43079 0 (42696..43079) 384 10000 154: [42920..43087]: 43080..43247 0 (43080..43247) 168 00000 155: [43088..43343]: 43248..43503 0 (43248..43503) 256 10000 156: [43344..43383]: 43504..43543 0 (43504..43543) 40 00000 157: [43384..43599]: 43544..43759 0 (43544..43759) 216 10000 158: [43600..43863]: 43760..44023 0 (43760..44023) 264 00000 159: [43864..44271]: 44024..44431 0 (44024..44431) 408 10000 160: [44272..44463]: 44432..44623 0 (44432..44623) 192 00000 161: [44464..44671]: 44624..44831 0 (44624..44831) 208 10000 162: [44672..44919]: 44832..45079 0 (44832..45079) 248 00000 163: [44920..44999]: 45080..45159 0 (45080..45159) 80 10000 164: [45000..45135]: 45160..45295 0 (45160..45295) 136 00000 165: [45136..45183]: 45296..45343 0 (45296..45343) 48 10000 166: [45184..45463]: 45344..45623 0 (45344..45623) 280 00000 167: [45464..46495]: 45624..46655 0 (45624..46655) 1032 10000 168: [46496..46751]: 46656..46911 0 (46656..46911) 256 00000 169: [46752..47023]: 46912..47183 0 (46912..47183) 272 10000 170: [47024..47343]: 47184..47503 0 (47184..47503) 320 00000 171: [47344..47511]: 47504..47671 0 (47504..47671) 168 10000 172: [47512..47543]: 47672..47703 0 (47672..47703) 32 00000 173: [47544..48055]: 47704..48215 0 (47704..48215) 512 10000 174: [48056..48175]: 48216..48335 0 (48216..48335) 120 00000 175: [48176..48343]: 48336..48503 0 (48336..48503) 168 10000 176: [48344..48495]: 48504..48655 0 (48504..48655) 152 00000 177: [48496..48999]: 48656..49159 0 (48656..49159) 504 10000 178: [49000..49399]: 49160..49559 0 (49160..49559) 400 00000 179: [49400..49767]: 49560..49927 0 (49560..49927) 368 10000 180: [49768..50343]: 49928..50503 0 (49928..50503) 576 00000 181: [50344..50583]: 50504..50743 0 (50504..50743) 240 10000 182: [50584..50639]: 50744..50799 0 (50744..50799) 56 00000 183: [50640..51215]: 50800..51375 0 (50800..51375) 576 10000 184: [51216..51575]: 51376..51735 0 (51376..51735) 360 00000 185: [51576..51711]: 51736..51871 0 (51736..51871) 136 10000 186: [51712..52407]: 51872..52567 0 (51872..52567) 696 00000 187: [52408..52631]: 52568..52791 0 (52568..52791) 224 10000 188: [52632..53055]: 52792..53215 0 (52792..53215) 424 00000 189: [53056..53279]: 53216..53439 0 (53216..53439) 224 10000 190: [53280..53431]: 53440..53591 0 (53440..53591) 152 00000 191: [53432..54127]: 53592..54287 0 (53592..54287) 696 10000 192: [54128..54239]: 54288..54399 0 (54288..54399) 112 00000 193: [54240..54295]: 54400..54455 0 (54400..54455) 56 10000 194: [54296..54743]: 54456..54903 0 (54456..54903) 448 00000 195: [54744..54887]: 54904..55047 0 (54904..55047) 144 10000 196: [54888..55151]: 55048..55311 0 (55048..55311) 264 00000 197: [55152..55607]: 55312..55767 0 (55312..55767) 456 10000 198: [55608..56359]: 55768..56519 0 (55768..56519) 752 00000 199: [56360..56567]: 56520..56727 0 (56520..56727) 208 10000 200: [56568..56975]: 56728..57135 0 (56728..57135) 408 00000 201: [56976..57367]: 57136..57527 0 (57136..57527) 392 10000 202: [57368..57791]: 57528..57951 0 (57528..57951) 424 00000 203: [57792..58239]: 57952..58399 0 (57952..58399) 448 10000 204: [58240..58295]: 58400..58455 0 (58400..58455) 56 00000 205: [58296..58527]: 58456..58687 0 (58456..58687) 232 10000 206: [58528..58727]: 58688..58887 0 (58688..58887) 200 00000 207: [58728..59167]: 58888..59327 0 (58888..59327) 440 10000 208: [59168..59295]: 59328..59455 0 (59328..59455) 128 00000 209: [59296..59311]: 59456..59471 0 (59456..59471) 16 10000 210: [59312..59607]: 59472..59767 0 (59472..59767) 296 00000 211: [59608..59687]: 59768..59847 0 (59768..59847) 80 10000 212: [59688..59983]: 59848..60143 0 (59848..60143) 296 00000 213: [59984..60087]: 60144..60247 0 (60144..60247) 104 10000 214: [60088..60199]: 60248..60359 0 (60248..60359) 112 00000 215: [60200..60279]: 60360..60439 0 (60360..60439) 80 10000 216: [60280..60655]: 60440..60815 0 (60440..60815) 376 00000 217: [60656..61135]: 60816..61295 0 (60816..61295) 480 10000 218: [61136..61327]: 61296..61487 0 (61296..61487) 192 00000 219: [61328..61439]: 61488..61599 0 (61488..61599) 112 10000 220: [61440..61607]: 61600..61767 0 (61600..61767) 168 00000 221: [61608..61935]: 61768..62095 0 (61768..62095) 328 10000 222: [61936..62135]: 62096..62295 0 (62096..62295) 200 00000 223: [62136..62559]: 62296..62719 0 (62296..62719) 424 10000 224: [62560..62583]: 62720..62743 0 (62720..62743) 24 00000 225: [62584..62607]: 62744..62767 0 (62744..62767) 24 10000 226: [62608..63087]: 62768..63247 0 (62768..63247) 480 00000 227: [63088..63303]: 63248..63463 0 (63248..63463) 216 10000 228: [63304..63903]: 63464..64063 0 (63464..64063) 600 00000 229: [63904..64727]: 64064..64887 0 (64064..64887) 824 10000 230: [64728..64951]: 64888..65111 0 (64888..65111) 224 00000 231: [64952..65207]: 65112..65367 0 (65112..65367) 256 10000 232: [65208..65223]: 65368..65383 0 (65368..65383) 16 00000 233: [65224..65367]: 65384..65527 0 (65384..65527) 144 10000 234: [65368..65591]: 65528..65751 0 (65528..65751) 224 00000 235: [65592..65679]: 65752..65839 0 (65752..65839) 88 10000 236: [65680..65823]: 65840..65983 0 (65840..65983) 144 00000 237: [65824..66487]: 65984..66647 0 (65984..66647) 664 10000 238: [66488..66687]: 66648..66847 0 (66648..66847) 200 00000 239: [66688..67263]: 66848..67423 0 (66848..67423) 576 10000 240: [67264..67927]: 67424..68087 0 (67424..68087) 664 00000 241: [67928..68127]: 68088..68287 0 (68088..68287) 200 10000 242: [68128..68383]: 68288..68543 0 (68288..68543) 256 00000 243: [68384..68591]: 68544..68751 0 (68544..68751) 208 10000 244: [68592..68807]: 68752..68967 0 (68752..68967) 216 00000 245: [68808..68879]: 68968..69039 0 (68968..69039) 72 10000 246: [68880..69055]: 69040..69215 0 (69040..69215) 176 00000 247: [69056..69495]: 69216..69655 0 (69216..69655) 440 10000 248: [69496..69599]: 69656..69759 0 (69656..69759) 104 00000 249: [69600..69847]: 69760..70007 0 (69760..70007) 248 10000 250: [69848..70071]: 70008..70231 0 (70008..70231) 224 00000 251: [70072..70359]: 70232..70519 0 (70232..70519) 288 10000 252: [70360..70615]: 70520..70775 0 (70520..70775) 256 00000 253: [70616..70919]: 70776..71079 0 (70776..71079) 304 10000 254: [70920..71319]: 71080..71479 0 (71080..71479) 400 00000 255: [71320..71535]: 71480..71695 0 (71480..71695) 216 10000 256: [71536..71791]: 71696..71951 0 (71696..71951) 256 00000 257: [71792..71887]: 71952..72047 0 (71952..72047) 96 10000 258: [71888..71975]: 72048..72135 0 (72048..72135) 88 00000 259: [71976..72167]: 72136..72327 0 (72136..72327) 192 10000 260: [72168..72303]: 72328..72463 0 (72328..72463) 136 00000 261: [72304..73167]: 72464..73327 0 (72464..73327) 864 10000 262: [73168..73719]: 73328..73879 0 (73328..73879) 552 00000 263: [73720..73871]: 73880..74031 0 (73880..74031) 152 10000 264: [73872..74399]: 74032..74559 0 (74032..74559) 528 00000 265: [74400..74583]: 74560..74743 0 (74560..74743) 184 10000 266: [74584..75007]: 74744..75167 0 (74744..75167) 424 00000 267: [75008..75439]: 75168..75599 0 (75168..75599) 432 10000 268: [75440..75655]: 75600..75815 0 (75600..75815) 216 00000 269: [75656..75943]: 75816..76103 0 (75816..76103) 288 10000 270: [75944..76087]: 76104..76247 0 (76104..76247) 144 00000 271: [76088..76239]: 76248..76399 0 (76248..76399) 152 10000 272: [76240..76471]: 76400..76631 0 (76400..76631) 232 00000 273: [76472..76735]: 76632..76895 0 (76632..76895) 264 10000 274: [76736..77271]: 76896..77431 0 (76896..77431) 536 00000 275: [77272..77511]: 77432..77671 0 (77432..77671) 240 10000 276: [77512..78071]: 77672..78231 0 (77672..78231) 560 00000 277: [78072..78183]: 78232..78343 0 (78232..78343) 112 10000 278: [78184..78231]: 78344..78391 0 (78344..78391) 48 00000 279: [78232..78367]: 78392..78527 0 (78392..78527) 136 10000 280: [78368..78687]: 78528..78847 0 (78528..78847) 320 00000 281: [78688..78751]: 78848..78911 0 (78848..78911) 64 10000 282: [78752..79063]: 78912..79223 0 (78912..79223) 312 00000 283: [79064..79679]: 79224..79839 0 (79224..79839) 616 10000 284: [79680..79743]: 79840..79903 0 (79840..79903) 64 00000 285: [79744..79951]: 79904..80111 0 (79904..80111) 208 10000 286: [79952..80335]: 80112..80495 0 (80112..80495) 384 00000 287: [80336..80375]: 80496..80535 0 (80496..80535) 40 10000 288: [80376..80399]: 80536..80559 0 (80536..80559) 24 00000 289: [80400..80711]: 80560..80871 0 (80560..80871) 312 10000 290: [80712..80831]: 80872..80991 0 (80872..80991) 120 00000 291: [80832..81279]: 80992..81439 0 (80992..81439) 448 10000 292: [81280..81471]: 81440..81631 0 (81440..81631) 192 00000 293: [81472..81655]: 81632..81815 0 (81632..81815) 184 10000 294: [81656..82255]: 81816..82415 0 (81816..82415) 600 00000 295: [82256..82455]: 82416..82615 0 (82416..82615) 200 10000 296: [82456..82671]: 82616..82831 0 (82616..82831) 216 00000 297: [82672..83207]: 82832..83367 0 (82832..83367) 536 10000 298: [83208..83855]: 83368..84015 0 (83368..84015) 648 00000 299: [83856..84423]: 84016..84583 0 (84016..84583) 568 10000 300: [84424..84567]: 84584..84727 0 (84584..84727) 144 00000 301: [84568..84791]: 84728..84951 0 (84728..84951) 224 10000 302: [84792..84807]: 84952..84967 0 (84952..84967) 16 00000 303: [84808..85119]: 84968..85279 0 (84968..85279) 312 10000 304: [85120..85303]: 85280..85463 0 (85280..85463) 184 00000 305: [85304..85631]: 85464..85791 0 (85464..85791) 328 10000 306: [85632..85647]: 85792..85807 0 (85792..85807) 16 00000 307: [85648..85711]: 85808..85871 0 (85808..85871) 64 10000 308: [85712..86063]: 85872..86223 0 (85872..86223) 352 00000 309: [86064..86639]: 86224..86799 0 (86224..86799) 576 10000 310: [86640..86839]: 86800..86999 0 (86800..86999) 200 00000 311: [86840..87175]: 87000..87335 0 (87000..87335) 336 10000 312: [87176..88039]: 87336..88199 0 (87336..88199) 864 00000 313: [88040..88151]: 88200..88311 0 (88200..88311) 112 10000 314: [88152..88367]: 88312..88527 0 (88312..88527) 216 00000 315: [88368..88559]: 88528..88719 0 (88528..88719) 192 10000 316: [88560..88759]: 88720..88919 0 (88720..88919) 200 00000 317: [88760..88839]: 88920..88999 0 (88920..88999) 80 10000 318: [88840..89119]: 89000..89279 0 (89000..89279) 280 00000 319: [89120..89335]: 89280..89495 0 (89280..89495) 216 10000 320: [89336..89567]: 89496..89727 0 (89496..89727) 232 00000 321: [89568..90127]: 89728..90287 0 (89728..90287) 560 10000 322: [90128..90367]: 90288..90527 0 (90288..90527) 240 00000 323: [90368..90447]: 90528..90607 0 (90528..90607) 80 10000 324: [90448..90455]: 90608..90615 0 (90608..90615) 8 00000 325: [90456..90647]: 90616..90807 0 (90616..90807) 192 10000 326: [90648..90919]: 90808..91079 0 (90808..91079) 272 00000 327: [90920..90935]: 91080..91095 0 (91080..91095) 16 10000 328: [90936..91519]: 91096..91679 0 (91096..91679) 584 00000 329: [91520..92375]: 91680..92535 0 (91680..92535) 856 10000 330: [92376..92783]: 92536..92943 0 (92536..92943) 408 00000 331: [92784..93479]: 92944..93639 0 (92944..93639) 696 10000 332: [93480..93599]: 93640..93759 0 (93640..93759) 120 00000 333: [93600..93623]: 93760..93783 0 (93760..93783) 24 10000 334: [93624..93751]: 93784..93911 0 (93784..93911) 128 00000 335: [93752..93991]: 93912..94151 0 (93912..94151) 240 10000 336: [93992..94239]: 94152..94399 0 (94152..94399) 248 00000 337: [94240..94367]: 94400..94527 0 (94400..94527) 128 10000 338: [94368..94895]: 94528..95055 0 (94528..95055) 528 00000 339: [94896..95191]: 95056..95351 0 (95056..95351) 296 10000 340: [95192..95583]: 95352..95743 0 (95352..95743) 392 00000 341: [95584..95847]: 95744..96007 0 (95744..96007) 264 10000 342: [95848..96831]: 96008..96991 0 (96008..96991) 984 00000 343: [96832..97103]: 96992..97263 0 (96992..97263) 272 10000 344: [97104..97503]: 97264..97663 0 (97264..97663) 400 00000 345: [97504..97799]: 97664..97959 0 (97664..97959) 296 10000 346: [97800..97935]: 97960..98095 0 (97960..98095) 136 00000 347: [97936..98599]: 98096..98759 0 (98096..98759) 664 10000 348: [98600..98663]: 98760..98823 0 (98760..98823) 64 00000 349: [98664..99223]: 98824..99383 0 (98824..99383) 560 10000 350: [99224..99399]: 99384..99559 0 (99384..99559) 176 00000 351: [99400..99735]: 99560..99895 0 (99560..99895) 336 10000 352: [99736..100047]: 99896..100207 0 (99896..100207) 312 00000 353: [100048..100687]: 100208..100847 0 (100208..100847) 640 10000 354: [100688..100759]: 100848..100919 0 (100848..100919) 72 00000 355: [100760..101191]: 100920..101351 0 (100920..101351) 432 10000 356: [101192..101391]: 101352..101551 0 (101352..101551) 200 00000 357: [101392..101551]: 101552..101711 0 (101552..101711) 160 10000 358: [101552..101679]: 101712..101839 0 (101712..101839) 128 00000 359: [101680..102039]: 101840..102199 0 (101840..102199) 360 10000 360: [102040..102687]: 102200..102847 0 (102200..102847) 648 00000 361: [102688..102823]: 102848..102983 0 (102848..102983) 136 10000 362: [102824..103167]: 102984..103327 0 (102984..103327) 344 00000 363: [103168..103599]: 103328..103759 0 (103328..103759) 432 10000 364: [103600..103847]: 103760..104007 0 (103760..104007) 248 00000 365: [103848..104343]: 104008..104503 0 (104008..104503) 496 10000 366: [104344..104535]: 104504..104695 0 (104504..104695) 192 00000 367: [104536..104655]: 104696..104815 0 (104696..104815) 120 10000 368: [104656..104743]: 104816..104903 0 (104816..104903) 88 00000 369: [104744..104991]: 104904..105151 0 (104904..105151) 248 10000 370: [104992..105527]: 105152..105687 0 (105152..105687) 536 00000 371: [105528..105735]: 105688..105895 0 (105688..105895) 208 10000 372: [105736..105767]: 105896..105927 0 (105896..105927) 32 00000 373: [105768..105999]: 105928..106159 0 (105928..106159) 232 10000 374: [106000..106231]: 106160..106391 0 (106160..106391) 232 00000 375: [106232..106415]: 106392..106575 0 (106392..106575) 184 10000 376: [106416..106807]: 106576..106967 0 (106576..106967) 392 00000 377: [106808..107023]: 106968..107183 0 (106968..107183) 216 10000 378: [107024..107167]: 107184..107327 0 (107184..107327) 144 00000 379: [107168..107455]: 107328..107615 0 (107328..107615) 288 10000 380: [107456..107511]: 107616..107671 0 (107616..107671) 56 00000 381: [107512..107743]: 107672..107903 0 (107672..107903) 232 10000 382: [107744..107943]: 107904..108103 0 (107904..108103) 200 00000 383: [107944..108135]: 108104..108295 0 (108104..108295) 192 10000 384: [108136..108375]: 108296..108535 0 (108296..108535) 240 00000 385: [108376..108431]: 108536..108591 0 (108536..108591) 56 10000 386: [108432..108703]: 108592..108863 0 (108592..108863) 272 00000 387: [108704..108855]: 108864..109015 0 (108864..109015) 152 10000 388: [108856..109047]: 109016..109207 0 (109016..109207) 192 00000 389: [109048..109543]: 109208..109703 0 (109208..109703) 496 10000 390: [109544..109615]: 109704..109775 0 (109704..109775) 72 00000 391: [109616..109671]: 109776..109831 0 (109776..109831) 56 10000 392: [109672..109847]: 109832..110007 0 (109832..110007) 176 00000 393: [109848..109983]: 110008..110143 0 (110008..110143) 136 10000 394: [109984..110079]: 110144..110239 0 (110144..110239) 96 00000 395: [110080..110159]: 110240..110319 0 (110240..110319) 80 10000 396: [110160..110303]: 110320..110463 0 (110320..110463) 144 00000 397: [110304..110447]: 110464..110607 0 (110464..110607) 144 10000 398: [110448..111103]: 110608..111263 0 (110608..111263) 656 00000 399: [111104..111263]: 111264..111423 0 (111264..111423) 160 10000 400: [111264..111327]: 111424..111487 0 (111424..111487) 64 00000 401: [111328..111527]: 111488..111687 0 (111488..111687) 200 10000 402: [111528..111727]: 111688..111887 0 (111688..111887) 200 00000 403: [111728..111823]: 111888..111983 0 (111888..111983) 96 10000 404: [111824..112015]: 111984..112175 0 (111984..112175) 192 00000 405: [112016..112111]: 112176..112271 0 (112176..112271) 96 10000 406: [112112..112399]: 112272..112559 0 (112272..112559) 288 00000 407: [112400..112639]: 112560..112799 0 (112560..112799) 240 10000 408: [112640..113351]: 112800..113511 0 (112800..113511) 712 00000 409: [113352..114183]: 113512..114343 0 (113512..114343) 832 10000 410: [114184..114335]: 114344..114495 0 (114344..114495) 152 00000 411: [114336..115047]: 114496..115207 0 (114496..115207) 712 10000 412: [115048..115119]: 115208..115279 0 (115208..115279) 72 00000 413: [115120..115303]: 115280..115463 0 (115280..115463) 184 10000 414: [115304..115759]: 115464..115919 0 (115464..115919) 456 00000 415: [115760..115863]: 115920..116023 0 (115920..116023) 104 10000 416: [115864..116039]: 116024..116199 0 (116024..116199) 176 00000 417: [116040..116263]: 116200..116423 0 (116200..116423) 224 10000 418: [116264..116407]: 116424..116567 0 (116424..116567) 144 00000 419: [116408..116687]: 116568..116847 0 (116568..116847) 280 10000 420: [116688..116967]: 116848..117127 0 (116848..117127) 280 00000 421: [116968..117207]: 117128..117367 0 (117128..117367) 240 10000 422: [117208..117311]: 117368..117471 0 (117368..117471) 104 00000 423: [117312..117343]: 117472..117503 0 (117472..117503) 32 10000 424: [117344..117559]: 117504..117719 0 (117504..117719) 216 00000 425: [117560..117831]: 117720..117991 0 (117720..117991) 272 10000 426: [117832..117919]: 117992..118079 0 (117992..118079) 88 00000 427: [117920..118143]: 118080..118303 0 (118080..118303) 224 10000 428: [118144..118231]: 118304..118391 0 (118304..118391) 88 00000 429: [118232..118439]: 118392..118599 0 (118392..118599) 208 10000 430: [118440..118495]: 118600..118655 0 (118600..118655) 56 00000 431: [118496..118631]: 118656..118791 0 (118656..118791) 136 10000 432: [118632..119351]: 118792..119511 0 (118792..119511) 720 00000 433: [119352..119623]: 119512..119783 0 (119512..119783) 272 10000 434: [119624..119791]: 119784..119951 0 (119784..119951) 168 00000 435: [119792..119959]: 119952..120119 0 (119952..120119) 168 10000 436: [119960..120223]: 120120..120383 0 (120120..120383) 264 00000 437: [120224..120447]: 120384..120607 0 (120384..120607) 224 10000 438: [120448..120903]: 120608..121063 0 (120608..121063) 456 00000 439: [120904..121143]: 121064..121303 0 (121064..121303) 240 10000 440: [121144..121527]: 121304..121687 0 (121304..121687) 384 00000 441: [121528..121687]: 121688..121847 0 (121688..121847) 160 10000 442: [121688..121879]: 121848..122039 0 (121848..122039) 192 00000 443: [121880..122391]: 122040..122551 0 (122040..122551) 512 10000 444: [122392..122887]: 122552..123047 0 (122552..123047) 496 00000 445: [122888..123191]: 123048..123351 0 (123048..123351) 304 10000 446: [123192..123927]: 123352..124087 0 (123352..124087) 736 00000 447: [123928..124215]: 124088..124375 0 (124088..124375) 288 10000 448: [124216..124815]: 124376..124975 0 (124376..124975) 600 00000 449: [124816..125007]: 124976..125167 0 (124976..125167) 192 10000 450: [125008..125095]: 125168..125255 0 (125168..125255) 88 00000 451: [125096..125223]: 125256..125383 0 (125256..125383) 128 10000 452: [125224..125671]: 125384..125831 0 (125384..125831) 448 00000 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: xfs_io bmap confused 2015-07-08 13:57 ` Ming Lin @ 2015-07-08 23:40 ` Ming Lin 2015-07-09 6:54 ` Ming Lin 0 siblings, 1 reply; 8+ messages in thread From: Ming Lin @ 2015-07-08 23:40 UTC (permalink / raw) To: Christoph Hellwig; +Cc: xfs On Wed, 2015-07-08 at 06:57 -0700, Ming Lin wrote: > On Wed, 2015-07-08 at 10:53 +0200, Christoph Hellwig wrote: > > On Wed, Jul 08, 2015 at 12:01:53AM -0700, Ming Lin wrote: > > > Hi list, > > > > > > I am testing some direct-io patches. > > > xfs_tests/xfs/080 failed. > > > > > > It's strange. > > > There is no hole in "rwtest.file", > > > but when read it at some offset it returns zero because of hole. > > > > > > root@block:~# xfs_io -c bmap /mnt/test/rwtest.file > > > /mnt/test/rwtest.file: > > > 0: [0..125671]: 160..125831 > > > > Sounds like you see an unwritten extent. What does xfs_bmap -pv show on > > the file? > > root@block:~# xfs_bmap -pv /mnt/test/rwtest.file > /mnt/test/rwtest.file: > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS > 0: [0..743]: 160..903 0 (160..903) 744 00000 > 1: [744..783]: 904..943 0 (904..943) 40 10000 > 2: [784..951]: 944..1111 0 (944..1111) 168 00000 > 3: [952..1023]: 1112..1183 0 (1112..1183) 72 10000 > 4: [1024..1287]: 1184..1447 0 (1184..1447) 264 00000 > 5: [1288..1383]: 1448..1543 0 (1448..1543) 96 10000 file offset 659456 is in EXT 5. I guess FLAGS 1 means it's an unwritten extent, right? xfs_tests/xfs/080 basically does: 1. direct io write 2. then buffered read to check the previous dio write Here is an example of error logs. doio ( 3626) 16:13:23 --------------------- *** DATA COMPARISON ERROR *** check_file(/mnt/test/rwtest.file, 239616, 81408, H:3626:block:doio*, 18, 0) failed Comparison fd is 5, with open flags 0 Corrupt regions follow - unprintable chars are represented as '.' ----------------------------------------------------------------- corrupt bytes starting at file offset 241664 1st 32 expected bytes: oio*H:3626:block:doio*H:3626:blo 1st 32 actual bytes: ................................ Request number 981 fd 4 is file /mnt/test/rwtest.file - open flags are 040001 O_WRONLY,O_DIRECT, write done at file offset 239616 - pattern is H (0110) number of requests is 1, strides per request is 1 i/o byte count = 81408 memory alignment is aligned DIRECT I/O: offset % 512 = 0 length % 81408 = 0 mem alignment 0x200 xfer size: small: 512 large: 2147483136 syscall: writev(4, (iov on stack), 1) The "expected bytes" was actually written to the disk successfully, but for some bug the xfs extent flag was not set correctly. The flag should be "XFS_EXT_NORM", but now it's "XFS_EXT_UNWRITTEN". Could you share the code path the extent flag was updated? Is it also updated through direct io? Thanks. _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: xfs_io bmap confused 2015-07-08 23:40 ` Ming Lin @ 2015-07-09 6:54 ` Ming Lin 2015-07-09 22:41 ` Dave Chinner 0 siblings, 1 reply; 8+ messages in thread From: Ming Lin @ 2015-07-09 6:54 UTC (permalink / raw) To: Christoph Hellwig; +Cc: xfs On Wed, 2015-07-08 at 16:40 -0700, Ming Lin wrote: > On Wed, 2015-07-08 at 06:57 -0700, Ming Lin wrote: > > On Wed, 2015-07-08 at 10:53 +0200, Christoph Hellwig wrote: > > > On Wed, Jul 08, 2015 at 12:01:53AM -0700, Ming Lin wrote: > > > > Hi list, > > > > > > > > I am testing some direct-io patches. > > > > xfs_tests/xfs/080 failed. > > > > > > > > It's strange. > > > > There is no hole in "rwtest.file", > > > > but when read it at some offset it returns zero because of hole. > > > > > > > > root@block:~# xfs_io -c bmap /mnt/test/rwtest.file > > > > /mnt/test/rwtest.file: > > > > 0: [0..125671]: 160..125831 > > > > > > Sounds like you see an unwritten extent. What does xfs_bmap -pv show on > > > the file? > > > > root@block:~# xfs_bmap -pv /mnt/test/rwtest.file > > /mnt/test/rwtest.file: > > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS > > 0: [0..743]: 160..903 0 (160..903) 744 00000 > > 1: [744..783]: 904..943 0 (904..943) 40 10000 > > 2: [784..951]: 944..1111 0 (944..1111) 168 00000 > > 3: [952..1023]: 1112..1183 0 (1112..1183) 72 10000 > > 4: [1024..1287]: 1184..1447 0 (1184..1447) 264 00000 > > 5: [1288..1383]: 1448..1543 0 (1448..1543) 96 10000 > > file offset 659456 is in EXT 5. > I guess FLAGS 1 means it's an unwritten extent, right? > > xfs_tests/xfs/080 basically does: > 1. direct io write > 2. then buffered read to check the previous dio write > > Here is an example of error logs. > > doio ( 3626) 16:13:23 > --------------------- > *** DATA COMPARISON ERROR *** > check_file(/mnt/test/rwtest.file, 239616, 81408, H:3626:block:doio*, > 18, 0) failed > > Comparison fd is 5, with open flags 0 > Corrupt regions follow - unprintable chars are represented as '.' > ----------------------------------------------------------------- > corrupt bytes starting at file offset 241664 > 1st 32 expected bytes: oio*H:3626:block:doio*H:3626:blo > 1st 32 actual bytes: ................................ > > Request number 981 > fd 4 is file /mnt/test/rwtest.file - open flags are 040001 > O_WRONLY,O_DIRECT, > write done at file offset 239616 - pattern is H (0110) > number of requests is 1, strides per request is 1 > i/o byte count = 81408 > memory alignment is aligned > DIRECT I/O: offset % 512 = 0 length % 81408 = 0 > mem alignment 0x200 xfer size: small: 512 large: 2147483136 > > syscall: writev(4, (iov on stack), 1) > > > The "expected bytes" was actually written to the disk successfully, > but for some bug the xfs extent flag was not set correctly. > The flag should be "XFS_EXT_NORM", but now it's "XFS_EXT_UNWRITTEN". > > Could you share the code path the extent flag was updated? > Is it also updated through direct io? For XFS direct IO, are below the only 2 paths to convert unwritten extent to written extent? [ 72.279043] Call Trace: [ 72.279719] [<ffffffff8169c2f3>] dump_stack+0x4f/0x7b [ 72.280898] [<ffffffff8127140f>] xfs_bmapi_convert_unwritten+0x73/0x176 [ 72.282393] [<ffffffff8127a233>] xfs_bmapi_write+0x2a0/0x7ee [ 72.283705] [<ffffffff812b8ae8>] xfs_iomap_write_direct+0x23e/0x2f0 [ 72.285132] [<ffffffff8129ef88>] __xfs_get_blocks+0x14c/0xf6c [ 72.286456] [<ffffffff8103d74b>] ? get_user_pages_fast+0xee/0x14c [ 72.287847] [<ffffffff8129fdcf>] xfs_get_blocks_direct+0x14/0x16 [ 72.289246] [<ffffffff811879c6>] get_blocks+0x86/0x182 [ 72.297467] [<ffffffff8103d74b>] ? get_user_pages_fast+0xee/0x14c [ 72.298845] [<ffffffff81187fe6>] __blockdev_direct_IO+0x372/0x666 [ 72.300266] [<ffffffff8129fdbb>] ? xfs_get_blocks+0x13/0x13 [ 72.301555] [<ffffffff8116f9ac>] ? __mnt_drop_write_file+0x12/0x14 [ 72.302936] [<ffffffff8116a017>] ? file_update_time+0xb5/0xcb [ 72.304279] [<ffffffff8129d890>] xfs_vm_direct_IO+0x89/0x90 [ 72.305555] [<ffffffff8129d943>] ? xfs_setfilesize_trans_alloc+0xac/0xac [ 72.307064] [<ffffffff8169ae5e>] xfs_file_dio_aio_write+0x2e0/0x449 [ 72.308509] [<ffffffff813e1028>] ? __clear_user+0x36/0x5b [ 72.309755] [<ffffffff812af9c6>] xfs_file_write_iter+0x75/0x105 [ 72.311107] [<ffffffff81151524>] __vfs_write+0x97/0xc0 [ 72.312347] [<ffffffff81151b1f>] vfs_write+0xb5/0x16f [ 72.313526] [<ffffffff811522c3>] SyS_write+0x4a/0x94 [ 72.314683] [<ffffffff816a4b17>] system_call_fastpath+0x12/0x6f [ 72.328096] Call Trace: [ 72.328786] [<ffffffff8169c2f3>] dump_stack+0x4f/0x7b [ 72.330002] [<ffffffff8127140f>] xfs_bmapi_convert_unwritten+0x73/0x176 [ 72.331565] [<ffffffff8126cd9d>] ? xfs_bmap_search_extents+0x60/0xd6 [ 72.333059] [<ffffffff812c96f1>] ? kmem_zone_alloc+0x6e/0xba [ 72.334412] [<ffffffff8127a233>] xfs_bmapi_write+0x2a0/0x7ee [ 72.335777] [<ffffffff812b9455>] xfs_iomap_write_unwritten+0x205/0x413 [ 72.337300] [<ffffffff8129d7e2>] xfs_end_io+0x50/0x75 [ 72.338495] [<ffffffff8129dab9>] xfs_end_io_direct_write+0x176/0x26c [ 72.339952] [<ffffffff810d20a4>] ? delayacct_end+0x55/0x5e [ 72.341238] [<ffffffff8118759d>] dio_complete+0x7c/0x134 [ 72.342488] [<ffffffff811882a7>] __blockdev_direct_IO+0x633/0x666 [ 72.343908] [<ffffffff8129fdbb>] ? xfs_get_blocks+0x13/0x13 [ 72.345263] [<ffffffff8129d890>] xfs_vm_direct_IO+0x89/0x90 [ 72.346598] [<ffffffff8129d943>] ? xfs_setfilesize_trans_alloc+0xac/0xac [ 72.348185] [<ffffffff8169ae5e>] xfs_file_dio_aio_write+0x2e0/0x449 [ 72.349652] [<ffffffff813e1028>] ? __clear_user+0x36/0x5b [ 72.350950] [<ffffffff812af9c6>] xfs_file_write_iter+0x75/0x105 [ 72.352369] [<ffffffff81151524>] __vfs_write+0x97/0xc0 [ 72.353607] [<ffffffff81151b1f>] vfs_write+0xb5/0x16f [ 72.354832] [<ffffffff811522c3>] SyS_write+0x4a/0x94 [ 72.356060] [<ffffffff816a4b17>] system_call_fastpath+0x12/0x6f _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: xfs_io bmap confused 2015-07-09 6:54 ` Ming Lin @ 2015-07-09 22:41 ` Dave Chinner 2015-07-09 23:28 ` Ming Lin 0 siblings, 1 reply; 8+ messages in thread From: Dave Chinner @ 2015-07-09 22:41 UTC (permalink / raw) To: Ming Lin; +Cc: Christoph Hellwig, xfs On Wed, Jul 08, 2015 at 11:54:04PM -0700, Ming Lin wrote: > On Wed, 2015-07-08 at 16:40 -0700, Ming Lin wrote: > > On Wed, 2015-07-08 at 06:57 -0700, Ming Lin wrote: > > > On Wed, 2015-07-08 at 10:53 +0200, Christoph Hellwig wrote: > > > > On Wed, Jul 08, 2015 at 12:01:53AM -0700, Ming Lin wrote: > > > > > Hi list, > > > > > > > > > > I am testing some direct-io patches. > > > > > xfs_tests/xfs/080 failed. > > > > > > > > > > It's strange. > > > > > There is no hole in "rwtest.file", > > > > > but when read it at some offset it returns zero because of hole. > > > > > > > > > > root@block:~# xfs_io -c bmap /mnt/test/rwtest.file > > > > > /mnt/test/rwtest.file: > > > > > 0: [0..125671]: 160..125831 > > > > > > > > Sounds like you see an unwritten extent. What does xfs_bmap -pv show on > > > > the file? > > > > > > root@block:~# xfs_bmap -pv /mnt/test/rwtest.file > > > /mnt/test/rwtest.file: > > > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS > > > 0: [0..743]: 160..903 0 (160..903) 744 00000 > > > 1: [744..783]: 904..943 0 (904..943) 40 10000 > > > 2: [784..951]: 944..1111 0 (944..1111) 168 00000 > > > 3: [952..1023]: 1112..1183 0 (1112..1183) 72 10000 > > > 4: [1024..1287]: 1184..1447 0 (1184..1447) 264 00000 > > > 5: [1288..1383]: 1448..1543 0 (1448..1543) 96 10000 > > > > file offset 659456 is in EXT 5. > > I guess FLAGS 1 means it's an unwritten extent, right? > > > > xfs_tests/xfs/080 basically does: > > 1. direct io write > > 2. then buffered read to check the previous dio write > > > > Here is an example of error logs. > > > > doio ( 3626) 16:13:23 > > --------------------- > > *** DATA COMPARISON ERROR *** > > check_file(/mnt/test/rwtest.file, 239616, 81408, H:3626:block:doio*, > > 18, 0) failed > > > > Comparison fd is 5, with open flags 0 > > Corrupt regions follow - unprintable chars are represented as '.' > > ----------------------------------------------------------------- > > corrupt bytes starting at file offset 241664 > > 1st 32 expected bytes: oio*H:3626:block:doio*H:3626:blo > > 1st 32 actual bytes: ................................ > > > > Request number 981 > > fd 4 is file /mnt/test/rwtest.file - open flags are 040001 > > O_WRONLY,O_DIRECT, > > write done at file offset 239616 - pattern is H (0110) > > number of requests is 1, strides per request is 1 > > i/o byte count = 81408 > > memory alignment is aligned > > DIRECT I/O: offset % 512 = 0 length % 81408 = 0 > > mem alignment 0x200 xfer size: small: 512 large: 2147483136 > > > > syscall: writev(4, (iov on stack), 1) > > > > > > The "expected bytes" was actually written to the disk successfully, > > but for some bug the xfs extent flag was not set correctly. > > The flag should be "XFS_EXT_NORM", but now it's "XFS_EXT_UNWRITTEN". > > > > Could you share the code path the extent flag was updated? > > Is it also updated through direct io? > > For XFS direct IO, are below the only 2 paths to convert unwritten > extent to written extent? > > [ 72.279043] Call Trace: > [ 72.279719] [<ffffffff8169c2f3>] dump_stack+0x4f/0x7b > [ 72.280898] [<ffffffff8127140f>] xfs_bmapi_convert_unwritten+0x73/0x176 > [ 72.282393] [<ffffffff8127a233>] xfs_bmapi_write+0x2a0/0x7ee > [ 72.283705] [<ffffffff812b8ae8>] xfs_iomap_write_direct+0x23e/0x2f0 > [ 72.285132] [<ffffffff8129ef88>] __xfs_get_blocks+0x14c/0xf6c > [ 72.286456] [<ffffffff8103d74b>] ? get_user_pages_fast+0xee/0x14c > [ 72.287847] [<ffffffff8129fdcf>] xfs_get_blocks_direct+0x14/0x16 > [ 72.289246] [<ffffffff811879c6>] get_blocks+0x86/0x182 > [ 72.297467] [<ffffffff8103d74b>] ? get_user_pages_fast+0xee/0x14c > [ 72.298845] [<ffffffff81187fe6>] __blockdev_direct_IO+0x372/0x666 > [ 72.300266] [<ffffffff8129fdbb>] ? xfs_get_blocks+0x13/0x13 > [ 72.301555] [<ffffffff8116f9ac>] ? __mnt_drop_write_file+0x12/0x14 > [ 72.302936] [<ffffffff8116a017>] ? file_update_time+0xb5/0xcb > [ 72.304279] [<ffffffff8129d890>] xfs_vm_direct_IO+0x89/0x90 > [ 72.305555] [<ffffffff8129d943>] ? xfs_setfilesize_trans_alloc+0xac/0xac > [ 72.307064] [<ffffffff8169ae5e>] xfs_file_dio_aio_write+0x2e0/0x449 > [ 72.308509] [<ffffffff813e1028>] ? __clear_user+0x36/0x5b > [ 72.309755] [<ffffffff812af9c6>] xfs_file_write_iter+0x75/0x105 > [ 72.311107] [<ffffffff81151524>] __vfs_write+0x97/0xc0 > [ 72.312347] [<ffffffff81151b1f>] vfs_write+0xb5/0x16f > [ 72.313526] [<ffffffff811522c3>] SyS_write+0x4a/0x94 > [ 72.314683] [<ffffffff816a4b17>] system_call_fastpath+0x12/0x6f There should not be unwritten extent conversion happening through the allocation path here. Indeed, xfs_iomap_write_direct() only uses the XFS_BMAPI_PREALLOC flag, which means xfs_bmapi_convert_unwritten() returns without doing anything to the newly allocated extent... > [ 72.328096] Call Trace: > [ 72.328786] [<ffffffff8169c2f3>] dump_stack+0x4f/0x7b > [ 72.330002] [<ffffffff8127140f>] xfs_bmapi_convert_unwritten+0x73/0x176 > [ 72.331565] [<ffffffff8126cd9d>] ? xfs_bmap_search_extents+0x60/0xd6 > [ 72.333059] [<ffffffff812c96f1>] ? kmem_zone_alloc+0x6e/0xba > [ 72.334412] [<ffffffff8127a233>] xfs_bmapi_write+0x2a0/0x7ee > [ 72.335777] [<ffffffff812b9455>] xfs_iomap_write_unwritten+0x205/0x413 > [ 72.337300] [<ffffffff8129d7e2>] xfs_end_io+0x50/0x75 > [ 72.338495] [<ffffffff8129dab9>] xfs_end_io_direct_write+0x176/0x26c > [ 72.339952] [<ffffffff810d20a4>] ? delayacct_end+0x55/0x5e > [ 72.341238] [<ffffffff8118759d>] dio_complete+0x7c/0x134 > [ 72.342488] [<ffffffff811882a7>] __blockdev_direct_IO+0x633/0x666 > [ 72.343908] [<ffffffff8129fdbb>] ? xfs_get_blocks+0x13/0x13 > [ 72.345263] [<ffffffff8129d890>] xfs_vm_direct_IO+0x89/0x90 > [ 72.346598] [<ffffffff8129d943>] ? xfs_setfilesize_trans_alloc+0xac/0xac > [ 72.348185] [<ffffffff8169ae5e>] xfs_file_dio_aio_write+0x2e0/0x449 > [ 72.349652] [<ffffffff813e1028>] ? __clear_user+0x36/0x5b > [ 72.350950] [<ffffffff812af9c6>] xfs_file_write_iter+0x75/0x105 > [ 72.352369] [<ffffffff81151524>] __vfs_write+0x97/0xc0 > [ 72.353607] [<ffffffff81151b1f>] vfs_write+0xb5/0x16f > [ 72.354832] [<ffffffff811522c3>] SyS_write+0x4a/0x94 > [ 72.356060] [<ffffffff816a4b17>] system_call_fastpath+0x12/0x6f This is the only unwritten conversion path that should occur through direct IO - the IO completion path.... Cheers, Dave. -- Dave Chinner david@fromorbit.com _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: xfs_io bmap confused 2015-07-09 22:41 ` Dave Chinner @ 2015-07-09 23:28 ` Ming Lin 0 siblings, 0 replies; 8+ messages in thread From: Ming Lin @ 2015-07-09 23:28 UTC (permalink / raw) To: Dave Chinner; +Cc: Christoph Hellwig, xfs On Thu, Jul 9, 2015 at 3:41 PM, Dave Chinner <david@fromorbit.com> wrote: > On Wed, Jul 08, 2015 at 11:54:04PM -0700, Ming Lin wrote: >> On Wed, 2015-07-08 at 16:40 -0700, Ming Lin wrote: >> > On Wed, 2015-07-08 at 06:57 -0700, Ming Lin wrote: >> > > On Wed, 2015-07-08 at 10:53 +0200, Christoph Hellwig wrote: >> > > > On Wed, Jul 08, 2015 at 12:01:53AM -0700, Ming Lin wrote: >> > > > > Hi list, >> > > > > >> > > > > I am testing some direct-io patches. >> > > > > xfs_tests/xfs/080 failed. >> > > > > >> > > > > It's strange. >> > > > > There is no hole in "rwtest.file", >> > > > > but when read it at some offset it returns zero because of hole. >> > > > > >> > > > > root@block:~# xfs_io -c bmap /mnt/test/rwtest.file >> > > > > /mnt/test/rwtest.file: >> > > > > 0: [0..125671]: 160..125831 >> > > > >> > > > Sounds like you see an unwritten extent. What does xfs_bmap -pv show on >> > > > the file? >> > > >> > > root@block:~# xfs_bmap -pv /mnt/test/rwtest.file >> > > /mnt/test/rwtest.file: >> > > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS >> > > 0: [0..743]: 160..903 0 (160..903) 744 00000 >> > > 1: [744..783]: 904..943 0 (904..943) 40 10000 >> > > 2: [784..951]: 944..1111 0 (944..1111) 168 00000 >> > > 3: [952..1023]: 1112..1183 0 (1112..1183) 72 10000 >> > > 4: [1024..1287]: 1184..1447 0 (1184..1447) 264 00000 >> > > 5: [1288..1383]: 1448..1543 0 (1448..1543) 96 10000 >> > >> > file offset 659456 is in EXT 5. >> > I guess FLAGS 1 means it's an unwritten extent, right? >> > >> > xfs_tests/xfs/080 basically does: >> > 1. direct io write >> > 2. then buffered read to check the previous dio write >> > >> > Here is an example of error logs. >> > >> > doio ( 3626) 16:13:23 >> > --------------------- >> > *** DATA COMPARISON ERROR *** >> > check_file(/mnt/test/rwtest.file, 239616, 81408, H:3626:block:doio*, >> > 18, 0) failed >> > >> > Comparison fd is 5, with open flags 0 >> > Corrupt regions follow - unprintable chars are represented as '.' >> > ----------------------------------------------------------------- >> > corrupt bytes starting at file offset 241664 >> > 1st 32 expected bytes: oio*H:3626:block:doio*H:3626:blo >> > 1st 32 actual bytes: ................................ >> > >> > Request number 981 >> > fd 4 is file /mnt/test/rwtest.file - open flags are 040001 >> > O_WRONLY,O_DIRECT, >> > write done at file offset 239616 - pattern is H (0110) >> > number of requests is 1, strides per request is 1 >> > i/o byte count = 81408 >> > memory alignment is aligned >> > DIRECT I/O: offset % 512 = 0 length % 81408 = 0 >> > mem alignment 0x200 xfer size: small: 512 large: 2147483136 >> > >> > syscall: writev(4, (iov on stack), 1) >> > >> > >> > The "expected bytes" was actually written to the disk successfully, >> > but for some bug the xfs extent flag was not set correctly. >> > The flag should be "XFS_EXT_NORM", but now it's "XFS_EXT_UNWRITTEN". >> > >> > Could you share the code path the extent flag was updated? >> > Is it also updated through direct io? >> >> For XFS direct IO, are below the only 2 paths to convert unwritten >> extent to written extent? >> >> [ 72.279043] Call Trace: >> [ 72.279719] [<ffffffff8169c2f3>] dump_stack+0x4f/0x7b >> [ 72.280898] [<ffffffff8127140f>] xfs_bmapi_convert_unwritten+0x73/0x176 >> [ 72.282393] [<ffffffff8127a233>] xfs_bmapi_write+0x2a0/0x7ee >> [ 72.283705] [<ffffffff812b8ae8>] xfs_iomap_write_direct+0x23e/0x2f0 >> [ 72.285132] [<ffffffff8129ef88>] __xfs_get_blocks+0x14c/0xf6c >> [ 72.286456] [<ffffffff8103d74b>] ? get_user_pages_fast+0xee/0x14c >> [ 72.287847] [<ffffffff8129fdcf>] xfs_get_blocks_direct+0x14/0x16 >> [ 72.289246] [<ffffffff811879c6>] get_blocks+0x86/0x182 >> [ 72.297467] [<ffffffff8103d74b>] ? get_user_pages_fast+0xee/0x14c >> [ 72.298845] [<ffffffff81187fe6>] __blockdev_direct_IO+0x372/0x666 >> [ 72.300266] [<ffffffff8129fdbb>] ? xfs_get_blocks+0x13/0x13 >> [ 72.301555] [<ffffffff8116f9ac>] ? __mnt_drop_write_file+0x12/0x14 >> [ 72.302936] [<ffffffff8116a017>] ? file_update_time+0xb5/0xcb >> [ 72.304279] [<ffffffff8129d890>] xfs_vm_direct_IO+0x89/0x90 >> [ 72.305555] [<ffffffff8129d943>] ? xfs_setfilesize_trans_alloc+0xac/0xac >> [ 72.307064] [<ffffffff8169ae5e>] xfs_file_dio_aio_write+0x2e0/0x449 >> [ 72.308509] [<ffffffff813e1028>] ? __clear_user+0x36/0x5b >> [ 72.309755] [<ffffffff812af9c6>] xfs_file_write_iter+0x75/0x105 >> [ 72.311107] [<ffffffff81151524>] __vfs_write+0x97/0xc0 >> [ 72.312347] [<ffffffff81151b1f>] vfs_write+0xb5/0x16f >> [ 72.313526] [<ffffffff811522c3>] SyS_write+0x4a/0x94 >> [ 72.314683] [<ffffffff816a4b17>] system_call_fastpath+0x12/0x6f > > There should not be unwritten extent conversion happening through > the allocation path here. Indeed, xfs_iomap_write_direct() only uses > the XFS_BMAPI_PREALLOC flag, which means > xfs_bmapi_convert_unwritten() returns without doing anything to the > newly allocated extent... > >> [ 72.328096] Call Trace: >> [ 72.328786] [<ffffffff8169c2f3>] dump_stack+0x4f/0x7b >> [ 72.330002] [<ffffffff8127140f>] xfs_bmapi_convert_unwritten+0x73/0x176 >> [ 72.331565] [<ffffffff8126cd9d>] ? xfs_bmap_search_extents+0x60/0xd6 >> [ 72.333059] [<ffffffff812c96f1>] ? kmem_zone_alloc+0x6e/0xba >> [ 72.334412] [<ffffffff8127a233>] xfs_bmapi_write+0x2a0/0x7ee >> [ 72.335777] [<ffffffff812b9455>] xfs_iomap_write_unwritten+0x205/0x413 >> [ 72.337300] [<ffffffff8129d7e2>] xfs_end_io+0x50/0x75 >> [ 72.338495] [<ffffffff8129dab9>] xfs_end_io_direct_write+0x176/0x26c >> [ 72.339952] [<ffffffff810d20a4>] ? delayacct_end+0x55/0x5e >> [ 72.341238] [<ffffffff8118759d>] dio_complete+0x7c/0x134 >> [ 72.342488] [<ffffffff811882a7>] __blockdev_direct_IO+0x633/0x666 >> [ 72.343908] [<ffffffff8129fdbb>] ? xfs_get_blocks+0x13/0x13 >> [ 72.345263] [<ffffffff8129d890>] xfs_vm_direct_IO+0x89/0x90 >> [ 72.346598] [<ffffffff8129d943>] ? xfs_setfilesize_trans_alloc+0xac/0xac >> [ 72.348185] [<ffffffff8169ae5e>] xfs_file_dio_aio_write+0x2e0/0x449 >> [ 72.349652] [<ffffffff813e1028>] ? __clear_user+0x36/0x5b >> [ 72.350950] [<ffffffff812af9c6>] xfs_file_write_iter+0x75/0x105 >> [ 72.352369] [<ffffffff81151524>] __vfs_write+0x97/0xc0 >> [ 72.353607] [<ffffffff81151b1f>] vfs_write+0xb5/0x16f >> [ 72.354832] [<ffffffff811522c3>] SyS_write+0x4a/0x94 >> [ 72.356060] [<ffffffff816a4b17>] system_call_fastpath+0x12/0x6f > > This is the only unwritten conversion path that should occur through > direct IO - the IO completion path.... There is a bug in the direct io rewrite patches. I have fixed it here: https://git.kernel.org/cgit/linux/kernel/git/mlin/linux.git/commit/?h=block-dio-rewrite&id=ceeccaa16 Thanks. _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: xfs_io bmap confused 2015-07-08 7:01 xfs_io bmap confused Ming Lin 2015-07-08 8:53 ` Christoph Hellwig @ 2015-07-09 2:07 ` Dave Chinner 1 sibling, 0 replies; 8+ messages in thread From: Dave Chinner @ 2015-07-09 2:07 UTC (permalink / raw) To: Ming Lin; +Cc: Christoph Hellwig, xfs On Wed, Jul 08, 2015 at 12:01:53AM -0700, Ming Lin wrote: > Hi list, > > I am testing some direct-io patches. > xfs_tests/xfs/080 failed. > > It's strange. > There is no hole in "rwtest.file", > but when read it at some offset it returns zero because of hole. > > root@block:~# xfs_io -c bmap /mnt/test/rwtest.file > /mnt/test/rwtest.file: > 0: [0..125671]: 160..125831 > > Then I read at file offset 659456, > root@block:~# dd if=/mnt/test/rwtest.file of=tmp.file bs=512 skip=1288 count=1 > > The code actually goes to below if statements. > > Any idea what's wrong? XFS maps unwritten extents as holes on read so that they are correctly zeroed by the generic code. See this patch: http://oss.sgi.com/archives/xfs/2007-07/msg00742.html And the followup for why it should be done: http://oss.sgi.com/archives/xfs/2007-07/msg00744.html Sadly I was unable to convince anyone to take the patch, and so that wart in XFS mapping behaviour still exists because the generic readpage code still doesn't understand unwritten extents natively. Cheers, Dave. -- Dave Chinner david@fromorbit.com _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-07-09 23:28 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-07-08 7:01 xfs_io bmap confused Ming Lin 2015-07-08 8:53 ` Christoph Hellwig 2015-07-08 13:57 ` Ming Lin 2015-07-08 23:40 ` Ming Lin 2015-07-09 6:54 ` Ming Lin 2015-07-09 22:41 ` Dave Chinner 2015-07-09 23:28 ` Ming Lin 2015-07-09 2:07 ` Dave Chinner
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox