Re: How can i read really 512 byte?

From: Andrey Borzenkov
Date: Wed Oct 01 2008 - 08:48:49 EST


Milton Miller wrote:

>
> On Oct 1, 2008, at 5:23 AM, Janos Haar wrote:
>
>>> On Tue, 30 Sep 2008 at 08:29:15 -0400 (EDT), Janos Haar wrote:
>>>> Now i am working on recover some data from one defective drive. I
>>>> am using dd_rescue, and dd, but both ready only 4K, i think, because
>>>> the kernel's block size is 4K.
>>>> I have tried to google for the solution, but only found this trick:
>>>> losetup /dev/loop0 /dev/hdc
>>>> blockdev --setbsz 512 /dev/hdc
>>>> and after this set, trying to read the hdc...
>>>> It looks like working on the first look, but not really. :-( The
>>>> 512 size bad sectors still have 4K sizes, but the reading attempt
>>>> takes more (8x ?) longer.
>>>> Somebody can help me to set the reading block size to 512 byte?
>>> You need to add O_DIRECT to the open call in the flags parameter
>>> (the second argument). (My brother tested this a year or so ago,
>>> and it worked for him).
>>> milton
>>
>> Hello,
>>
>> Thank you for the information.
>> Can you help me a little bit more?
>> Where need to add this parameter?
>> In the kernel, in the blocked's source, or in the dd_rescue's source?
>
> dd_rescue ... there is a call to open, add O_DIRECT to the second
> argument and recompile. If it says unknown identifier, just copy the
> #define from the kernel header into the dd_rescue source.
>

C'mon, really.

{pts/0}% dd_rescue -h

dd_rescue Version 1.14, garloff@xxxxxxx, GNU GPL
[...]
-b softbs block size for copy operation (def=65536),
-B hardbs fallback block size in case of errs (def=512),
[...]
-d/D use O_DIRECT for input/output (def=no),


--
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/