Deprecazione di SDCardFS

SDCardFS è deprecato sui dispositivi che si avviano con Android 11 o versione successiva ed eseguono la versione del kernel 5.4 o successiva. Su tali dispositivi, il test VTS non consente i file system montati elencati come SDCardFS. I dispositivi che si avviano con Android 11 o versioni successive ma eseguono la versione del kernel 4.19 o versioni precedenti possono continuare a utilizzare SDCardFS, ma Google non fornisce supporto aggiuntivo.

Prima della sua deprecazione, SDCardFS forniva un modo per controllare l'accesso alla memoria interna emulata e alle schede SD esterne, consentendo alle app di accedere solo ai dati rilevanti per loro. Inoltre, ha fornito un livello di insensibilità alle maiuscole e minuscole, nonché un ulteriore monitoraggio dello spazio di archiviazione.

Funzionalità di sostituzione SDCardFS

La sostituzione di SDCardFS utilizza diverse funzionalità del filesystem del kernel Linux per ottenere risultati simili. La distinzione tra maiuscole e minuscole è gestita direttamente dal filesystem; ciò si traduce in tempi di ricerca quasi identici nelle cartelle con distinzione tra maiuscole e minuscole e senza distinzione tra maiuscole e minuscole, rimuovendo il rallentamento delle cartelle di grandi dimensioni da SDCardFS. Il monitoraggio delle quote eseguito da SDCardFS per raccogliere rapidamente i dati di archiviazione per le impostazioni è ora configurato dallo spazio utente utilizzando le quote del progetto. In alcuni contesti sensibili alle prestazioni, le directory vengono montate sul posto. Una nuova implementazione FUSE fornisce archiviazione con ambito per l'accesso diretto al filesystem, principalmente per supportare la redazione delle informazioni sulla posizione.

Configura la funzionalità di sostituzione della scheda SD

Per abilitare le quote di progetto e la riduzione delle custodie per l'archiviazione emulata senza SDCardFS su un dispositivo avviato 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 su dispositivi avviati con Android 10 o versioni precedenti, poiché la distinzione tra maiuscole e minuscole nativa del file system non è compatibile con le impostazioni di crittografia basata su file utilizzate su tali dispositivi. È necessario continuare a utilizzare SDCardFS su tali dispositivi.

Motivi per deprecare SDCardFS

Esistono vari motivi per deprecare SDCardFS.

Stabilità

SDCardFS soffre di diverse condizioni di competizione relative alla distinzione tra maiuscole e minuscole, nonché di alcuni problemi relativi a circostanze di memoria insufficiente. Le ricerche senza distinzione tra maiuscole e minuscole possono essere piuttosto lente nelle directory di grandi dimensioni perché le ricerche devono percorrere la directory inferiore per trovare casi alternativi. Anche l'accesso simultaneo ai filesystem superiore e inferiore può portare a problemi.

Parità a monte

SDCardFS richiede patch aggiuntive al VFS per supportare la modifica delle opzioni sui montaggi di associazione. Queste patch richiedono ulteriore lavoro per accettare le modifiche upstream in queste aree. Le funzionalità di SDCardFS possono essere replicate dai componenti upstream, eliminando questo punto critico.

Parità di funzionalità con API

Nella versione precedente di Android, l'archiviazione con ambito limitava l'accesso a particolari tipi di metadati. L'accesso diretto all'archiviazione tramite SDCardFS non supporta queste funzionalità di archiviazione con ambito.