From mboxrd@z Thu Jan 1 00:00:00 1970 From: jeffm@suse.com Subject: [patch 37/40] reiserfs: clean up bl_when_delete Date: Mon, 11 Jun 2007 15:03:46 -0400 Message-ID: <20070611190633.507538231@suse.com> References: <20070611190309.532091171@suse.com> Return-path: Content-Disposition: inline; filename=reiserfs-split-balance_leaf.diff Sender: reiserfs-devel-owner@vger.kernel.org List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: ReiserFS Mailing List Signed-off-by: Jeff Mahoney tb_sb, "PAP-12040", + "unexpected mode: %s(%d)", + tb_mode_names(flag), flag); + } + RFALSE(tb->FR[0] && B_LEVEL(tb->FR[0]) != DISK_LEAF_NODE_LEVEL + 1, "vs- 12000: level: wrong FR %z", tb->FR[0]); RFALSE(tb->blknum[0] > 1, @@ -127,9 +134,7 @@ static int balance_leaf_when_delete(stru /* Delete or truncate the item */ - switch (flag) { - case M_DELETE: /* delete item in S[0] */ - + if (flag == M_DELETE) { RFALSE(ih_item_len(ih) + IH_SIZE != -tb->insert_size[0], "vs-12013: mode Delete, insert size %d, ih to be deleted %h", -tb->insert_size[0], ih); @@ -151,44 +156,34 @@ static int balance_leaf_when_delete(stru RFALSE(!item_pos && !tb->CFL[0], "PAP-12020: tb->CFL[0]==%p, tb->L[0]==%p", tb->CFL[0], tb->L[0]); + } else { /* M_CUT */ + if (is_direntry_le_ih(ih)) { - break; - - case M_CUT:{ /* cut item in S[0] */ - if (is_direntry_le_ih(ih)) { - - /* UFS unlink semantics are such that you can only delete one directory entry at a time. */ - /* when we cut a directory tb->insert_size[0] means number of entries to be cut (always 1) */ - tb->insert_size[0] = -1; - leaf_cut_from_buffer(&bi, item_pos, pos_in_item, - -tb->insert_size[0]); - - RFALSE(!item_pos && !pos_in_item && !tb->CFL[0], - "PAP-12030: can not change delimiting key. CFL[0]=%p", - tb->CFL[0]); - - if (!item_pos && !pos_in_item && tb->CFL[0]) { - replace_key(tb, tb->CFL[0], tb->lkey[0], - tbS0, 0); - } - } else { - leaf_cut_from_buffer(&bi, item_pos, pos_in_item, - -tb->insert_size[0]); - - RFALSE(!ih_item_len(ih), - "PAP-12035: cut must leave non-zero dynamic length of item"); + /* UFS unlink semantics are such that + * you can only delete one directory entry + * at a time. */ + /* when we cut a directory tb->insert_size[0] + * means number of entries to be cut + * (always 1) */ + tb->insert_size[0] = -1; + leaf_cut_from_buffer(&bi, item_pos, pos_in_item, + -tb->insert_size[0]); + + RFALSE(!item_pos && !pos_in_item && !tb->CFL[0], + "PAP-12030: can not change delimiting key. CFL[0]=%p", + tb->CFL[0]); + + if (!item_pos && !pos_in_item && tb->CFL[0]) { + replace_key(tb, tb->CFL[0], tb->lkey[0], + tbS0, 0); } - break; - } + } else { + leaf_cut_from_buffer(&bi, item_pos, pos_in_item, + -tb->insert_size[0]); - default: - print_cur_tb("12040"); - reiserfs_panic(tb->tb_sb, "PAP-12040", - "unexpected mode: %s(%d)", - (flag == - M_PASTE) ? "PASTE" : ((flag == - M_INSERT) ? "INSERT" : - "UNKNOWN"), flag); + RFALSE(!ih_item_len(ih), "PAP-12035: cut must " + "leave non-zero dynamic length of item"); + } } /* the rule is that no shifting occurs unless by shifting a node can be freed */ -- Jeff Mahoney SUSE Labs