Files
Daniel Campello b19ea5ad25 ANDROID: sdcardfs: Add sdcardfs filesystem
Bug: 11118565
Bug: 27915347
Bug: 27992761
Bug: 28024488
Bug: 30013843
Bug: 30954918
Bug: 34133558
Bug: 34262585
Bug: 34542611
Bug: 34691169
Bug: 34723223
Bug: 35307857
Bug: 35331000
Bug: 35633782
Bug: 35643557
Bug: 35666680
bug: 35766959
Bug: 35766959
Bug: 35848445
Bug: 36004503
Bug: 36007653
Bug: 36138424
Bug: 36160015
Bug: 37193650
Bug: 37231161
Bug: 37488099
Bug: 37516160
Bug: 38045152
Bug: 38117720
Bug: 38502532
Bug: 62390017
Bug: 63245673
Bug: 63260873
Bug: 63785372
Bug: 64672411
Bug: 70278506
Bug: 72007585
Bug: 73055997
Bug: 73287721
Bug: 75987238
Bug: 77923821
Bug: 78262592
Bug: 111641492
Bug: 111642636
Bug: 111860541
Change-Id: Ic1e01e602ce335d97342be54f3da0c5c65c087cc
Signed-off-by: Daniel Rosenberg <drosen@google.com>
[adelva: Folded the following changes into this patch:
         903cea7ab0b2 ("ANDROID: Included sdcardfs source code for kernel 3.0")
         612a725e3d97 ("ANDROID: Port of sdcardfs to 4.4")
         e4187c55208b ("ANDROID: Changed type-casting in packagelist management")
         cf76072a5cd8 ("ANDROID: sdcardfs: Bring up to date with Android M permissions:")
         a43aa502c608 ("ANDROID: sdcardfs: Add support for d_canonical_path")
         d8fefbf85af2 ("ANDROID: sdcardfs: remove effectless config option")
         416677409336 ("ANDROID: sdcardfs: Remove unused code")
         8e49a570d351 ("ANDROID: sdcardfs: remove unneeded __init and __exit")
         40ee0e93f1d7 ("ANDROID: sdcardfs: Truncate packages_gid.list on overflow")
         b1d9602aa3fe ("ANDROID: sdcardfs: fix itnull.cocci warnings")
         60a177f5a167 ("ANDROID: sdcardfs: override umask on mkdir and create")
         efb3d2695203 ("ANDROID: sdcardfs: Check for other cases on path lookup")
         0da87f63666f ("ANDROID: sdcardfs: Fix locking for permission fix up")
         75b93060655e ("ANDROID: sdcardfs: Switch package list to RCU")
         657b0a00f497 ("ANDROID: sdcardfs: Added top to sdcardfs_inode_info")
         5008d91cba25 ("ANDROID: sdcardfs: fix external storage exporting incorrect uid")
         e06c452d0d07 ("ANDROID: sdcardfs: Move directory unlock before touch")
         72e5443a2816 ("ANDROID: sdcardfs: User new permission2 functions")
         ae8be7da556d ("ANDROID: sdcardfs: Add gid and mask to private mount data")
         151a3efe57a6 ("ANDROID: sdcardfs: Use per mount permissions")
         cff865a370f3 ("ANDROID: sdcardfs: Switch ->d_inode to d_inode()")
         065ac66804bf ("ANDROID: sdcardfs: Fix locking issue with permision fix up")
         31ea603eb3c4 ("ANDROID: sdcardfs: use wrappers to access i_mutex")
         c25c2f5018a2 ("ANDROID: sdcardfs: add parent pointer into dentry name hash")
         58616bb4ec68 ("ANDROID: sdcardfs: get rid of 'parent' argument of ->d_compare()")
         1654d7ffdd20 ("ANDROID: sdcardfs: Propagate dentry down to inode_change_ok()")
         39335cac1d2f ("ANDROID: sdcardfs: make it use new .rename i_op")
         7622bb3fcc79 ("ANDROID: sdcardfs: eliminate the offset argument to ->direct_IO")
         843bd7295ee0 ("ANDROID: sdcardfs: Allow non-owners to touch")
         e3d74804d174 ("ANDROID: sdcardfs: Refactor configfs interface")
         5833eda87a72 ("ANDROID: sdcardfs: add support for user permission isolation")
         d83fb1f41dd4 ("ANDROID: sdcardfs: Remove redundant operation")
         8767af17c0e5 ("ANDROID: sdcardfs: Add GID Derivation to sdcardfs")
         7119d96ad3ee ("ANDROID: sdcardfs: switch to full_name_hash and qstr")
         778e02a54859 ("ANDROID: sdcardfs: Switch strcasecmp for internal call")
         cd4965d04404 ("ANDROID: sdcardfs: Fix incorrect hash")
         40a2ee053505 ("ANDROID: sdcardfs: Add missing path_put")
         da5342bac57a ("ANDROID: sdcardfs: Don't bother deleting freelist")
         c91857b01e05 ("ANDROID: sdcardfs: implement vm_ops->page_mkwrite")
         f62b3906044b ("ANDROID: sdcardfs: support direct-IO (DIO) operations")
         c2e216d36d63 ("ANDROID: sdcardfs: Fix case insensitive lookup")
         57b92ab6f774 ("ANDROID: sdcardfs: rate limit warning print")
         8534cee39a81 ("ANDROID: sdcardfs: Replace get/put with d_lock")
         156085b2fccf ("ANDROID: sdcardfs: Use spin_lock_nested")
         8a260cabac4e ("ANDROID: sdcardfs: Switch to internal case insensitive compare")
         a8d51569573c ("ANDROID: sdcardfs: Use d_invalidate instead of drop_recurisve")
         932a6071de63 ("ANDROID: sdcardfs: Get the blocksize from the lower fs")
         0ad4c0f87527 ("ANDROID: sdcardfs: declare MODULE_ALIAS_FS")
         b97c83b5b683 ("ANDROID: sdcardfs: Use case insensitive hash function")
         9920dfb08265 ("ANDROID: sdcardfs: move path_put outside of spinlock")
         f9a25348b233 ("ANDROID: sdcardfs: Remove uninformative prints")
         720d9030bea1 ("ANDROID: sdcardfs: Fix gid issue")
         4cbb7fa6e66c ("ANDROID: sdcardfs: correct order of descriptors")
         6cff6cc301ed ("ANDROID: sdcardfs: Fix formatting")
         ac2a40412e26 ("ANDROID: sdcardfs: Fix style issues with comments")
         2212bb8ec064 ("ANDROID: sdcardfs: remove unneeded null check")
         4c1a0add8d21 ("ANDROID: sdcardfs: Use pr_[...] instead of printk")
         74535fe211ac ("ANDROID: sdcardfs: Use to kstrout")
         e6cf8dffd014 ("ANDROID: sdcardfs: Use seq_puts over seq_printf")
         2b1ac93a90b6 ("ANDROID: sdcardfs: Fix style issues in macros")
         bab6d117426f ("ANDROID: sdcardfs: remove unnecessary call to do_munmap")
         1c0bf09f19b6 ("ANDROID: sdcardfs: copy lower inode attributes in ->ioctl")
         42f3db55942b ("ANDROID: sdcardfs: fix ->llseek to update upper and lower offset")
         97ad6205055e ("ANDROID: sdcardfs: add read_iter/write_iter opeations")
         be9abc81332b ("ANDROID: sdcardfs: use d_splice_alias")
         4e90114cb1b4 ("ANDROID: sdcardfs: update module info")
         0e1f7ab14924 ("ANDROID: sdcardfs: Directly pass lower file for mmap")
         28be4beb43f9 ("ANDROID: sdcardfs: Change cache GID value")
         9fc2c452aefe ("ANDROID: sdcardfs: ->iget fixes")
         9bb72cf15cbc ("ANDROID: sdcardfs: Don't do d_add for lower fs")
         1bc21a04c11b ("ANDROID: sdcardfs: Don't complain in fixup_lower_ownership")
         0fb5b10b28a9 ("ANDROID: sdcardfs: Use filesystem specific hash")
         30e2f0aadce2 ("ANDROID: sdcardfs: Copy meta-data from lower inode")
         f748c7053194 ("ANDROID: sdcardfs: Avoid setting GIDs outside of valid ranges")
         3d38f08bacdb ("ANDROID: sdcardfs: Call lower fs's revalidate")
         2d1f1c203978 ("ANDROID: sdcardfs: Don't iput if we didn't igrab")
         857fc5e717fc ("ANDROID: sdcardfs: fix sdcardfs_destroy_inode for the inode RCU approach")
         4fceeccf1d23 ("ANDROID: sdcardfs: Move top to its own struct")
         f51470044a15 ("ANDROID: sdcardfs: Check for NULL in revalidate")
         8c7f6c97ac81 ("ANDROID: sdcardfs: d_splice_alias can return error values")
         17da01b37d61 ("ANDROID: sdcardfs: remove dead function open_flags_to_access_mode()")
         16662dd604be ("ANDROID: sdcardfs: use mount_nodev and fix a issue in sdcardfs_kill_sb")
         43c0dca6039a ("ANDROID: sdcardfs: Remove unnecessary lock")
         48960c25cdc1 ("ANDROID: sdcardfs: override credential for ioctl to lower fs")
         5d6410b9a88d ("ANDROID: Sdcardfs: Move gid derivation under flag")
         c7dd98431f83 ("ANDROID: sdcardfs: Add default_normal option")
         db9bf31a5d86 ("ANDROID: sdcardfs: port to 4.14")
         c70c9d1e82d2 ("ANDROID: sdcardfs: Use lower getattr times/size")
         04e961477d62 ("ANDROID: sdcardfs: Protect set_top")
         1ed04b79d281 ("ANDROID: sdcardfs: Hold i_mutex for i_size_write")
         77f52fc10982 ("ANDROID: sdcardfs: Set num in extension_details during make_item")
         d71596efa247 ("ANDROID: sdcardfs: fix lock issue on 32 bit/SMP architectures")
         ee6b07fced4a ("ANDROID: sdcardfs: Fix sdcardfs to stop creating cases-sensitive duplicate entries.")
         ce12807d5b75 ("ANDROID: sdcardfs: Check for private data earlier")
         c080450304cd ("ANDROID: sdcardfs: d_make_root calls iput")
         900e77796781 ("ANDROID: sdcardfs: Set s_root to NULL after putting")
         49092e89ffa4 ("ANDROID: sdcardfs: Don't d_drop in d_revalidate")
         e1f978bc9b9c ("ANDROID: sdcardfs: fix potential crash when reserved_mb is not zero")
         faa148eaf8ed ("ANDROID: sdcardfs: Check stacked filesystem depth")
         6edd721e972c ("ANDROID: sdcardfs: Don't use OVERRIDE_CRED macro")
         11ca578b4336 ("ANDROID: sdcardfs: Change current->fs under lock")
         83dea6ba6ea7 ("ANDROID: sdcardfs: Use inode iversion helpers")
         12064f3a794e ("ANDROID: sdcardfs: Add option to drop unused dentries")
         d9fe221bbf84 ("ANDROID: sdcardfs: Add sandbox")
         f544ad0b1547 ("ANDROID: sdcardfs: Add option to not link obb")]
