2005-03-28 Yoshinori K. Okuji <okuji@enbug.org>

* lib/device.c (get_drive_geometry): Use ST.ST_SIZE instead of
  ST.ST_BLOCKS to get the total number of sectors, because st_blocks
  is not the same if it is a sparse file.
This commit is contained in:
okuji 2005-03-27 23:20:09 +00:00
parent 2b7a7354d9
commit 6884fee4be
2 changed files with 9 additions and 3 deletions

View file

@ -1,3 +1,9 @@
2005-03-28 Yoshinori K. Okuji <okuji@enbug.org>
* lib/device.c (get_drive_geometry): Use ST.ST_SIZE instead of
ST.ST_BLOCKS to get the total number of sectors, because st_blocks
is not the same if it is a sparse file.
2005-03-19 Yoshinori K. Okuji <okuji@enbug.org>
* stage2/stage2.c (cmain): Initialize DEFAULT_FILE to an empty

View file

@ -1,7 +1,7 @@
/* device.c - Some helper functions for OS devices and BIOS drives */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
* Copyright (C) 1999,2000,2001,2002,2003,2004,2005 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -248,8 +248,8 @@ partially. This is not fatal."
}
/* Set the total sectors properly, if we can. */
if (! fstat (fd, &st) && st.st_blocks)
geom->total_sectors = st.st_blocks;
if (! fstat (fd, &st) && st.st_size)
geom->total_sectors = st.st_size >> SECTOR_BITS;
else
geom->total_sectors = geom->cylinders * geom->heads * geom->sectors;
}