2008-10-01 10:27:40

by Janos Haar

[permalink] [raw]
Subject: Re: How can i read really 512 byte?


----- Original Message -----
From: "Milton Miller" <[email protected]>
To: "Janos Haar" <[email protected]>
Cc: <[email protected]>
Sent: Tuesday, September 30, 2008 4:50 PM
Subject: How can i read really 512 byte?


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

Thanks,
Janos Haar


2008-10-01 12:19:43

by Milton Miller

[permalink] [raw]
Subject: Re: How can i read really 512 byte?


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.

milton