Signed-off-by: Alistair Delva <adelva@google.com>
[drosen: folded in  e6e368c999 ("fs: sdcardfs: Add missing option to show_options")]
[maennich: Folded the following patch into this patch:
           2a8322aa8a90 ("ANDROID: sdcardfs: fix fall through in param parsing")]
Signed-off-by: Matthias Maennich <maennich@google.com>
2025-09-20 03:23:42 +01:00

332 lines
7.7 KiB
Plaintext

#
# File system configuration
#
menu "File systems"
# Use unaligned word dcache accesses
config DCACHE_WORD_ACCESS
bool
config VALIDATE_FS_PARSER
bool "Validate filesystem parameter description"
default y
help
Enable this to perform validation of the parameter description for a
filesystem when it is registered.
if BLOCK
config FS_IOMAP
bool
source "fs/ext2/Kconfig"
source "fs/ext4/Kconfig"
source "fs/jbd2/Kconfig"
config FS_MBCACHE
# Meta block cache for Extended Attributes (ext2/ext3/ext4)
tristate
default y if EXT2_FS=y && EXT2_FS_XATTR
default y if EXT4_FS=y
default m if EXT2_FS_XATTR || EXT4_FS
source "fs/reiserfs/Kconfig"
source "fs/jfs/Kconfig"
source "fs/xfs/Kconfig"
source "fs/gfs2/Kconfig"
source "fs/ocfs2/Kconfig"
source "fs/btrfs/Kconfig"
source "fs/nilfs2/Kconfig"
source "fs/f2fs/Kconfig"
config FS_DAX
bool "Direct Access (DAX) support"
depends on MMU
depends on !(ARM || MIPS || SPARC)
select DEV_PAGEMAP_OPS if (ZONE_DEVICE && !FS_DAX_LIMITED)
select FS_IOMAP
select DAX
help
Direct Access (DAX) can be used on memory-backed block devices.
If the block device supports DAX and the filesystem supports DAX,
then you can avoid using the pagecache to buffer I/Os. Turning
on this option will compile in support for DAX; you will need to
mount the filesystem using the -o dax option.
If you do not have a block device that is capable of using this,
or if unsure, say N. Saying Y will increase the size of the kernel
by about 5kB.
config FS_DAX_PMD
bool
default FS_DAX
depends on FS_DAX
depends on ZONE_DEVICE
depends on TRANSPARENT_HUGEPAGE
# Selected by DAX drivers that do not expect filesystem DAX to support
# get_user_pages() of DAX mappings. I.e. "limited" indicates no support
# for fork() of processes with MAP_SHARED mappings or support for
# direct-I/O to a DAX mapping.
config FS_DAX_LIMITED
bool
endif # BLOCK
# Posix ACL utility routines
#
# Note: Posix ACLs can be implemented without these helpers. Never use
# this symbol for ifdefs in core code.
#
config FS_POSIX_ACL
def_bool n
config EXPORTFS
tristate
config EXPORTFS_BLOCK_OPS
bool "Enable filesystem export operations for block IO"
help
This option enables the export operations for a filesystem to support
external block IO.
config FILE_LOCKING
bool "Enable POSIX file locking API" if EXPERT
default y
help
This option enables standard file locking support, required
for filesystems like NFS and for the flock() system
call. Disabling this option saves about 11k.
config MANDATORY_FILE_LOCKING
bool "Enable Mandatory file locking"
depends on FILE_LOCKING
default y
help
This option enables files appropriately marked files on appropriely
mounted filesystems to support mandatory locking.
To the best of my knowledge this is dead code that no one cares about.
source "fs/crypto/Kconfig"
source "fs/verity/Kconfig"
source "fs/notify/Kconfig"
source "fs/quota/Kconfig"
source "fs/autofs/Kconfig"
source "fs/fuse/Kconfig"
source "fs/overlayfs/Kconfig"
source "fs/incfs/Kconfig"
menu "Caches"
source "fs/fscache/Kconfig"
source "fs/cachefiles/Kconfig"
endmenu
if BLOCK
menu "CD-ROM/DVD Filesystems"
source "fs/isofs/Kconfig"
source "fs/udf/Kconfig"
endmenu
endif # BLOCK
if BLOCK
menu "DOS/FAT/EXFAT/NT Filesystems"
source "fs/fat/Kconfig"
source "fs/exfat/Kconfig"
source "fs/ntfs/Kconfig"
endmenu
endif # BLOCK
menu "Pseudo filesystems"
source "fs/proc/Kconfig"
source "fs/kernfs/Kconfig"
source "fs/sysfs/Kconfig"
config TMPFS
bool "Tmpfs virtual memory file system support (former shm fs)"
depends on SHMEM
help
Tmpfs is a file system which keeps all files in virtual memory.
Everything in tmpfs is temporary in the sense that no files will be
created on your hard drive. The files live in memory and swap
space. If you unmount a tmpfs instance, everything stored therein is
lost.
See <file:Documentation/filesystems/tmpfs.txt> for details.
config TMPFS_POSIX_ACL
bool "Tmpfs POSIX Access Control Lists"
depends on TMPFS
select TMPFS_XATTR
select FS_POSIX_ACL
help
POSIX Access Control Lists (ACLs) support additional access rights
for users and groups beyond the standard owner/group/world scheme,
and this option selects support for ACLs specifically for tmpfs
filesystems.
If you've selected TMPFS, it's possible that you'll also need
this option as there are a number of Linux distros that require
POSIX ACL support under /dev for certain features to work properly.
For example, some distros need this feature for ALSA-related /dev
files for sound to work properly. In short, if you're not sure,
say Y.
config TMPFS_XATTR
bool "Tmpfs extended attributes"
depends on TMPFS
default n
help
Extended attributes are name:value pairs associated with inodes by
the kernel or by users (see the attr(5) manual page for details).
Currently this enables support for the trusted.* and
security.* namespaces.
You need this for POSIX ACL support on tmpfs.
If unsure, say N.
config HUGETLBFS
bool "HugeTLB file system support"
depends on X86 || IA64 || SPARC64 || (S390 && 64BIT) || \
SYS_SUPPORTS_HUGETLBFS || BROKEN
help
hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read
<file:Documentation/admin-guide/mm/hugetlbpage.rst> for details.
If unsure, say N.
config HUGETLB_PAGE
def_bool HUGETLBFS
config MEMFD_CREATE
def_bool TMPFS || HUGETLBFS
config ARCH_HAS_GIGANTIC_PAGE
bool
source "fs/configfs/Kconfig"
source "fs/efivarfs/Kconfig"
endmenu
menuconfig MISC_FILESYSTEMS
bool "Miscellaneous filesystems"
default y
---help---
Say Y here to get to see options for various miscellaneous
filesystems, such as filesystems that came from other
operating systems.
This option alone does not add any kernel code.
If you say N, all options in this submenu will be skipped and
disabled; if unsure, say Y here.
if MISC_FILESYSTEMS
source "fs/orangefs/Kconfig"
source "fs/adfs/Kconfig"
source "fs/affs/Kconfig"
source "fs/ecryptfs/Kconfig"
source "fs/sdcardfs/Kconfig"
source "fs/hfs/Kconfig"
source "fs/hfsplus/Kconfig"
source "fs/befs/Kconfig"
source "fs/bfs/Kconfig"
source "fs/efs/Kconfig"
source "fs/jffs2/Kconfig"
# UBIFS File system configuration
source "fs/ubifs/Kconfig"
source "fs/cramfs/Kconfig"
source "fs/squashfs/Kconfig"
source "fs/freevxfs/Kconfig"
source "fs/minix/Kconfig"
source "fs/omfs/Kconfig"
source "fs/hpfs/Kconfig"
source "fs/qnx4/Kconfig"
source "fs/qnx6/Kconfig"
source "fs/romfs/Kconfig"
source "fs/pstore/Kconfig"
source "fs/sysv/Kconfig"
source "fs/ufs/Kconfig"
source "fs/exofs/Kconfig"
source "fs/erofs/Kconfig"
endif # MISC_FILESYSTEMS
source "fs/exofs/Kconfig.ore"
menuconfig NETWORK_FILESYSTEMS
bool "Network File Systems"
default y
depends on NET
---help---
Say Y here to get to see options for network filesystems and
filesystem-related networking code, such as NFS daemon and
RPCSEC security modules.
This option alone does not add any kernel code.
If you say N, all options in this submenu will be skipped and
disabled; if unsure, say Y here.
if NETWORK_FILESYSTEMS
source "fs/nfs/Kconfig"
source "fs/nfsd/Kconfig"
config GRACE_PERIOD
tristate
config LOCKD
tristate
depends on FILE_LOCKING
select GRACE_PERIOD
config LOCKD_V4
bool
depends on NFSD_V3 || NFS_V3
depends on FILE_LOCKING
default y
config NFS_ACL_SUPPORT
tristate
select FS_POSIX_ACL
config NFS_COMMON
bool
depends on NFSD || NFS_FS || LOCKD
default y
source "net/sunrpc/Kconfig"
source "fs/ceph/Kconfig"
source "fs/cifs/Kconfig"
source "fs/coda/Kconfig"
source "fs/afs/Kconfig"
source "fs/9p/Kconfig"
endif # NETWORK_FILESYSTEMS
source "fs/nls/Kconfig"
source "fs/dlm/Kconfig"
source "fs/unicode/Kconfig"
endmenu