mirror of
https://github.com/versity/scoutfs.git
synced 2026-08-28 11:56:38 +00:00
scoutfs: add lock arg to scoutfs_update_inode_item
Add a full lock argument to scoutfs_update_inode_item() and use it to pass the lock's end key into item_update(). This'll get changed into passing the full lock into _update soon. Signed-off-by: Zach Brown <zab@versity.com>
This commit is contained in:
+1
-1
@@ -1175,7 +1175,7 @@ static int scoutfs_write_end(struct file *file, struct address_space *mapping,
|
||||
scoutfs_inode_inc_data_version(inode);
|
||||
}
|
||||
/* XXX kind of a big hammer, inode life cycle needs work */
|
||||
scoutfs_update_inode_item(inode);
|
||||
scoutfs_update_inode_item(inode, NULL);
|
||||
scoutfs_inode_queue_writeback(inode);
|
||||
}
|
||||
scoutfs_release_trans(sb);
|
||||
|
||||
+12
-12
@@ -634,8 +634,8 @@ static int scoutfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,
|
||||
inc_nlink(dir);
|
||||
}
|
||||
|
||||
scoutfs_update_inode_item(inode);
|
||||
scoutfs_update_inode_item(dir);
|
||||
scoutfs_update_inode_item(inode, inode_lock);
|
||||
scoutfs_update_inode_item(dir, dir_lock);
|
||||
|
||||
insert_inode_hash(inode);
|
||||
d_instantiate(dentry, inode);
|
||||
@@ -712,8 +712,8 @@ static int scoutfs_link(struct dentry *old_dentry,
|
||||
inode->i_ctime = dir->i_mtime;
|
||||
inc_nlink(inode);
|
||||
|
||||
scoutfs_update_inode_item(inode);
|
||||
scoutfs_update_inode_item(dir);
|
||||
scoutfs_update_inode_item(inode, inode_lock);
|
||||
scoutfs_update_inode_item(dir, dir_lock);
|
||||
|
||||
atomic_inc(&inode->i_count);
|
||||
d_instantiate(dentry, inode);
|
||||
@@ -792,8 +792,8 @@ static int scoutfs_unlink(struct inode *dir, struct dentry *dentry)
|
||||
drop_nlink(dir);
|
||||
drop_nlink(inode);
|
||||
}
|
||||
scoutfs_update_inode_item(inode);
|
||||
scoutfs_update_inode_item(dir);
|
||||
scoutfs_update_inode_item(inode, inode_lock);
|
||||
scoutfs_update_inode_item(dir, dir_lock);
|
||||
|
||||
out:
|
||||
scoutfs_release_trans(sb);
|
||||
@@ -1000,8 +1000,8 @@ static int scoutfs_symlink(struct inode *dir, struct dentry *dentry,
|
||||
inode->i_ctime = dir->i_mtime;
|
||||
i_size_write(inode, name_len);
|
||||
|
||||
scoutfs_update_inode_item(inode);
|
||||
scoutfs_update_inode_item(dir);
|
||||
scoutfs_update_inode_item(inode, inode_lock);
|
||||
scoutfs_update_inode_item(dir, dir_lock);
|
||||
|
||||
insert_inode_hash(inode);
|
||||
/* XXX need to set i_op/fop before here for sec callbacks */
|
||||
@@ -1477,12 +1477,12 @@ static int scoutfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
if (new_inode)
|
||||
old_inode->i_ctime = now;
|
||||
|
||||
scoutfs_update_inode_item(old_dir);
|
||||
scoutfs_update_inode_item(old_inode);
|
||||
scoutfs_update_inode_item(old_dir, old_dir_lock);
|
||||
scoutfs_update_inode_item(old_inode, old_inode_lock);
|
||||
if (new_dir != old_dir)
|
||||
scoutfs_update_inode_item(new_dir);
|
||||
scoutfs_update_inode_item(new_dir, new_dir_lock);
|
||||
if (new_inode)
|
||||
scoutfs_update_inode_item(new_inode);
|
||||
scoutfs_update_inode_item(new_inode, new_inode_lock);
|
||||
|
||||
ret = 0;
|
||||
out:
|
||||
|
||||
+2
-2
@@ -596,7 +596,7 @@ static int update_index(struct super_block *sb, struct scoutfs_inode_info *si,
|
||||
* have to deal with errors and unwinding after they've modified the
|
||||
* vfs inode and get here.
|
||||
*/
|
||||
void scoutfs_update_inode_item(struct inode *inode)
|
||||
void scoutfs_update_inode_item(struct inode *inode, struct scoutfs_lock *lock)
|
||||
{
|
||||
struct scoutfs_inode_info *si = SCOUTFS_I(inode);
|
||||
struct super_block *sb = inode->i_sb;
|
||||
@@ -631,7 +631,7 @@ void scoutfs_update_inode_item(struct inode *inode)
|
||||
scoutfs_inode_init_key(&key, &ikey, ino);
|
||||
scoutfs_kvec_init(val, &sinode, sizeof(sinode));
|
||||
|
||||
err = scoutfs_item_update(sb, &key, val, NULL);
|
||||
err = scoutfs_item_update(sb, &key, val, lock->end);
|
||||
if (err) {
|
||||
scoutfs_err(sb, "inode %llu update err %d", ino, err);
|
||||
BUG_ON(err);
|
||||
|
||||
+1
-1
@@ -62,7 +62,7 @@ int scoutfs_orphan_inode(struct inode *inode);
|
||||
struct inode *scoutfs_iget(struct super_block *sb, u64 ino);
|
||||
struct inode *scoutfs_ilookup(struct super_block *sb, u64 ino);
|
||||
int scoutfs_dirty_inode_item(struct inode *inode, struct scoutfs_lock *lock);
|
||||
void scoutfs_update_inode_item(struct inode *inode);
|
||||
void scoutfs_update_inode_item(struct inode *inode, struct scoutfs_lock *lock);
|
||||
void scoutfs_inode_fill_pool(struct super_block *sb, u64 ino, u64 nr);
|
||||
int scoutfs_alloc_ino(struct super_block *sb, u64 *ino);
|
||||
struct inode *scoutfs_new_inode(struct super_block *sb, struct inode *dir,
|
||||
|
||||
+1
-1
@@ -327,7 +327,7 @@ static int scoutfs_xattr_set(struct dentry *dentry, const char *name,
|
||||
/* XXX do these want i_mutex or anything? */
|
||||
inode_inc_iversion(inode);
|
||||
inode->i_ctime = CURRENT_TIME;
|
||||
scoutfs_update_inode_item(inode);
|
||||
scoutfs_update_inode_item(inode, lck);
|
||||
}
|
||||
|
||||
up_write(&si->xattr_rwsem);
|
||||
|
||||
Reference in New Issue
Block a user