Re: [smartmontools-support]Re: LibPATA code issues / 2.6.16 (previously, 2.6.15.x)

From: Ingo Oeser
Date: Sun May 07 2006 - 08:47:46 EST


On Saturday, 6. May 2006 17:09, Leon Woestenberg wrote:
> However, for large files where parts may be bad sectors, I am still
> searching for a way to read, then re-write every physical sector
> occupied by the file.
>
> With the purpose to remap the bad sectors inside large MPEG files (where
> I would rather have a few zeroed holes than a read error in them).

This much easier to solve in the player software:
do {
ret = read(fd, buffer, size)
if (ret > 0) {
playbuffer(buffer, ret)
} else if (ret < 0) {
switch(errno) {
case EIO:
playbuffer(allzeroesbuffer, size);
/* skip over this frame because of disk problems */
lseek(fd, size, SEEK_CUR);
/* TODO: Handle return or lseek() here */
}
}
} while(ret != 0)

> Anyone know such tooling exists? I suspect it has to use filesystem
> specific IOCTL's to query for the blocks involved.

The (somewhat) portable ioctl() FIBMAP would suffice.
That way you find out what blocks are this file is mapped to,
and could add some of these blocks to the badblock list of e2fsck.

Regards

Ingo Oeser
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/