diff options
-rw-r--r-- | fs/reiserfs/fix_node.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/reiserfs/fix_node.c b/fs/reiserfs/fix_node.c index bf5f2cbdb063..3a685e3f754f 100644 --- a/fs/reiserfs/fix_node.c +++ b/fs/reiserfs/fix_node.c | |||
@@ -1971,7 +1971,9 @@ static int get_neighbors(struct tree_balance *tb, int h) | |||
1971 | tb->FL[h]) ? tb->lkey[h] : B_NR_ITEMS(tb-> | 1971 | tb->FL[h]) ? tb->lkey[h] : B_NR_ITEMS(tb-> |
1972 | FL[h]); | 1972 | FL[h]); |
1973 | son_number = B_N_CHILD_NUM(tb->FL[h], child_position); | 1973 | son_number = B_N_CHILD_NUM(tb->FL[h], child_position); |
1974 | reiserfs_write_unlock(sb); | ||
1974 | bh = sb_bread(sb, son_number); | 1975 | bh = sb_bread(sb, son_number); |
1976 | reiserfs_write_lock(sb); | ||
1975 | if (!bh) | 1977 | if (!bh) |
1976 | return IO_ERROR; | 1978 | return IO_ERROR; |
1977 | if (FILESYSTEM_CHANGED_TB(tb)) { | 1979 | if (FILESYSTEM_CHANGED_TB(tb)) { |
@@ -2009,7 +2011,9 @@ static int get_neighbors(struct tree_balance *tb, int h) | |||
2009 | child_position = | 2011 | child_position = |
2010 | (bh == tb->FR[h]) ? tb->rkey[h] + 1 : 0; | 2012 | (bh == tb->FR[h]) ? tb->rkey[h] + 1 : 0; |
2011 | son_number = B_N_CHILD_NUM(tb->FR[h], child_position); | 2013 | son_number = B_N_CHILD_NUM(tb->FR[h], child_position); |
2014 | reiserfs_write_unlock(sb); | ||
2012 | bh = sb_bread(sb, son_number); | 2015 | bh = sb_bread(sb, son_number); |
2016 | reiserfs_write_lock(sb); | ||
2013 | if (!bh) | 2017 | if (!bh) |
2014 | return IO_ERROR; | 2018 | return IO_ERROR; |
2015 | if (FILESYSTEM_CHANGED_TB(tb)) { | 2019 | if (FILESYSTEM_CHANGED_TB(tb)) { |