diff -Naur linux-0.01-rm-1.5/kernel/hd.c linux-0.01-rm-1.6/kernel/hd.c --- linux-0.01-rm-1.5/kernel/hd.c 2007-11-25 21:42:01.000000000 +0100 +++ linux-0.01-rm-1.6/kernel/hd.c 2007-11-25 21:43:43.000000000 +0100 @@ -256,11 +256,18 @@ bad_rw_intr(); return; } - port_read(HD_DATA,this_request->bh->b_data+ - 512*(this_request->nsector&1),256); - this_request->errors = 0; - if (--this_request->nsector) + + if (this_request->nsector==2){ + this_request->nsector--; + port_read(HD_DATA,this_request->bh->b_data,256); + } + else{ + port_read(HD_DATA,this_request->bh->b_data+512,256); return; + } + + this_request->errors = 0; + this_request->bh->b_uptodate = 1; this_request->bh->b_dirt = 0; wake_up(&wait_for_request);