new_dir
struct inode *new_dir, struct dentry *new_dentry,
return simple_rename(idmap, old_dir, old_dentry, new_dir,
struct inode *new_dir, struct dentry *new_dentry,
return simple_rename(idmap, old_dir, old_dentry, new_dir,
struct inode *new_dir, struct dentry *new_dentry,
struct dentry *old_dentry, struct inode *new_dir,
inc_nlink(new_dir);
v9fs_invalidate_inode_attr(new_dir);
struct inode *new_dir, struct dentry *new_dentry,
struct inode *new_dir, struct dentry *new_dentry)
affs_lock_dir(new_dir);
retval = affs_insert_hash(new_dir, bh);
affs_unlock_dir(new_dir);
&AFFS_I(retval ? old_dir : new_dir)->i_metadata_bhs);
struct inode *new_dir, struct dentry *new_dentry)
affs_lock_dir(new_dir);
retval = affs_remove_hash(new_dir, bh_new);
affs_unlock_dir(new_dir);
affs_lock_dir(new_dir);
retval = affs_insert_hash(new_dir, bh_old);
affs_unlock_dir(new_dir);
mmb_mark_buffer_dirty(bh_old, &AFFS_I(new_dir)->i_metadata_bhs);
struct dentry *old_dentry, struct inode *new_dir,
old_dir->i_ino, old_dentry, new_dir->i_ino, new_dentry);
return affs_xrename(old_dir, old_dentry, new_dir, new_dentry);
return affs_rename(old_dir, old_dentry, new_dir, new_dentry);
struct dentry *old_dentry, struct inode *new_dir,
new_dvnode = AFS_FS_I(new_dir);
struct dentry *old_dentry, struct inode *new_dir,
struct inode *new_dir, struct dentry *new_dentry,
struct dentry *old_dentry, struct inode *new_dir,
new_bh = bfs_find_entry(new_dir, &new_dentry->d_name, &new_de);
error = bfs_add_entry(new_dir, &new_dentry->d_name,
struct inode *new_dir,
struct btrfs_root *dest = BTRFS_I(new_dir)->root;
ret = fscrypt_setup_filename(new_dir, &new_dentry->d_name, 0, &new_fname);
trans_num_items = (old_dir == new_dir ? 9 : 10);
ret = btrfs_set_inode_index(BTRFS_I(new_dir), &old_idx);
btrfs_ino(BTRFS_I(new_dir)),
inode_inc_iversion(new_dir);
simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry);
btrfs_record_unlink_dir(trans, BTRFS_I(new_dir),
ret = btrfs_unlink_subvol(trans, BTRFS_I(new_dir), new_dentry);
ret = __btrfs_unlink_inode(trans, BTRFS_I(new_dir),
ret = btrfs_add_link(trans, BTRFS_I(new_dir), BTRFS_I(old_inode),
btrfs_log_new_name(trans, new_dentry, BTRFS_I(new_dir),
struct inode *new_dir, struct dentry *new_dentry,
struct btrfs_root *dest = BTRFS_I(new_dir)->root;
if (btrfs_ino(BTRFS_I(new_dir)) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)
ret = fscrypt_setup_filename(new_dir, &new_dentry->d_name, 0, &new_fname);
ret = btrfs_check_dir_item_collision(dest, new_dir->i_ino, &new_fname.disk_name);
if (new_dir != old_dir)
ret = btrfs_set_inode_index(BTRFS_I(new_dir), &index);
old_ino, btrfs_ino(BTRFS_I(new_dir)),
inode_inc_iversion(new_dir);
simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry);
ret = btrfs_unlink_subvol(trans, BTRFS_I(new_dir), new_dentry);
ret = btrfs_unlink_inode(trans, BTRFS_I(new_dir),
ret = btrfs_add_link(trans, BTRFS_I(new_dir), BTRFS_I(old_inode),
struct dentry *old_dentry, struct inode *new_dir,
ret = btrfs_rename_exchange(old_dir, old_dentry, new_dir,
ret = btrfs_rename(idmap, old_dir, old_dentry, new_dir,
btrfs_btree_balance_dirty(BTRFS_I(new_dir)->root->fs_info);
struct dentry *old_dentry, struct inode *new_dir,
if (ceph_snap(old_dir) != ceph_snap(new_dir))
if (old_dir == new_dir && ceph_snap(old_dir) == CEPH_SNAPDIR)
if ((old_dir != new_dir) &&
(!ceph_quota_is_same_realm(old_dir, new_dir)))
err = fscrypt_prepare_rename(old_dir, old_dentry, new_dir, new_dentry,
ceph_vinop(old_dir), old_dentry, ceph_vinop(new_dir),
req->r_parent = new_dir;
ihold(new_dir);
struct dentry *old_dentry, struct inode *new_dir,
coda_i2f(new_dir), old_length, new_length,
coda_dir_inc_nlink(new_dir);
coda_dir_update_mtime(new_dir);
if (old_dir != new_dir) {
if (IS_ENCRYPTED(new_dir) &&
!fscrypt_has_permitted_context(new_dir,
struct inode *new_dir, struct dentry *new_dentry,
struct dentry *old_dentry, struct inode *new_dir,
fsstack_copy_attr_all(new_dir, d_inode(lower_new_dir_dentry));
if (new_dir != old_dir)
struct inode *new_dir, struct dentry *new_dentry,
loff_t size = i_size_read(new_dir);
err = __exfat_rename(old_dir, EXFAT_I(old_inode), new_dir, new_dentry);
inode_inc_iversion(new_dir);
simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry);
EXFAT_I(new_dir)->i_crtime = current_time(new_dir);
exfat_truncate_inode_atime(new_dir);
if (IS_DIRSYNC(new_dir) && size != i_size_read(new_dir))
exfat_sync_inode(new_dir);
mark_inode_dirty(new_dir);
if (IS_DIRSYNC(new_dir))
if (S_ISDIR(old_inode->i_mode) && old_dir != new_dir) {
inc_nlink(new_dir);
if (new_dir != old_dir)
struct inode * new_dir, struct dentry * new_dentry,
err = dquot_initialize(new_dir);
if (old_is_dir && old_dir != new_dir) {
new_de = ext2_find_entry(new_dir, &new_dentry->d_name,
err = ext2_set_link(new_dir, new_de, new_folio, old_inode, true);
inode_inc_link_count(new_dir);
if (old_dir != new_dir)
new_dir, false);
struct dentry *old_dentry, struct inode *new_dir,
.dir = new_dir,
if ((ext4_test_inode_flag(new_dir, EXT4_INODE_PROJINHERIT)) &&
(!projid_eq(EXT4_I(new_dir)->i_projid,
struct inode *new_dir, struct dentry *new_dentry)
.dir = new_dir,
if ((ext4_test_inode_flag(new_dir, EXT4_INODE_PROJINHERIT) &&
!projid_eq(EXT4_I(new_dir)->i_projid,
struct inode *new_dir, struct dentry *new_dentry,
err = fscrypt_prepare_rename(old_dir, old_dentry, new_dir, new_dentry,
new_dir, new_dentry);
return ext4_rename(idmap, old_dir, old_dentry, new_dir, new_dentry, flags);
if (old_is_dir && old_dir != new_dir) {
new_entry = f2fs_find_entry(new_dir, &new_dentry->d_name,
f2fs_set_link(new_dir, new_entry, new_folio, old_inode);
f2fs_i_links_write(new_dir, true);
f2fs_i_pino_write(old_inode, new_dir->i_ino);
f2fs_set_link(old_inode, old_dir_entry, old_dir_folio, new_dir);
f2fs_add_ino_entry(sbi, new_dir->i_ino, TRANS_DIR_INO);
if (IS_DIRSYNC(old_dir) || IS_DIRSYNC(new_dir))
struct inode *new_dir, struct dentry *new_dentry)
if ((is_inode_flag_set(new_dir, FI_PROJ_INHERIT) &&
!projid_eq(F2FS_I(new_dir)->i_projid,
err = f2fs_dquot_initialize(new_dir);
new_entry = f2fs_find_entry(new_dir, &new_dentry->d_name, &new_folio);
if (old_dir != new_dir) {
(new_nlink > 0 && new_dir->i_nlink >= F2FS_LINK_MAX))
f2fs_set_link(old_inode, old_dir_entry, old_dir_folio, new_dir);
f2fs_i_pino_write(old_inode, new_dir->i_ino);
f2fs_set_link(new_dir, new_entry, new_folio, old_inode);
inode_set_ctime_current(new_dir);
f2fs_down_write(&F2FS_I(new_dir)->i_sem);
f2fs_i_links_write(new_dir, new_nlink > 0);
f2fs_up_write(&F2FS_I(new_dir)->i_sem);
f2fs_mark_inode_dirty_sync(new_dir, false);
f2fs_add_ino_entry(sbi, new_dir->i_ino, TRANS_DIR_INO);
if (IS_DIRSYNC(old_dir) || IS_DIRSYNC(new_dir))
struct inode *new_dir, struct dentry *new_dentry,
trace_f2fs_rename_start(old_dir, old_dentry, new_dir, new_dentry,
err = fscrypt_prepare_rename(old_dir, old_dentry, new_dir, new_dentry,
new_dir, new_dentry);
new_dir, new_dentry, flags);
struct dentry *old_dentry, struct inode *new_dir,
if (is_inode_flag_set(new_dir, FI_PROJ_INHERIT) &&
(!projid_eq(F2FS_I(new_dir)->i_projid,
if (old_dir == new_dir && !new_inode) {
err = f2fs_dquot_initialize(new_dir);
struct inode *new_dir, unsigned char *new_name,
update_dotdot = (is_dir && old_dir != new_dir);
err = fat_scan(new_dir, new_name, &sinfo);
err = msdos_add_entry(new_dir, new_name, is_dir, is_hid, 0,
inode_inc_iversion(new_dir);
if (IS_DIRSYNC(new_dir)) {
fat_set_start(dotdot_de, MSDOS_I(new_dir)->i_logstart);
if (IS_DIRSYNC(new_dir)) {
inc_nlink(new_dir);
int err2 = fat_remove_entries(new_dir, &sinfo);
fat_fs_error(new_dir->i_sb,
struct inode *new_dir, struct dentry *new_dentry,
&MSDOS_SB(new_dir->i_sb)->options);
new_dir, new_msdos_name, new_dentry, is_hid);
err = fat_flush_inodes(sb, old_dir, new_dir);
int err2 = fat_remove_entries(new_dir, &sinfo);
fat_fs_error(new_dir->i_sb,
struct inode *new_dir, struct dentry *new_dentry)
if (old_dir != new_dir) {
err = vfat_sync_ipos(new_dir, old_inode);
err = vfat_update_dotdot_de(new_dir, old_inode, old_dotdot_bh,
vfat_move_nlink(old_dir, new_dir);
vfat_move_nlink(new_dir, old_dir);
if (old_dir != new_dir)
vfat_update_dir_metadata(new_dir, &ts);
corrupt |= vfat_update_dotdot_de(new_dir, new_inode,
corrupt |= vfat_sync_ipos(new_dir, new_inode);
fat_fs_error(new_dir->i_sb,
struct dentry *old_dentry, struct inode *new_dir,
new_dir, new_dentry);
return vfat_rename(old_dir, old_dentry, new_dir, new_dentry);
struct inode *new_dir, struct dentry *new_dentry)
if (old_dir != new_dir) {
err = vfat_add_entry(new_dir, &new_dentry->d_name, is_dir, 0,
inode_inc_iversion(new_dir);
err = vfat_sync_ipos(new_dir, old_inode);
err = vfat_update_dotdot_de(new_dir, old_inode, dotdot_bh,
inc_nlink(new_dir);
struct dentry *old_dentry, struct inode *new_dir,
res = hfs_remove(new_dir, new_dentry);
new_dir, &new_dentry->d_name);
new_dir->i_ino, &new_dentry->d_name);
struct inode *new_dir, struct dentry *new_dentry,
res = hfsplus_rmdir(new_dir, new_dentry);
res = hfsplus_unlink(new_dir, new_dentry);
new_dir, &new_dentry->d_name);
res = hfsplus_cat_write_inode(new_dir);
struct inode *new_dir, struct dentry *new_dentry,
struct dentry *old_dentry, struct inode *new_dir,
if ((nde = map_dirent(new_dir, hpfs_i(new_dir)->i_dno, new_name, new_len, NULL, &qbh1))) {
hpfs_error(new_dir->i_sb, "hpfs_rename: could not find dirent");
if (new_dir == old_dir) hpfs_brelse4(&qbh);
if ((r = hpfs_add_dirent(new_dir, new_name, new_len, &de))) {
if (r == -1) hpfs_error(new_dir->i_sb, "hpfs_rename: dirent already exists!");
if (new_dir != old_dir) hpfs_brelse4(&qbh);
if (new_dir == old_dir)
hpfs_i(i)->i_parent_dir = new_dir->i_ino;
inc_nlink(new_dir);
fnode->up = cpu_to_le32(new_dir->i_ino);
hpfs_update_directory_times(new_dir);
struct dentry *old_dentry, struct inode *new_dir,
rc = dquot_initialize(new_dir);
rc = dtSearch(new_dir, &new_dname, &ino, &btstack, JFS_LOOKUP);
tid = txBegin(new_dir->i_sb, 0);
mutex_lock_nested(&JFS_IP(new_dir)->commit_mutex, COMMIT_MUTEX_PARENT);
if (old_dir != new_dir)
rc = dtModify(tid, new_dir, &new_dname, &ino,
if (old_dir != new_dir)
mutex_unlock(&JFS_IP(new_dir)->commit_mutex);
rc = dtSearch(new_dir, &new_dname, &ino, &btstack,
rc = dtInsert(tid, new_dir, &new_dname, &ino, &btstack);
if (S_ISDIR(old_ip->i_mode) && old_dir != new_dir)
inc_nlink(new_dir);
if (new_ip || old_dir != new_dir)
if (old_dir != new_dir) {
cpu_to_le32(new_dir->i_ino);
inode_set_mtime_to_ts(new_dir, inode_set_ctime_current(new_dir));
mark_inode_dirty(new_dir);
if (old_dir != new_dir) {
iplist[ipcount++] = new_dir;
if (old_dir != new_dir)
mutex_unlock(&JFS_IP(new_dir)->commit_mutex);
struct inode *new_dir, struct dentry *new_dentry,
struct kernfs_node *new_parent = new_dir->i_private;
struct inode *new_dir, struct dentry *new_dentry)
struct offset_ctx *new_ctx = new_dir->i_op->get_offset_ctx(new_dir);
struct inode *new_dir,
struct offset_ctx *new_ctx = new_dir->i_op->get_offset_ctx(new_dir);
simple_rename_exchange(old_dir, old_dentry, new_dir, new_dentry);
struct inode *new_dir, struct dentry *new_dentry)
if (new_dir != old_dir)
inode_set_mtime_to_ts(new_dir,
inode_set_ctime_current(new_dir));
struct inode *new_dir, struct dentry *new_dentry)
if (old_dir != new_dir && old_is_dir != new_is_dir) {
inc_nlink(new_dir);
drop_nlink(new_dir);
simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry);
struct dentry *old_dentry, struct inode *new_dir,
return simple_rename_exchange(old_dir, old_dentry, new_dir, new_dentry);
simple_unlink(new_dir, new_dentry);
inc_nlink(new_dir);
simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry);
struct inode *new_dir, struct dentry *new_dentry,
inode_inc_link_count(new_dir);
err = minix_set_link(dir_de, dir_folio, new_dir);
struct inode *new_dir = d_inode(rd->new_parent);
unsigned max_links = new_dir->i_sb->s_max_links;
error = may_create_dentry(rd->mnt_idmap, new_dir, new_dentry);
error = may_delete_dentry(rd->mnt_idmap, new_dir,
error = may_delete_dentry(rd->mnt_idmap, new_dir,
if (new_dir != old_dir) {
error = security_inode_rename(old_dir, old_dentry, new_dir, new_dentry,
lock_old_subdir = new_dir != old_dir;
lock_new_subdir = new_dir != old_dir || !(flags & RENAME_EXCHANGE);
if (max_links && new_dir != old_dir) {
if (is_dir && !new_is_dir && new_dir->i_nlink >= max_links)
old_dir == new_dir ? LEASE_BREAK_DIR_RENAME :
if (new_dir != old_dir) {
error = try_break_deleg(new_dir, LEASE_BREAK_DIR_CREATE, delegated_inode);
new_dir, new_dentry, flags);
fsnotify_move(old_dir, new_dir, &old_name.name, is_dir,
fsnotify_move(new_dir, old_dir, &old_dentry->d_name,
struct dentry *old_dentry, struct inode *new_dir,
trace_nfs_rename_enter(old_dir, old_dentry, new_dir, new_dentry);
err = nfs_sillyrename(new_dir, new_dentry);
task = nfs_async_rename(old_dir, new_dir, old_dentry, new_dentry,
new_dir, new_dentry, error);
nfs_save_change_attribute(new_dir));
nfs_async_rename(struct inode *old_dir, struct inode *new_dir,
encode_diropargs(xdr, args->new_dir, new->name, new->len);
struct inode *new_dir)
nfs_post_op_update_inode(new_dir, res->new_fattr);
encode_diropargs3(xdr, args->new_dir, new->name, new->len);
struct inode *new_dir)
if (new_dir != old_dir) {
nfs4_update_changeattr(new_dir, &res->new_cinfo,
nfs_update_delegated_mtime(new_dir);
encode_putfh(xdr, args->new_dir, &hdr);
const struct inode *new_dir,
TP_ARGS(old_dir, old_dentry, new_dir, new_dentry),
__field(u64, new_dir)
__entry->new_dir = new_dir->i_ino;
(unsigned long long)__entry->new_dir,
const struct inode *new_dir, \
TP_ARGS(old_dir, old_dentry, new_dir, new_dentry))
const struct inode *new_dir,
TP_ARGS(old_dir, old_dentry, new_dir, new_dentry, error),
__field(u64, new_dir)
__entry->new_dir = new_dir->i_ino;
(unsigned long long)__entry->new_dir,
const struct inode *new_dir, \
TP_ARGS(old_dir, old_dentry, new_dir, \
struct inode *new_dir)
nfs_mark_for_revalidate(new_dir);
struct inode *new_dir = data->new_dir;
new_dir, data->new_dentry, task->tk_status);
if (!NFS_PROTO(old_dir)->rename_done(task, old_dir, new_dir)) {
if (data->new_dir != data->old_dir) {
spin_lock(&data->new_dir->i_lock);
nfs_force_lookup_revalidate(data->new_dir);
spin_unlock(&data->new_dir->i_lock);
iput(data->new_dir);
nfs_async_rename(struct inode *old_dir, struct inode *new_dir,
nfs_server_capable(new_dir, NFS_CAP_MOVEABLE))
data->new_dir = new_dir;
ihold(new_dir);
data->args.new_dir = NFS_FH(new_dir);
old_dir == new_dir ? old_dir : NULL);
struct inode *new_dir, struct dentry *new_dentry,
if (old_is_dir && old_dir != new_dir) {
new_de = nilfs_find_entry(new_dir, &new_dentry->d_name,
err = nilfs_set_link(new_dir, new_de, new_folio, old_inode);
nilfs_mark_inode_dirty(new_dir);
inc_nlink(new_dir);
nilfs_mark_inode_dirty(new_dir);
if (old_dir != new_dir)
dir_folio, new_dir);
struct dentry *old_dentry, struct inode *new_dir,
struct ntfs_inode *old_dir_ni = NTFS_I(old_dir), *new_dir_ni = NTFS_I(new_dir);
new_name_len = ntfs_nlstoucs(NTFS_I(new_dir)->vol, new_dentry->d_name.name,
if (old_dir != new_dir)
if (old_dir == new_dir) {
(old_dir != new_dir && NInoBeingDeleted(new_dir_ni))) {
simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry);
if (old_dir != new_dir)
mark_inode_dirty(new_dir);
inode_inc_iversion(new_dir);
if (old_dir == new_dir) {
struct dentry *dentry, struct inode *new_dir,
struct ntfs_inode *new_dir_ni = ntfs_i(new_dir);
if (is_same && dir == new_dir) {
err = ntfs_unlink_inode(new_dir, new_dentry);
simple_rename_timestamp(dir, dentry, new_dir, new_dentry);
if (dir != new_dir)
mark_inode_dirty(new_dir);
if (IS_DIRSYNC(new_dir))
ntfs_sync_inode(new_dir);
struct inode *old_dir, struct inode *new_dir)
if (old_dir == new_dir)
ret = ocfs2_dentry_attach_lock(dentry, inode, OCFS2_I(new_dir)->ip_blkno);
struct inode *old_dir, struct inode *new_dir);
struct inode *new_dir,
trace_ocfs2_rename(old_dir, old_dentry, new_dir, new_dentry,
status = dquot_initialize(new_dir);
if (old_dir != new_dir && S_ISDIR(old_inode->i_mode)) {
status = ocfs2_check_if_ancestor(osb, new_dir->i_ino,
(unsigned long long)new_dir->i_ino);
&new_dir_bh, new_dir, 1);
if (!new_dir->i_nlink) {
if (S_ISDIR(old_inode->i_mode) && new_dir != old_dir) {
if (!new_inode && new_dir->i_nlink >= ocfs2_link_max(osb)) {
&newfe_blkno, new_dir,
BUG_ON(d_inode(new_dentry->d_parent) != new_dir);
status = ocfs2_check_dir_for_entry(new_dir,
status = ocfs2_prepare_dir_for_insert(osb, new_dir, new_dir_bh,
status = ocfs2_update_entry(new_dir, handle, &target_lookup_res,
inode_inc_iversion(new_dir);
&old_inode_dot_dot_res, new_dir);
inc_nlink(new_dir);
mark_inode_dirty(new_dir);
if (old_dir != new_dir) {
inode_set_mtime_to_ts(new_dir,
inode_set_ctime_to_ts(new_dir, inode_get_ctime(old_dir)));
ocfs2_mark_inode_dirty(handle, new_dir, new_dir_bh);
ocfs2_dentry_move(old_dentry, new_dentry, old_dir, new_dir);
ocfs2_double_unlock(old_dir, new_dir);
void *new_dir, void *new_dentry,
TP_ARGS(old_dir, old_dentry, new_dir, new_dentry,
__field(void *, new_dir)
__entry->new_dir = new_dir;
__entry->new_dir, __entry->new_dentry,
struct dentry *old_dentry, struct inode *new_dir,
err = omfs_remove(new_dir, new_dentry);
struct inode *new_dir,
iattr.ia_mtime = iattr.ia_ctime = current_time(new_dir);
__orangefs_setattr(new_dir, &iattr);
new_op->upcall.req.rename.new_parent_refn = ORANGEFS_I(new_dir)->refn;
new = new_dir(set, name, namelen);
struct inode *new_dir, struct dentry *new_dentry,
int err, release, sync = 0, move = (new_dir != old_dir);
new_dentry, new_dir->i_ino, flags);
err = fscrypt_setup_filename(new_dir, &new_dentry->d_name, 0, &new_nm);
lock_4_inodes(old_dir, new_dir, new_inode, whiteout);
simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry);
inc_nlink(new_dir);
new_dir->i_size += new_sz;
ubifs_inode(new_dir)->ui_size = new_dir->i_size;
sync = IS_DIRSYNC(old_dir) || IS_DIRSYNC(new_dir);
err = ubifs_jnl_rename(c, old_dir, old_inode, &old_nm, new_dir,
unlock_4_inodes(old_dir, new_dir, new_inode, whiteout);
new_dir->i_size -= new_sz;
ubifs_inode(new_dir)->ui_size = new_dir->i_size;
drop_nlink(new_dir);
unlock_4_inodes(old_dir, new_dir, new_inode, whiteout);
struct inode *new_dir, struct dentry *new_dentry)
int sync = IS_DIRSYNC(old_dir) || IS_DIRSYNC(new_dir);
new_dentry, snd_inode->i_ino, new_dir->i_ino);
err = fscrypt_setup_filename(new_dir, &new_dentry->d_name, 0, &snd_nm);
lock_4_inodes(old_dir, new_dir, NULL, NULL);
simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry);
if (old_dir != new_dir) {
inc_nlink(new_dir);
drop_nlink(new_dir);
err = ubifs_jnl_xrename(c, old_dir, fst_inode, &fst_nm, new_dir,
unlock_4_inodes(old_dir, new_dir, NULL, NULL);
struct inode *new_dir, struct dentry *new_dentry,
ubifs_assert(c, inode_is_locked(new_dir));
err = fscrypt_prepare_rename(old_dir, old_dentry, new_dir, new_dentry,
return ubifs_xrename(old_dir, old_dentry, new_dir, new_dentry);
return do_rename(old_dir, old_dentry, new_dir, new_dentry, flags);
const struct inode *new_dir,
int move = (old_dir != new_dir);
ubifs_assert(c, ubifs_inode(new_dir)->data_len == 0);
ubifs_assert(c, mutex_is_locked(&ubifs_inode(new_dir)->ui_mutex));
dent_key_init_flash(c, &dent->key, new_dir->i_ino, new_nm);
pack_inode(c, p, new_dir, 1);
ubifs_wbuf_add_ino_nolock(wbuf, new_dir->i_ino);
dent_key_init(c, &key, new_dir->i_ino, new_nm);
ino_key_init(c, &key, new_dir->i_ino);
mark_inode_clean(c, ubifs_inode(new_dir));
const struct inode *new_dir,
struct dentry *old_dentry, struct inode *new_dir,
if (is_dir && old_dir != new_dir) {
retval = udf_fiiter_find_entry(new_dir, &new_dentry->d_name, &niter);
retval = udf_fiiter_add_entry(new_dir, new_dentry, &niter);
inode_set_mtime_to_ts(new_dir, inode_set_ctime_current(new_dir));
mark_inode_dirty(new_dir);
cpu_to_lelb(UDF_I(new_dir)->i_location);
inc_nlink(new_dir);
mark_inode_dirty(new_dir);
struct dentry *old_dentry, struct inode *new_dir,
new_de = ufs_find_entry(new_dir, &new_dentry->d_name, &new_folio);
err = ufs_set_link(new_dir, new_de, new_folio, old_inode, 1);
inode_inc_link_count(new_dir);
if (old_dir != new_dir)
new_dir, 0);
struct inode *new_dir, struct dentry *new_dentry);
struct inode *new_dir, struct dentry *new_dentry);
struct inode *new_dir, struct dentry *new_dentry);
struct inode *new_dir,
struct inode *new_dir,
if (IS_ENCRYPTED(old_dir) || IS_ENCRYPTED(new_dir))
new_dir, new_dentry, flags);
struct inode *new_dir, struct dentry *new_dentry,
struct inode *new_dir,
static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir,
new_dir, new_name, fs_cookie);
audit_inode_child(new_dir, moved, AUDIT_TYPE_CHILD_CREATE);
const struct path *new_dir, struct dentry *new_dentry)
struct dentry *old_dentry, const struct path *new_dir,
struct inode *new_dir, struct dentry *new_dentry)
struct inode *new_dir;
int (*rename_done) (struct rpc_task *task, struct inode *old_dir, struct inode *new_dir);
const struct nfs_fh *new_dir;
int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
const struct path *new_dir, struct dentry *new_dentry,
const struct path *new_dir,
const struct path *new_dir,
struct inode *new_dir, struct dentry *new_dentry,
struct inode *new_dir,
struct inode *new_dir, struct dentry *new_dentry,
TP_ARGS(old_dir, old_dentry, new_dir, new_dentry, flags),
__entry->new_pino = new_dir->i_ino;
struct inode *new_dir, struct dentry *new_dentry,
new_dir, new_dentry);
error = simple_offset_add(shmem_get_offset_ctx(new_dir), new_dentry);
simple_offset_remove(shmem_get_offset_ctx(new_dir),
simple_offset_rename(old_dir, old_dentry, new_dir, new_dentry);
(void) shmem_unlink(new_dir, new_dentry);
inc_nlink(new_dir);
new_dir->i_size += BOGO_DIRENT_SIZE;
simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry);
inode_inc_iversion(new_dir);
const struct path *new_dir, struct dentry *new_dentry)
struct path link = { .mnt = new_dir->mnt, .dentry = new_dentry };
struct path target = { .mnt = new_dir->mnt, .dentry = old_dentry };
struct dentry *old_dentry, const struct path *new_dir,
static int apparmor_path_link(struct dentry *old_dentry, const struct path *new_dir,
error = aa_path_link(current_cred(), label, old_dentry, new_dir,
const struct path *new_dir, struct dentry *new_dentry,
struct path new_path = { .mnt = new_dir->mnt,
const struct path *const new_dir,
if (old_dentry->d_parent == new_dir->dentry) {
if (is_access_to_paths_allowed(subject->domain, new_dir,
mnt_dir.mnt = new_dir->mnt;
mnt_dir.dentry = new_dir->mnt->mnt_root;
new_dir->dentry,
request2.audit.u.path.dentry = new_dir->dentry;
const struct path *const new_dir,
return current_check_refer_path(old_dentry, new_dir, new_dentry, false,
const struct path *const new_dir,
return current_check_refer_path(old_dentry, new_dir, new_dentry, true,
int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
return call_int_hook(path_link, old_dentry, new_dir, new_dentry);
const struct path *new_dir, struct dentry *new_dentry,
return call_int_hook(path_rename, old_dir, old_dentry, new_dir,
struct inode *new_dir, struct dentry *new_dentry,
int err = call_int_hook(inode_rename, new_dir, new_dentry,
new_dir, new_dentry);
struct inode *new_dir,
new_dsec = inode_security(new_dir);
if (old_is_dir && new_dir != old_dir) {
static int tomoyo_path_link(struct dentry *old_dentry, const struct path *new_dir,
struct path path1 = { .mnt = new_dir->mnt, .dentry = old_dentry };
struct path path2 = { .mnt = new_dir->mnt, .dentry = new_dentry };
struct inode *new_dir, struct dentry *new_dentry,
struct inode *new_dir, struct dentry *new_dentry,
struct inode *new_dir, struct dentry *new_dentry,