WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
and when I do # mkfs.ext3 /dev/hda4
it says "could not stat /dev/hda4 --- no such file or directory
While the partition table has been updated, the kernel still works on the old one. Thus the refusal to create a new filesystem. When you re-boot, it should all work.
I use "raw device" to mean anything accessible thru a low-level utility such as dd---without the benefit of any filesystem structure. Whether or not a disk has been partitioned or had a filessytem installed it always accessible as a raw device.