fs/ntfs3: Add hidedotfiles option
authorKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Mon, 12 Sep 2022 15:28:51 +0000 (18:28 +0300)
committerKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Fri, 30 Sep 2022 14:39:46 +0000 (17:39 +0300)
With this option all files with filename[0] == '.'
will have FILE_ATTRIBUTE_HIDDEN attribute.

Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3/inode.c
fs/ntfs3/ntfs_fs.h
fs/ntfs3/super.c

index 51363d4e8636b82cab2ed467563dbda3ca6ff9fe..40b8565815a244178cb949b09a89628afc4287de 100644 (file)
@@ -1257,6 +1257,10 @@ struct inode *ntfs_create_inode(struct user_namespace *mnt_userns,
                fa = FILE_ATTRIBUTE_ARCHIVE;
        }
 
+       /* If option "hidedotfiles" then set hidden attribute for dot files. */
+       if (sbi->options->hide_dot_files && name->name[0] == '.')
+               fa |= FILE_ATTRIBUTE_HIDDEN;
+
        if (!(mode & 0222))
                fa |= FILE_ATTRIBUTE_READONLY;
 
index 2c791222c4e273a867c05476f177ccedbe2403cb..cd680ada50abf594e3b3fc1728a78731b54770ff 100644 (file)
@@ -97,6 +97,7 @@ struct ntfs_mount_options {
        unsigned sparse : 1; /* Create sparse files. */
        unsigned showmeta : 1; /* Show meta files. */
        unsigned nohidden : 1; /* Do not show hidden files. */
+       unsigned hide_dot_files : 1; /* Set hidden flag on dot files. */
        unsigned force : 1; /* RW mount dirty volume. */
        unsigned noacsrules : 1; /* Exclude acs rules. */
        unsigned prealloc : 1; /* Preallocate space when file is growing. */
index 683687ca8542b30c75e7b5ac9e7660aebb2e32e6..5346280203d9507397dec0d70198ab1dc6dd340d 100644 (file)
@@ -247,6 +247,7 @@ enum Opt {
        Opt_force,
        Opt_sparse,
        Opt_nohidden,
+       Opt_hide_dot_files,
        Opt_showmeta,
        Opt_acl,
        Opt_iocharset,
@@ -266,6 +267,7 @@ static const struct fs_parameter_spec ntfs_fs_parameters[] = {
        fsparam_flag_no("force",                Opt_force),
        fsparam_flag_no("sparse",               Opt_sparse),
        fsparam_flag_no("hidden",               Opt_nohidden),
+       fsparam_flag_no("hidedotfiles",         Opt_hide_dot_files),
        fsparam_flag_no("acl",                  Opt_acl),
        fsparam_flag_no("showmeta",             Opt_showmeta),
        fsparam_flag_no("prealloc",             Opt_prealloc),
@@ -354,6 +356,9 @@ static int ntfs_fs_parse_param(struct fs_context *fc,
        case Opt_nohidden:
                opts->nohidden = result.negated ? 1 : 0;
                break;
+       case Opt_hide_dot_files:
+               opts->hide_dot_files = result.negated ? 1 : 0;
+               break;
        case Opt_acl:
                if (!result.negated)
 #ifdef CONFIG_NTFS3_FS_POSIX_ACL