On Fri, 13 Jul 2007, Olaf Hering wrote: > This driver (or the generic PS3 code) has appearently problems with > O_DIRECT. > glibc aborts parted because the malloc metadata get corrupted. While it > is reproducible, the place where it crashes changes with every version > of the debug attempt. > I dont have a handle right now, all I know is that the metadata after a > malloc area get overwritten with zeros. > > > Can you have a look at this? > parted /dev/ps3da > print (a few times) I could reproduce it with parted 1.8.0 and later. The patch below fixes it (tested with 1.8.0, 1.8.2 (FC6), 1.9.0 (git)). Apparently sometimes bio_cur_sectors(bio)*KERNEL_SECTOR_SIZE != bvec->bv_len when using O_DIRECT. Is that true (or a bug?)? If it's OK, I'll fold this patch into the main ps3disk patch. --- drivers/block/ps3disk.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) --- a/drivers/block/ps3disk.c +++ b/drivers/block/ps3disk.c @@ -108,7 +108,7 @@ static void ps3disk_scatter_gather(struc __func__, __LINE__, i, bio_segments(bio), bio_sectors(bio), sector); bio_for_each_segment(bvec, bio, j) { - size = bio_cur_sectors(bio)*KERNEL_SECTOR_SIZE; + size = bvec->bv_len; buf = __bio_kmap_atomic(bio, j, KM_IRQ0); if (gather) memcpy(dev->bounce_buf+offset, buf, size); With kind regards, Geert Uytterhoeven Software Architect Sony Network and Software Technology Center Europe The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium Phone: +32 (0)2 700 8453 Fax: +32 (0)2 700 8622 E-mail: Geert.Uytterhoeven@xxxxxxxxxxx Internet: http://www.sony-europe.com/ Sony Network and Software Technology Center Europe A division of Sony Service Centre (Europe) N.V. Registered office: Technologielaan 7 · B-1840 Londerzeel · Belgium VAT BE 0413.825.160 · RPR Brussels Fortis Bank Zaventem · Swift GEBABEBB08A · IBAN BE39001382358619