File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -357,6 +357,27 @@ int simple_offset_empty(struct dentry *dentry)
357357 return ret ;
358358}
359359
360+ /**
361+ * simple_offset_rename - handle directory offsets for rename
362+ * @old_dir: parent directory of source entry
363+ * @old_dentry: dentry of source entry
364+ * @new_dir: parent_directory of destination entry
365+ * @new_dentry: dentry of destination
366+ *
367+ * Caller provides appropriate serialization.
368+ *
369+ * Returns zero on success, a negative errno value on failure.
370+ */
371+ int simple_offset_rename (struct inode * old_dir , struct dentry * old_dentry ,
372+ struct inode * new_dir , struct dentry * new_dentry )
373+ {
374+ struct offset_ctx * old_ctx = old_dir -> i_op -> get_offset_ctx (old_dir );
375+ struct offset_ctx * new_ctx = new_dir -> i_op -> get_offset_ctx (new_dir );
376+
377+ simple_offset_remove (old_ctx , old_dentry );
378+ return simple_offset_add (new_ctx , old_dentry );
379+ }
380+
360381/**
361382 * simple_offset_rename_exchange - exchange rename with directory offsets
362383 * @old_dir: parent of dentry being moved
Original file line number Diff line number Diff line change @@ -3338,6 +3338,8 @@ void simple_offset_init(struct offset_ctx *octx);
33383338int simple_offset_add (struct offset_ctx * octx , struct dentry * dentry );
33393339void simple_offset_remove (struct offset_ctx * octx , struct dentry * dentry );
33403340int simple_offset_empty (struct dentry * dentry );
3341+ int simple_offset_rename (struct inode * old_dir , struct dentry * old_dentry ,
3342+ struct inode * new_dir , struct dentry * new_dentry );
33413343int simple_offset_rename_exchange (struct inode * old_dir ,
33423344 struct dentry * old_dentry ,
33433345 struct inode * new_dir ,
Original file line number Diff line number Diff line change @@ -3473,8 +3473,7 @@ static int shmem_rename2(struct mnt_idmap *idmap,
34733473 return error ;
34743474 }
34753475
3476- simple_offset_remove (shmem_get_offset_ctx (old_dir ), old_dentry );
3477- error = simple_offset_add (shmem_get_offset_ctx (new_dir ), old_dentry );
3476+ error = simple_offset_rename (old_dir , old_dentry , new_dir , new_dentry );
34783477 if (error )
34793478 return error ;
34803479
You can’t perform that action at this time.
0 commit comments