part_blk: re-design to work event driven

Fix #750