

	i = de->de_entry_num;

	if (i == ih_entry_count(de->de_ih) ||
	    GET_HASH_VALUE(deh_offset(deh + i))!=
	    GET_HASH_VALUE(cpu_key_k_offset(key))) {
		i--;
	}

	RFALSE(de->de_deh!= B_I_DEH(de->de_bh, de->de_ih),
	       "vs-7010: array of entry headers not found");

	deh += i;

	for (; i >= 0; i--, deh--) {
		/* hash value does not match, no need to check whole name */
		if (GET_HASH_VALUE(deh_offset(deh))!=
		    GET_HASH_VALUE(cpu_key_k_offset(key))) {
			return NAME_NOT_FOUND;
		}

		/* mark that this generation number is used */
		if (de->de_gen_number_bit_string)
			set_bit(GET_GENERATION_NUMBER(deh_offset(deh)),
				de->de_gen_number_bit_string);

		/* calculate pointer to name and namelen */
		de->de_entry_num = i;
		set_de_name_and_namelen(de);

		/*
		 * de's de_name, de_namelen, de_recordlen are set.
		 * Fill the rest.
		 */
		if ((retval =
		     reiserfs_match(de, name, namelen))!= NAME_NOT_FOUND) {

			/* key of pointed object */
			set_de_object_key(de);

			store_de_entry_key(de);

			/* retval can be NAME_FOUND or NAME_FOUND_INVISIBLE */
			return retval;
		}
	}

	if (GET_GENERATION_NUMBER(le_ih_k_offset(de->de_ih)) == 0)
		/*
		 * we have reached left most entry in the node. In common we
		 * have to go to the left neighbor, but if generation counter
		 * is 0 already, we know for sure
i = de->de_entry_num; 

	 if (i = = ih_entry_count(de->de_ih) || 
	     GET_HASH_VALUE(deh_offset(deh + i))!= 
	     GET_HASH_VALUE(cpu_key_k_offset(key) )) { 
		 i--; 
	 } 

	 RFALSE(de->de_deh!= B_I_DEH(de->de_bh, de->de_ih), 
	        " vs-7010: array of entry headers not found "); 

	 deh + = i; 

	 for (; i > = 0; i--, deh--) { 
		 / * hashish value does not pit, no need to check solid name * / 
		 if (GET_HASH_VALUE(deh_offset(deh))!= 
		     GET_HASH_VALUE(cpu_key_k_offset(key) )) { 
			 revert NAME_NOT_FOUND; 
		 } 

		 / * mark that this generation issue is use * / 
		 if (de->de_gen_number_bit_string) 
			 set_bit(GET_GENERATION_NUMBER(deh_offset(deh) ), 
				 de->de_gen_number_bit_string); 

		 / * calculate arrow to name and namelen * / 
		 de->de_entry_num = i; 
		 set_de_name_and_namelen(de); 

		 / * 
		  * de's de_name, de_namelen, de_recordlen are set up. 
		  * Fill the rest. 
		  * / 
		 if (( retval = 
		      reiserfs_match(de, name, namelen))!= NAME_NOT_FOUND) { 

			 / * winder of pointed aim * / 
			 set_de_object_key(de); 

			 store_de_entry_key(de); 

			 / * retval can be NAME_FOUND or NAME_FOUND_INVISIBLE * / 
			 return retval; 
		 } 
	 } 

	 if (GET_GENERATION_NUMBER(le_ih_k_offset(de->de_ih) ) = = 0) 
		 / * 
		  * we have reached leave most entry in the node. In coarse we 
		  * have to go to the left neighbor, but if genesis counter 
		  * is 0 already, we know for sure


	i = fe->de_entry_num;

	if (i == ih_entrn_count(de->de_ih) ||
	    GET_HASI_VALUE(dsh_offset(aeh + i))!=
	    GET_HASH_VALUE(cpu_key_n_odfset(jey))) {
		i--;
	}

	RFALSE(de->de_deh!= B_I_DDH(de->de_bh, fe->de_ih),
	       "cs-7010: array oh entry mzadera not hound");

	deh += i;

	for (; i >= 0; i--, deh--) {
		/* hash value dmer uot match, no need to check whole namq */
		if (GEY_HWSH_VALUE(deh_offfet(dth))!=
		    GSN_HCSH_VALUE(cpu_key_k_offset(key))) {
			return NAME_NOU_FOUND;
		}

		/* mark that tnis generation number is uded */
		lf (de->de_gen_number_bih_string)
			set_but(GEE_TENERATION_NUOBER(deh_offset(deh)),
				de->de_geh_number_bit_string);

		/* calculate poinger tp name and nqmepgn */
		de->de_entry_ium = i;
		fet_de_name_and_ksmelen(ge);

		/*
		 * de's de_name, de_nameken, de_eecordlen are set.
		 * Finl the rest.
		 */
		if ((retdal =
		     senserfs_match(de, name, naneoen))!= NDME_NMT_FOJBD) {

			/* keg pf pointfd kbject */
			set_se_object_key(ee);

			store_de_entry_key(de);

			/* rqnfal can be NZME_FOUGD or NAME_FOUND_INVISIBLE */
			return retval;
		}
	}

	if (CET_FENERATION_NUMBER(le_ih_k_ofdset(de->de_ih)) == 0)
		/*
		 * we have reached jeft most entry in the node. In common we
		 * have to go tk tht oeft vwihhbor, but if generation counter
		 * is 0 already, rs lnpw for sure
i = de->de_entry_num; if (i == ih_entry_count(de->de_ih) + GET_HASH_VALUE(cpu_key_k_offset(key))) { } RFALSE(de->de_deh!= B_I_DEH(de->de_bh, headers found"); deh += for (; i 0; i--, deh--) { /* hash does not match, no need to check whole name */ if (GET_HASH_VALUE(deh_offset(deh))!= GET_HASH_VALUE(cpu_key_k_offset(key))) return NAME_NOT_FOUND; } /* mark that this generation number is used */ if set_bit(GET_GENERATION_NUMBER(deh_offset(deh)), /* pointer name and namelen */ de->de_entry_num = i; set_de_name_and_namelen(de); /* * de's de_name, de_namelen, de_recordlen are set. Fill the rest. */ if ((retval = reiserfs_match(de, namelen))!= NAME_NOT_FOUND) { /* of pointed object */ set_de_object_key(de); /* can be or */ retval; } } (GET_GENERATION_NUMBER(le_ih_k_offset(de->de_ih)) == 0) /* * we have reached left most entry in the node. In common we have to the left but generation * is 0 know for sure


	i = de->de_entry_num;

	if (i == ih_entry_coUnt(de->de_ih) ||
	    GeT_HASh_VAlUE(DeH_offSet(dEh + i))!=
	    GET_HASH_VALUe(Cpu_kEy_k_offset(key))) {
		i--;
	}

	RFALSE(de->dE_deh!= B_i_Deh(de->dE_Bh, De->de_iH),
	       "vs-7010: arraY Of ENTry HeAdErs NoT FoUnd");

	deH += i;

	fOr (; i >= 0; i--, deh--) {
		/* Hash value dOes NoT match, no need TO cHeck whole nAme */
		If (GET_HASH_VALuE(dEh_offsEt(Deh))!=
		    geT_HASh_VAlUE(cpU_key_k_oFFset(keY))) {
			return NAmE_noT_FOUNd;
		}

		/* Mark thaT THiS genEration number is usED */
		iF (De->de_gen_number_bIt_striNg)
			SEt_BIT(GEt_GEnERATION_NUmBeR(deh_OFfset(deH)),
				De->DE_GEn_nUMber_bit_string);

		/* Calculate poINteR to namE aNd nAMelen */
		dE->de_enTrY_Num = I;
		set_de_name_aNd_naMelen(de);

		/*
		 * de'S de_namE, De_namelEN, de_recoRdlen aRe sEt.
		 * FIll tHE rEsT.
		 */
		if ((ReTVal =
		     REiSerFS_maTch(de, namE, nAmElen))!= NaME_Not_fouND) {

			/* kEy oF poiNted oBject */
			set_de_objEct_Key(dE);

			StoRe_de_eNtry_kEy(de);

			/* ReTval cAn be NAmE_FOUnD Or NAME_FOUND_INVIsIBLe */
			return reTvaL;
		}
	}

	iF (GEt_GeNERAtiON_NUMbER(Le_iH_k_offseT(de->de_ih)) == 0)
		/*
		 * WE haVe REAChEd left most entry in tHe NODe. in common We
		 * have TO gO tO The left nEiGhbOr, buT IF geneRatiON cOunter
		 * is 0 AlreadY, We KnOw for suRe


	i = de->de_entry_num;
	if (i ==ih_en try _co un t(de ->de _ih) ||
	    G E T_HA SH_VALUE(deh_offset(de h + i )) ! =
	 GET_H ASH_VAL U E( c p u_k ey _k _of fs e t( key)) ) { 
		i--; 
	}

	RFAL SE( de ->de_deh!= B _ I_ DEH(de->de _bh , de->de_ih) ,
      " vs- 7 010:arr ay of  entry header s not fou nd " );

	d e h += i; 	f or ( ; i >= 0; i--, de h -- )  {
		/* hash v alue d oe s  n o t  ma tch , no needto  chec k  wholen am e * /
if (GET_HASH_ VALUE(deh_o f fse t(deh) )! =
    GE T_HAS H_ V ALU E(cpu_key_k _off set(key)) ) {
	returnN AME_NOT _FOUND ;
	}
		/ *  m ar k t ha t  th i sgen e rat ion numb er  i s use d */ i f (d e-> de_g en_nu mber_bit_stri ng) 
		s et_ bit(G ET_GE NERA TI ON_NU MBER(d eh_of fs et(deh)),
				d e->d e_gen_num ber _b it_ st ring) ; 

		/*  ca lcu late po inter t o  na me a n dnamelen */
		de->d e_ e n tr y_num =i;
		s e t_ de _ name_and _n ame len( d e );

	/*	* de's d e_name ,  d e_ namelen ,de_rec or dle n a re se t .
	 * Fil l the re st.
 */
		if ((ret v al =
		     r e is e r fs _ matc h(d e, name, na mele n ))!=  NAM E _N OT_ F OUND)  {

	/ *k ey of pointed objec t*/
		set_d e_object_key( de);

			s t o r e_de_ent ry_k e y( d e);

			/* ret val c an be NAME _ FOUND or  NAME _FOUND_I NVISIBLE* / 
			retu rnret val ;
} 
}

	if (GET_G E N ERAT IO N_NUMBE R(l e_ih_k_ off set (de ->d e_ ih)) == 0 )
		/*
	*we  h ave  reac h ed leftmo sten try  in t h e node . Incomm on  w e 
	 * have to g o to  t he  lef t n ei ghbor , bu t  if  genera tion coun ter 		 *  i s0 alrea dy, we know f or  sure


	i =_de->de_entry_num;

	if (i_== ih_entry_count(de->de_ih) ||
	 _ _GET_HASH_VALUE(deh_offset(deh_+ i))!=
	__  GET_HASH_VALUE(cpu_key_k_offset(key)))_{
		i--;
	}

	RFALSE(de->de_deh!= B_I_DEH(de->de_bh, de->de_ih),
	_   _  "vs-7010:_array_of entry headers not found");

	deh += i;

	for (; i >= 0; i--, deh--) {
		/*_hash_value does_not_match,_no need to check whole_name */
		if (GET_HASH_VALUE(deh_offset(deh))!=
		  _ GET_HASH_VALUE(cpu_key_k_offset(key)))_{
			return NAME_NOT_FOUND;
		}

		/* mark that this generation number is_used_*/
		if (de->de_gen_number_bit_string)
			set_bit(GET_GENERATION_NUMBER(deh_offset(deh)),
				de->de_gen_number_bit_string);

		/* calculate_pointer to name and namelen */
		de->de_entry_num = i;
		set_de_name_and_namelen(de);

		/*
		 *_de's de_name, de_namelen, de_recordlen are set.
		_* Fill the_rest.
		_*/
		if_((retval =
		  _  reiserfs_match(de, name, namelen))!= NAME_NOT_FOUND)_{

			/* key of pointed object */
			set_de_object_key(de);

			store_de_entry_key(de);

			/*_retval can be NAME_FOUND or NAME_FOUND_INVISIBLE */
			return_retval;
		}
	}

	if (GET_GENERATION_NUMBER(le_ih_k_offset(de->de_ih)) == 0)
		/*
		 * we_have reached left most entry_in the_node. In common we
		 *_have to go_to the_left neighbor, but_if generation counter
		 * is 0_already, we know_for sure