merge from geom_vol_ffs.c rev 1.14 (avoid unaligned I/O requests)

This commit is contained in:
Dag-Erling Smørgrav 2005-02-08 12:34:11 +00:00
parent f83442ac87
commit 04550802d8

View File

@ -60,6 +60,16 @@ g_label_ufs_taste(struct g_consumer *cp, char *label, size_t size)
* provider based on that.
*/
for (sb = 0; (superblock = superblocks[sb]) != -1; sb++) {
/*
* Take care not to issue an invalid I/O request. The
* offset and size of the superblock candidate must be
* multiples of the provider's sector size, otherwise an
* FFS can't exist on the provider anyway.
*/
if (superblock % cp->provider->sectorsize != 0 ||
SBLOCKSIZE % cp->provider->sectorsize != 0)
continue;
fs = (struct fs *)g_read_data(cp, superblock, SBLOCKSIZE,
&error);
if (fs == NULL || error != 0)