Lines Matching refs:dir

47 static int inherit_flags(const struct inode *dir, umode_t mode)  in inherit_flags()  argument
50 const struct ubifs_inode *ui = ubifs_inode(dir); in inherit_flags()
52 if (!S_ISDIR(dir->i_mode)) in inherit_flags()
76 struct inode *ubifs_new_inode(struct ubifs_info *c, struct inode *dir, in ubifs_new_inode() argument
97 inode_init_owner(inode, dir, mode); in ubifs_new_inode()
102 err = fscrypt_prepare_new_inode(dir, inode, &encrypted); in ubifs_new_inode()
132 ui->flags = inherit_flags(dir, mode); in ubifs_new_inode()
193 static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry, in ubifs_lookup() argument
200 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_lookup()
203 dbg_gen("'%pd' in dir ino %lu", dentry, dir->i_ino); in ubifs_lookup()
205 err = fscrypt_prepare_lookup(dir, dentry, &nm); in ubifs_lookup()
225 dent_key_init_hash(c, &key, dir->i_ino, nm.hash); in ubifs_lookup()
228 dent_key_init(c, &key, dir->i_ino, &nm); in ubifs_lookup()
245 inode = ubifs_iget(dir->i_sb, le64_to_cpu(dent->inum)); in ubifs_lookup()
258 if (IS_ENCRYPTED(dir) && in ubifs_lookup()
260 !fscrypt_has_permitted_context(dir, inode)) { in ubifs_lookup()
262 dir->i_ino, inode->i_ino); in ubifs_lookup()
273 static int ubifs_create(struct inode *dir, struct dentry *dentry, umode_t mode, in ubifs_create() argument
277 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_create()
280 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_create()
290 dentry, mode, dir->i_ino); in ubifs_create()
296 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_create()
302 inode = ubifs_new_inode(c, dir, mode); in ubifs_create()
308 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_create()
313 dir->i_size += sz_change; in ubifs_create()
314 dir_ui->ui_size = dir->i_size; in ubifs_create()
315 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_create()
316 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_create()
328 dir->i_size -= sz_change; in ubifs_create()
329 dir_ui->ui_size = dir->i_size; in ubifs_create()
342 static int do_tmpfile(struct inode *dir, struct dentry *dentry, in do_tmpfile() argument
346 struct ubifs_info *c = dir->i_sb->s_fs_info; in do_tmpfile()
349 struct ubifs_inode *ui, *dir_ui = ubifs_inode(dir); in do_tmpfile()
359 dentry, mode, dir->i_ino); in do_tmpfile()
361 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in do_tmpfile()
378 inode = ubifs_new_inode(c, dir, mode); in do_tmpfile()
390 err = ubifs_init_security(dir, inode, &dentry->d_name); in do_tmpfile()
410 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in do_tmpfile()
434 static int ubifs_tmpfile(struct inode *dir, struct dentry *dentry, in ubifs_tmpfile() argument
437 return do_tmpfile(dir, dentry, mode, NULL); in ubifs_tmpfile()
494 struct inode *dir = file_inode(file); in ubifs_readdir() local
495 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_readdir()
496 bool encrypted = IS_ENCRYPTED(dir); in ubifs_readdir()
498 dbg_gen("dir ino %lu, f_pos %#llx", dir->i_ino, ctx->pos); in ubifs_readdir()
508 err = fscrypt_get_encryption_info(dir); in ubifs_readdir()
547 lowest_dent_key(c, &key, dir->i_ino); in ubifs_readdir()
565 dent_key_init_hash(c, &key, dir->i_ino, ctx->pos); in ubifs_readdir()
581 ubifs_inode(dir)->creat_sqnum); in ubifs_readdir()
589 err = fscrypt_fname_disk_to_usr(dir, key_hash_flash(c, in ubifs_readdir()
646 static int ubifs_dir_release(struct inode *dir, struct file *file) in ubifs_dir_release() argument
679 static int ubifs_link(struct dentry *old_dentry, struct inode *dir, in ubifs_link() argument
682 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_link()
685 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_link()
698 inode->i_nlink, dir->i_ino); in ubifs_link()
699 ubifs_assert(c, inode_is_locked(dir)); in ubifs_link()
702 err = fscrypt_prepare_link(old_dentry, dir, dentry); in ubifs_link()
706 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_link()
718 lock_2_inodes(dir, inode); in ubifs_link()
727 dir->i_size += sz_change; in ubifs_link()
728 dir_ui->ui_size = dir->i_size; in ubifs_link()
729 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_link()
730 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_link()
733 unlock_2_inodes(dir, inode); in ubifs_link()
741 dir->i_size -= sz_change; in ubifs_link()
742 dir_ui->ui_size = dir->i_size; in ubifs_link()
746 unlock_2_inodes(dir, inode); in ubifs_link()
754 static int ubifs_unlink(struct inode *dir, struct dentry *dentry) in ubifs_unlink() argument
756 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_unlink()
758 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_unlink()
773 inode->i_nlink, dir->i_ino); in ubifs_unlink()
775 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_unlink()
785 ubifs_assert(c, inode_is_locked(dir)); in ubifs_unlink()
798 lock_2_inodes(dir, inode); in ubifs_unlink()
799 inode->i_ctime = current_time(dir); in ubifs_unlink()
801 dir->i_size -= sz_change; in ubifs_unlink()
802 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
803 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_unlink()
804 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_unlink()
807 unlock_2_inodes(dir, inode); in ubifs_unlink()
820 dir->i_size += sz_change; in ubifs_unlink()
821 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
823 unlock_2_inodes(dir, inode); in ubifs_unlink()
839 int ubifs_check_dir_empty(struct inode *dir) in ubifs_check_dir_empty() argument
841 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_check_dir_empty()
847 lowest_dent_key(c, &key, dir->i_ino); in ubifs_check_dir_empty()
860 static int ubifs_rmdir(struct inode *dir, struct dentry *dentry) in ubifs_rmdir() argument
862 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_rmdir()
865 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_rmdir()
876 inode->i_ino, dir->i_ino); in ubifs_rmdir()
877 ubifs_assert(c, inode_is_locked(dir)); in ubifs_rmdir()
883 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_rmdir()
900 lock_2_inodes(dir, inode); in ubifs_rmdir()
901 inode->i_ctime = current_time(dir); in ubifs_rmdir()
903 drop_nlink(dir); in ubifs_rmdir()
904 dir->i_size -= sz_change; in ubifs_rmdir()
905 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
906 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_rmdir()
907 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_rmdir()
910 unlock_2_inodes(dir, inode); in ubifs_rmdir()
923 dir->i_size += sz_change; in ubifs_rmdir()
924 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
925 inc_nlink(dir); in ubifs_rmdir()
927 unlock_2_inodes(dir, inode); in ubifs_rmdir()
935 static int ubifs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in ubifs_mkdir() argument
938 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mkdir()
939 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mkdir()
950 dentry, mode, dir->i_ino); in ubifs_mkdir()
956 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_mkdir()
962 inode = ubifs_new_inode(c, dir, S_IFDIR | mode); in ubifs_mkdir()
968 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mkdir()
975 inc_nlink(dir); in ubifs_mkdir()
976 dir->i_size += sz_change; in ubifs_mkdir()
977 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
978 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_mkdir()
979 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mkdir()
992 dir->i_size -= sz_change; in ubifs_mkdir()
993 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
994 drop_nlink(dir); in ubifs_mkdir()
1006 static int ubifs_mknod(struct inode *dir, struct dentry *dentry, in ubifs_mknod() argument
1011 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mknod()
1012 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mknod()
1025 dbg_gen("dent '%pd' in dir ino %lu", dentry, dir->i_ino); in ubifs_mknod()
1041 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_mknod()
1049 inode = ubifs_new_inode(c, dir, mode); in ubifs_mknod()
1062 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mknod()
1067 dir->i_size += sz_change; in ubifs_mknod()
1068 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1069 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_mknod()
1070 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mknod()
1082 dir->i_size -= sz_change; in ubifs_mknod()
1083 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1095 static int ubifs_symlink(struct inode *dir, struct dentry *dentry, in ubifs_symlink() argument
1100 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_symlink()
1101 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_symlink()
1110 symname, dir->i_ino); in ubifs_symlink()
1112 err = fscrypt_prepare_symlink(dir, symname, len, UBIFS_MAX_INO_DATA, in ubifs_symlink()
1125 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_symlink()
1131 inode = ubifs_new_inode(c, dir, S_IFLNK | S_IRWXUGO); in ubifs_symlink()
1162 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_symlink()
1167 dir->i_size += sz_change; in ubifs_symlink()
1168 dir_ui->ui_size = dir->i_size; in ubifs_symlink()
1169 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_symlink()
1170 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_symlink()
1181 dir->i_size -= sz_change; in ubifs_symlink()
1182 dir_ui->ui_size = dir->i_size; in ubifs_symlink()
1613 static int ubifs_dir_open(struct inode *dir, struct file *file) in ubifs_dir_open() argument
1615 if (IS_ENCRYPTED(dir)) in ubifs_dir_open()
1616 return fscrypt_get_encryption_info(dir) ? -EACCES : 0; in ubifs_dir_open()