Lines Matching defs: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)
50 const struct ubifs_inode *ui = ubifs_inode(dir);
52 if (!S_ISDIR(dir->i_mode))
69 * @dir: parent directory inode
76 struct inode *ubifs_new_inode(struct ubifs_info *c, struct inode *dir,
97 inode_init_owner(inode, dir, mode);
102 err = fscrypt_prepare_new_inode(dir, inode, &encrypted);
132 ui->flags = inherit_flags(dir, mode);
193 static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry,
200 struct ubifs_info *c = dir->i_sb->s_fs_info;
203 dbg_gen("'%pd' in dir ino %lu", dentry, dir->i_ino);
205 err = fscrypt_prepare_lookup(dir, dentry, &nm);
225 dent_key_init_hash(c, &key, dir->i_ino, nm.hash);
228 dent_key_init(c, &key, dir->i_ino, &nm);
245 inode = ubifs_iget(dir->i_sb, le64_to_cpu(dent->inum));
258 if (IS_ENCRYPTED(dir) &&
260 !fscrypt_has_permitted_context(dir, inode)) {
262 dir->i_ino, inode->i_ino);
273 static int ubifs_prepare_create(struct inode *dir, struct dentry *dentry,
279 return fscrypt_setup_filename(dir, &dentry->d_name, 0, nm);
282 static int ubifs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
286 struct ubifs_info *c = dir->i_sb->s_fs_info;
289 struct ubifs_inode *dir_ui = ubifs_inode(dir);
298 dbg_gen("dent '%pd', mode %#hx in dir ino %lu",
299 dentry, mode, dir->i_ino);
305 err = ubifs_prepare_create(dir, dentry, &nm);
311 inode = ubifs_new_inode(c, dir, mode);
317 err = ubifs_init_security(dir, inode, &dentry->d_name);
322 dir->i_size += sz_change;
323 dir_ui->ui_size = dir->i_size;
324 dir->i_mtime = dir->i_ctime = inode->i_ctime;
325 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0);
337 dir->i_size -= sz_change;
338 dir_ui->ui_size = dir->i_size;
351 static struct inode *create_whiteout(struct inode *dir, struct dentry *dentry)
356 struct ubifs_info *c = dir->i_sb->s_fs_info;
365 dbg_gen("dent '%pd', mode %#hx in dir ino %lu",
366 dentry, mode, dir->i_ino);
368 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm);
372 inode = ubifs_new_inode(c, dir, mode);
381 err = ubifs_init_security(dir, inode, &dentry->d_name);
385 /* The dir size is updated by do_rename. */
425 static int ubifs_tmpfile(struct inode *dir, struct dentry *dentry,
429 struct ubifs_info *c = dir->i_sb->s_fs_info;
444 dbg_gen("dent '%pd', mode %#hx in dir ino %lu",
445 dentry, mode, dir->i_ino);
447 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm);
464 inode = ubifs_new_inode(c, dir, mode);
471 err = ubifs_init_security(dir, inode, &dentry->d_name);
483 lock_2_inodes(dir, inode);
484 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0);
487 unlock_2_inodes(dir, inode);
495 unlock_2_inodes(dir, inode);
563 struct inode *dir = file_inode(file);
564 struct ubifs_info *c = dir->i_sb->s_fs_info;
565 bool encrypted = IS_ENCRYPTED(dir);
567 dbg_gen("dir ino %lu, f_pos %#llx", dir->i_ino, ctx->pos);
577 err = fscrypt_get_encryption_info(dir);
616 lowest_dent_key(c, &key, dir->i_ino);
634 dent_key_init_hash(c, &key, dir->i_ino, ctx->pos);
650 ubifs_inode(dir)->creat_sqnum);
658 err = fscrypt_fname_disk_to_usr(dir, key_hash_flash(c,
715 static int ubifs_dir_release(struct inode *dir, struct file *file)
722 static int ubifs_link(struct dentry *old_dentry, struct inode *dir,
725 struct ubifs_info *c = dir->i_sb->s_fs_info;
728 struct ubifs_inode *dir_ui = ubifs_inode(dir);
739 dbg_gen("dent '%pd' to ino %lu (nlink %d) in dir ino %lu",
741 inode->i_nlink, dir->i_ino);
742 ubifs_assert(c, inode_is_locked(dir));
745 err = fscrypt_prepare_link(old_dentry, dir, dentry);
749 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm);
761 lock_2_inodes(dir, inode);
770 dir->i_size += sz_change;
771 dir_ui->ui_size = dir->i_size;
772 dir->i_mtime = dir->i_ctime = inode->i_ctime;
773 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0);
776 unlock_2_inodes(dir, inode);
784 dir->i_size -= sz_change;
785 dir_ui->ui_size = dir->i_size;
789 unlock_2_inodes(dir, inode);
797 static int ubifs_unlink(struct inode *dir, struct dentry *dentry)
799 struct ubifs_info *c = dir->i_sb->s_fs_info;
801 struct ubifs_inode *dir_ui = ubifs_inode(dir);
814 dbg_gen("dent '%pd' from ino %lu (nlink %d) in dir ino %lu",
816 inode->i_nlink, dir->i_ino);
818 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm);
828 ubifs_assert(c, inode_is_locked(dir));
841 lock_2_inodes(dir, inode);
842 inode->i_ctime = current_time(dir);
844 dir->i_size -= sz_change;
845 dir_ui->ui_size = dir->i_size;
846 dir->i_mtime = dir->i_ctime = inode->i_ctime;
847 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0);
850 unlock_2_inodes(dir, inode);
863 dir->i_size += sz_change;
864 dir_ui->ui_size = dir->i_size;
866 unlock_2_inodes(dir, inode);
876 * @dir: VFS inode object of the directory to check
878 * This function checks if directory @dir is empty. Returns zero if the
882 int ubifs_check_dir_empty(struct inode *dir)
884 struct ubifs_info *c = dir->i_sb->s_fs_info;
890 lowest_dent_key(c, &key, dir->i_ino);
903 static int ubifs_rmdir(struct inode *dir, struct dentry *dentry)
905 struct ubifs_info *c = dir->i_sb->s_fs_info;
908 struct ubifs_inode *dir_ui = ubifs_inode(dir);
918 dbg_gen("directory '%pd', ino %lu in dir ino %lu", dentry,
919 inode->i_ino, dir->i_ino);
920 ubifs_assert(c, inode_is_locked(dir));
926 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm);
943 lock_2_inodes(dir, inode);
944 inode->i_ctime = current_time(dir);
946 drop_nlink(dir);
947 dir->i_size -= sz_change;
948 dir_ui->ui_size = dir->i_size;
949 dir->i_mtime = dir->i_ctime = inode->i_ctime;
950 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0);
953 unlock_2_inodes(dir, inode);
966 dir->i_size += sz_change;
967 dir_ui->ui_size = dir->i_size;
968 inc_nlink(dir);
970 unlock_2_inodes(dir, inode);
978 static int ubifs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
981 struct ubifs_inode *dir_ui = ubifs_inode(dir);
982 struct ubifs_info *c = dir->i_sb->s_fs_info;
993 dbg_gen("dent '%pd', mode %#hx in dir ino %lu",
994 dentry, mode, dir->i_ino);
1000 err = ubifs_prepare_create(dir, dentry, &nm);
1006 inode = ubifs_new_inode(c, dir, S_IFDIR | mode);
1012 err = ubifs_init_security(dir, inode, &dentry->d_name);
1019 inc_nlink(dir);
1020 dir->i_size += sz_change;
1021 dir_ui->ui_size = dir->i_size;
1022 dir->i_mtime = dir->i_ctime = inode->i_ctime;
1023 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0);
1036 dir->i_size -= sz_change;
1037 dir_ui->ui_size = dir->i_size;
1038 drop_nlink(dir);
1050 static int ubifs_mknod(struct inode *dir, struct dentry *dentry,
1055 struct ubifs_inode *dir_ui = ubifs_inode(dir);
1056 struct ubifs_info *c = dir->i_sb->s_fs_info;
1069 dbg_gen("dent '%pd' in dir ino %lu", dentry, dir->i_ino);
1085 err = ubifs_prepare_create(dir, dentry, &nm);
1093 inode = ubifs_new_inode(c, dir, mode);
1106 err = ubifs_init_security(dir, inode, &dentry->d_name);
1111 dir->i_size += sz_change;
1112 dir_ui->ui_size = dir->i_size;
1113 dir->i_mtime = dir->i_ctime = inode->i_ctime;
1114 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0);
1126 dir->i_size -= sz_change;
1127 dir_ui->ui_size = dir->i_size;
1141 static int ubifs_symlink(struct inode *dir, struct dentry *dentry,
1146 struct ubifs_inode *dir_ui = ubifs_inode(dir);
1147 struct ubifs_info *c = dir->i_sb->s_fs_info;
1154 dbg_gen("dent '%pd', target '%s' in dir ino %lu", dentry,
1155 symname, dir->i_ino);
1157 err = fscrypt_prepare_symlink(dir, symname, len, UBIFS_MAX_INO_DATA,
1171 err = ubifs_prepare_create(dir, dentry, &nm);
1177 inode = ubifs_new_inode(c, dir, S_IFLNK | S_IRWXUGO);
1208 err = ubifs_init_security(dir, inode, &dentry->d_name);
1213 dir->i_size += sz_change;
1214 dir_ui->ui_size = dir->i_size;
1215 dir->i_mtime = dir->i_ctime = inode->i_ctime;
1216 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0);
1227 dir->i_size -= sz_change;
1228 dir_ui->ui_size = dir->i_size;
1319 dbg_gen("dent '%pd' ino %lu in dir ino %lu to dent '%pd' in dir ino %lu flags 0x%x",
1486 * have already checked the old dir inode. So there is no need
1693 static int ubifs_dir_open(struct inode *dir, struct file *file)
1695 if (IS_ENCRYPTED(dir))
1696 return fscrypt_get_encryption_info(dir) ? -EACCES : 0;