/* we've ended up with a handle from a different filesystem. ** save it and restore on journal_end.  This should never ** really happen... */ reiserfs_warning(p_s_sb, "clm-2100: nesting info a different FS") ; th->t_handle_save = current->journal_info ; current->journal_info = th; 
current->journal_info = th; 
int journal_begin(struct reiserfs_transaction_handle *th, struct super_block  * p_s_sb, unsigned long nblocks) {    struct reiserfs_transaction_handle *cur_th = current->journal_info ;    int ret ;    th->t_handle_save = NULL ;    if (cur_th) {	/* we are nesting into the current transaction */	if (cur_th->t_super == p_s_sb) {              BUG_ON (!cur_th->t_refcount);	      cur_th->t_refcount++ ;	      memcpy(th, cur_th, sizeof(*th));	      if (th->t_refcount <= 1)		      reiserfs_warning (p_s_sb, "BAD: refcount <= 1, but journal_info != 0");	      return 0;	} else {	    /* we've ended up with a handle from a different filesystem.	    ** save it and restore on journal_end.  This should never	    ** really happen...	    */	    reiserfs_warning(p_s_sb, "clm-2100: nesting info a different FS") ;	    th->t_handle_save = current->journal_info ;	    current->journal_info = th;	}    } else {	current->journal_info = th;    }    ret = do_journal_begin_r(th, p_s_sb, nblocks, JBEGIN_REG) ;    if (current->journal_info != th)        BUG() ;    /* I guess this boils down to being the reciprocal of clm-2100 above.     * If do_journal_begin_r fails, we need to put it back, since journal_end     * won't be called to do it. */    if (ret)        current->journal_info = th->t_handle_save;    else        BUG_ON (!th->t_refcount);    return ret ;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/bd4c625c061c2a38568d0add3478f59172455159/journal.c/buggy/fs/reiserfs/journal.c