From: s ponnusa <foosaa@gmail.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Robert Hancock <hancockrwd@gmail.com>,
Mark Lord <kernel@teksavvy.com>,
Greg Freemyer <greg.freemyer@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org,
Jens Axboe <jens.axboe@oracle.com>,
linux-mm@kvack.org
Subject: Re: Linux kernel - Libata bad block error handling to user mode program
Date: Fri, 5 Mar 2010 17:27:50 -0500 [thread overview]
Message-ID: <f875e2fe1003051427u70aa1a4cl56c51c73cab4f1b0@mail.gmail.com> (raw)
In-Reply-To: <20100305120355.6b161572@lxorguk.ukuu.org.uk>
Having fsync / fdatasync results in the below mentioned behavior.
> - sectors being corrupted/dying that were not written by near to it
> - writes that the drive thinks were successful and reports that way but
> turn out not to be readable
Always the write passes after much delay, but it turns out that the
sector is not readable.
But for my scenario, I need to know when a sector timeouts / errors
during the write process and move on to the next sector. Apparently I
have changed my program to do the following steps:
Open the drive in O_RDWR mode.
write a sector.
reposition the file pointer.
read the sector.
verify the read buffer contents with write buffer contents.
This scenario always passes and does not identify the bad sectors if
the program does it sequentially (even on a hdd with bad sectors).
But if I write using an independent program (prg A) and verify using
another independent program (prg B), all the writes done using prg A
passes (expected behavior) and the read operations from prg B fails on
bad sectors (again expected behavior) and I am able to detect the bad
sectors.
Is there any issue, if I perform both the operations simultaneously?
(Initially I tried using the O_DIRECT mode and as it was extremely
slow reverted to opening the device in O_RDWR mode and used fadvise
with don'tneed flag).
Thanks.
On Fri, Mar 5, 2010 at 7:03 AM, Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
>> cannot be read back by any other means. And the program which wrote
>> the data is unaware of the error that has happened at the lower level.
>> But the error log clearly has the issue caught but is trying to handle
>> differently.
>
> This is standard behaviour on pretty much every OS. If each write was
> back verified by the OS you wouldn't get any work done due fact it took
> so long to do any I/O and all I/O was synchronoous.
>
> Where it matters you can mount some file systems synchronous, you can do
> synchronous I/O (O_SYNC) or you can use and check fsync/fdatasync results
> which should give you pretty good coverage providing barriers are enabled.
>
> It still won't catch a lot of cases because you sometimes see
>
> - sectors being corrupted/dying that were not written by near to it
> - writes that the drive thinks were successful and reports that way but
> turn out not to be readable
>
> Alan
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-03-05 22:27 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <f875e2fe1003032052p944f32ayfe9fe8cfbed056d4@mail.gmail.com>
2010-03-04 6:42 ` Linux kernel - Libata bad block error handling to user mode program Andrew Morton
2010-03-04 12:58 ` foo saa
2010-03-04 16:31 ` Mike Hayward
2010-03-04 18:12 ` s ponnusa
2010-03-05 0:42 ` Mike Hayward
2010-03-05 2:23 ` s ponnusa
2010-03-05 16:31 ` Mike Hayward
2010-03-05 6:01 ` Greg Freemyer
2010-03-05 13:04 ` Alan Cox
2010-03-04 16:37 ` Mike Hayward
2010-03-04 18:23 ` s ponnusa
2010-03-04 14:17 ` Greg Freemyer
2010-03-04 14:41 ` Mark Lord
2010-03-04 15:33 ` foo saa
2010-03-04 17:49 ` Mark Lord
2010-03-04 18:20 ` s ponnusa
2010-03-04 19:41 ` Greg Freemyer
2010-03-04 19:50 ` s ponnusa
2010-03-05 1:58 ` Robert Hancock
2010-03-05 2:11 ` s ponnusa
2010-03-05 2:16 ` Robert Hancock
2010-03-05 2:17 ` s ponnusa
2010-03-05 12:03 ` Alan Cox
2010-03-05 22:27 ` s ponnusa [this message]
2010-03-11 18:29 ` Greg Freemyer
2010-03-13 22:44 ` s ponnusa
2010-03-13 23:44 ` Robert Hancock
2010-03-14 0:12 ` s ponnusa
2010-03-14 5:06 ` Robert Hancock
2010-03-14 16:02 ` Mark Lord
2010-03-14 16:12 ` Greg Freemyer
2010-03-04 18:40 Kalra Ashish-B00888
-- strict thread matches above, loose matches on Subject: below --
2010-03-04 18:41 Kalra Ashish-B00888
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f875e2fe1003051427u70aa1a4cl56c51c73cab4f1b0@mail.gmail.com \
--to=foosaa@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=greg.freemyer@gmail.com \
--cc=hancockrwd@gmail.com \
--cc=jens.axboe@oracle.com \
--cc=kernel@teksavvy.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).