2012-04-04 12 views
5

In un programma in C, come faccio a dire al kernel Linux di TRIM un blocco su un disco SSD? Suppongo di dover effettuare il open() dispositivo e fcntl() qualcosa, ma cosa? Deve essere generico (cioè lavorare con diversi dischi SSD)come TRIM un blocco sul disco SSD?

Nota: non esiste un filesystem ext4 sul dispositivo, ma solo dati grezzi.

risposta

6

Lo invierete a IOCATADELETE. Qualcosa del genere:

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

grazie, questo è quello che mi serviva – Nulik

+0

Che cos'è quel "104"? È il numero del comando TRIM o è composto da più numeri? –

Problemi correlati