This patch adds NTFS Read-Write driver to fs/ntfs3.
Having decades of expertise in commercial file systems development and huge test coverage, we at Paragon Software GmbH want to make our contribution to the Open Source Community by providing implementation of NTFS Read-Write driver for the Linux Kernel.
This is fully functional NTFS Read-Write driver. Current version works with NTFS(including v3.1) and normal/compressed/sparse files and supports journal replaying.
We plan to support this version after the codebase once merged, and add new features and fix bugs. For example, full journaling support over JBD will be added in later updates.
v2: - patch splitted to chunks (file-wise) - build issues fixed - sparse and checkpatch.pl errors fixed - NULL pointer dereference on mkfs.ntfs-formatted volume mount fixed - cosmetics + code cleanup
v3: - added acl, noatime, no_acs_rules, prealloc mount options - added fiemap support - fixed encodings support - removed typedefs - adapted Kernel-way logging mechanisms - fixed typos and corner-case issues
v4: - atomic_open() refactored - code style updated - bugfixes
v5: - nls/nls_alt mount options added - Unicode conversion fixes - Improved very fragmented files operations - logging cosmetics
v6: - Security Descriptors processing changed added system.ntfs_security xattr to set SD - atomic_open() optimized - cosmetics
Christophe JAILLET (2): fs/ntfs3: Remove a useless test in 'indx_find()' fs/ntfs3: Remove a useless shadowing variable
Colin Ian King (4): fs/ntfs3: Fix various spelling mistakes fs/ntfs3: Fix integer overflow in multiplication fs/ntfs3: Remove redundant initialization of variable err fs/ntfs3: Fix a memory leak on object opts
Dan Carpenter (5): fs/ntfs3: add checks for allocation failure fs/ntfs3: fix an error code in ntfs_get_acl_ex() fs/ntfs3: Fix error code in indx_add_allocate() fs/ntfs3: Potential NULL dereference in hdr_find_split() fs/ntfs3: Fix error handling in indx_insert_into_root()
Gustavo A. R. Silva (1): fs/ntfs3: Fix fall-through warnings for Clang
Jiapeng Chong (1): fs/ntfs3: Remove unused including <linux/version.h>
Kari Argillander (54): fs/ntfs3: Use linux/log2 is_power_of_2 function fs/ntfs3: Add ifndef + define to all header files fs/ntfs3: Fix one none utf8 char in source file fs/ntfs3: Restyle comment block in ni_parse_reparse() fs/ntfs3: Use kernel ALIGN macros over driver specific fs/ntfs3: Do not use driver own alloc wrappers fs/ntfs3: Use kcalloc/kmalloc_array over kzalloc/kmalloc fs/ntfs3: Restyle comments to better align with kernel-doc fs/ntfs3: Remove fat ioctl's from ntfs3 driver for now fs/ntfs3: Fix integer overflow in ni_fiemap with fiemap_prep() fs/ntfs3: Remove unnecessary condition checking from ntfs_file_read_iter fs/ntfs3: Remove GPL boilerplates from decompress lib files fs/ntfs3: Change how module init/info messages are displayed fs/ntfs3: Remove unnecesarry mount option noatime fs/ntfs3: Remove unnecesarry remount flag handling fs/ntfs3: Convert mount options to pointer in sbi fs/ntfs3: Use new api for mounting fs/ntfs3: Init spi more in init_fs_context than fill_super fs/ntfs3: Make mount option nohidden more universal fs/ntfs3: Add iocharset= mount option as alias for nls= fs/ntfs3: Rename mount option no_acs_rules > (no)acsrules fs/ntfs3: Show uid/gid always in show_options() fs/ntfs3. Add forward declarations for structs to debug.h fs/ntfs3: Add missing header files to ntfs.h fs/ntfs3: Add missing headers and forward declarations to ntfs_fs.h fs/ntfs3: Add missing header and guards to lib/ headers fs/ntfs3: Change right headers to bitfunc.c fs/ntfs3: Change right headers to upcase.c fs/ntfs3: Change right headers to lznt.c fs/ntfs3: Remove unneeded header files from c files fs/ntfs3: Limit binary search table size fs/ntfs3: Make binary search to search smaller chunks in beginning fs/ntfs3: Always use binary search with entry search fs/ntfs3: Remove '+' before constant in ni_insert_resident() fs/ntfs3: Place Comparisons constant right side of the test fs/ntfs3: Remove braces from single statment block fs/ntfs3: Remove tabs before spaces from comment fs/ntfs3: Fix ntfs_look_for_free_space() does only report -ENOSPC fs/ntfs3: Remove always false condition check fs/ntfs3: Use clamp/max macros instead of comparisons fs/ntfs3: Use min/max macros instated of ternary operators fs/ntfs3: Fix wrong error message $Logfile -> $UpCase fs/ntfs3: Change EINVAL to ENOMEM when d_make_root fails fs/ntfs3: Remove impossible fault condition in fill_super fs/ntfs3: Return straight without goto in fill_super fs/ntfs3: Remove unnecessary variable loading in fill_super fs/ntfs3: Use sb instead of sbi->sb in fill_super fs/ntfs3: Remove tmp var is_ro in ntfs_fill_super fs/ntfs3: Remove tmp pointer bd_inode in fill_super fs/ntfs3: Remove tmp pointer upcase in fill_super fs/ntfs3: Initialize pointer before use place in fill_super fs/ntfs3: Initiliaze sb blocksize only in one place + refactor Doc/fs/ntfs3: Fix rst format and make it cleaner fs/ntfs3: Remove deprecated mount options nls
Konstantin Komarov (37): fs/ntfs3: Add headers and misc files fs/ntfs3: Add initialization of super block fs/ntfs3: Add bitmap fs/ntfs3: Add file operations and implementation fs/ntfs3: Add attrib operations fs/ntfs3: Add compression fs/ntfs3: Add NTFS journal fs/ntfs3: Add Kconfig, Makefile and doc fs/ntfs3: Add NTFS3 in fs/Kconfig and fs/Makefile fs/ntfs3: Rework file operations fs/ntfs3: Restyle comments to better align with kernel-doc fs/ntfs3: Fix insertion of attr in ni_ins_attr_ext fs/ntfs3: Change max hardlinks limit to 4000 fs/ntfs3: Add sync flag to ntfs_sb_write_run and al_update fs/ntfs3: Fix logical error in ntfs_create_inode fs/ntfs3: Move ni_lock_dir and ni_unlock into ntfs_create_inode fs/ntfs3: Refactor ntfs_get_acl_ex for better readability fs/ntfs3: Pass flags to ntfs_set_ea in ntfs_set_acl_ex fs/ntfs3: Change posix_acl_equiv_mode to posix_acl_update_mode fs/ntfs3: Refactoring lock in ntfs_init_acl fs/ntfs3: Reject mount if boot's cluster size < media sector size fs/ntfs3: Refactoring of ntfs_init_from_boot fs/ntfs3: Check for NULL if ATTR_EA_INFO is incorrect fs/ntfs3: Use available posix_acl_release instead of ntfs_posix_acl_release fs/ntfs3: Remove locked argument in ntfs_set_ea fs/ntfs3: Refactoring of ntfs_set_ea fs/ntfs3: Forbid FALLOC_FL_PUNCH_HOLE for normal files fs/ntfs3: Remove unnecessary functions fs/ntfs3: Keep prealloc for all types of files fs/ntfs3: Fix memory leak if fill_super failed fs/ntfs3: Rework ntfs_utf16_to_nls fs/ntfs3: Refactor ntfs_readlink_hlp fs/ntfs3: Refactor ntfs_create_inode fs/ntfs3: Refactor ni_parse_reparse fs/ntfs3: Refactor ntfs_read_mft fs/ntfs3: Check for NULL pointers in ni_try_remove_attr_list fs/ntfs3: Add MAINTAINERS
Nathan Chancellor (1): fs/ntfs3: Remove unused variable cnt in ntfs_security_init()
Yin Xiujiang (2): fs/ntfs3: Fix the issue from backport 5.15 to 5.10 fs/ntfs3: Add ntfs3 module in openeuler_defconfig
Documentation/filesystems/index.rst | 1 + Documentation/filesystems/ntfs3.rst | 115 + MAINTAINERS | 9 + arch/arm64/configs/openeuler_defconfig | 4 + arch/x86/configs/openeuler_defconfig | 4 + fs/Kconfig | 1 + fs/Makefile | 1 + fs/ntfs3/Kconfig | 46 + fs/ntfs3/Makefile | 36 + fs/ntfs3/attrib.c | 2083 ++++++++++ fs/ntfs3/attrlist.c | 457 +++ fs/ntfs3/bitfunc.c | 128 + fs/ntfs3/bitmap.c | 1491 +++++++ fs/ntfs3/debug.h | 55 + fs/ntfs3/dir.c | 593 +++ fs/ntfs3/file.c | 1254 ++++++ fs/ntfs3/frecord.c | 3284 +++++++++++++++ fs/ntfs3/fslog.c | 5213 ++++++++++++++++++++++++ fs/ntfs3/fsntfs.c | 2506 ++++++++++++ fs/ntfs3/index.c | 2584 ++++++++++++ fs/ntfs3/inode.c | 1960 +++++++++ fs/ntfs3/lib/decompress_common.c | 319 ++ fs/ntfs3/lib/decompress_common.h | 343 ++ fs/ntfs3/lib/lib.h | 32 + fs/ntfs3/lib/lzx_decompress.c | 670 +++ fs/ntfs3/lib/xpress_decompress.c | 142 + fs/ntfs3/lznt.c | 453 ++ fs/ntfs3/namei.c | 387 ++ fs/ntfs3/ntfs.h | 1224 ++++++ fs/ntfs3/ntfs_fs.h | 1138 ++++++ fs/ntfs3/record.c | 602 +++ fs/ntfs3/run.c | 1111 +++++ fs/ntfs3/super.c | 1507 +++++++ fs/ntfs3/upcase.c | 104 + fs/ntfs3/xattr.c | 991 +++++ 35 files changed, 30848 insertions(+) create mode 100644 Documentation/filesystems/ntfs3.rst create mode 100644 fs/ntfs3/Kconfig create mode 100644 fs/ntfs3/Makefile create mode 100644 fs/ntfs3/attrib.c create mode 100644 fs/ntfs3/attrlist.c create mode 100644 fs/ntfs3/bitfunc.c create mode 100644 fs/ntfs3/bitmap.c create mode 100644 fs/ntfs3/debug.h create mode 100644 fs/ntfs3/dir.c create mode 100644 fs/ntfs3/file.c create mode 100644 fs/ntfs3/frecord.c create mode 100644 fs/ntfs3/fslog.c create mode 100644 fs/ntfs3/fsntfs.c create mode 100644 fs/ntfs3/index.c create mode 100644 fs/ntfs3/inode.c create mode 100644 fs/ntfs3/lib/decompress_common.c create mode 100644 fs/ntfs3/lib/decompress_common.h create mode 100644 fs/ntfs3/lib/lib.h create mode 100644 fs/ntfs3/lib/lzx_decompress.c create mode 100644 fs/ntfs3/lib/xpress_decompress.c create mode 100644 fs/ntfs3/lznt.c create mode 100644 fs/ntfs3/namei.c create mode 100644 fs/ntfs3/ntfs.h create mode 100644 fs/ntfs3/ntfs_fs.h create mode 100644 fs/ntfs3/record.c create mode 100644 fs/ntfs3/run.c create mode 100644 fs/ntfs3/super.c create mode 100644 fs/ntfs3/upcase.c create mode 100644 fs/ntfs3/xattr.c