2012-04-04 5 views
5

C 프로그램에서 리눅스 커널이 SSD 디스크의 블록을 TRIM으로 바꾸라고 어떻게 말합니까? 나는 open() 장치와 fcntl() 장치를 가지고 있다고 가정합니다. 일반 (즉, 다른 SSD 디스크로 작업)SSD 디스크에서 블록을 트림하는 방법은 무엇입니까?

참고 : 원시 데이터 만 장치에 ext4 파일 시스템이 없습니다.

답변

6

IOCATADELETE으로 보내주십시오. 다음과 같은 내용 :

//header - may already be defined 
#define IOCATADELETE _IOW('a', 104, off_t[2]) 

//code 
int fd = open("/dev/abc", O_RDWR | O_DIRECT); 
off_t ioarg[2]; 
ioarg[0] = 0; //block number 
ioarg[1] = 0; //size 
ioctl(fd, IOCATADELETE, ioarg); 
close(fd); 
+0

감사합니다. 이것은 내가 필요한 것입니다. – Nulik

+0

"104"는 무엇입니까? TRIM 명령의 번호입니까 아니면 여러 개의 숫자로 구성되어 있습니까? –

관련 문제