ata: Prefer using "virtual" sector size where possible

Normally, if a device uses larger physical sector size than the logical
size and supports so-called "512e" mode, we let the device deal with
partial sector reads/writes.

However, if MAX_VIRT_SECTOR_SIZE is defined, we support
partitioning/filesystems that use a larger "virtual" sector than the
logical sector.  typically this matches the physical sector size of the
drive, which means that despite a small logical sector size, all I/O
is done in terms of the physical sector size.

Therefore, when MAX_VIRT_SECTOR_SIZE and MAX_PHYS_SECTOR_SIZE are
enabled (currently only ipod5g and ipod6g), prefer software-based
partial sector I/O.

Change-Id: I0815ad0a2f987b89bb2debfbf3d0ed64cdf85525
This commit is contained in:
Solomon Peachy 2024-11-13 07:47:36 -05:00
parent 120906dc8b
commit 9bf033dd66
3 changed files with 24 additions and 0 deletions

View file

@ -434,6 +434,11 @@ int disk_mount(int drive)
}
#endif /* MAX_VIRT_SECTOR_SIZE */
}
#if defined(MAX_VIRT_SECTOR_SIZE) && defined(MAX_PHYS_SECTOR_SIZE)
if (mounted)
ata_set_phys_sector_mult(disk_sector_multiplier[drive]);
#endif
}
disk_writer_unlock();