AndroidLab

Il Laboratorio Italiano Android e Google Chrome

Il Nexus S, come molti dei telefoni che usciranno con Android 2.3 abbandona il filesystem YAFFS ed userà l’ext4. Facendolo di fatto diventare il nuovo filesystem predefinito di Android, fermo restanto che i produttori potranno sempre usare il filesystem che preferiscono per i propri firmware.

La notizia ci viene data in un post sul blog ufficiale degli sviluppatori Android. Il post in questione, scritto da Tim Bray, è il primo si una serie di post indirizzati agli sviluppatori su aspetti di Android 2.3 da tener in considerazione per lo sviluppo.

Quel che si parla nel post, per chi è curioso e poco anglofono, riguarda un disagio che il filesystem ext4 introduce.
Questo nuovo filesystem usa il buffer in maniera più aggressiva rispetto a quanto facesse YAFFS. Tutto ciò si traduce in un dover prestare molto più attenzione quando si scrivono dati, che questi vengano effettivamente scritti quando lo vogliamo noi.

Naturalmente se nelle vostre applicazioni usate solo le SharedPreferences e database SQLite, non avete nulla di cui preoccuparvi, tutto il necessario per esser sicuri che i dati siano scritti è già stato fatto per voi da Google. Ma chi fa uso dell’archiviazioni di propri dati nel filesystem, allora è necessario che usiate com.android.internal.os.AtomicFile per dati grezzi, oppure una delle modalità sincrone di java.io.RandomAccessFile. Entrambi si preoocuperanno di chiamare fsync(), system call che chi programma in C conosce bene, questa non fa altro che forzare la scrittura nel filesystem dei dati.

Naturalmente una chiamata di fsync() va fatta solo quando strettamente necessario in quanto forzare la scrittura può portare rallentamente accentuati nell’esecuzione dell’applicazione.