Re: Possibly wrong BIO usage in ide_multwrite
From: Bartlomiej Zolnierkiewicz <hidden>
Date: 2004-01-05 16:09:56
Also in:
lkml
On Sunday 04 of January 2004 18:30, Christophe Saout wrote:
Am Sa, den 03.01.2004 schrieb Bartlomiej Zolnierkiewicz um 23:02:quoted
quoted
The way I would prefer is that when someone calls bio_endio the bi_idx and bv_offset just point where the processed data begins.Are you aware that this will make partial completions illegal? [ No problem for me. ]Why that? __end_that_request_first already does this (when moving thw two lines updating bv_offset/bv_len after the call of the bi_end_io function).
Looking once again, I see it is OK.
quoted
quoted
Can't another (some local) variable be used as bvec index instead of bi_idx in the original bio? (except from ide_map_buffer using exactly this index...)see rq_map_buffer() in include/linux/blkdev.hRight. I've been going through ide-taskfile.c for the last hours. The IDE_TASKFILE_IO gets things right (from my point of view) and is also much cleaner. (I would personally vote for dropping the non TASKFILE_IO code, it would make my problem go away :D - why is it still marked as experimental BTW? I've been using it since it was introduced, without any problems)
There are still some issues to be resolved: - hangs during reading /proc/ide/<cdrom>/identify on some drives (workaround is now known thanks to debugging done by Andi+BenH+Andre) - unexplained fs corruption on x86-64 with AMD IDE chipsets (the real showstopper) - somebody needs to test taskfile code on old Promise PDC4030 controller (low priority)
BTW: The taskfile code that is used when IDE_TASKFILE_IO is disabled might partially end requests without knowing the actual status, right?
Right.
So non TASKFILE_IO code has two multout codepaths (taskfile and not) that are both "awkward" while TASKFILE_IO merges both into a single and clean version.
Yes.
quoted
quoted
Would you be interested in a small patch (well, if I can come up with one)?Sure, but I don't know what you want to change... :-)I'm not yet sure, either. I don't think that a too invasive version would be adequate though converting this mess to the cbio method would be nice. Or would you prefer to see that? I don't think it's worth starting on that since you said you'de like to see this part of the IDE layer die in 2.7 anyway. I would really like to see ide_map_buffer die in favor of rq_map_buffer though. Hmm. Perhaps I can think of something else. It's really tricky...
I would like to remove non CONFIG_IDE_TASKFILE_IO paths in 2.6.x (after issues are resolved) instead of trying to fix them. --bart