diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-07 20:03:32 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-07 20:03:32 -0700 |
commit | d27fb65bc2389621040e5107baedb94b4cccf641 (patch) | |
tree | 4123a7b82dd048dc8b0602994a5db6f4b9885998 /fs/sysv | |
parent | d3511f53bb2475f2a4e8460bee5a1ae6dea2a433 (diff) | |
parent | 795d673af1afae8146ac3070a2d77cfae5287c43 (diff) |
Merge branch 'work.dcache' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull misc dcache updates from Al Viro:
"Most of this pile is putting name length into struct name_snapshot and
making use of it.
The beginning of this series ("ovl_lookup_real_one(): don't bother
with strlen()") ought to have been split in two (separate switch of
name_snapshot to struct qstr from overlayfs reaping the trivial
benefits of that), but I wanted to avoid a rebase - by the time I'd
spotted that it was (a) in -next and (b) close to 5.1-final ;-/"
* 'work.dcache' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
audit_compare_dname_path(): switch to const struct qstr *
audit_update_watch(): switch to const struct qstr *
inotify_handle_event(): don't bother with strlen()
fsnotify: switch send_to_group() and ->handle_event to const struct qstr *
fsnotify(): switch to passing const struct qstr * for file_name
switch fsnotify_move() to passing const struct qstr * for old_name
ovl_lookup_real_one(): don't bother with strlen()
sysv: bury the broken "quietly truncate the long filenames" logics
nsfs: unobfuscate
unexport d_alloc_pseudo()
Diffstat (limited to 'fs/sysv')
-rw-r--r-- | fs/sysv/namei.c | 15 | ||||
-rw-r--r-- | fs/sysv/super.c | 3 | ||||
-rw-r--r-- | fs/sysv/sysv.h | 3 |
3 files changed, 0 insertions, 21 deletions
diff --git a/fs/sysv/namei.c b/fs/sysv/namei.c index 4d5d20491ffd..ea2414b385ec 100644 --- a/fs/sysv/namei.c +++ b/fs/sysv/namei.c @@ -28,21 +28,6 @@ static int add_nondir(struct dentry *dentry, struct inode *inode) return err; } -static int sysv_hash(const struct dentry *dentry, struct qstr *qstr) -{ - /* Truncate the name in place, avoids having to define a compare - function. */ - if (qstr->len > SYSV_NAMELEN) { - qstr->len = SYSV_NAMELEN; - qstr->hash = full_name_hash(dentry, qstr->name, qstr->len); - } - return 0; -} - -const struct dentry_operations sysv_dentry_operations = { - .d_hash = sysv_hash, -}; - static struct dentry *sysv_lookup(struct inode * dir, struct dentry * dentry, unsigned int flags) { struct inode * inode = NULL; diff --git a/fs/sysv/super.c b/fs/sysv/super.c index 89765ddfb738..d3b2f54d6449 100644 --- a/fs/sysv/super.c +++ b/fs/sysv/super.c @@ -312,7 +312,6 @@ static int complete_read_super(struct super_block *sb, int silent, int size) flavour_setup[sbi->s_type](sbi, &sb->s_max_links); - sbi->s_truncate = 1; sbi->s_ndatazones = sbi->s_nzones - sbi->s_firstdatazone; sbi->s_inodes_per_block = bsize >> 6; sbi->s_inodes_per_block_1 = (bsize >> 6)-1; @@ -334,8 +333,6 @@ static int complete_read_super(struct super_block *sb, int silent, int size) sb->s_op = &sysv_sops; if (sbi->s_forced_ro) sb->s_flags |= SB_RDONLY; - if (sbi->s_truncate) - sb->s_d_op = &sysv_dentry_operations; root_inode = sysv_iget(sb, SYSV_ROOT_INO); if (IS_ERR(root_inode)) { printk("SysV FS: get root inode failed\n"); diff --git a/fs/sysv/sysv.h b/fs/sysv/sysv.h index e913698779c0..1cff585526b1 100644 --- a/fs/sysv/sysv.h +++ b/fs/sysv/sysv.h @@ -23,8 +23,6 @@ struct sysv_sb_info { struct super_block *s_sb; /* VFS superblock */ int s_type; /* file system type: FSTYPE_{XENIX|SYSV|COH} */ char s_bytesex; /* bytesex (le/be/pdp) */ - char s_truncate; /* if 1: names > SYSV_NAMELEN chars are truncated */ - /* if 0: they are disallowed (ENAMETOOLONG) */ unsigned int s_inodes_per_block; /* number of inodes per block */ unsigned int s_inodes_per_block_1; /* inodes_per_block - 1 */ unsigned int s_inodes_per_block_bits; /* log2(inodes_per_block) */ @@ -166,7 +164,6 @@ extern const struct file_operations sysv_file_operations; extern const struct file_operations sysv_dir_operations; extern const struct address_space_operations sysv_aops; extern const struct super_operations sysv_sops; -extern const struct dentry_operations sysv_dentry_operations; enum { |