2012-04-04 41 views
5

Trong một chương trình C, làm thế nào để tôi nói với hạt nhân Linux để TRIM một khối trên một đĩa SSD? Tôi cho rằng tôi phải open() thiết bị và fcntl() một thứ gì đó, nhưng cái gì? Nó cần phải được dùng chung (ví dụ: làm việc với ổ đĩa SSD khác nhau)làm thế nào để TRIM một khối trên đĩa SSD?

Lưu ý: không có hệ thống tập tin ext4 trên thiết bị, chỉ cần dữ liệu thô.

Trả lời

6

Bạn sẽ gửi số IOCATADELETE. Một cái gì đó như thế này:

//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

cảm ơn, đây là những gì tôi cần – Nulik

+0

"104" là gì? Có phải số lượng lệnh TRIM hay nó bao gồm nhiều số? –

Các vấn đề liên quan