I've got some consequences of the information you've provided:
ubuntu@ubuntu:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 1510 MB in 2.00 seconds = 755.01 MB/sec
Timing buffered disk reads: 106 MB in 3.00 seconds = 35.29 MB/sec
1.- You have DMA active in your /dev/sda device, because it reads at 35MB/sec. If you didn't have it active, it possibly were reading at less than 10MB/sec
ubuntu@ubuntu:~$ iostat -x
Linux 2.6.28-11-generic (ubuntu) 09/08/09 _i686_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
31,84 1,80 17,42 25,18 0,00 25,21
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 5995,54 0,97 232,43 0,05 647,35 4,72 2,80 1,27 5,48 3,78 87,97
sda1 5995,31 0,56 232,42 0,02 645,56 1,16 2,78 1,27 5,46 3,78 87,96
sda2 0,05 0,41 0,01 0,03 0,43 3,55 96,12 0,01 135,13 11,66 0,05
sda4 0,16 0,00 0,01 0,00 1,30 0,00 238,78 0,00 5,05 3,19 0,00
sr0 0,94 0,00 0,06 0,00 4,02 0,00 62,87 0,01 127,94 101,49 0,65
2.- Your /dev/dsa1 partition is having a lot of I/O activity, so it's very probable that the e2fsck is still running
3.- Moreover, your /dev/sda1 is providing 645 reads sectors per second and 1 write per second to the operating system!
4.- I don't know how long your drive is. It depends on what your OS and the utility you're using assumes a sector is: If 'hdparm sector size' is 1KB, your drive size has 1,1 TB approx. If 'hdparm sector size' is 4KB, your drive size has 300 GB approx.
5.- And I don't know how long is 'iostat sector size' in your OS. It's usually 1KB or 4KB. Supposing it's 4KB, yor OS is reading 645,56 * 4 KB = 2582,24 KB per second. Yes, it can seem a slow speed, but think that CPU has to check every sector, so drive has to stop transferring when CPU is checking sectors it has already in main memory.
6.- If you know the above values, you can know the estimated time e2fsck is going to take, supposing it doesn't go inside an infinite loop:
142 GB = 142 * 1024 * 1024 KB = 148897792 KB
645'56 * iostat sector size in KB ------------> 1 sec
148897792 KB ----------------------------------> X
X = (148897792 KB) / (645'56 * iostat sector size in KB )
The X value appears in seconds, so you can change it to days, for example
So you can know approximately how many time your e2fsck is going to take:
If 'iostat sector size' is 4KB, the taken time would be: 16 hours approx.
If 'iostat sector size' is 1KB, the taken time would be: 3 days approx.
I Think this calculus are correct, correct them if not
Doing these calculus in writes instead of reads are not so correct: you can think that good sectors are not written to the disk.
Well, I thougth that have help you. I'm opened to opinions of experienced people. Maybe someone know a more improved way to know the time approx. a process of this features can take.
Regards