|
|
f96e0b |
From 2aa6a4fce53d2a43cc00fde2362eb39d1fdb9f4d Mon Sep 17 00:00:00 2001
|
|
|
f96e0b |
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
|
|
f96e0b |
Date: Thu, 10 Jan 2013 08:09:26 +0100
|
|
|
f96e0b |
Subject: [PATCH 092/482] * grub-core/kern/disk.c (grub_disk_write): Fix
|
|
|
f96e0b |
sector number on 4K sector devices.
|
|
|
f96e0b |
|
|
|
f96e0b |
---
|
|
|
f96e0b |
ChangeLog | 5 +++++
|
|
|
f96e0b |
grub-core/kern/disk.c | 11 ++++++++---
|
|
|
f96e0b |
2 files changed, 13 insertions(+), 3 deletions(-)
|
|
|
f96e0b |
|
|
|
f96e0b |
diff --git a/ChangeLog b/ChangeLog
|
|
|
f96e0b |
index 75fb85a..48d297d 100644
|
|
|
f96e0b |
--- a/ChangeLog
|
|
|
f96e0b |
+++ b/ChangeLog
|
|
|
f96e0b |
@@ -1,3 +1,8 @@
|
|
|
f96e0b |
+2013-01-10 Vladimir Serbinenko <phcoder@gmail.com>
|
|
|
f96e0b |
+
|
|
|
f96e0b |
+ * grub-core/kern/disk.c (grub_disk_write): Fix sector number on 4K
|
|
|
f96e0b |
+ sector devices.
|
|
|
f96e0b |
+
|
|
|
f96e0b |
2013-01-07 Colin Watson <cjwatson@ubuntu.com>
|
|
|
f96e0b |
|
|
|
f96e0b |
* grub-core/io/bufio.c (grub_bufio_open): Use grub_zalloc instead of
|
|
|
f96e0b |
diff --git a/grub-core/kern/disk.c b/grub-core/kern/disk.c
|
|
|
f96e0b |
index 1f55f90..94318af 100644
|
|
|
f96e0b |
--- a/grub-core/kern/disk.c
|
|
|
f96e0b |
+++ b/grub-core/kern/disk.c
|
|
|
f96e0b |
@@ -658,7 +658,8 @@ grub_disk_write (grub_disk_t disk, grub_disk_addr_t sector,
|
|
|
f96e0b |
|
|
|
f96e0b |
grub_disk_cache_invalidate (disk->dev->id, disk->id, sector);
|
|
|
f96e0b |
|
|
|
f96e0b |
- if ((disk->dev->write) (disk, sector, 1, tmp_buf) != GRUB_ERR_NONE)
|
|
|
f96e0b |
+ if ((disk->dev->write) (disk, transform_sector (disk, sector),
|
|
|
f96e0b |
+ 1, tmp_buf) != GRUB_ERR_NONE)
|
|
|
f96e0b |
goto finish;
|
|
|
f96e0b |
|
|
|
f96e0b |
sector += (1 << (disk->log_sector_size - GRUB_DISK_SECTOR_BITS));
|
|
|
f96e0b |
@@ -674,11 +675,15 @@ grub_disk_write (grub_disk_t disk, grub_disk_addr_t sector,
|
|
|
f96e0b |
len = size & ~((1 << disk->log_sector_size) - 1);
|
|
|
f96e0b |
n = size >> disk->log_sector_size;
|
|
|
f96e0b |
|
|
|
f96e0b |
- if ((disk->dev->write) (disk, sector, n, buf) != GRUB_ERR_NONE)
|
|
|
f96e0b |
+ if ((disk->dev->write) (disk, transform_sector (disk, sector),
|
|
|
f96e0b |
+ n, buf) != GRUB_ERR_NONE)
|
|
|
f96e0b |
goto finish;
|
|
|
f96e0b |
|
|
|
f96e0b |
while (n--)
|
|
|
f96e0b |
- grub_disk_cache_invalidate (disk->dev->id, disk->id, sector++);
|
|
|
f96e0b |
+ {
|
|
|
f96e0b |
+ grub_disk_cache_invalidate (disk->dev->id, disk->id, sector);
|
|
|
f96e0b |
+ sector += (1 << (disk->log_sector_size - GRUB_DISK_SECTOR_BITS));
|
|
|
f96e0b |
+ }
|
|
|
f96e0b |
|
|
|
f96e0b |
buf = (const char *) buf + len;
|
|
|
f96e0b |
size -= len;
|
|
|
f96e0b |
--
|
|
|
f96e0b |
1.8.2.1
|
|
|
f96e0b |
|