mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 01:10:04 +00:00
![Linus Torvalds](/assets/img/avatar_default.png)
Zonefs is a very simple file system exposing each zone of a zoned block device as a file. Unlike a regular file system with native zoned block device support (e.g. f2fs or the on-going btrfs effort), zonefs does not hide the sequential write constraint of zoned block devices to the user. As a result, zonefs is not a POSIX compliant file system. Its goal is to simplify the implementation of zoned block devices support in applications by replacing raw block device file accesses with a richer file based API, avoiding relying on direct block device file ioctls which may be more obscure to developers. One example of this approach is the implementation of LSM (log-structured merge) tree structures (such as used in RocksDB and LevelDB) on zoned block devices by allowing SSTables to be stored in a zone file similarly to a regular file system rather than as a range of sectors of a zoned device. The introduction of the higher level construct "one file is one zone" can help reducing the amount of changes needed in the application while at the same time allowing the use of zoned block devices with various programming languages other than C. Zonefs IO management implementation uses the new iomap generic code. Zonefs has been successfully tested using a functional test suite (available with zonefs userland format tool on github) and a prototype implementation of LevelDB on top of zonefs. Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com> -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQSRPv8tYSvhwAzJdzjdoc3SxdoYdgUCXj1y8QAKCRDdoc3SxdoY dqozAP9J3t+Q95BgKgI5jP+XEtyYsPBTaVrvaSaViEnwtJLVoQD/ZQ1lTCZSE9OI UkvWawkuFtLGfOxTqyA3eZrZi22Ttwk= =YVvO -----END PGP SIGNATURE----- Merge tag 'zonefs-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs Pull new zonefs file system from Damien Le Moal: "Zonefs is a very simple file system exposing each zone of a zoned block device as a file. Unlike a regular file system with native zoned block device support (e.g. f2fs or the on-going btrfs effort), zonefs does not hide the sequential write constraint of zoned block devices to the user. As a result, zonefs is not a POSIX compliant file system. Its goal is to simplify the implementation of zoned block devices support in applications by replacing raw block device file accesses with a richer file based API, avoiding relying on direct block device file ioctls which may be more obscure to developers. One example of this approach is the implementation of LSM (log-structured merge) tree structures (such as used in RocksDB and LevelDB) on zoned block devices by allowing SSTables to be stored in a zone file similarly to a regular file system rather than as a range of sectors of a zoned device. The introduction of the higher level construct "one file is one zone" can help reducing the amount of changes needed in the application while at the same time allowing the use of zoned block devices with various programming languages other than C. Zonefs IO management implementation uses the new iomap generic code. Zonefs has been successfully tested using a functional test suite (available with zonefs userland format tool on github) and a prototype implementation of LevelDB on top of zonefs" * tag 'zonefs-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs: zonefs: Add documentation fs: New zonefs file system
137 lines
4.4 KiB
Makefile
137 lines
4.4 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for the Linux filesystems.
|
|
#
|
|
# 14 Sep 2000, Christoph Hellwig <hch@infradead.org>
|
|
# Rewritten to use lists instead of if-statements.
|
|
#
|
|
|
|
obj-y := open.o read_write.o file_table.o super.o \
|
|
char_dev.o stat.o exec.o pipe.o namei.o fcntl.o \
|
|
ioctl.o readdir.o select.o dcache.o inode.o \
|
|
attr.o bad_inode.o file.o filesystems.o namespace.o \
|
|
seq_file.o xattr.o libfs.o fs-writeback.o \
|
|
pnode.o splice.o sync.o utimes.o d_path.o \
|
|
stack.o fs_struct.o statfs.o fs_pin.o nsfs.o \
|
|
fs_types.o fs_context.o fs_parser.o fsopen.o
|
|
|
|
ifeq ($(CONFIG_BLOCK),y)
|
|
obj-y += buffer.o block_dev.o direct-io.o mpage.o
|
|
else
|
|
obj-y += no-block.o
|
|
endif
|
|
|
|
obj-$(CONFIG_PROC_FS) += proc_namespace.o
|
|
|
|
obj-y += notify/
|
|
obj-$(CONFIG_EPOLL) += eventpoll.o
|
|
obj-y += anon_inodes.o
|
|
obj-$(CONFIG_SIGNALFD) += signalfd.o
|
|
obj-$(CONFIG_TIMERFD) += timerfd.o
|
|
obj-$(CONFIG_EVENTFD) += eventfd.o
|
|
obj-$(CONFIG_USERFAULTFD) += userfaultfd.o
|
|
obj-$(CONFIG_AIO) += aio.o
|
|
obj-$(CONFIG_IO_URING) += io_uring.o
|
|
obj-$(CONFIG_IO_WQ) += io-wq.o
|
|
obj-$(CONFIG_FS_DAX) += dax.o
|
|
obj-$(CONFIG_FS_ENCRYPTION) += crypto/
|
|
obj-$(CONFIG_FS_VERITY) += verity/
|
|
obj-$(CONFIG_FILE_LOCKING) += locks.o
|
|
obj-$(CONFIG_COMPAT) += compat.o
|
|
obj-$(CONFIG_BINFMT_AOUT) += binfmt_aout.o
|
|
obj-$(CONFIG_BINFMT_EM86) += binfmt_em86.o
|
|
obj-$(CONFIG_BINFMT_MISC) += binfmt_misc.o
|
|
obj-$(CONFIG_BINFMT_SCRIPT) += binfmt_script.o
|
|
obj-$(CONFIG_BINFMT_ELF) += binfmt_elf.o
|
|
obj-$(CONFIG_COMPAT_BINFMT_ELF) += compat_binfmt_elf.o
|
|
obj-$(CONFIG_BINFMT_ELF_FDPIC) += binfmt_elf_fdpic.o
|
|
obj-$(CONFIG_BINFMT_FLAT) += binfmt_flat.o
|
|
|
|
obj-$(CONFIG_FS_MBCACHE) += mbcache.o
|
|
obj-$(CONFIG_FS_POSIX_ACL) += posix_acl.o
|
|
obj-$(CONFIG_NFS_COMMON) += nfs_common/
|
|
obj-$(CONFIG_COREDUMP) += coredump.o
|
|
obj-$(CONFIG_SYSCTL) += drop_caches.o
|
|
|
|
obj-$(CONFIG_FHANDLE) += fhandle.o
|
|
obj-y += iomap/
|
|
|
|
obj-y += quota/
|
|
|
|
obj-$(CONFIG_PROC_FS) += proc/
|
|
obj-$(CONFIG_KERNFS) += kernfs/
|
|
obj-$(CONFIG_SYSFS) += sysfs/
|
|
obj-$(CONFIG_CONFIGFS_FS) += configfs/
|
|
obj-y += devpts/
|
|
|
|
obj-$(CONFIG_PROFILING) += dcookies.o
|
|
obj-$(CONFIG_DLM) += dlm/
|
|
|
|
# Do not add any filesystems before this line
|
|
obj-$(CONFIG_FSCACHE) += fscache/
|
|
obj-$(CONFIG_REISERFS_FS) += reiserfs/
|
|
obj-$(CONFIG_EXT4_FS) += ext4/
|
|
# We place ext4 before ext2 so that clean ext3 root fs's do NOT mount using the
|
|
# ext2 driver, which doesn't know about journalling! Explicitly request ext2
|
|
# by giving the rootfstype= parameter.
|
|
obj-$(CONFIG_EXT2_FS) += ext2/
|
|
obj-$(CONFIG_JBD2) += jbd2/
|
|
obj-$(CONFIG_CRAMFS) += cramfs/
|
|
obj-$(CONFIG_SQUASHFS) += squashfs/
|
|
obj-y += ramfs/
|
|
obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
|
|
obj-$(CONFIG_CODA_FS) += coda/
|
|
obj-$(CONFIG_MINIX_FS) += minix/
|
|
obj-$(CONFIG_FAT_FS) += fat/
|
|
obj-$(CONFIG_BFS_FS) += bfs/
|
|
obj-$(CONFIG_ISO9660_FS) += isofs/
|
|
obj-$(CONFIG_HFSPLUS_FS) += hfsplus/ # Before hfs to find wrapped HFS+
|
|
obj-$(CONFIG_HFS_FS) += hfs/
|
|
obj-$(CONFIG_ECRYPT_FS) += ecryptfs/
|
|
obj-$(CONFIG_VXFS_FS) += freevxfs/
|
|
obj-$(CONFIG_NFS_FS) += nfs/
|
|
obj-$(CONFIG_EXPORTFS) += exportfs/
|
|
obj-$(CONFIG_NFSD) += nfsd/
|
|
obj-$(CONFIG_LOCKD) += lockd/
|
|
obj-$(CONFIG_NLS) += nls/
|
|
obj-$(CONFIG_UNICODE) += unicode/
|
|
obj-$(CONFIG_SYSV_FS) += sysv/
|
|
obj-$(CONFIG_CIFS) += cifs/
|
|
obj-$(CONFIG_HPFS_FS) += hpfs/
|
|
obj-$(CONFIG_NTFS_FS) += ntfs/
|
|
obj-$(CONFIG_UFS_FS) += ufs/
|
|
obj-$(CONFIG_EFS_FS) += efs/
|
|
obj-$(CONFIG_JFFS2_FS) += jffs2/
|
|
obj-$(CONFIG_UBIFS_FS) += ubifs/
|
|
obj-$(CONFIG_AFFS_FS) += affs/
|
|
obj-$(CONFIG_ROMFS_FS) += romfs/
|
|
obj-$(CONFIG_QNX4FS_FS) += qnx4/
|
|
obj-$(CONFIG_QNX6FS_FS) += qnx6/
|
|
obj-$(CONFIG_AUTOFS_FS) += autofs/
|
|
obj-$(CONFIG_ADFS_FS) += adfs/
|
|
obj-$(CONFIG_FUSE_FS) += fuse/
|
|
obj-$(CONFIG_OVERLAY_FS) += overlayfs/
|
|
obj-$(CONFIG_ORANGEFS_FS) += orangefs/
|
|
obj-$(CONFIG_UDF_FS) += udf/
|
|
obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/
|
|
obj-$(CONFIG_OMFS_FS) += omfs/
|
|
obj-$(CONFIG_JFS_FS) += jfs/
|
|
obj-$(CONFIG_XFS_FS) += xfs/
|
|
obj-$(CONFIG_9P_FS) += 9p/
|
|
obj-$(CONFIG_AFS_FS) += afs/
|
|
obj-$(CONFIG_NILFS2_FS) += nilfs2/
|
|
obj-$(CONFIG_BEFS_FS) += befs/
|
|
obj-$(CONFIG_HOSTFS) += hostfs/
|
|
obj-$(CONFIG_CACHEFILES) += cachefiles/
|
|
obj-$(CONFIG_DEBUG_FS) += debugfs/
|
|
obj-$(CONFIG_TRACING) += tracefs/
|
|
obj-$(CONFIG_OCFS2_FS) += ocfs2/
|
|
obj-$(CONFIG_BTRFS_FS) += btrfs/
|
|
obj-$(CONFIG_GFS2_FS) += gfs2/
|
|
obj-$(CONFIG_F2FS_FS) += f2fs/
|
|
obj-$(CONFIG_CEPH_FS) += ceph/
|
|
obj-$(CONFIG_PSTORE) += pstore/
|
|
obj-$(CONFIG_EFIVAR_FS) += efivarfs/
|
|
obj-$(CONFIG_EROFS_FS) += erofs/
|
|
obj-$(CONFIG_VBOXSF_FS) += vboxsf/
|
|
obj-$(CONFIG_ZONEFS_FS) += zonefs/
|