Ritiro di SDCardFS

SDCardFS è deprecato sui dispositivi lanciati con Android 11 o versioni successive e che eseguono la versione del kernel 5.4 o successive. Su questi dispositivi, i test VTS non consentono i file system montati elencati come SDCardFS. I dispositivi che vengono avviati con Android 11 o versioni successive, ma eseguono il kernel versione 4.19 o versioni precedenti, possono continuare a utilizzare SDCardFS, ma Google non fornisce supporto aggiuntivo.

Prima del ritiro, SDCardFS forniva un modo per controllare l'accesso alla memoria interna virtualizzata e alle schede SD esterne, consentendo alle app di accedere solo ai dati pertinenti. Inoltre, forniva un livello di insensibilità alle maiuscole, nonché un monitoraggio dello spazio di archiviazione aggiuntivo.

Funzionalità di sostituzione SDCardFS

Il sostituto di SDCardFS utilizza diverse funzionalità del file system del kernel di Linux per ottenere risultati simili. L'insensibilità alle maiuscole viene gestita direttamente dal file system. In questo modo, i tempi di ricerca sono quasi identici nelle cartelle sensibili alle maiuscole e senza distinzione tra maiuscole e minuscole, rimuovendo il rallentamento delle cartelle di grandi dimensioni da SDCardFS. Il monitoraggio delle quote effettuato da SDCardFS per raccogliere rapidamente i dati di archiviazione per le impostazioni viene ora configurato dallo spazio utente utilizzando le quote del progetto. In alcuni contesti sensibili alle prestazioni, le directory vengono montate e associate in loco. Una nuova implementazione di FUSE fornisce spazio di archiviazione basato su ambito per l'accesso diretto al file system, principalmente per supportare l'oscuramento delle informazioni sulla posizione.

Configurare la funzionalità di sostituzione della scheda SD

Per attivare le quote del progetto e la combinazione delle maiuscole per lo spazio di archiviazione virtuale senza SDCardFS su un dispositivo lanciato con Android 11 o versioni successive, eredita da emulated_storage.mk nel file device.mk:

$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)

Avviso: non eseguire questa operazione sui dispositivi avviati con Android 10 o versioni precedenti, poiché la sensibilità alle maiuscole e alle minuscole nativa del file system non è compatibile con le impostazioni di crittografia basate su file utilizzate su questi dispositivi. È necessario continuare a utilizzare SDCardFS su questi dispositivi.

Motivi per ritirare SDCardFS

Esistono vari motivi per cui SDCardFS è stato ritirato.

Stabilità

SDCardFS presenta diversi problemi di race condition relativi alla sensibilità alle maiuscole, nonché alcuni problemi relativi a circostanze di scarsa memoria. Le ricerche senza distinzione tra maiuscole e minuscole possono essere piuttosto lente nelle directory di grandi dimensioni perché devono percorrere la directory inferiore per trovare casi alternativi. Anche l'accesso simultaneo ai file system superiore e inferiore può causare problemi.

Parità upstream

SDCardFS richiede patch aggiuntive per VFS per supportare la modifica delle opzioni sui vincoli di montaggio. Queste patch comportano lavoro aggiuntivo per accettare modifiche upstream in queste aree. Le funzionalità di SDCardFS possono essere replicate dai componenti a monte, rimuovendo questo problema.

Parità di funzionalità con l'API

Nella versione precedente di Android, l'archiviazione con ambito limitava l'accesso a determinati tipi di metadati. L'accesso diretto allo spazio di archiviazione tramite SDCardFS non supporta queste funzionalità di archiviazione basate su ambito.