647년 10월 백제의 장군 의직(義直)은 보기병(步騎兵) 3천명을 동원하여 무산성(茂山城 : 현, 전북특별자치도 무주군 무풍면)을 포위하고, 다시 감물성(甘勿城)과 동잠성을 공격하였다. 당시 신라의 장군 김유신이 보기병 1만명을 거느리고 맞서싸워 백제군 3천여 명을 목베었다. 의직이 필마(匹馬)로 돌아왔다고 기록될 정도로 백제가 크게 패하였다.
감물성과 동잠성은 신라 서변의 주요 성곽으로서 경상북도 김천시 일원으로 추정되고 있다. 무산성과 감물성 · 동잠성은 거리가 상당히 떨어져 있고 초반 전투에서 신라군이 고전(苦戰)하는 것으로 보아, 의직이 단지 3천명을 동원하고 이를 나누어 감물성 · 동잠성을 공격했다고 보기는 어렵다. 아마 백제군도 신라군에 상응하는 1만명 정도 동원했을 것으로 여겨진다. 당시 백제군의 공격은 신라의 추풍령로를 차단하기 위한 작전으로 파악된다. 백제는 647년의 공세 이후 점차 신라에 밀리기 시작했으며, 648년과 649년 무렵에는 신라가 주도권을 쥐기 시작한다.