reiserfs: rename [cn]_* variables

This patch renames n_, c_, etc variables to something more sane.  This
is the sixth in a series of patches to rip out some of the awful
variable naming in reiserfs.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Jeff Mahoney 2009-03-30 14:02:50 -04:00 committed by Linus Torvalds
parent d68caa9530
commit ee93961be1
4 changed files with 437 additions and 441 deletions

View file

@ -138,11 +138,11 @@ static int reiserfs_sync_file(struct file *filp,
struct dentry *dentry, int datasync)
{
struct inode *inode = dentry->d_inode;
int n_err;
int err;
int barrier_done;
BUG_ON(!S_ISREG(inode->i_mode));
n_err = sync_mapping_buffers(inode->i_mapping);
err = sync_mapping_buffers(inode->i_mapping);
reiserfs_write_lock(inode->i_sb);
barrier_done = reiserfs_commit_for_inode(inode);
reiserfs_write_unlock(inode->i_sb);
@ -150,7 +150,7 @@ static int reiserfs_sync_file(struct file *filp,
blkdev_issue_flush(inode->i_sb->s_bdev, NULL);
if (barrier_done < 0)
return barrier_done;
return (n_err < 0) ? -EIO : 0;
return (err < 0) ? -EIO : 0;
}
/* taken fs/buffer.c:__block_commit_write */

View file

@ -751,24 +751,24 @@ else \
static void free_buffers_in_tb(struct tree_balance *tb)
{
int n_counter;
int i;
pathrelse(tb->tb_path);
for (n_counter = 0; n_counter < MAX_HEIGHT; n_counter++) {
brelse(tb->L[n_counter]);
brelse(tb->R[n_counter]);
brelse(tb->FL[n_counter]);
brelse(tb->FR[n_counter]);
brelse(tb->CFL[n_counter]);
brelse(tb->CFR[n_counter]);
for (i = 0; i < MAX_HEIGHT; i++) {
brelse(tb->L[i]);
brelse(tb->R[i]);
brelse(tb->FL[i]);
brelse(tb->FR[i]);
brelse(tb->CFL[i]);
brelse(tb->CFR[i]);
tb->L[n_counter] = NULL;
tb->R[n_counter] = NULL;
tb->FL[n_counter] = NULL;
tb->FR[n_counter] = NULL;
tb->CFL[n_counter] = NULL;
tb->CFR[n_counter] = NULL;
tb->L[i] = NULL;
tb->R[i] = NULL;
tb->FL[i] = NULL;
tb->FR[i] = NULL;
tb->CFL[i] = NULL;
tb->CFR[i] = NULL;
}
}
@ -778,13 +778,13 @@ static void free_buffers_in_tb(struct tree_balance *tb)
* NO_DISK_SPACE - no disk space.
*/
/* The function is NOT SCHEDULE-SAFE! */
static int get_empty_nodes(struct tree_balance *tb, int n_h)
static int get_empty_nodes(struct tree_balance *tb, int h)
{
struct buffer_head *new_bh,
*Sh = PATH_H_PBUFFER(tb->tb_path, n_h);
b_blocknr_t *blocknr, a_n_blocknrs[MAX_AMOUNT_NEEDED] = { 0, };
int n_counter, n_number_of_freeblk, n_amount_needed, /* number of needed empty blocks */
n_retval = CARRY_ON;
*Sh = PATH_H_PBUFFER(tb->tb_path, h);
b_blocknr_t *blocknr, blocknrs[MAX_AMOUNT_NEEDED] = { 0, };
int counter, number_of_freeblk, amount_needed, /* number of needed empty blocks */
retval = CARRY_ON;
struct super_block *sb = tb->tb_sb;
/* number_of_freeblk is the number of empty blocks which have been
@ -793,7 +793,7 @@ static int get_empty_nodes(struct tree_balance *tb, int n_h)
number_of_freeblk = tb->cur_blknum can be non-zero if a schedule occurs
after empty blocks are acquired, and the balancing analysis is
then restarted, amount_needed is the number needed by this level
(n_h) of the balancing analysis.
(h) of the balancing analysis.
Note that for systems with many processes writing, it would be
more layout optimal to calculate the total number needed by all
@ -801,31 +801,31 @@ static int get_empty_nodes(struct tree_balance *tb, int n_h)
/* Initiate number_of_freeblk to the amount acquired prior to the restart of
the analysis or 0 if not restarted, then subtract the amount needed
by all of the levels of the tree below n_h. */
/* blknum includes S[n_h], so we subtract 1 in this calculation */
for (n_counter = 0, n_number_of_freeblk = tb->cur_blknum;
n_counter < n_h; n_counter++)
n_number_of_freeblk -=
(tb->blknum[n_counter]) ? (tb->blknum[n_counter] -
by all of the levels of the tree below h. */
/* blknum includes S[h], so we subtract 1 in this calculation */
for (counter = 0, number_of_freeblk = tb->cur_blknum;
counter < h; counter++)
number_of_freeblk -=
(tb->blknum[counter]) ? (tb->blknum[counter] -
1) : 0;
/* Allocate missing empty blocks. */
/* if Sh == 0 then we are getting a new root */
n_amount_needed = (Sh) ? (tb->blknum[n_h] - 1) : 1;
amount_needed = (Sh) ? (tb->blknum[h] - 1) : 1;
/* Amount_needed = the amount that we need more than the amount that we have. */
if (n_amount_needed > n_number_of_freeblk)
n_amount_needed -= n_number_of_freeblk;
if (amount_needed > number_of_freeblk)
amount_needed -= number_of_freeblk;
else /* If we have enough already then there is nothing to do. */
return CARRY_ON;
/* No need to check quota - is not allocated for blocks used for formatted nodes */
if (reiserfs_new_form_blocknrs(tb, a_n_blocknrs,
n_amount_needed) == NO_DISK_SPACE)
if (reiserfs_new_form_blocknrs(tb, blocknrs,
amount_needed) == NO_DISK_SPACE)
return NO_DISK_SPACE;
/* for each blocknumber we just got, get a buffer and stick it on FEB */
for (blocknr = a_n_blocknrs, n_counter = 0;
n_counter < n_amount_needed; blocknr++, n_counter++) {
for (blocknr = blocknrs, counter = 0;
counter < amount_needed; blocknr++, counter++) {
RFALSE(!*blocknr,
"PAP-8135: reiserfs_new_blocknrs failed when got new blocks");
@ -845,10 +845,10 @@ static int get_empty_nodes(struct tree_balance *tb, int n_h)
tb->FEB[tb->cur_blknum++] = new_bh;
}
if (n_retval == CARRY_ON && FILESYSTEM_CHANGED_TB(tb))
n_retval = REPEAT_SEARCH;
if (retval == CARRY_ON && FILESYSTEM_CHANGED_TB(tb))
retval = REPEAT_SEARCH;
return n_retval;
return retval;
}
/* Get free space of the left neighbor, which is stored in the parent
@ -896,36 +896,36 @@ static int get_rfree(struct tree_balance *tb, int h)
}
/* Check whether left neighbor is in memory. */
static int is_left_neighbor_in_cache(struct tree_balance *tb, int n_h)
static int is_left_neighbor_in_cache(struct tree_balance *tb, int h)
{
struct buffer_head *father, *left;
struct super_block *sb = tb->tb_sb;
b_blocknr_t n_left_neighbor_blocknr;
int n_left_neighbor_position;
b_blocknr_t left_neighbor_blocknr;
int left_neighbor_position;
/* Father of the left neighbor does not exist. */
if (!tb->FL[n_h])
if (!tb->FL[h])
return 0;
/* Calculate father of the node to be balanced. */
father = PATH_H_PBUFFER(tb->tb_path, n_h + 1);
father = PATH_H_PBUFFER(tb->tb_path, h + 1);
RFALSE(!father ||
!B_IS_IN_TREE(father) ||
!B_IS_IN_TREE(tb->FL[n_h]) ||
!B_IS_IN_TREE(tb->FL[h]) ||
!buffer_uptodate(father) ||
!buffer_uptodate(tb->FL[n_h]),
!buffer_uptodate(tb->FL[h]),
"vs-8165: F[h] (%b) or FL[h] (%b) is invalid",
father, tb->FL[n_h]);
father, tb->FL[h]);
/* Get position of the pointer to the left neighbor into the left father. */
n_left_neighbor_position = (father == tb->FL[n_h]) ?
tb->lkey[n_h] : B_NR_ITEMS(tb->FL[n_h]);
left_neighbor_position = (father == tb->FL[h]) ?
tb->lkey[h] : B_NR_ITEMS(tb->FL[h]);
/* Get left neighbor block number. */
n_left_neighbor_blocknr =
B_N_CHILD_NUM(tb->FL[n_h], n_left_neighbor_position);
left_neighbor_blocknr =
B_N_CHILD_NUM(tb->FL[h], left_neighbor_position);
/* Look for the left neighbor in the cache. */
if ((left = sb_find_get_block(sb, n_left_neighbor_blocknr))) {
if ((left = sb_find_get_block(sb, left_neighbor_blocknr))) {
RFALSE(buffer_uptodate(left) && !B_IS_IN_TREE(left),
"vs-8170: left neighbor (%b %z) is not in the tree",
@ -955,7 +955,7 @@ static void decrement_key(struct cpu_key *key)
* CARRY_ON - schedule didn't occur while the function worked;
*/
static int get_far_parent(struct tree_balance *tb,
int n_h,
int h,
struct buffer_head **pfather,
struct buffer_head **pcom_father, char c_lr_par)
{
@ -963,38 +963,38 @@ static int get_far_parent(struct tree_balance *tb,
INITIALIZE_PATH(s_path_to_neighbor_father);
struct treepath *path = tb->tb_path;
struct cpu_key s_lr_father_key;
int n_counter,
n_position = INT_MAX,
n_first_last_position = 0,
n_path_offset = PATH_H_PATH_OFFSET(path, n_h);
int counter,
position = INT_MAX,
first_last_position = 0,
path_offset = PATH_H_PATH_OFFSET(path, h);
/* Starting from F[n_h] go upwards in the tree, and look for the common
ancestor of F[n_h], and its neighbor l/r, that should be obtained. */
/* Starting from F[h] go upwards in the tree, and look for the common
ancestor of F[h], and its neighbor l/r, that should be obtained. */
n_counter = n_path_offset;
counter = path_offset;
RFALSE(n_counter < FIRST_PATH_ELEMENT_OFFSET,
RFALSE(counter < FIRST_PATH_ELEMENT_OFFSET,
"PAP-8180: invalid path length");
for (; n_counter > FIRST_PATH_ELEMENT_OFFSET; n_counter--) {
for (; counter > FIRST_PATH_ELEMENT_OFFSET; counter--) {
/* Check whether parent of the current buffer in the path is really parent in the tree. */
if (!B_IS_IN_TREE
(parent = PATH_OFFSET_PBUFFER(path, n_counter - 1)))
(parent = PATH_OFFSET_PBUFFER(path, counter - 1)))
return REPEAT_SEARCH;
/* Check whether position in the parent is correct. */
if ((n_position =
if ((position =
PATH_OFFSET_POSITION(path,
n_counter - 1)) >
counter - 1)) >
B_NR_ITEMS(parent))
return REPEAT_SEARCH;
/* Check whether parent at the path really points to the child. */
if (B_N_CHILD_NUM(parent, n_position) !=
PATH_OFFSET_PBUFFER(path, n_counter)->b_blocknr)
if (B_N_CHILD_NUM(parent, position) !=
PATH_OFFSET_PBUFFER(path, counter)->b_blocknr)
return REPEAT_SEARCH;
/* Return delimiting key if position in the parent is not equal to first/last one. */
if (c_lr_par == RIGHT_PARENTS)
n_first_last_position = B_NR_ITEMS(parent);
if (n_position != n_first_last_position) {
first_last_position = B_NR_ITEMS(parent);
if (position != first_last_position) {
*pcom_father = parent;
get_bh(*pcom_father);
/*(*pcom_father = parent)->b_count++; */
@ -1003,7 +1003,7 @@ static int get_far_parent(struct tree_balance *tb,
}
/* if we are in the root of the tree, then there is no common father */
if (n_counter == FIRST_PATH_ELEMENT_OFFSET) {
if (counter == FIRST_PATH_ELEMENT_OFFSET) {
/* Check whether first buffer in the path is the root of the tree. */
if (PATH_OFFSET_PBUFFER
(tb->tb_path,
@ -1036,18 +1036,18 @@ static int get_far_parent(struct tree_balance *tb,
le_key2cpu_key(&s_lr_father_key,
B_N_PDELIM_KEY(*pcom_father,
(c_lr_par ==
LEFT_PARENTS) ? (tb->lkey[n_h - 1] =
n_position -
1) : (tb->rkey[n_h -
LEFT_PARENTS) ? (tb->lkey[h - 1] =
position -
1) : (tb->rkey[h -
1] =
n_position)));
position)));
if (c_lr_par == LEFT_PARENTS)
decrement_key(&s_lr_father_key);
if (search_by_key
(tb->tb_sb, &s_lr_father_key, &s_path_to_neighbor_father,
n_h + 1) == IO_ERROR)
h + 1) == IO_ERROR)
// path is released
return IO_ERROR;
@ -1059,7 +1059,7 @@ static int get_far_parent(struct tree_balance *tb,
*pfather = PATH_PLAST_BUFFER(&s_path_to_neighbor_father);
RFALSE(B_LEVEL(*pfather) != n_h + 1,
RFALSE(B_LEVEL(*pfather) != h + 1,
"PAP-8190: (%b %z) level too small", *pfather, *pfather);
RFALSE(s_path_to_neighbor_father.path_length <
FIRST_PATH_ELEMENT_OFFSET, "PAP-8192: path length is too small");
@ -1069,92 +1069,92 @@ static int get_far_parent(struct tree_balance *tb,
return CARRY_ON;
}
/* Get parents of neighbors of node in the path(S[n_path_offset]) and common parents of
* S[n_path_offset] and L[n_path_offset]/R[n_path_offset]: F[n_path_offset], FL[n_path_offset],
* FR[n_path_offset], CFL[n_path_offset], CFR[n_path_offset].
* Calculate numbers of left and right delimiting keys position: lkey[n_path_offset], rkey[n_path_offset].
/* Get parents of neighbors of node in the path(S[path_offset]) and common parents of
* S[path_offset] and L[path_offset]/R[path_offset]: F[path_offset], FL[path_offset],
* FR[path_offset], CFL[path_offset], CFR[path_offset].
* Calculate numbers of left and right delimiting keys position: lkey[path_offset], rkey[path_offset].
* Returns: SCHEDULE_OCCURRED - schedule occurred while the function worked;
* CARRY_ON - schedule didn't occur while the function worked;
*/
static int get_parents(struct tree_balance *tb, int n_h)
static int get_parents(struct tree_balance *tb, int h)
{
struct treepath *path = tb->tb_path;
int n_position,
n_ret_value,
n_path_offset = PATH_H_PATH_OFFSET(tb->tb_path, n_h);
int position,
ret,
path_offset = PATH_H_PATH_OFFSET(tb->tb_path, h);
struct buffer_head *curf, *curcf;
/* Current node is the root of the tree or will be root of the tree */
if (n_path_offset <= FIRST_PATH_ELEMENT_OFFSET) {
if (path_offset <= FIRST_PATH_ELEMENT_OFFSET) {
/* The root can not have parents.
Release nodes which previously were obtained as parents of the current node neighbors. */
brelse(tb->FL[n_h]);
brelse(tb->CFL[n_h]);
brelse(tb->FR[n_h]);
brelse(tb->CFR[n_h]);
tb->FL[n_h] = NULL;
tb->CFL[n_h] = NULL;
tb->FR[n_h] = NULL;
tb->CFR[n_h] = NULL;
brelse(tb->FL[h]);
brelse(tb->CFL[h]);
brelse(tb->FR[h]);
brelse(tb->CFR[h]);
tb->FL[h] = NULL;
tb->CFL[h] = NULL;
tb->FR[h] = NULL;
tb->CFR[h] = NULL;
return CARRY_ON;
}
/* Get parent FL[n_path_offset] of L[n_path_offset]. */
n_position = PATH_OFFSET_POSITION(path, n_path_offset - 1);
if (n_position) {
/* Get parent FL[path_offset] of L[path_offset]. */
position = PATH_OFFSET_POSITION(path, path_offset - 1);
if (position) {
/* Current node is not the first child of its parent. */
curf = PATH_OFFSET_PBUFFER(path, n_path_offset - 1);
curcf = PATH_OFFSET_PBUFFER(path, n_path_offset - 1);
curf = PATH_OFFSET_PBUFFER(path, path_offset - 1);
curcf = PATH_OFFSET_PBUFFER(path, path_offset - 1);
get_bh(curf);
get_bh(curf);
tb->lkey[n_h] = n_position - 1;
tb->lkey[h] = position - 1;
} else {
/* Calculate current parent of L[n_path_offset], which is the left neighbor of the current node.
Calculate current common parent of L[n_path_offset] and the current node. Note that
CFL[n_path_offset] not equal FL[n_path_offset] and CFL[n_path_offset] not equal F[n_path_offset].
Calculate lkey[n_path_offset]. */
if ((n_ret_value = get_far_parent(tb, n_h + 1, &curf,
/* Calculate current parent of L[path_offset], which is the left neighbor of the current node.
Calculate current common parent of L[path_offset] and the current node. Note that
CFL[path_offset] not equal FL[path_offset] and CFL[path_offset] not equal F[path_offset].
Calculate lkey[path_offset]. */
if ((ret = get_far_parent(tb, h + 1, &curf,
&curcf,
LEFT_PARENTS)) != CARRY_ON)
return n_ret_value;
return ret;
}
brelse(tb->FL[n_h]);
tb->FL[n_h] = curf; /* New initialization of FL[n_h]. */
brelse(tb->CFL[n_h]);
tb->CFL[n_h] = curcf; /* New initialization of CFL[n_h]. */
brelse(tb->FL[h]);
tb->FL[h] = curf; /* New initialization of FL[h]. */
brelse(tb->CFL[h]);
tb->CFL[h] = curcf; /* New initialization of CFL[h]. */
RFALSE((curf && !B_IS_IN_TREE(curf)) ||
(curcf && !B_IS_IN_TREE(curcf)),
"PAP-8195: FL (%b) or CFL (%b) is invalid", curf, curcf);
/* Get parent FR[n_h] of R[n_h]. */
/* Get parent FR[h] of R[h]. */
/* Current node is the last child of F[n_h]. FR[n_h] != F[n_h]. */
if (n_position == B_NR_ITEMS(PATH_H_PBUFFER(path, n_h + 1))) {
/* Calculate current parent of R[n_h], which is the right neighbor of F[n_h].
Calculate current common parent of R[n_h] and current node. Note that CFR[n_h]
not equal FR[n_path_offset] and CFR[n_h] not equal F[n_h]. */
if ((n_ret_value =
get_far_parent(tb, n_h + 1, &curf, &curcf,
/* Current node is the last child of F[h]. FR[h] != F[h]. */
if (position == B_NR_ITEMS(PATH_H_PBUFFER(path, h + 1))) {
/* Calculate current parent of R[h], which is the right neighbor of F[h].
Calculate current common parent of R[h] and current node. Note that CFR[h]
not equal FR[path_offset] and CFR[h] not equal F[h]. */
if ((ret =
get_far_parent(tb, h + 1, &curf, &curcf,
RIGHT_PARENTS)) != CARRY_ON)
return n_ret_value;
return ret;
} else {
/* Current node is not the last child of its parent F[n_h]. */
curf = PATH_OFFSET_PBUFFER(path, n_path_offset - 1);
curcf = PATH_OFFSET_PBUFFER(path, n_path_offset - 1);
/* Current node is not the last child of its parent F[h]. */
curf = PATH_OFFSET_PBUFFER(path, path_offset - 1);
curcf = PATH_OFFSET_PBUFFER(path, path_offset - 1);
get_bh(curf);
get_bh(curf);
tb->rkey[n_h] = n_position;
tb->rkey[h] = position;
}
brelse(tb->FR[n_h]);
/* New initialization of FR[n_path_offset]. */
tb->FR[n_h] = curf;
brelse(tb->FR[h]);
/* New initialization of FR[path_offset]. */
tb->FR[h] = curf;
brelse(tb->CFR[n_h]);
/* New initialization of CFR[n_path_offset]. */
tb->CFR[n_h] = curcf;
brelse(tb->CFR[h]);
/* New initialization of CFR[path_offset]. */
tb->CFR[h] = curcf;
RFALSE((curf && !B_IS_IN_TREE(curf)) ||
(curcf && !B_IS_IN_TREE(curcf)),
@ -1222,7 +1222,7 @@ static int ip_check_balance(struct tree_balance *tb, int h)
contains node being balanced. The mnemonic is
that the attempted change in node space used level
is levbytes bytes. */
n_ret_value;
ret;
int lfree, sfree, rfree /* free space in L, S and R */ ;
@ -1262,22 +1262,22 @@ static int ip_check_balance(struct tree_balance *tb, int h)
if (!h)
reiserfs_panic(tb->tb_sb, "vs-8210",
"S[0] can not be 0");
switch (n_ret_value = get_empty_nodes(tb, h)) {
switch (ret = get_empty_nodes(tb, h)) {
case CARRY_ON:
set_parameters(tb, h, 0, 0, 1, NULL, -1, -1);
return NO_BALANCING_NEEDED; /* no balancing for higher levels needed */
case NO_DISK_SPACE:
case REPEAT_SEARCH:
return n_ret_value;
return ret;
default:
reiserfs_panic(tb->tb_sb, "vs-8215", "incorrect "
"return value of get_empty_nodes");
}
}
if ((n_ret_value = get_parents(tb, h)) != CARRY_ON) /* get parents of S[h] neighbors. */
return n_ret_value;
if ((ret = get_parents(tb, h)) != CARRY_ON) /* get parents of S[h] neighbors. */
return ret;
sfree = B_FREE_SPACE(Sh);
@ -1564,7 +1564,7 @@ static int dc_check_balance_internal(struct tree_balance *tb, int h)
/* Sh is the node whose balance is currently being checked,
and Fh is its father. */
struct buffer_head *Sh, *Fh;
int maxsize, n_ret_value;
int maxsize, ret;
int lfree, rfree /* free space in L and R */ ;
Sh = PATH_H_PBUFFER(tb->tb_path, h);
@ -1589,8 +1589,8 @@ static int dc_check_balance_internal(struct tree_balance *tb, int h)
return CARRY_ON;
}
if ((n_ret_value = get_parents(tb, h)) != CARRY_ON)
return n_ret_value;
if ((ret = get_parents(tb, h)) != CARRY_ON)
return ret;
/* get free space of neighbors */
rfree = get_rfree(tb, h);
@ -1747,7 +1747,7 @@ static int dc_check_balance_leaf(struct tree_balance *tb, int h)
attempted change in node space used level is levbytes bytes. */
int levbytes;
/* the maximal item size */
int maxsize, n_ret_value;
int maxsize, ret;
/* S0 is the node whose balance is currently being checked,
and F0 is its father. */
struct buffer_head *S0, *F0;
@ -1769,8 +1769,8 @@ static int dc_check_balance_leaf(struct tree_balance *tb, int h)
return NO_BALANCING_NEEDED;
}
if ((n_ret_value = get_parents(tb, h)) != CARRY_ON)
return n_ret_value;
if ((ret = get_parents(tb, h)) != CARRY_ON)
return ret;
/* get free space of neighbors */
rfree = get_rfree(tb, h);
@ -1889,40 +1889,40 @@ static int check_balance(int mode,
}
/* Check whether parent at the path is the really parent of the current node.*/
static int get_direct_parent(struct tree_balance *tb, int n_h)
static int get_direct_parent(struct tree_balance *tb, int h)
{
struct buffer_head *bh;
struct treepath *path = tb->tb_path;
int n_position,
n_path_offset = PATH_H_PATH_OFFSET(tb->tb_path, n_h);
int position,
path_offset = PATH_H_PATH_OFFSET(tb->tb_path, h);
/* We are in the root or in the new root. */
if (n_path_offset <= FIRST_PATH_ELEMENT_OFFSET) {
if (path_offset <= FIRST_PATH_ELEMENT_OFFSET) {
RFALSE(n_path_offset < FIRST_PATH_ELEMENT_OFFSET - 1,
RFALSE(path_offset < FIRST_PATH_ELEMENT_OFFSET - 1,
"PAP-8260: invalid offset in the path");
if (PATH_OFFSET_PBUFFER(path, FIRST_PATH_ELEMENT_OFFSET)->
b_blocknr == SB_ROOT_BLOCK(tb->tb_sb)) {
/* Root is not changed. */
PATH_OFFSET_PBUFFER(path, n_path_offset - 1) = NULL;
PATH_OFFSET_POSITION(path, n_path_offset - 1) = 0;
PATH_OFFSET_PBUFFER(path, path_offset - 1) = NULL;
PATH_OFFSET_POSITION(path, path_offset - 1) = 0;
return CARRY_ON;
}
return REPEAT_SEARCH; /* Root is changed and we must recalculate the path. */
}
if (!B_IS_IN_TREE
(bh = PATH_OFFSET_PBUFFER(path, n_path_offset - 1)))
(bh = PATH_OFFSET_PBUFFER(path, path_offset - 1)))
return REPEAT_SEARCH; /* Parent in the path is not in the tree. */
if ((n_position =
if ((position =
PATH_OFFSET_POSITION(path,
n_path_offset - 1)) > B_NR_ITEMS(bh))
path_offset - 1)) > B_NR_ITEMS(bh))
return REPEAT_SEARCH;
if (B_N_CHILD_NUM(bh, n_position) !=
PATH_OFFSET_PBUFFER(path, n_path_offset)->b_blocknr)
if (B_N_CHILD_NUM(bh, position) !=
PATH_OFFSET_PBUFFER(path, path_offset)->b_blocknr)
/* Parent in the path is not parent of the current node in the tree. */
return REPEAT_SEARCH;
@ -1935,92 +1935,92 @@ static int get_direct_parent(struct tree_balance *tb, int n_h)
return CARRY_ON; /* Parent in the path is unlocked and really parent of the current node. */
}
/* Using lnum[n_h] and rnum[n_h] we should determine what neighbors
* of S[n_h] we
* need in order to balance S[n_h], and get them if necessary.
/* Using lnum[h] and rnum[h] we should determine what neighbors
* of S[h] we
* need in order to balance S[h], and get them if necessary.
* Returns: SCHEDULE_OCCURRED - schedule occurred while the function worked;
* CARRY_ON - schedule didn't occur while the function worked;
*/
static int get_neighbors(struct tree_balance *tb, int n_h)
static int get_neighbors(struct tree_balance *tb, int h)
{
int n_child_position,
n_path_offset = PATH_H_PATH_OFFSET(tb->tb_path, n_h + 1);
unsigned long n_son_number;
int child_position,
path_offset = PATH_H_PATH_OFFSET(tb->tb_path, h + 1);
unsigned long son_number;
struct super_block *sb = tb->tb_sb;
struct buffer_head *bh;
PROC_INFO_INC(sb, get_neighbors[n_h]);
PROC_INFO_INC(sb, get_neighbors[h]);
if (tb->lnum[n_h]) {
/* We need left neighbor to balance S[n_h]. */
PROC_INFO_INC(sb, need_l_neighbor[n_h]);
bh = PATH_OFFSET_PBUFFER(tb->tb_path, n_path_offset);
if (tb->lnum[h]) {
/* We need left neighbor to balance S[h]. */
PROC_INFO_INC(sb, need_l_neighbor[h]);
bh = PATH_OFFSET_PBUFFER(tb->tb_path, path_offset);
RFALSE(bh == tb->FL[n_h] &&
!PATH_OFFSET_POSITION(tb->tb_path, n_path_offset),
RFALSE(bh == tb->FL[h] &&
!PATH_OFFSET_POSITION(tb->tb_path, path_offset),
"PAP-8270: invalid position in the parent");
n_child_position =
child_position =
(bh ==
tb->FL[n_h]) ? tb->lkey[n_h] : B_NR_ITEMS(tb->
FL[n_h]);
n_son_number = B_N_CHILD_NUM(tb->FL[n_h], n_child_position);
bh = sb_bread(sb, n_son_number);
tb->FL[h]) ? tb->lkey[h] : B_NR_ITEMS(tb->
FL[h]);
son_number = B_N_CHILD_NUM(tb->FL[h], child_position);
bh = sb_bread(sb, son_number);
if (!bh)
return IO_ERROR;
if (FILESYSTEM_CHANGED_TB(tb)) {
brelse(bh);
PROC_INFO_INC(sb, get_neighbors_restart[n_h]);
PROC_INFO_INC(sb, get_neighbors_restart[h]);
return REPEAT_SEARCH;
}
RFALSE(!B_IS_IN_TREE(tb->FL[n_h]) ||
n_child_position > B_NR_ITEMS(tb->FL[n_h]) ||
B_N_CHILD_NUM(tb->FL[n_h], n_child_position) !=
RFALSE(!B_IS_IN_TREE(tb->FL[h]) ||
child_position > B_NR_ITEMS(tb->FL[h]) ||
B_N_CHILD_NUM(tb->FL[h], child_position) !=
bh->b_blocknr, "PAP-8275: invalid parent");
RFALSE(!B_IS_IN_TREE(bh), "PAP-8280: invalid child");
RFALSE(!n_h &&
RFALSE(!h &&
B_FREE_SPACE(bh) !=
MAX_CHILD_SIZE(bh) -
dc_size(B_N_CHILD(tb->FL[0], n_child_position)),
dc_size(B_N_CHILD(tb->FL[0], child_position)),
"PAP-8290: invalid child size of left neighbor");
brelse(tb->L[n_h]);
tb->L[n_h] = bh;
brelse(tb->L[h]);
tb->L[h] = bh;
}
/* We need right neighbor to balance S[n_path_offset]. */
if (tb->rnum[n_h]) {
PROC_INFO_INC(sb, need_r_neighbor[n_h]);
bh = PATH_OFFSET_PBUFFER(tb->tb_path, n_path_offset);
/* We need right neighbor to balance S[path_offset]. */
if (tb->rnum[h]) { /* We need right neighbor to balance S[path_offset]. */
PROC_INFO_INC(sb, need_r_neighbor[h]);
bh = PATH_OFFSET_PBUFFER(tb->tb_path, path_offset);
RFALSE(bh == tb->FR[n_h] &&
RFALSE(bh == tb->FR[h] &&
PATH_OFFSET_POSITION(tb->tb_path,
n_path_offset) >=
path_offset) >=
B_NR_ITEMS(bh),
"PAP-8295: invalid position in the parent");
n_child_position =
(bh == tb->FR[n_h]) ? tb->rkey[n_h] + 1 : 0;
n_son_number = B_N_CHILD_NUM(tb->FR[n_h], n_child_position);
bh = sb_bread(sb, n_son_number);
child_position =
(bh == tb->FR[h]) ? tb->rkey[h] + 1 : 0;
son_number = B_N_CHILD_NUM(tb->FR[h], child_position);
bh = sb_bread(sb, son_number);
if (!bh)
return IO_ERROR;
if (FILESYSTEM_CHANGED_TB(tb)) {
brelse(bh);
PROC_INFO_INC(sb, get_neighbors_restart[n_h]);
PROC_INFO_INC(sb, get_neighbors_restart[h]);
return REPEAT_SEARCH;
}
brelse(tb->R[n_h]);
tb->R[n_h] = bh;
brelse(tb->R[h]);
tb->R[h] = bh;
RFALSE(!n_h
RFALSE(!h
&& B_FREE_SPACE(bh) !=
MAX_CHILD_SIZE(bh) -
dc_size(B_N_CHILD(tb->FR[0], n_child_position)),
dc_size(B_N_CHILD(tb->FR[0], child_position)),
"PAP-8300: invalid child size of right neighbor (%d != %d - %d)",
B_FREE_SPACE(bh), MAX_CHILD_SIZE(bh),
dc_size(B_N_CHILD(tb->FR[0], n_child_position)));
dc_size(B_N_CHILD(tb->FR[0], child_position)));
}
return CARRY_ON;
@ -2317,11 +2317,11 @@ static int wait_tb_buffers_until_unlocked(struct tree_balance *tb)
* -1 - if no_disk_space
*/
int fix_nodes(int n_op_mode, struct tree_balance *tb,
int fix_nodes(int op_mode, struct tree_balance *tb,
struct item_head *ins_ih, const void *data)
{
int n_ret_value, n_h, n_item_num = PATH_LAST_POSITION(tb->tb_path);
int n_pos_in_item;
int ret, h, item_num = PATH_LAST_POSITION(tb->tb_path);
int pos_in_item;
/* we set wait_tb_buffers_run when we have to restore any dirty bits cleared
** during wait_tb_buffers_run
@ -2331,7 +2331,7 @@ int fix_nodes(int n_op_mode, struct tree_balance *tb,
++REISERFS_SB(tb->tb_sb)->s_fix_nodes;
n_pos_in_item = tb->tb_path->pos_in_item;
pos_in_item = tb->tb_path->pos_in_item;
tb->fs_gen = get_generation(tb->tb_sb);
@ -2364,26 +2364,26 @@ int fix_nodes(int n_op_mode, struct tree_balance *tb,
reiserfs_panic(tb->tb_sb, "PAP-8320", "S[0] (%b %z) is "
"not uptodate at the beginning of fix_nodes "
"or not in tree (mode %c)",
tbS0, tbS0, n_op_mode);
tbS0, tbS0, op_mode);
/* Check parameters. */
switch (n_op_mode) {
switch (op_mode) {
case M_INSERT:
if (n_item_num <= 0 || n_item_num > B_NR_ITEMS(tbS0))
if (item_num <= 0 || item_num > B_NR_ITEMS(tbS0))
reiserfs_panic(tb->tb_sb, "PAP-8330", "Incorrect "
"item number %d (in S0 - %d) in case "
"of insert", n_item_num,
"of insert", item_num,
B_NR_ITEMS(tbS0));
break;
case M_PASTE:
case M_DELETE:
case M_CUT:
if (n_item_num < 0 || n_item_num >= B_NR_ITEMS(tbS0)) {
if (item_num < 0 || item_num >= B_NR_ITEMS(tbS0)) {
print_block(tbS0, 0, -1, -1);
reiserfs_panic(tb->tb_sb, "PAP-8335", "Incorrect "
"item number(%d); mode = %c "
"insert_size = %d",
n_item_num, n_op_mode,
item_num, op_mode,
tb->insert_size[0]);
}
break;
@ -2397,73 +2397,73 @@ int fix_nodes(int n_op_mode, struct tree_balance *tb,
// FIXME: maybe -ENOMEM when tb->vn_buf == 0? Now just repeat
return REPEAT_SEARCH;
/* Starting from the leaf level; for all levels n_h of the tree. */
for (n_h = 0; n_h < MAX_HEIGHT && tb->insert_size[n_h]; n_h++) {
n_ret_value = get_direct_parent(tb, n_h);
if (n_ret_value != CARRY_ON)
/* Starting from the leaf level; for all levels h of the tree. */
for (h = 0; h < MAX_HEIGHT && tb->insert_size[h]; h++) {
ret = get_direct_parent(tb, h);
if (ret != CARRY_ON)
goto repeat;
n_ret_value = check_balance(n_op_mode, tb, n_h, n_item_num,
n_pos_in_item, ins_ih, data);
if (n_ret_value != CARRY_ON) {
if (n_ret_value == NO_BALANCING_NEEDED) {
ret = check_balance(op_mode, tb, h, item_num,
pos_in_item, ins_ih, data);
if (ret != CARRY_ON) {
if (ret == NO_BALANCING_NEEDED) {
/* No balancing for higher levels needed. */
n_ret_value = get_neighbors(tb, n_h);
if (n_ret_value != CARRY_ON)
ret = get_neighbors(tb, h);
if (ret != CARRY_ON)
goto repeat;
if (n_h != MAX_HEIGHT - 1)
tb->insert_size[n_h + 1] = 0;
if (h != MAX_HEIGHT - 1)
tb->insert_size[h + 1] = 0;
/* ok, analysis and resource gathering are complete */
break;
}
goto repeat;
}
n_ret_value = get_neighbors(tb, n_h);
if (n_ret_value != CARRY_ON)
ret = get_neighbors(tb, h);
if (ret != CARRY_ON)
goto repeat;
/* No disk space, or schedule occurred and analysis may be
* invalid and needs to be redone. */
n_ret_value = get_empty_nodes(tb, n_h);
if (n_ret_value != CARRY_ON)
ret = get_empty_nodes(tb, h);
if (ret != CARRY_ON)
goto repeat;
if (!PATH_H_PBUFFER(tb->tb_path, n_h)) {
if (!PATH_H_PBUFFER(tb->tb_path, h)) {
/* We have a positive insert size but no nodes exist on this
level, this means that we are creating a new root. */
RFALSE(tb->blknum[n_h] != 1,
RFALSE(tb->blknum[h] != 1,
"PAP-8350: creating new empty root");
if (n_h < MAX_HEIGHT - 1)
tb->insert_size[n_h + 1] = 0;
} else if (!PATH_H_PBUFFER(tb->tb_path, n_h + 1)) {
if (tb->blknum[n_h] > 1) {
/* The tree needs to be grown, so this node S[n_h]
if (h < MAX_HEIGHT - 1)
tb->insert_size[h + 1] = 0;
} else if (!PATH_H_PBUFFER(tb->tb_path, h + 1)) {
if (tb->blknum[h] > 1) {
/* The tree needs to be grown, so this node S[h]
which is the root node is split into two nodes,
and a new node (S[n_h+1]) will be created to
and a new node (S[h+1]) will be created to
become the root node. */
RFALSE(n_h == MAX_HEIGHT - 1,
RFALSE(h == MAX_HEIGHT - 1,
"PAP-8355: attempt to create too high of a tree");
tb->insert_size[n_h + 1] =
tb->insert_size[h + 1] =
(DC_SIZE +
KEY_SIZE) * (tb->blknum[n_h] - 1) +
KEY_SIZE) * (tb->blknum[h] - 1) +
DC_SIZE;
} else if (n_h < MAX_HEIGHT - 1)
tb->insert_size[n_h + 1] = 0;
} else if (h < MAX_HEIGHT - 1)
tb->insert_size[h + 1] = 0;
} else
tb->insert_size[n_h + 1] =
(DC_SIZE + KEY_SIZE) * (tb->blknum[n_h] - 1);
tb->insert_size[h + 1] =
(DC_SIZE + KEY_SIZE) * (tb->blknum[h] - 1);
}
n_ret_value = wait_tb_buffers_until_unlocked(tb);
if (n_ret_value == CARRY_ON) {
ret = wait_tb_buffers_until_unlocked(tb);
if (ret == CARRY_ON) {
if (FILESYSTEM_CHANGED_TB(tb)) {
wait_tb_buffers_run = 1;
n_ret_value = REPEAT_SEARCH;
ret = REPEAT_SEARCH;
goto repeat;
} else {
return CARRY_ON;
@ -2529,7 +2529,7 @@ int fix_nodes(int n_op_mode, struct tree_balance *tb,
(tb->tb_sb, tb->FEB[i]);
}
}
return n_ret_value;
return ret;
}
}

View file

@ -136,11 +136,11 @@ inline int comp_short_le_keys(const struct reiserfs_key *key1,
const struct reiserfs_key *key2)
{
__u32 *k1_u32, *k2_u32;
int n_key_length = REISERFS_SHORT_KEY_LEN;
int key_length = REISERFS_SHORT_KEY_LEN;
k1_u32 = (__u32 *) key1;
k2_u32 = (__u32 *) key2;
for (; n_key_length--; ++k1_u32, ++k2_u32) {
for (; key_length--; ++k1_u32, ++k2_u32) {
if (le32_to_cpu(*k1_u32) < le32_to_cpu(*k2_u32))
return -1;
if (le32_to_cpu(*k1_u32) > le32_to_cpu(*k2_u32))
@ -177,10 +177,10 @@ inline int comp_le_keys(const struct reiserfs_key *k1,
* *pos = number of the searched element if found, else the *
* number of the first element that is larger than key. *
**************************************************************************/
/* For those not familiar with binary search: n_lbound is the leftmost item that it
could be, n_rbound the rightmost item that it could be. We examine the item
halfway between n_lbound and n_rbound, and that tells us either that we can increase
n_lbound, or decrease n_rbound, or that we have found it, or if n_lbound <= n_rbound that
/* For those not familiar with binary search: lbound is the leftmost item that it
could be, rbound the rightmost item that it could be. We examine the item
halfway between lbound and rbound, and that tells us either that we can increase
lbound, or decrease rbound, or that we have found it, or if lbound <= rbound that
there are no possible items, and we have not found it. With each examination we
cut the number of possible items it could be by one more than half rounded down,
or we find it. */
@ -198,28 +198,27 @@ static inline int bin_search(const void *key, /* Key to search for. */
int *pos /* Number of the searched for element. */
)
{
int n_rbound, n_lbound, n_j;
int rbound, lbound, j;
for (n_j = ((n_rbound = num - 1) + (n_lbound = 0)) / 2;
n_lbound <= n_rbound; n_j = (n_rbound + n_lbound) / 2)
for (j = ((rbound = num - 1) + (lbound = 0)) / 2;
lbound <= rbound; j = (rbound + lbound) / 2)
switch (comp_keys
((struct reiserfs_key *)((char *)base +
n_j * width),
((struct reiserfs_key *)((char *)base + j * width),
(struct cpu_key *)key)) {
case -1:
n_lbound = n_j + 1;
lbound = j + 1;
continue;
case 1:
n_rbound = n_j - 1;
rbound = j - 1;
continue;
case 0:
*pos = n_j;
*pos = j;
return ITEM_FOUND; /* Key found in the array. */
}
/* bin_search did not find given key, it returns position of key,
that is minimal and greater than the given one. */
*pos = n_lbound;
*pos = lbound;
return ITEM_NOT_FOUND;
}
@ -242,43 +241,41 @@ static const struct reiserfs_key MAX_KEY = {
of the path, and going upwards. We must check the path's validity at each step. If the key is not in
the path, there is no delimiting key in the tree (buffer is first or last buffer in tree), and in this
case we return a special key, either MIN_KEY or MAX_KEY. */
static inline const struct reiserfs_key *get_lkey(const struct treepath
*chk_path,
const struct super_block
*sb)
static inline const struct reiserfs_key *get_lkey(const struct treepath *chk_path,
const struct super_block *sb)
{
int n_position, n_path_offset = chk_path->path_length;
int position, path_offset = chk_path->path_length;
struct buffer_head *parent;
RFALSE(n_path_offset < FIRST_PATH_ELEMENT_OFFSET,
RFALSE(path_offset < FIRST_PATH_ELEMENT_OFFSET,
"PAP-5010: invalid offset in the path");
/* While not higher in path than first element. */
while (n_path_offset-- > FIRST_PATH_ELEMENT_OFFSET) {
while (path_offset-- > FIRST_PATH_ELEMENT_OFFSET) {
RFALSE(!buffer_uptodate
(PATH_OFFSET_PBUFFER(chk_path, n_path_offset)),
(PATH_OFFSET_PBUFFER(chk_path, path_offset)),
"PAP-5020: parent is not uptodate");
/* Parent at the path is not in the tree now. */
if (!B_IS_IN_TREE
(parent =
PATH_OFFSET_PBUFFER(chk_path, n_path_offset)))
PATH_OFFSET_PBUFFER(chk_path, path_offset)))
return &MAX_KEY;
/* Check whether position in the parent is correct. */
if ((n_position =
if ((position =
PATH_OFFSET_POSITION(chk_path,
n_path_offset)) >
path_offset)) >
B_NR_ITEMS(parent))
return &MAX_KEY;
/* Check whether parent at the path really points to the child. */
if (B_N_CHILD_NUM(parent, n_position) !=
if (B_N_CHILD_NUM(parent, position) !=
PATH_OFFSET_PBUFFER(chk_path,
n_path_offset + 1)->b_blocknr)
path_offset + 1)->b_blocknr)
return &MAX_KEY;
/* Return delimiting key if position in the parent is not equal to zero. */
if (n_position)
return B_N_PDELIM_KEY(parent, n_position - 1);
if (position)
return B_N_PDELIM_KEY(parent, position - 1);
}
/* Return MIN_KEY if we are in the root of the buffer tree. */
if (PATH_OFFSET_PBUFFER(chk_path, FIRST_PATH_ELEMENT_OFFSET)->
@ -291,37 +288,37 @@ static inline const struct reiserfs_key *get_lkey(const struct treepath
inline const struct reiserfs_key *get_rkey(const struct treepath *chk_path,
const struct super_block *sb)
{
int n_position, n_path_offset = chk_path->path_length;
int position, path_offset = chk_path->path_length;
struct buffer_head *parent;
RFALSE(n_path_offset < FIRST_PATH_ELEMENT_OFFSET,
RFALSE(path_offset < FIRST_PATH_ELEMENT_OFFSET,
"PAP-5030: invalid offset in the path");
while (n_path_offset-- > FIRST_PATH_ELEMENT_OFFSET) {
while (path_offset-- > FIRST_PATH_ELEMENT_OFFSET) {
RFALSE(!buffer_uptodate
(PATH_OFFSET_PBUFFER(chk_path, n_path_offset)),
(PATH_OFFSET_PBUFFER(chk_path, path_offset)),
"PAP-5040: parent is not uptodate");
/* Parent at the path is not in the tree now. */
if (!B_IS_IN_TREE
(parent =
PATH_OFFSET_PBUFFER(chk_path, n_path_offset)))
PATH_OFFSET_PBUFFER(chk_path, path_offset)))
return &MIN_KEY;
/* Check whether position in the parent is correct. */
if ((n_position =
if ((position =
PATH_OFFSET_POSITION(chk_path,
n_path_offset)) >
path_offset)) >
B_NR_ITEMS(parent))
return &MIN_KEY;
/* Check whether parent at the path really points to the child. */
if (B_N_CHILD_NUM(parent, n_position) !=
if (B_N_CHILD_NUM(parent, position) !=
PATH_OFFSET_PBUFFER(chk_path,
n_path_offset + 1)->b_blocknr)
path_offset + 1)->b_blocknr)
return &MIN_KEY;
/* Return delimiting key if position in the parent is not the last one. */
if (n_position != B_NR_ITEMS(parent))
return B_N_PDELIM_KEY(parent, n_position);
if (position != B_NR_ITEMS(parent))
return B_N_PDELIM_KEY(parent, position);
}
/* Return MAX_KEY if we are in the root of the buffer tree. */
if (PATH_OFFSET_PBUFFER(chk_path, FIRST_PATH_ELEMENT_OFFSET)->
@ -371,14 +368,14 @@ int reiserfs_check_path(struct treepath *p)
void pathrelse_and_restore(struct super_block *sb,
struct treepath *search_path)
{
int n_path_offset = search_path->path_length;
int path_offset = search_path->path_length;
RFALSE(n_path_offset < ILLEGAL_PATH_ELEMENT_OFFSET,
RFALSE(path_offset < ILLEGAL_PATH_ELEMENT_OFFSET,
"clm-4000: invalid path offset");
while (n_path_offset > ILLEGAL_PATH_ELEMENT_OFFSET) {
while (path_offset > ILLEGAL_PATH_ELEMENT_OFFSET) {
struct buffer_head *bh;
bh = PATH_OFFSET_PBUFFER(search_path, n_path_offset--);
bh = PATH_OFFSET_PBUFFER(search_path, path_offset--);
reiserfs_restore_prepared_buffer(sb, bh);
brelse(bh);
}
@ -388,13 +385,13 @@ void pathrelse_and_restore(struct super_block *sb,
/* Drop the reference to each buffer in a path */
void pathrelse(struct treepath *search_path)
{
int n_path_offset = search_path->path_length;
int path_offset = search_path->path_length;
RFALSE(n_path_offset < ILLEGAL_PATH_ELEMENT_OFFSET,
RFALSE(path_offset < ILLEGAL_PATH_ELEMENT_OFFSET,
"PAP-5090: invalid path offset");
while (n_path_offset > ILLEGAL_PATH_ELEMENT_OFFSET)
brelse(PATH_OFFSET_PBUFFER(search_path, n_path_offset--));
while (path_offset > ILLEGAL_PATH_ELEMENT_OFFSET)
brelse(PATH_OFFSET_PBUFFER(search_path, path_offset--));
search_path->path_length = ILLEGAL_PATH_ELEMENT_OFFSET;
}
@ -572,16 +569,16 @@ int search_by_key(struct super_block *sb, const struct cpu_key *key, /* Key to s
by the calling
function. It is filled up
by this function. */
int n_stop_level /* How far down the tree to search. To
int stop_level /* How far down the tree to search. To
stop at leaf level - set to
DISK_LEAF_NODE_LEVEL */
)
{
b_blocknr_t n_block_number;
b_blocknr_t block_number;
int expected_level;
struct buffer_head *bh;
struct path_element *last_element;
int n_node_level, n_retval;
int node_level, retval;
int right_neighbor_of_leaf_node;
int fs_gen;
struct buffer_head *reada_bh[SEARCH_BY_KEY_READA];
@ -589,7 +586,7 @@ int search_by_key(struct super_block *sb, const struct cpu_key *key, /* Key to s
int reada_count = 0;
#ifdef CONFIG_REISERFS_CHECK
int n_repeat_counter = 0;
int repeat_counter = 0;
#endif
PROC_INFO_INC(sb, search_by_key);
@ -605,16 +602,16 @@ int search_by_key(struct super_block *sb, const struct cpu_key *key, /* Key to s
/* With each iteration of this loop we search through the items in the
current node, and calculate the next current node(next path element)
for the next iteration of this loop.. */
n_block_number = SB_ROOT_BLOCK(sb);
block_number = SB_ROOT_BLOCK(sb);
expected_level = -1;
while (1) {
#ifdef CONFIG_REISERFS_CHECK
if (!(++n_repeat_counter % 50000))
if (!(++repeat_counter % 50000))
reiserfs_warning(sb, "PAP-5100",
"%s: there were %d iterations of "
"while loop looking for key %K",
current->comm, n_repeat_counter,
current->comm, repeat_counter,
key);
#endif
@ -627,7 +624,7 @@ int search_by_key(struct super_block *sb, const struct cpu_key *key, /* Key to s
/* Read the next tree node, and set the last element in the path to
have a pointer to it. */
if ((bh = last_element->pe_buffer =
sb_getblk(sb, n_block_number))) {
sb_getblk(sb, block_number))) {
if (!buffer_uptodate(bh) && reada_count > 1)
search_by_key_reada(sb, reada_bh,
reada_blocks, reada_count);
@ -661,7 +658,7 @@ int search_by_key(struct super_block *sb, const struct cpu_key *key, /* Key to s
/* Get the root block number so that we can repeat the search
starting from the root. */
n_block_number = SB_ROOT_BLOCK(sb);
block_number = SB_ROOT_BLOCK(sb);
expected_level = -1;
right_neighbor_of_leaf_node = 0;
@ -694,26 +691,26 @@ int search_by_key(struct super_block *sb, const struct cpu_key *key, /* Key to s
}
/* ok, we have acquired next formatted node in the tree */
n_node_level = B_LEVEL(bh);
node_level = B_LEVEL(bh);
PROC_INFO_BH_STAT(sb, bh, n_node_level - 1);
PROC_INFO_BH_STAT(sb, bh, node_level - 1);
RFALSE(n_node_level < n_stop_level,
RFALSE(node_level < stop_level,
"vs-5152: tree level (%d) is less than stop level (%d)",
n_node_level, n_stop_level);
node_level, stop_level);
n_retval = bin_search(key, B_N_PITEM_HEAD(bh, 0),
retval = bin_search(key, B_N_PITEM_HEAD(bh, 0),
B_NR_ITEMS(bh),
(n_node_level ==
(node_level ==
DISK_LEAF_NODE_LEVEL) ? IH_SIZE :
KEY_SIZE,
&(last_element->pe_position));
if (n_node_level == n_stop_level) {
return n_retval;
if (node_level == stop_level) {
return retval;
}
/* we are not in the stop level */
if (n_retval == ITEM_FOUND)
if (retval == ITEM_FOUND)
/* item has been found, so we choose the pointer which is to the right of the found one */
last_element->pe_position++;
@ -724,12 +721,12 @@ int search_by_key(struct super_block *sb, const struct cpu_key *key, /* Key to s
/* So we have chosen a position in the current node which is
an internal node. Now we calculate child block number by
position in the node. */
n_block_number =
block_number =
B_N_CHILD_NUM(bh, last_element->pe_position);
/* if we are going to read leaf nodes, try for read ahead as well */
if ((search_path->reada & PATH_READA) &&
n_node_level == DISK_LEAF_NODE_LEVEL + 1) {
node_level == DISK_LEAF_NODE_LEVEL + 1) {
int pos = last_element->pe_position;
int limit = B_NR_ITEMS(bh);
struct reiserfs_key *le_key;
@ -781,7 +778,7 @@ int search_for_position_by_key(struct super_block *sb, /* Pointer to the super b
)
{
struct item_head *p_le_ih; /* pointer to on-disk structure */
int n_blk_size;
int blk_size;
loff_t item_offset, offset;
struct reiserfs_dir_entry de;
int retval;
@ -816,7 +813,7 @@ int search_for_position_by_key(struct super_block *sb, /* Pointer to the super b
p_le_ih =
B_N_PITEM_HEAD(PATH_PLAST_BUFFER(search_path),
--PATH_LAST_POSITION(search_path));
n_blk_size = sb->s_blocksize;
blk_size = sb->s_blocksize;
if (comp_short_keys(&(p_le_ih->ih_key), p_cpu_key)) {
return FILE_NOT_FOUND;
@ -828,10 +825,10 @@ int search_for_position_by_key(struct super_block *sb, /* Pointer to the super b
/* Needed byte is contained in the item pointed to by the path. */
if (item_offset <= offset &&
item_offset + op_bytes_number(p_le_ih, n_blk_size) > offset) {
item_offset + op_bytes_number(p_le_ih, blk_size) > offset) {
pos_in_item(search_path) = offset - item_offset;
if (is_indirect_le_ih(p_le_ih)) {
pos_in_item(search_path) /= n_blk_size;
pos_in_item(search_path) /= blk_size;
}
return POSITION_FOUND;
}
@ -891,7 +888,7 @@ static inline int prepare_for_direct_item(struct treepath *path,
if (get_inode_item_key_version(inode) == KEY_FORMAT_3_6) {
//
round_len = ROUND_UP(new_file_length);
/* this was n_new_file_length < le_ih ... */
/* this was new_file_length < le_ih ... */
if (round_len < le_ih_k_offset(le_ih)) {
*cut_size = -(IH_SIZE + ih_item_len(le_ih));
return M_DELETE; /* Delete this item. */
@ -953,7 +950,7 @@ static inline int prepare_for_direntry_item(struct treepath *path,
This function returns a determination of what balance mode the calling function should employ. */
static char prepare_for_delete_or_cut(struct reiserfs_transaction_handle *th, struct inode *inode, struct treepath *path, const struct cpu_key *item_key, int *removed, /* Number of unformatted nodes which were removed
from end of the file. */
int *cut_size, unsigned long long n_new_file_length /* MAX_KEY_OFFSET in case of delete. */
int *cut_size, unsigned long long new_file_length /* MAX_KEY_OFFSET in case of delete. */
)
{
struct super_block *sb = inode->i_sb;
@ -965,7 +962,7 @@ static char prepare_for_delete_or_cut(struct reiserfs_transaction_handle *th, st
/* Stat_data item. */
if (is_statdata_le_ih(p_le_ih)) {
RFALSE(n_new_file_length != max_reiserfs_offset(inode),
RFALSE(new_file_length != max_reiserfs_offset(inode),
"PAP-5210: mode must be M_DELETE");
*cut_size = -(IH_SIZE + ih_item_len(p_le_ih));
@ -975,13 +972,13 @@ static char prepare_for_delete_or_cut(struct reiserfs_transaction_handle *th, st
/* Directory item. */
if (is_direntry_le_ih(p_le_ih))
return prepare_for_direntry_item(path, p_le_ih, inode,
n_new_file_length,
new_file_length,
cut_size);
/* Direct item. */
if (is_direct_le_ih(p_le_ih))
return prepare_for_direct_item(path, p_le_ih, inode,
n_new_file_length, cut_size);
new_file_length, cut_size);
/* Case of an indirect item. */
{
@ -992,10 +989,10 @@ static char prepare_for_delete_or_cut(struct reiserfs_transaction_handle *th, st
int result = M_CUT;
int pos = 0;
if ( n_new_file_length == max_reiserfs_offset (inode) ) {
if ( new_file_length == max_reiserfs_offset (inode) ) {
/* prepare_for_delete_or_cut() is called by
* reiserfs_delete_item() */
n_new_file_length = 0;
new_file_length = 0;
delete = 1;
}
@ -1006,7 +1003,7 @@ static char prepare_for_delete_or_cut(struct reiserfs_transaction_handle *th, st
copy_item_head(&s_ih, PATH_PITEM_HEAD(path));
pos = I_UNFM_NUM(&s_ih);
while (le_ih_k_offset (&s_ih) + (pos - 1) * blk_size > n_new_file_length) {
while (le_ih_k_offset (&s_ih) + (pos - 1) * blk_size > new_file_length) {
__le32 *unfm;
__u32 block;
@ -1062,35 +1059,34 @@ static char prepare_for_delete_or_cut(struct reiserfs_transaction_handle *th, st
}
/* Calculate number of bytes which will be deleted or cut during balance */
static int calc_deleted_bytes_number(struct tree_balance *tb, char c_mode)
static int calc_deleted_bytes_number(struct tree_balance *tb, char mode)
{
int n_del_size;
int del_size;
struct item_head *p_le_ih = PATH_PITEM_HEAD(tb->tb_path);
if (is_statdata_le_ih(p_le_ih))
return 0;
n_del_size =
(c_mode ==
del_size =
(mode ==
M_DELETE) ? ih_item_len(p_le_ih) : -tb->insert_size[0];
if (is_direntry_le_ih(p_le_ih)) {
// return EMPTY_DIR_SIZE; /* We delete emty directoris only. */
// we can't use EMPTY_DIR_SIZE, as old format dirs have a different
// empty size. ick. FIXME, is this right?
//
return n_del_size;
/* return EMPTY_DIR_SIZE; We delete emty directoris only.
* we can't use EMPTY_DIR_SIZE, as old format dirs have a different
* empty size. ick. FIXME, is this right? */
return del_size;
}
if (is_indirect_le_ih(p_le_ih))
n_del_size = (n_del_size / UNFM_P_SIZE) *
del_size = (del_size / UNFM_P_SIZE) *
(PATH_PLAST_BUFFER(tb->tb_path)->b_size);
return n_del_size;
return del_size;
}
static void init_tb_struct(struct reiserfs_transaction_handle *th,
struct tree_balance *tb,
struct super_block *sb,
struct treepath *path, int n_size)
struct treepath *path, int size)
{
BUG_ON(!th->t_trans_id);
@ -1101,7 +1097,7 @@ static void init_tb_struct(struct reiserfs_transaction_handle *th,
tb->tb_path = path;
PATH_OFFSET_PBUFFER(path, ILLEGAL_PATH_ELEMENT_OFFSET) = NULL;
PATH_OFFSET_POSITION(path, ILLEGAL_PATH_ELEMENT_OFFSET) = 0;
tb->insert_size[0] = n_size;
tb->insert_size[0] = size;
}
void padd_item(char *item, int total_length, int length)
@ -1156,11 +1152,11 @@ int reiserfs_delete_item(struct reiserfs_transaction_handle *th,
struct item_head s_ih;
struct item_head *q_ih;
int quota_cut_bytes;
int n_ret_value, n_del_size, n_removed;
int ret_value, del_size, removed;
#ifdef CONFIG_REISERFS_CHECK
char c_mode;
int n_iter = 0;
char mode;
int iter = 0;
#endif
BUG_ON(!th->t_trans_id);
@ -1169,34 +1165,34 @@ int reiserfs_delete_item(struct reiserfs_transaction_handle *th,
0 /*size is unknown */ );
while (1) {
n_removed = 0;
removed = 0;
#ifdef CONFIG_REISERFS_CHECK
n_iter++;
c_mode =
iter++;
mode =
#endif
prepare_for_delete_or_cut(th, inode, path,
item_key, &n_removed,
&n_del_size,
item_key, &removed,
&del_size,
max_reiserfs_offset(inode));
RFALSE(c_mode != M_DELETE, "PAP-5320: mode must be M_DELETE");
RFALSE(mode != M_DELETE, "PAP-5320: mode must be M_DELETE");
copy_item_head(&s_ih, PATH_PITEM_HEAD(path));
s_del_balance.insert_size[0] = n_del_size;
s_del_balance.insert_size[0] = del_size;
n_ret_value = fix_nodes(M_DELETE, &s_del_balance, NULL, NULL);
if (n_ret_value != REPEAT_SEARCH)
ret_value = fix_nodes(M_DELETE, &s_del_balance, NULL, NULL);
if (ret_value != REPEAT_SEARCH)
break;
PROC_INFO_INC(sb, delete_item_restarted);
// file system changed, repeat search
n_ret_value =
ret_value =
search_for_position_by_key(sb, item_key, path);
if (n_ret_value == IO_ERROR)
if (ret_value == IO_ERROR)
break;
if (n_ret_value == FILE_NOT_FOUND) {
if (ret_value == FILE_NOT_FOUND) {
reiserfs_warning(sb, "vs-5340",
"no items of the file %K found",
item_key);
@ -1204,12 +1200,12 @@ int reiserfs_delete_item(struct reiserfs_transaction_handle *th,
}
} /* while (1) */
if (n_ret_value != CARRY_ON) {
if (ret_value != CARRY_ON) {
unfix_nodes(&s_del_balance);
return 0;
}
// reiserfs_delete_item returns item length when success
n_ret_value = calc_deleted_bytes_number(&s_del_balance, M_DELETE);
ret_value = calc_deleted_bytes_number(&s_del_balance, M_DELETE);
q_ih = get_ih(path);
quota_cut_bytes = ih_item_len(q_ih);
@ -1255,7 +1251,7 @@ int reiserfs_delete_item(struct reiserfs_transaction_handle *th,
off = ((le_ih_k_offset(&s_ih) - 1) & (PAGE_CACHE_SIZE - 1));
memcpy(data + off,
B_I_PITEM(PATH_PLAST_BUFFER(path), &s_ih),
n_ret_value);
ret_value);
kunmap_atomic(data, KM_USER0);
}
/* Perform balancing after all resources have been collected at once. */
@ -1269,7 +1265,7 @@ int reiserfs_delete_item(struct reiserfs_transaction_handle *th,
DQUOT_FREE_SPACE_NODIRTY(inode, quota_cut_bytes);
/* Return deleted body length */
return n_ret_value;
return ret_value;
}
/* Summary Of Mechanisms For Handling Collisions Between Processes:
@ -1432,13 +1428,13 @@ static int maybe_indirect_to_direct(struct reiserfs_transaction_handle *th,
struct page *page,
struct treepath *path,
const struct cpu_key *item_key,
loff_t n_new_file_size, char *mode)
loff_t new_file_size, char *mode)
{
struct super_block *sb = inode->i_sb;
int n_block_size = sb->s_blocksize;
int block_size = sb->s_blocksize;
int cut_bytes;
BUG_ON(!th->t_trans_id);
BUG_ON(n_new_file_size != inode->i_size);
BUG_ON(new_file_size != inode->i_size);
/* the page being sent in could be NULL if there was an i/o error
** reading in the last block. The user will hit problems trying to
@ -1450,15 +1446,15 @@ static int maybe_indirect_to_direct(struct reiserfs_transaction_handle *th,
/* leave tail in an unformatted node */
*mode = M_SKIP_BALANCING;
cut_bytes =
n_block_size - (n_new_file_size & (n_block_size - 1));
block_size - (new_file_size & (block_size - 1));
pathrelse(path);
return cut_bytes;
}
/* Perform the conversion to a direct_item. */
/* return indirect_to_direct(inode, path, item_key,
n_new_file_size, mode); */
new_file_size, mode); */
return indirect2direct(th, inode, page, path, item_key,
n_new_file_size, mode);
new_file_size, mode);
}
/* we did indirect_to_direct conversion. And we have inserted direct
@ -1512,7 +1508,7 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
struct treepath *path,
struct cpu_key *item_key,
struct inode *inode,
struct page *page, loff_t n_new_file_size)
struct page *page, loff_t new_file_size)
{
struct super_block *sb = inode->i_sb;
/* Every function which is going to call do_balance must first
@ -1521,10 +1517,10 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
After that we can make tree balancing. */
struct tree_balance s_cut_balance;
struct item_head *p_le_ih;
int n_cut_size = 0, /* Amount to be cut. */
n_ret_value = CARRY_ON, n_removed = 0, /* Number of the removed unformatted nodes. */
n_is_inode_locked = 0;
char c_mode; /* Mode of the balance. */
int cut_size = 0, /* Amount to be cut. */
ret_value = CARRY_ON, removed = 0, /* Number of the removed unformatted nodes. */
is_inode_locked = 0;
char mode; /* Mode of the balance. */
int retval2 = -1;
int quota_cut_bytes;
loff_t tail_pos = 0;
@ -1532,7 +1528,7 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
BUG_ON(!th->t_trans_id);
init_tb_struct(th, &s_cut_balance, inode->i_sb, path,
n_cut_size);
cut_size);
/* Repeat this loop until we either cut the item without needing
to balance, or we fix_nodes without schedule occurring */
@ -1542,30 +1538,30 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
free unformatted nodes which are pointed to by the cut
pointers. */
c_mode =
mode =
prepare_for_delete_or_cut(th, inode, path,
item_key, &n_removed,
&n_cut_size, n_new_file_size);
if (c_mode == M_CONVERT) {
item_key, &removed,
&cut_size, new_file_size);
if (mode == M_CONVERT) {
/* convert last unformatted node to direct item or leave
tail in the unformatted node */
RFALSE(n_ret_value != CARRY_ON,
RFALSE(ret_value != CARRY_ON,
"PAP-5570: can not convert twice");
n_ret_value =
ret_value =
maybe_indirect_to_direct(th, inode, page,
path, item_key,
n_new_file_size, &c_mode);
if (c_mode == M_SKIP_BALANCING)
new_file_size, &mode);
if (mode == M_SKIP_BALANCING)
/* tail has been left in the unformatted node */
return n_ret_value;
return ret_value;
n_is_inode_locked = 1;
is_inode_locked = 1;
/* removing of last unformatted node will change value we
have to return to truncate. Save it */
retval2 = n_ret_value;
/*retval2 = sb->s_blocksize - (n_new_file_size & (sb->s_blocksize - 1)); */
retval2 = ret_value;
/*retval2 = sb->s_blocksize - (new_file_size & (sb->s_blocksize - 1)); */
/* So, we have performed the first part of the conversion:
inserting the new direct item. Now we are removing the
@ -1573,10 +1569,10 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
it. */
set_cpu_key_k_type(item_key, TYPE_INDIRECT);
item_key->key_length = 4;
n_new_file_size -=
(n_new_file_size & (sb->s_blocksize - 1));
tail_pos = n_new_file_size;
set_cpu_key_k_offset(item_key, n_new_file_size + 1);
new_file_size -=
(new_file_size & (sb->s_blocksize - 1));
tail_pos = new_file_size;
set_cpu_key_k_offset(item_key, new_file_size + 1);
if (search_for_position_by_key
(sb, item_key,
path) == POSITION_NOT_FOUND) {
@ -1589,38 +1585,38 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
}
continue;
}
if (n_cut_size == 0) {
if (cut_size == 0) {
pathrelse(path);
return 0;
}
s_cut_balance.insert_size[0] = n_cut_size;
s_cut_balance.insert_size[0] = cut_size;
n_ret_value = fix_nodes(c_mode, &s_cut_balance, NULL, NULL);
if (n_ret_value != REPEAT_SEARCH)
ret_value = fix_nodes(mode, &s_cut_balance, NULL, NULL);
if (ret_value != REPEAT_SEARCH)
break;
PROC_INFO_INC(sb, cut_from_item_restarted);
n_ret_value =
ret_value =
search_for_position_by_key(sb, item_key, path);
if (n_ret_value == POSITION_FOUND)
if (ret_value == POSITION_FOUND)
continue;
reiserfs_warning(sb, "PAP-5610", "item %K not found",
item_key);
unfix_nodes(&s_cut_balance);
return (n_ret_value == IO_ERROR) ? -EIO : -ENOENT;
return (ret_value == IO_ERROR) ? -EIO : -ENOENT;
} /* while */
// check fix_nodes results (IO_ERROR or NO_DISK_SPACE)
if (n_ret_value != CARRY_ON) {
if (n_is_inode_locked) {
if (ret_value != CARRY_ON) {
if (is_inode_locked) {
// FIXME: this seems to be not needed: we are always able
// to cut item
indirect_to_direct_roll_back(th, inode, path);
}
if (n_ret_value == NO_DISK_SPACE)
if (ret_value == NO_DISK_SPACE)
reiserfs_warning(sb, "reiserfs-5092",
"NO_DISK_SPACE");
unfix_nodes(&s_cut_balance);
@ -1629,24 +1625,24 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
/* go ahead and perform balancing */
RFALSE(c_mode == M_PASTE || c_mode == M_INSERT, "invalid mode");
RFALSE(mode == M_PASTE || mode == M_INSERT, "invalid mode");
/* Calculate number of bytes that need to be cut from the item. */
quota_cut_bytes =
(c_mode ==
(mode ==
M_DELETE) ? ih_item_len(get_ih(path)) : -s_cut_balance.
insert_size[0];
if (retval2 == -1)
n_ret_value = calc_deleted_bytes_number(&s_cut_balance, c_mode);
ret_value = calc_deleted_bytes_number(&s_cut_balance, mode);
else
n_ret_value = retval2;
ret_value = retval2;
/* For direct items, we only change the quota when deleting the last
** item.
*/
p_le_ih = PATH_PITEM_HEAD(s_cut_balance.tb_path);
if (!S_ISLNK(inode->i_mode) && is_direct_le_ih(p_le_ih)) {
if (c_mode == M_DELETE &&
if (mode == M_DELETE &&
(le_ih_k_offset(p_le_ih) & (sb->s_blocksize - 1)) ==
1) {
// FIXME: this is to keep 3.5 happy
@ -1657,7 +1653,7 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
}
}
#ifdef CONFIG_REISERFS_CHECK
if (n_is_inode_locked) {
if (is_inode_locked) {
struct item_head *le_ih =
PATH_PITEM_HEAD(s_cut_balance.tb_path);
/* we are going to complete indirect2direct conversion. Make
@ -1667,13 +1663,13 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
reiserfs_panic(sb, "vs-5652",
"item must be indirect %h", le_ih);
if (c_mode == M_DELETE && ih_item_len(le_ih) != UNFM_P_SIZE)
if (mode == M_DELETE && ih_item_len(le_ih) != UNFM_P_SIZE)
reiserfs_panic(sb, "vs-5653", "completing "
"indirect2direct conversion indirect "
"item %h being deleted must be of "
"4 byte long", le_ih);
if (c_mode == M_CUT
if (mode == M_CUT
&& s_cut_balance.insert_size[0] != -UNFM_P_SIZE) {
reiserfs_panic(sb, "vs-5654", "can not complete "
"indirect2direct conversion of %h "
@ -1685,8 +1681,8 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
}
#endif
do_balance(&s_cut_balance, NULL, NULL, c_mode);
if (n_is_inode_locked) {
do_balance(&s_cut_balance, NULL, NULL, mode);
if (is_inode_locked) {
/* we've done an indirect->direct conversion. when the data block
** was freed, it was removed from the list of blocks that must
** be flushed before the transaction commits, make sure to
@ -1701,7 +1697,7 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
quota_cut_bytes, inode->i_uid, '?');
#endif
DQUOT_FREE_SPACE_NODIRTY(inode, quota_cut_bytes);
return n_ret_value;
return ret_value;
}
static void truncate_directory(struct reiserfs_transaction_handle *th,
@ -1733,9 +1729,9 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th,
INITIALIZE_PATH(s_search_path); /* Path to the current object item. */
struct item_head *p_le_ih; /* Pointer to an item header. */
struct cpu_key s_item_key; /* Key to search for a previous file item. */
loff_t n_file_size, /* Old file size. */
n_new_file_size; /* New file size. */
int n_deleted; /* Number of deleted or truncated bytes. */
loff_t file_size, /* Old file size. */
new_file_size; /* New file size. */
int deleted; /* Number of deleted or truncated bytes. */
int retval;
int err = 0;
@ -1752,7 +1748,7 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th,
}
/* Get new file size. */
n_new_file_size = inode->i_size;
new_file_size = inode->i_size;
// FIXME: note, that key type is unimportant here
make_cpu_key(&s_item_key, inode, max_reiserfs_offset(inode),
@ -1782,7 +1778,7 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th,
/* Get real file size (total length of all file items) */
p_le_ih = PATH_PITEM_HEAD(&s_search_path);
if (is_statdata_le_ih(p_le_ih))
n_file_size = 0;
file_size = 0;
else {
loff_t offset = le_ih_k_offset(p_le_ih);
int bytes =
@ -1791,42 +1787,42 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th,
/* this may mismatch with real file size: if last direct item
had no padding zeros and last unformatted node had no free
space, this file would have this file size */
n_file_size = offset + bytes - 1;
file_size = offset + bytes - 1;
}
/*
* are we doing a full truncate or delete, if so
* kick in the reada code
*/
if (n_new_file_size == 0)
if (new_file_size == 0)
s_search_path.reada = PATH_READA | PATH_READA_BACK;
if (n_file_size == 0 || n_file_size < n_new_file_size) {
if (file_size == 0 || file_size < new_file_size) {
goto update_and_out;
}
/* Update key to search for the last file item. */
set_cpu_key_k_offset(&s_item_key, n_file_size);
set_cpu_key_k_offset(&s_item_key, file_size);
do {
/* Cut or delete file item. */
n_deleted =
deleted =
reiserfs_cut_from_item(th, &s_search_path, &s_item_key,
inode, page, n_new_file_size);
if (n_deleted < 0) {
inode, page, new_file_size);
if (deleted < 0) {
reiserfs_warning(inode->i_sb, "vs-5665",
"reiserfs_cut_from_item failed");
reiserfs_check_path(&s_search_path);
return 0;
}
RFALSE(n_deleted > n_file_size,
RFALSE(deleted > file_size,
"PAP-5670: reiserfs_cut_from_item: too many bytes deleted: deleted %d, file_size %lu, item_key %K",
n_deleted, n_file_size, &s_item_key);
deleted, file_size, &s_item_key);
/* Change key to search the last file item. */
n_file_size -= n_deleted;
file_size -= deleted;
set_cpu_key_k_offset(&s_item_key, n_file_size);
set_cpu_key_k_offset(&s_item_key, file_size);
/* While there are bytes to truncate and previous file item is presented in the tree. */
@ -1857,13 +1853,13 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th,
goto out;
reiserfs_update_inode_transaction(inode);
}
} while (n_file_size > ROUND_UP(n_new_file_size) &&
} while (file_size > ROUND_UP(new_file_size) &&
search_for_position_by_key(inode->i_sb, &s_item_key,
&s_search_path) == POSITION_FOUND);
RFALSE(n_file_size > ROUND_UP(n_new_file_size),
RFALSE(file_size > ROUND_UP(new_file_size),
"PAP-5680: truncate did not finish: new_file_size %Ld, current %Ld, oid %d",
n_new_file_size, n_file_size, s_item_key.on_disk_key.k_objectid);
new_file_size, file_size, s_item_key.on_disk_key.k_objectid);
update_and_out:
if (update_timestamps) {
@ -1918,7 +1914,7 @@ int reiserfs_paste_into_item(struct reiserfs_transaction_handle *th, struct tree
const struct cpu_key *key, /* Key to search for the needed item. */
struct inode *inode, /* Inode item belongs to */
const char *body, /* Pointer to the bytes to paste. */
int n_pasted_size)
int pasted_size)
{ /* Size of pasted bytes. */
struct tree_balance s_paste_balance;
int retval;
@ -1931,16 +1927,16 @@ int reiserfs_paste_into_item(struct reiserfs_transaction_handle *th, struct tree
#ifdef REISERQUOTA_DEBUG
reiserfs_debug(inode->i_sb, REISERFS_DEBUG_CODE,
"reiserquota paste_into_item(): allocating %u id=%u type=%c",
n_pasted_size, inode->i_uid,
pasted_size, inode->i_uid,
key2type(&(key->on_disk_key)));
#endif
if (DQUOT_ALLOC_SPACE_NODIRTY(inode, n_pasted_size)) {
if (DQUOT_ALLOC_SPACE_NODIRTY(inode, pasted_size)) {
pathrelse(search_path);
return -EDQUOT;
}
init_tb_struct(th, &s_paste_balance, th->t_super, search_path,
n_pasted_size);
pasted_size);
#ifdef DISPLACE_NEW_PACKING_LOCALITIES
s_paste_balance.key = key->on_disk_key;
#endif
@ -1988,10 +1984,10 @@ int reiserfs_paste_into_item(struct reiserfs_transaction_handle *th, struct tree
#ifdef REISERQUOTA_DEBUG
reiserfs_debug(inode->i_sb, REISERFS_DEBUG_CODE,
"reiserquota paste_into_item(): freeing %u id=%u type=%c",
n_pasted_size, inode->i_uid,
pasted_size, inode->i_uid,
key2type(&(key->on_disk_key)));
#endif
DQUOT_FREE_SPACE_NODIRTY(inode, n_pasted_size);
DQUOT_FREE_SPACE_NODIRTY(inode, pasted_size);
return retval;
}

View file

@ -26,7 +26,7 @@ int direct2indirect(struct reiserfs_transaction_handle *th, struct inode *inode,
converted item. */
struct item_head ind_ih; /* new indirect item to be inserted or
key of unfm pointer to be pasted */
int n_blk_size, n_retval; /* returned value for reiserfs_insert_item and clones */
int blk_size, retval; /* returned value for reiserfs_insert_item and clones */
unp_t unfm_ptr; /* Handle on an unformatted node
that will be inserted in the
tree. */
@ -35,7 +35,7 @@ int direct2indirect(struct reiserfs_transaction_handle *th, struct inode *inode,
REISERFS_SB(sb)->s_direct2indirect++;
n_blk_size = sb->s_blocksize;
blk_size = sb->s_blocksize;
/* and key to search for append or insert pointer to the new
unformatted node. */
@ -64,17 +64,17 @@ int direct2indirect(struct reiserfs_transaction_handle *th, struct inode *inode,
set_ih_free_space(&ind_ih, 0); /* delete at nearest future */
put_ih_item_len(&ind_ih, UNFM_P_SIZE);
PATH_LAST_POSITION(path)++;
n_retval =
retval =
reiserfs_insert_item(th, path, &end_key, &ind_ih, inode,
(char *)&unfm_ptr);
} else {
/* Paste into last indirect item of an object. */
n_retval = reiserfs_paste_into_item(th, path, &end_key, inode,
retval = reiserfs_paste_into_item(th, path, &end_key, inode,
(char *)&unfm_ptr,
UNFM_P_SIZE);
}
if (n_retval) {
return n_retval;
if (retval) {
return retval;
}
// note: from here there are two keys which have matching first
// three key components. They only differ by the fourth one.
@ -98,7 +98,7 @@ int direct2indirect(struct reiserfs_transaction_handle *th, struct inode *inode,
RFALSE(!is_direct_le_ih(p_le_ih),
"vs-14055: direct item expected(%K), found %h",
&end_key, p_le_ih);
tail_size = (le_ih_k_offset(p_le_ih) & (n_blk_size - 1))
tail_size = (le_ih_k_offset(p_le_ih) & (blk_size - 1))
+ ih_item_len(p_le_ih) - 1;
/* we only send the unbh pointer if the buffer is not up to date.
@ -113,11 +113,11 @@ int direct2indirect(struct reiserfs_transaction_handle *th, struct inode *inode,
} else {
up_to_date_bh = unbh;
}
n_retval = reiserfs_delete_item(th, path, &end_key, inode,
retval = reiserfs_delete_item(th, path, &end_key, inode,
up_to_date_bh);
total_tail += n_retval;
if (tail_size == n_retval)
total_tail += retval;
if (tail_size == retval)
// done: file does not have direct items anymore
break;
@ -129,7 +129,7 @@ int direct2indirect(struct reiserfs_transaction_handle *th, struct inode *inode,
unsigned pgoff =
(tail_offset + total_tail - 1) & (PAGE_CACHE_SIZE - 1);
char *kaddr = kmap_atomic(up_to_date_bh->b_page, KM_USER0);
memset(kaddr + pgoff, 0, n_blk_size - total_tail);
memset(kaddr + pgoff, 0, blk_size - total_tail);
kunmap_atomic(kaddr, KM_USER0);
}
@ -181,7 +181,7 @@ int indirect2direct(struct reiserfs_transaction_handle *th,
{
struct super_block *sb = inode->i_sb;
struct item_head s_ih;
unsigned long n_block_size = sb->s_blocksize;
unsigned long block_size = sb->s_blocksize;
char *tail;
int tail_len, round_tail_len;
loff_t pos, pos1; /* position of first byte of the tail */
@ -196,7 +196,7 @@ int indirect2direct(struct reiserfs_transaction_handle *th,
/* store item head path points to. */
copy_item_head(&s_ih, PATH_PITEM_HEAD(path));
tail_len = (n_new_file_size & (n_block_size - 1));
tail_len = (n_new_file_size & (block_size - 1));
if (get_inode_sd_version(inode) == STAT_DATA_V2)
round_tail_len = ROUND_UP(tail_len);
else
@ -257,7 +257,7 @@ int indirect2direct(struct reiserfs_transaction_handle *th,
unformatted node. For now i_size is considered as guard for
going out of file size */
kunmap(page);
return n_block_size - round_tail_len;
return block_size - round_tail_len;
}
kunmap(page);
@ -276,5 +276,5 @@ int indirect2direct(struct reiserfs_transaction_handle *th,
/* mark_file_with_tail (inode, pos1 + 1); */
REISERFS_I(inode)->i_first_direct_byte = pos1 + 1;
return n_block_size - round_tail_len;
return block_size - round_tail_len;
}