Lines Matching full:dir

35  * @dir: parent inode
39 * parent directory inode @dir. UBIFS inodes inherit the following flags:
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()
69 * @dir: parent directory inode
77 struct inode *ubifs_new_inode(struct ubifs_info *c, struct inode *dir, in ubifs_new_inode() argument
98 inode_init_owner(&nop_mnt_idmap, inode, dir, mode); in ubifs_new_inode()
103 err = fscrypt_prepare_new_inode(dir, inode, &encrypted); in ubifs_new_inode()
134 ui->flags = inherit_flags(dir, mode); in ubifs_new_inode()
195 static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry, in ubifs_lookup() argument
202 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_lookup()
205 dbg_gen("'%pd' in dir ino %lu", dentry, dir->i_ino); in ubifs_lookup()
207 err = fscrypt_prepare_lookup(dir, dentry, &nm); in ubifs_lookup()
228 dent_key_init_hash(c, &key, dir->i_ino, nm.hash); in ubifs_lookup()
231 dent_key_init(c, &key, dir->i_ino, &nm); in ubifs_lookup()
248 inode = ubifs_iget(dir->i_sb, le64_to_cpu(dent->inum)); in ubifs_lookup()
261 if (IS_ENCRYPTED(dir) && in ubifs_lookup()
263 !fscrypt_has_permitted_context(dir, inode)) { in ubifs_lookup()
265 dir->i_ino, inode->i_ino); in ubifs_lookup()
276 static int ubifs_prepare_create(struct inode *dir, struct dentry *dentry, in ubifs_prepare_create() argument
282 return fscrypt_setup_filename(dir, &dentry->d_name, 0, nm); in ubifs_prepare_create()
285 static int ubifs_create(struct mnt_idmap *idmap, struct inode *dir, in ubifs_create() argument
289 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_create()
292 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_create()
301 dbg_gen("dent '%pd', mode %#hx in dir ino %lu", in ubifs_create()
302 dentry, mode, dir->i_ino); in ubifs_create()
308 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_create()
314 inode = ubifs_new_inode(c, dir, mode, false); in ubifs_create()
320 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_create()
325 dir->i_size += sz_change; in ubifs_create()
326 dir_ui->ui_size = dir->i_size; in ubifs_create()
327 inode_set_mtime_to_ts(dir, in ubifs_create()
328 inode_set_ctime_to_ts(dir, inode_get_ctime(inode))); in ubifs_create()
329 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_create()
341 dir->i_size -= sz_change; in ubifs_create()
342 dir_ui->ui_size = dir->i_size; in ubifs_create()
355 static struct inode *create_whiteout(struct inode *dir, struct dentry *dentry) in create_whiteout() argument
360 struct ubifs_info *c = dir->i_sb->s_fs_info; in create_whiteout()
368 dbg_gen("dent '%pd', mode %#hx in dir ino %lu", in create_whiteout()
369 dentry, mode, dir->i_ino); in create_whiteout()
371 inode = ubifs_new_inode(c, dir, mode, false); in create_whiteout()
380 err = ubifs_init_security(dir, inode, &dentry->d_name); in create_whiteout()
384 /* The dir size is updated by do_rename. */ in create_whiteout()
423 static int ubifs_tmpfile(struct mnt_idmap *idmap, struct inode *dir, in ubifs_tmpfile() argument
428 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_tmpfile()
443 dbg_gen("dent '%pd', mode %#hx in dir ino %lu", in ubifs_tmpfile()
444 dentry, mode, dir->i_ino); in ubifs_tmpfile()
446 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_tmpfile()
463 inode = ubifs_new_inode(c, dir, mode, false); in ubifs_tmpfile()
470 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_tmpfile()
482 lock_2_inodes(dir, inode); in ubifs_tmpfile()
483 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_tmpfile()
486 unlock_2_inodes(dir, inode); in ubifs_tmpfile()
494 unlock_2_inodes(dir, inode); in ubifs_tmpfile()
562 struct inode *dir = file_inode(file); in ubifs_readdir() local
563 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_readdir()
564 bool encrypted = IS_ENCRYPTED(dir); in ubifs_readdir()
566 dbg_gen("dir ino %lu, f_pos %#llx", dir->i_ino, ctx->pos); in ubifs_readdir()
576 err = fscrypt_prepare_readdir(dir); in ubifs_readdir()
615 lowest_dent_key(c, &key, dir->i_ino); in ubifs_readdir()
633 dent_key_init_hash(c, &key, dir->i_ino, ctx->pos); in ubifs_readdir()
649 ubifs_inode(dir)->creat_sqnum); in ubifs_readdir()
657 err = fscrypt_fname_disk_to_usr(dir, key_hash_flash(c, in ubifs_readdir()
714 static int ubifs_dir_release(struct inode *dir, struct file *file) in ubifs_dir_release() argument
721 static int ubifs_link(struct dentry *old_dentry, struct inode *dir, in ubifs_link() argument
724 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_link()
727 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_link()
738 dbg_gen("dent '%pd' to ino %lu (nlink %d) in dir ino %lu", in ubifs_link()
740 inode->i_nlink, dir->i_ino); in ubifs_link()
741 ubifs_assert(c, inode_is_locked(dir)); in ubifs_link()
744 err = fscrypt_prepare_link(old_dentry, dir, dentry); in ubifs_link()
748 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_link()
762 lock_2_inodes(dir, inode); in ubifs_link()
771 dir->i_size += sz_change; in ubifs_link()
772 dir_ui->ui_size = dir->i_size; in ubifs_link()
773 inode_set_mtime_to_ts(dir, in ubifs_link()
774 inode_set_ctime_to_ts(dir, inode_get_ctime(inode))); in ubifs_link()
775 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_link()
778 unlock_2_inodes(dir, inode); in ubifs_link()
786 dir->i_size -= sz_change; in ubifs_link()
787 dir_ui->ui_size = dir->i_size; in ubifs_link()
791 unlock_2_inodes(dir, inode); in ubifs_link()
799 static int ubifs_unlink(struct inode *dir, struct dentry *dentry) in ubifs_unlink() argument
801 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_unlink()
803 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_unlink()
816 dbg_gen("dent '%pd' from ino %lu (nlink %d) in dir ino %lu", in ubifs_unlink()
818 inode->i_nlink, dir->i_ino); in ubifs_unlink()
820 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_unlink()
830 ubifs_assert(c, inode_is_locked(dir)); in ubifs_unlink()
843 lock_2_inodes(dir, inode); in ubifs_unlink()
846 dir->i_size -= sz_change; in ubifs_unlink()
847 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
848 inode_set_mtime_to_ts(dir, in ubifs_unlink()
849 inode_set_ctime_to_ts(dir, inode_get_ctime(inode))); in ubifs_unlink()
850 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_unlink()
853 unlock_2_inodes(dir, inode); in ubifs_unlink()
866 dir->i_size += sz_change; in ubifs_unlink()
867 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
869 unlock_2_inodes(dir, inode); in ubifs_unlink()
879 * @dir: VFS inode object of the directory to check
881 * This function checks if directory @dir is empty. Returns zero if the
885 int ubifs_check_dir_empty(struct inode *dir) in ubifs_check_dir_empty() argument
887 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_check_dir_empty()
893 lowest_dent_key(c, &key, dir->i_ino); in ubifs_check_dir_empty()
906 static int ubifs_rmdir(struct inode *dir, struct dentry *dentry) in ubifs_rmdir() argument
908 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_rmdir()
911 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_rmdir()
921 dbg_gen("directory '%pd', ino %lu in dir ino %lu", dentry, in ubifs_rmdir()
922 inode->i_ino, dir->i_ino); in ubifs_rmdir()
923 ubifs_assert(c, inode_is_locked(dir)); in ubifs_rmdir()
929 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_rmdir()
946 lock_2_inodes(dir, inode); in ubifs_rmdir()
949 drop_nlink(dir); in ubifs_rmdir()
950 dir->i_size -= sz_change; in ubifs_rmdir()
951 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
952 inode_set_mtime_to_ts(dir, in ubifs_rmdir()
953 inode_set_ctime_to_ts(dir, inode_get_ctime(inode))); in ubifs_rmdir()
954 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_rmdir()
957 unlock_2_inodes(dir, inode); in ubifs_rmdir()
970 dir->i_size += sz_change; in ubifs_rmdir()
971 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
972 inc_nlink(dir); in ubifs_rmdir()
974 unlock_2_inodes(dir, inode); in ubifs_rmdir()
982 static int ubifs_mkdir(struct mnt_idmap *idmap, struct inode *dir, in ubifs_mkdir() argument
986 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mkdir()
987 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mkdir()
998 dbg_gen("dent '%pd', mode %#hx in dir ino %lu", in ubifs_mkdir()
999 dentry, mode, dir->i_ino); in ubifs_mkdir()
1005 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_mkdir()
1011 inode = ubifs_new_inode(c, dir, S_IFDIR | mode, false); in ubifs_mkdir()
1017 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mkdir()
1024 inc_nlink(dir); in ubifs_mkdir()
1025 dir->i_size += sz_change; in ubifs_mkdir()
1026 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
1027 inode_set_mtime_to_ts(dir, in ubifs_mkdir()
1028 inode_set_ctime_to_ts(dir, inode_get_ctime(inode))); in ubifs_mkdir()
1029 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mkdir()
1042 dir->i_size -= sz_change; in ubifs_mkdir()
1043 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
1044 drop_nlink(dir); in ubifs_mkdir()
1056 static int ubifs_mknod(struct mnt_idmap *idmap, struct inode *dir, in ubifs_mknod() argument
1061 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mknod()
1062 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mknod()
1075 dbg_gen("dent '%pd' in dir ino %lu", dentry, dir->i_ino); in ubifs_mknod()
1091 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_mknod()
1099 inode = ubifs_new_inode(c, dir, mode, false); in ubifs_mknod()
1112 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mknod()
1117 dir->i_size += sz_change; in ubifs_mknod()
1118 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1119 inode_set_mtime_to_ts(dir, in ubifs_mknod()
1120 inode_set_ctime_to_ts(dir, inode_get_ctime(inode))); in ubifs_mknod()
1121 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mknod()
1133 dir->i_size -= sz_change; in ubifs_mknod()
1134 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1146 static int ubifs_symlink(struct mnt_idmap *idmap, struct inode *dir, in ubifs_symlink() argument
1151 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_symlink()
1152 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_symlink()
1159 dbg_gen("dent '%pd', target '%s' in dir ino %lu", dentry, in ubifs_symlink()
1160 symname, dir->i_ino); in ubifs_symlink()
1162 err = fscrypt_prepare_symlink(dir, symname, len, UBIFS_MAX_INO_DATA, in ubifs_symlink()
1176 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_symlink()
1182 inode = ubifs_new_inode(c, dir, S_IFLNK | S_IRWXUGO, false); in ubifs_symlink()
1213 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_symlink()
1218 dir->i_size += sz_change; in ubifs_symlink()
1219 dir_ui->ui_size = dir->i_size; in ubifs_symlink()
1220 inode_set_mtime_to_ts(dir, in ubifs_symlink()
1221 inode_set_ctime_to_ts(dir, inode_get_ctime(inode))); in ubifs_symlink()
1222 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_symlink()
1233 dir->i_size -= sz_change; in ubifs_symlink()
1234 dir_ui->ui_size = dir->i_size; in ubifs_symlink()
1324 dbg_gen("dent '%pd' ino %lu in dir ino %lu to dent '%pd' in dir ino %lu flags 0x%x", in do_rename()
1487 * have already checked the old dir inode. So there is no need in do_rename()
1575 dbg_gen("dent '%pd' ino %lu in dir ino %lu exchange dent '%pd' ino %lu in dir ino %lu", in ubifs_xrename()