jack23912 / grub4dos-chenall

Automatically exported from code.google.com/p/grub4dos-chenall
0 stars 0 forks source link

partnew gives 'not contiguous' error on exFAT #194

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?

Make exFAT 32GB USB drive (I used RMPrepUSB 2.1.722) and install grub4dos to 
MBR.

Boot from USB drive -  grub4dos 0.4.5c  Aug 2014  console

partnew (hd0,3) 0x0 /_ISO/WIN/xxxx.imghPTN

What is the expected output? What do you see instead?

This works with some files but not others!

grub4dos gives a 'not contiguous' error on some files

ALL files are contiguous (blocklist and also defragged using WinContig both 
report no fragmented files).

Possibly issue with the 'problem' file being > 4GB ???

What version of the product are you using? On what operating system?

0.4.5c (see attached)

Please provide any additional information below.

A user reported that this also happens with some files <4GB but I cannot 
confirm that. He also says sometimes a file will work and if he remakes the USB 
drive it sometimes does not work - maybe position of file on drive is also a 
factor?

Original issue reported on code.google.com by Steve6375 on 8 Aug 2014 at 3:59

Attachments:

GoogleCodeExporter commented 8 years ago
User now reports only >4GB files give the error. This is same as my testing.

So looks like files >4GB on exFAT  don't work with partnew - maybe 32-bit v 
64-bit issue in code?

Original comment by Steve6375 on 8 Aug 2014 at 11:25

GoogleCodeExporter commented 8 years ago
Thanks for your report,seems there is bug in blocklist_func

Original comment by chenall.cn on 25 Aug 2014 at 1:58

GoogleCodeExporter commented 8 years ago
there is a bug in fsys_fat.c

 if (!devread(FAT_SUPER->root_offset, filepos, size, buf, 0xedde0d90))

the filepos is 64-bit,but in (disk_io.c devread() the byte_offset if 32-bit).

int devread (unsigned long long sector, unsigned long byte_offset, unsigned 
long long byte_len, unsigned long long buf, unsigned long write)

now extend byte_offset to 64-bit,This problem should be solved.

Original comment by chenall.cn on 25 Aug 2014 at 9:42

Attachments:

GoogleCodeExporter commented 8 years ago
Thanks! Works for me. I think this is fixed.

Original comment by Steve6375 on 29 Aug 2014 at 10:24

GoogleCodeExporter commented 8 years ago

Original comment by chenall.cn on 31 Aug 2014 at 8:34