mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 07:31:45 +00:00
Btrfs: use flags instead of the bool variants in delayed node
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Chris Mason <clm@fb.com>
This commit is contained in:
parent
a56dbd8940
commit
7cf35d91b4
@ -55,8 +55,7 @@ static inline void btrfs_init_delayed_node(
|
||||
delayed_node->inode_id = inode_id;
|
||||
atomic_set(&delayed_node->refs, 0);
|
||||
delayed_node->count = 0;
|
||||
delayed_node->in_list = 0;
|
||||
delayed_node->inode_dirty = 0;
|
||||
delayed_node->flags = 0;
|
||||
delayed_node->ins_root = RB_ROOT;
|
||||
delayed_node->del_root = RB_ROOT;
|
||||
mutex_init(&delayed_node->mutex);
|
||||
@ -172,7 +171,7 @@ static void btrfs_queue_delayed_node(struct btrfs_delayed_root *root,
|
||||
int mod)
|
||||
{
|
||||
spin_lock(&root->lock);
|
||||
if (node->in_list) {
|
||||
if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
|
||||
if (!list_empty(&node->p_list))
|
||||
list_move_tail(&node->p_list, &root->prepare_list);
|
||||
else if (mod)
|
||||
@ -182,7 +181,7 @@ static void btrfs_queue_delayed_node(struct btrfs_delayed_root *root,
|
||||
list_add_tail(&node->p_list, &root->prepare_list);
|
||||
atomic_inc(&node->refs); /* inserted into list */
|
||||
root->nodes++;
|
||||
node->in_list = 1;
|
||||
set_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags);
|
||||
}
|
||||
spin_unlock(&root->lock);
|
||||
}
|
||||
@ -192,13 +191,13 @@ static void btrfs_dequeue_delayed_node(struct btrfs_delayed_root *root,
|
||||
struct btrfs_delayed_node *node)
|
||||
{
|
||||
spin_lock(&root->lock);
|
||||
if (node->in_list) {
|
||||
if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
|
||||
root->nodes--;
|
||||
atomic_dec(&node->refs); /* not in the list */
|
||||
list_del_init(&node->n_list);
|
||||
if (!list_empty(&node->p_list))
|
||||
list_del_init(&node->p_list);
|
||||
node->in_list = 0;
|
||||
clear_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags);
|
||||
}
|
||||
spin_unlock(&root->lock);
|
||||
}
|
||||
@ -231,7 +230,8 @@ static struct btrfs_delayed_node *btrfs_next_delayed_node(
|
||||
|
||||
delayed_root = node->root->fs_info->delayed_root;
|
||||
spin_lock(&delayed_root->lock);
|
||||
if (!node->in_list) { /* not in the list */
|
||||
if (!test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
|
||||
/* not in the list */
|
||||
if (list_empty(&delayed_root->node_list))
|
||||
goto out;
|
||||
p = delayed_root->node_list.next;
|
||||
@ -1004,9 +1004,10 @@ static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node)
|
||||
{
|
||||
struct btrfs_delayed_root *delayed_root;
|
||||
|
||||
if (delayed_node && delayed_node->inode_dirty) {
|
||||
if (delayed_node &&
|
||||
test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
|
||||
BUG_ON(!delayed_node->root);
|
||||
delayed_node->inode_dirty = 0;
|
||||
clear_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
|
||||
delayed_node->count--;
|
||||
|
||||
delayed_root = delayed_node->root->fs_info->delayed_root;
|
||||
@ -1059,7 +1060,7 @@ static inline int btrfs_update_delayed_inode(struct btrfs_trans_handle *trans,
|
||||
int ret;
|
||||
|
||||
mutex_lock(&node->mutex);
|
||||
if (!node->inode_dirty) {
|
||||
if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &node->flags)) {
|
||||
mutex_unlock(&node->mutex);
|
||||
return 0;
|
||||
}
|
||||
@ -1203,7 +1204,7 @@ int btrfs_commit_inode_delayed_inode(struct inode *inode)
|
||||
return 0;
|
||||
|
||||
mutex_lock(&delayed_node->mutex);
|
||||
if (!delayed_node->inode_dirty) {
|
||||
if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
|
||||
mutex_unlock(&delayed_node->mutex);
|
||||
btrfs_release_delayed_node(delayed_node);
|
||||
return 0;
|
||||
@ -1227,7 +1228,7 @@ int btrfs_commit_inode_delayed_inode(struct inode *inode)
|
||||
trans->block_rsv = &delayed_node->root->fs_info->delayed_block_rsv;
|
||||
|
||||
mutex_lock(&delayed_node->mutex);
|
||||
if (delayed_node->inode_dirty)
|
||||
if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags))
|
||||
ret = __btrfs_update_delayed_inode(trans, delayed_node->root,
|
||||
path, delayed_node);
|
||||
else
|
||||
@ -1721,7 +1722,7 @@ int btrfs_fill_inode(struct inode *inode, u32 *rdev)
|
||||
return -ENOENT;
|
||||
|
||||
mutex_lock(&delayed_node->mutex);
|
||||
if (!delayed_node->inode_dirty) {
|
||||
if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
|
||||
mutex_unlock(&delayed_node->mutex);
|
||||
btrfs_release_delayed_node(delayed_node);
|
||||
return -ENOENT;
|
||||
@ -1772,7 +1773,7 @@ int btrfs_delayed_update_inode(struct btrfs_trans_handle *trans,
|
||||
return PTR_ERR(delayed_node);
|
||||
|
||||
mutex_lock(&delayed_node->mutex);
|
||||
if (delayed_node->inode_dirty) {
|
||||
if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
|
||||
fill_stack_inode_item(trans, &delayed_node->inode_item, inode);
|
||||
goto release_node;
|
||||
}
|
||||
@ -1783,7 +1784,7 @@ int btrfs_delayed_update_inode(struct btrfs_trans_handle *trans,
|
||||
goto release_node;
|
||||
|
||||
fill_stack_inode_item(trans, &delayed_node->inode_item, inode);
|
||||
delayed_node->inode_dirty = 1;
|
||||
set_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
|
||||
delayed_node->count++;
|
||||
atomic_inc(&root->fs_info->delayed_root->items);
|
||||
release_node:
|
||||
@ -1814,7 +1815,7 @@ static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node)
|
||||
btrfs_release_delayed_item(prev_item);
|
||||
}
|
||||
|
||||
if (delayed_node->inode_dirty) {
|
||||
if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
|
||||
btrfs_delayed_inode_release_metadata(root, delayed_node);
|
||||
btrfs_release_delayed_inode(delayed_node);
|
||||
}
|
||||
|
@ -48,6 +48,9 @@ struct btrfs_delayed_root {
|
||||
wait_queue_head_t wait;
|
||||
};
|
||||
|
||||
#define BTRFS_DELAYED_NODE_IN_LIST 0
|
||||
#define BTRFS_DELAYED_NODE_INODE_DIRTY 1
|
||||
|
||||
struct btrfs_delayed_node {
|
||||
u64 inode_id;
|
||||
u64 bytes_reserved;
|
||||
@ -65,8 +68,7 @@ struct btrfs_delayed_node {
|
||||
struct btrfs_inode_item inode_item;
|
||||
atomic_t refs;
|
||||
u64 index_cnt;
|
||||
bool in_list;
|
||||
bool inode_dirty;
|
||||
unsigned long flags;
|
||||
int count;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user