On 2017/3/10 16:28, Kinglong Mee wrote: > As discuss with Jaegeuk and Chao, > "Once checkpoint is done, f2fs doesn't need to update there-in filename at > all." > > The disk-level filename is used only one case, > 1. create a file A under a dir > 2. sync A > 3. godown > 4. umount > 5. mount (roll_forward) > > Only the rename/cross_rename changes the filename, if it happens, > a. between step 1 and 2, the sync A will caused checkpoint, so that, > the roll_forward at step 5 never happens. > b. after step 2, the roll_forward happens, file A will roll forward > to the result as after step 1. > > So that, any updating the disk filename is useless, just cleanup it. > > Signed-off-by: Kinglong Mee <kinglong...@gmail.com> > --- > fs/f2fs/dir.c | 25 ++++--------------------- > fs/f2fs/f2fs.h | 2 -- > fs/f2fs/file.c | 8 -------- > fs/f2fs/inline.c | 2 -- > fs/f2fs/namei.c | 29 ----------------------------- > 5 files changed, 4 insertions(+), 62 deletions(-) > > diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c > index 8d5c62b..058c4f3 100644 > --- a/fs/f2fs/dir.c > +++ b/fs/f2fs/dir.c > @@ -337,24 +337,6 @@ static void init_dent_inode(const struct qstr *name, > struct page *ipage) > set_page_dirty(ipage); > } > > -int update_dent_inode(struct inode *inode, struct inode *to, > - const struct qstr *name) > -{ > - struct page *page; > - > - if (file_enc_name(to)) > - return 0; > - > - page = get_node_page(F2FS_I_SB(inode), inode->i_ino); > - if (IS_ERR(page)) > - return PTR_ERR(page); > - > - init_dent_inode(name, page); > - f2fs_put_page(page, 1); > - > - return 0; > -} > - > void do_make_empty_dir(struct inode *inode, struct inode *parent, > struct f2fs_dentry_ptr *d) > { > @@ -438,8 +420,11 @@ struct page *init_inode_metadata(struct inode *inode, > struct inode *dir, > set_cold_node(inode, page); > } > > - if (new_name) > + if (new_name) { > init_dent_inode(new_name, page); > + if (f2fs_encrypted_inode(dir)) > + file_set_enc_name(inode);
Please check tmpfile path, we will skip here since new_name will be null, so if we do not set enc_name flag in add_link, we will lose the flag for tmpfile which will be linked to dents later. Other parts look good to me. Thanks, > + } > > /* > * This file should be checkpointed during fsync. > @@ -599,8 +584,6 @@ int f2fs_add_regular_entry(struct inode *dir, const > struct qstr *new_name, > err = PTR_ERR(page); > goto fail; > } > - if (f2fs_encrypted_inode(dir)) > - file_set_enc_name(inode); > } > > make_dentry_ptr(NULL, &d, (void *)dentry_blk, 1); > diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h > index 7edb3be..5dbc0c0 100644 > --- a/fs/f2fs/f2fs.h > +++ b/fs/f2fs/f2fs.h > @@ -2093,8 +2093,6 @@ ino_t f2fs_inode_by_name(struct inode *dir, const > struct qstr *qstr, > struct page **page); > void f2fs_set_link(struct inode *dir, struct f2fs_dir_entry *de, > struct page *page, struct inode *inode); > -int update_dent_inode(struct inode *inode, struct inode *to, > - const struct qstr *name); > void f2fs_update_dentry(nid_t ino, umode_t mode, struct f2fs_dentry_ptr *d, > const struct qstr *name, f2fs_hash_t name_hash, > unsigned int bit_pos); > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > index 4ec764e..8c7923f 100644 > --- a/fs/f2fs/file.c > +++ b/fs/f2fs/file.c > @@ -110,20 +110,12 @@ static int get_parent_ino(struct inode *inode, nid_t > *pino) > { > struct dentry *dentry; > > - if (file_enc_name(inode)) > - return 0; > - > inode = igrab(inode); > dentry = d_find_any_alias(inode); > iput(inode); > if (!dentry) > return 0; > > - if (update_dent_inode(inode, inode, &dentry->d_name)) { > - dput(dentry); > - return 0; > - } > - > *pino = parent_ino(dentry); > dput(dentry); > return 1; > diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c > index e32a9e5..41fe27d 100644 > --- a/fs/f2fs/inline.c > +++ b/fs/f2fs/inline.c > @@ -527,8 +527,6 @@ int f2fs_add_inline_entry(struct inode *dir, const struct > qstr *new_name, > err = PTR_ERR(page); > goto fail; > } > - if (f2fs_encrypted_inode(dir)) > - file_set_enc_name(inode); > } > > f2fs_wait_on_page_writeback(ipage, NODE, true); > diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c > index 25c073f..8906c9f 100644 > --- a/fs/f2fs/namei.c > +++ b/fs/f2fs/namei.c > @@ -720,13 +720,6 @@ static int f2fs_rename(struct inode *old_dir, struct > dentry *old_dentry, > if (err) > goto put_out_dir; > > - err = update_dent_inode(old_inode, new_inode, > - &new_dentry->d_name); > - if (err) { > - release_orphan_inode(sbi); > - goto put_out_dir; > - } > - > f2fs_set_link(new_dir, new_entry, new_page, old_inode); > > new_inode->i_ctime = current_time(new_inode); > @@ -779,8 +772,6 @@ static int f2fs_rename(struct inode *old_dir, struct > dentry *old_dentry, > > down_write(&F2FS_I(old_inode)->i_sem); > file_lost_pino(old_inode); > - if (new_inode && file_enc_name(new_inode)) > - file_set_enc_name(old_inode); > up_write(&F2FS_I(old_inode)->i_sem); > > old_inode->i_ctime = current_time(old_inode); > @@ -917,18 +908,6 @@ static int f2fs_cross_rename(struct inode *old_dir, > struct dentry *old_dentry, > > f2fs_lock_op(sbi); > > - err = update_dent_inode(old_inode, new_inode, &new_dentry->d_name); > - if (err) > - goto out_unlock; > - if (file_enc_name(new_inode)) > - file_set_enc_name(old_inode); > - > - err = update_dent_inode(new_inode, old_inode, &old_dentry->d_name); > - if (err) > - goto out_undo; > - if (file_enc_name(old_inode)) > - file_set_enc_name(new_inode); > - > /* update ".." directory entry info of old dentry */ > if (old_dir_entry) > f2fs_set_link(old_inode, old_dir_entry, old_dir_page, new_dir); > @@ -972,14 +951,6 @@ static int f2fs_cross_rename(struct inode *old_dir, > struct dentry *old_dentry, > if (IS_DIRSYNC(old_dir) || IS_DIRSYNC(new_dir)) > f2fs_sync_fs(sbi->sb, 1); > return 0; > -out_undo: > - /* > - * Still we may fail to recover name info of f2fs_inode here > - * Drop it, once its name is set as encrypted > - */ > - update_dent_inode(old_inode, old_inode, &old_dentry->d_name); > -out_unlock: > - f2fs_unlock_op(sbi); > out_new_dir: > if (new_dir_entry) { > f2fs_dentry_kunmap(new_inode, new_dir_page); > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel