+2012-01-29 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * include/grub/ata.h (grub_ata): Add a new element maxbuffer.
+ * grub-core/disk/ata.c (grub_ata_readwrite): Limit to ata->maxbuffer.
+ * grub-core/disk/pata.c (grub_pata_open): Set ata->maxbuffer.
+ * grub-core/disk/ahci.c (grub_ahci_open): Likewise.
+
2012-01-29 Vladimir Serbinenko <phcoder@gmail.com>
* include/grub/zfs/dnode.h (DN_MIN_INDBLKSHIFT): Removed.
grub_ata_addressing_t addressing = ata->addr;
grub_size_t batch;
int cmd, cmd_write;
+ grub_size_t nsectors = 0;
grub_dprintf("ata", "grub_ata_readwrite (size=%llu, rw=%d)\n",
(unsigned long long) size, rw);
cmd = GRUB_ATA_CMD_READ_SECTORS;
cmd_write = GRUB_ATA_CMD_WRITE_SECTORS;
}
- }
+ }
+
+ if (batch > (ata->maxbuffer >> ata->log_sector_size))
+ batch = (ata->maxbuffer >> ata->log_sector_size);
- grub_size_t nsectors = 0;
while (nsectors < size)
{
struct grub_disk_ata_pass_through_parms parms;