btrfs: Make btrfs_record_unlink_dir take btrfs_inode
Signed-off-by: Nikolay Borisov <n.borisov.lkml@gmail.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
ab1717b2ab
commit
4176bdbf2d
|
@ -4127,7 +4127,7 @@ static int btrfs_unlink(struct inode *dir, struct dentry *dentry)
|
||||||
if (IS_ERR(trans))
|
if (IS_ERR(trans))
|
||||||
return PTR_ERR(trans);
|
return PTR_ERR(trans);
|
||||||
|
|
||||||
btrfs_record_unlink_dir(trans, dir, d_inode(dentry), 0);
|
btrfs_record_unlink_dir(trans, BTRFS_I(dir), BTRFS_I(d_inode(dentry)), 0);
|
||||||
|
|
||||||
ret = btrfs_unlink_inode(trans, root, dir, d_inode(dentry),
|
ret = btrfs_unlink_inode(trans, root, dir, d_inode(dentry),
|
||||||
dentry->d_name.name, dentry->d_name.len);
|
dentry->d_name.name, dentry->d_name.len);
|
||||||
|
@ -9587,8 +9587,8 @@ static int btrfs_rename_exchange(struct inode *old_dir,
|
||||||
new_inode->i_ctime = ctime;
|
new_inode->i_ctime = ctime;
|
||||||
|
|
||||||
if (old_dentry->d_parent != new_dentry->d_parent) {
|
if (old_dentry->d_parent != new_dentry->d_parent) {
|
||||||
btrfs_record_unlink_dir(trans, old_dir, old_inode, 1);
|
btrfs_record_unlink_dir(trans, BTRFS_I(old_dir), BTRFS_I(old_inode), 1);
|
||||||
btrfs_record_unlink_dir(trans, new_dir, new_inode, 1);
|
btrfs_record_unlink_dir(trans, BTRFS_I(new_dir), BTRFS_I(new_inode), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* src is a subvolume */
|
/* src is a subvolume */
|
||||||
|
@ -9867,7 +9867,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||||
old_inode->i_ctime = current_time(old_dir);
|
old_inode->i_ctime = current_time(old_dir);
|
||||||
|
|
||||||
if (old_dentry->d_parent != new_dentry->d_parent)
|
if (old_dentry->d_parent != new_dentry->d_parent)
|
||||||
btrfs_record_unlink_dir(trans, old_dir, old_inode, 1);
|
btrfs_record_unlink_dir(trans, BTRFS_I(old_dir), BTRFS_I(old_inode), 1);
|
||||||
|
|
||||||
if (unlikely(old_ino == BTRFS_FIRST_FREE_OBJECTID)) {
|
if (unlikely(old_ino == BTRFS_FIRST_FREE_OBJECTID)) {
|
||||||
root_objectid = BTRFS_I(old_inode)->root->root_key.objectid;
|
root_objectid = BTRFS_I(old_inode)->root->root_key.objectid;
|
||||||
|
|
|
@ -5730,7 +5730,7 @@ error:
|
||||||
* inodes, etc) are done.
|
* inodes, etc) are done.
|
||||||
*/
|
*/
|
||||||
void btrfs_record_unlink_dir(struct btrfs_trans_handle *trans,
|
void btrfs_record_unlink_dir(struct btrfs_trans_handle *trans,
|
||||||
struct inode *dir, struct inode *inode,
|
struct btrfs_inode *dir, struct btrfs_inode *inode,
|
||||||
int for_rename)
|
int for_rename)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -5743,23 +5743,23 @@ void btrfs_record_unlink_dir(struct btrfs_trans_handle *trans,
|
||||||
* into the file. When the file is logged we check it and
|
* into the file. When the file is logged we check it and
|
||||||
* don't log the parents if the file is fully on disk.
|
* don't log the parents if the file is fully on disk.
|
||||||
*/
|
*/
|
||||||
mutex_lock(&BTRFS_I(inode)->log_mutex);
|
mutex_lock(&inode->log_mutex);
|
||||||
BTRFS_I(inode)->last_unlink_trans = trans->transid;
|
inode->last_unlink_trans = trans->transid;
|
||||||
mutex_unlock(&BTRFS_I(inode)->log_mutex);
|
mutex_unlock(&inode->log_mutex);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* if this directory was already logged any new
|
* if this directory was already logged any new
|
||||||
* names for this file/dir will get recorded
|
* names for this file/dir will get recorded
|
||||||
*/
|
*/
|
||||||
smp_mb();
|
smp_mb();
|
||||||
if (BTRFS_I(dir)->logged_trans == trans->transid)
|
if (dir->logged_trans == trans->transid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* if the inode we're about to unlink was logged,
|
* if the inode we're about to unlink was logged,
|
||||||
* the log will be properly updated for any new names
|
* the log will be properly updated for any new names
|
||||||
*/
|
*/
|
||||||
if (BTRFS_I(inode)->logged_trans == trans->transid)
|
if (inode->logged_trans == trans->transid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5776,9 +5776,9 @@ void btrfs_record_unlink_dir(struct btrfs_trans_handle *trans,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
record:
|
record:
|
||||||
mutex_lock(&BTRFS_I(dir)->log_mutex);
|
mutex_lock(&dir->log_mutex);
|
||||||
BTRFS_I(dir)->last_unlink_trans = trans->transid;
|
dir->last_unlink_trans = trans->transid;
|
||||||
mutex_unlock(&BTRFS_I(dir)->log_mutex);
|
mutex_unlock(&dir->log_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -80,7 +80,7 @@ int btrfs_del_inode_ref_in_log(struct btrfs_trans_handle *trans,
|
||||||
void btrfs_end_log_trans(struct btrfs_root *root);
|
void btrfs_end_log_trans(struct btrfs_root *root);
|
||||||
int btrfs_pin_log_trans(struct btrfs_root *root);
|
int btrfs_pin_log_trans(struct btrfs_root *root);
|
||||||
void btrfs_record_unlink_dir(struct btrfs_trans_handle *trans,
|
void btrfs_record_unlink_dir(struct btrfs_trans_handle *trans,
|
||||||
struct inode *dir, struct inode *inode,
|
struct btrfs_inode *dir, struct btrfs_inode *inode,
|
||||||
int for_rename);
|
int for_rename);
|
||||||
void btrfs_record_snapshot_destroy(struct btrfs_trans_handle *trans,
|
void btrfs_record_snapshot_destroy(struct btrfs_trans_handle *trans,
|
||||||
struct inode *dir);
|
struct inode *dir);
|
||||||
|
|
Loading…
Reference in New Issue