mirror of
https://github.com/versity/scoutfs.git
synced 2026-01-03 10:55:20 +00:00
scoutfs: update dirty inode items
Wire up the code to update dirty inode items as inodes are modified in memory. We had a bit of the code but it wasn't being called. Signed-off-by: Zach Brown <zab@versity.com>
This commit is contained in:
@@ -418,8 +418,8 @@ static int scoutfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,
|
||||
inc_nlink(dir);
|
||||
}
|
||||
|
||||
mark_inode_dirty(inode);
|
||||
mark_inode_dirty(dir);
|
||||
scoutfs_update_inode_item(inode);
|
||||
scoutfs_update_inode_item(dir);
|
||||
|
||||
insert_inode_hash(inode);
|
||||
d_instantiate(dentry, inode);
|
||||
@@ -510,8 +510,8 @@ static int scoutfs_unlink(struct inode *dir, struct dentry *dentry)
|
||||
drop_nlink(dir);
|
||||
drop_nlink(inode);
|
||||
}
|
||||
mark_inode_dirty(inode);
|
||||
mark_inode_dirty(dir);
|
||||
scoutfs_update_inode_item(inode);
|
||||
scoutfs_update_inode_item(dir);
|
||||
|
||||
out:
|
||||
return ret;
|
||||
|
||||
@@ -192,8 +192,12 @@ static void store_inode(struct scoutfs_inode *cinode, struct inode *inode)
|
||||
* Every time we modify the inode in memory we copy it to its inode
|
||||
* item. This lets us write out blocks of items without having to track
|
||||
* down dirty vfs inodes and safely copy them into items before writing.
|
||||
*
|
||||
* The caller makes sure that the item is dirty and pinned so they don't
|
||||
* have to deal with errors and unwinding after they've modified the
|
||||
* vfs inode and get here.
|
||||
*/
|
||||
int scoutfs_inode_update(struct inode *inode)
|
||||
void scoutfs_update_inode_item(struct inode *inode)
|
||||
{
|
||||
struct super_block *sb = inode->i_sb;
|
||||
struct scoutfs_item *item;
|
||||
@@ -202,13 +206,10 @@ int scoutfs_inode_update(struct inode *inode)
|
||||
scoutfs_set_key(&key, scoutfs_ino(inode), SCOUTFS_INODE_KEY, 0);
|
||||
|
||||
item = scoutfs_item_lookup(sb, &key);
|
||||
if (IS_ERR(item))
|
||||
return PTR_ERR(item);
|
||||
BUG_ON(IS_ERR(item));
|
||||
|
||||
store_inode(item->val, inode);
|
||||
scoutfs_item_put(item);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -22,7 +22,7 @@ struct inode *scoutfs_alloc_inode(struct super_block *sb);
|
||||
void scoutfs_destroy_inode(struct inode *inode);
|
||||
|
||||
struct inode *scoutfs_iget(struct super_block *sb, u64 ino);
|
||||
int scoutfs_inode_update(struct inode *inode);
|
||||
void scoutfs_update_inode_item(struct inode *inode);
|
||||
struct inode *scoutfs_new_inode(struct super_block *sb, struct inode *dir,
|
||||
umode_t mode, dev_t rdev);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user