~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/innobase/include/mtr0log.ic

  • Committer: Brian Aker
  • Date: 2008-11-04 15:39:09 UTC
  • mfrom: (575.1.2 devel)
  • Revision ID: brian@tangent.org-20081104153909-c72hn65udxs1ccal
Merge of Monty's work

Show diffs side-by-side

added added

removed removed

Lines of Context:
85
85
#if MLOG_8BYTES != 8
86
86
# error "MLOG_8BYTES != 8"
87
87
#endif
88
 
        ptr = dyn_array_push(mlog, type);
 
88
        ptr = (byte*) dyn_array_push(mlog, type);
89
89
 
90
90
        if (type == MLOG_4BYTES) {
91
91
                mach_write_to_4(ptr, val);
153
153
byte*
154
154
mlog_write_initial_log_record_fast(
155
155
/*===============================*/
156
 
                        /* out: new value of log_ptr */
157
 
        byte*   ptr,    /* in: pointer to (inside) a buffer frame holding the
158
 
                        file page where modification is made */
159
 
        byte    type,   /* in: log item type: MLOG_1BYTE, ... */
160
 
        byte*   log_ptr,/* in: pointer to mtr log which has been opened */
161
 
        mtr_t*  mtr)    /* in: mtr */
 
156
                                /* out: new value of log_ptr */
 
157
        const byte*     ptr,    /* in: pointer to (inside) a buffer
 
158
                                frame holding the file page where
 
159
                                modification is made */
 
160
        byte            type,   /* in: log item type: MLOG_1BYTE, ... */
 
161
        byte*           log_ptr,/* in: pointer to mtr log which has
 
162
                                been opened */
 
163
        mtr_t*          mtr)    /* in: mtr */
162
164
{
 
165
#ifdef UNIV_DEBUG
163
166
        buf_block_t*    block;
 
167
#endif
 
168
        const byte*     page;
164
169
        ulint           space;
165
170
        ulint           offset;
166
171
 
167
 
        ut_ad(mtr_memo_contains(mtr, buf_block_align(ptr),
168
 
                                MTR_MEMO_PAGE_X_FIX));
 
172
        ut_ad(mtr_memo_contains_page(mtr, ptr, MTR_MEMO_PAGE_X_FIX));
169
173
        ut_ad(type <= MLOG_BIGGEST_TYPE);
170
174
        ut_ad(ptr && log_ptr);
171
175
 
172
 
        block = buf_block_align(ptr);
173
 
 
174
 
        space = buf_block_get_space(block);
175
 
        offset = buf_block_get_page_no(block);
 
176
        page = (const byte*) ut_align_down(ptr, UNIV_PAGE_SIZE);
 
177
        space = mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID);
 
178
        offset = mach_read_from_4(page + FIL_PAGE_OFFSET);
176
179
 
177
180
        mach_write_to_1(log_ptr, type);
178
181
        log_ptr++;
182
185
        mtr->n_log_recs++;
183
186
 
184
187
#ifdef UNIV_LOG_DEBUG
185
 
        /*      fprintf(stderr,
186
 
        "Adding to mtr log record type %lu space %lu page no %lu\n",
187
 
        type, space, offset); */
 
188
        fprintf(stderr,
 
189
                "Adding to mtr log record type %lu space %lu page no %lu\n",
 
190
                (ulong) type, space, offset);
188
191
#endif
189
192
 
190
193
#ifdef UNIV_DEBUG
 
194
        buf_pool_mutex_enter();
191
195
        /* We now assume that all x-latched pages have been modified! */
 
196
        block = (buf_block_t*) buf_block_align(ptr);
 
197
        buf_pool_mutex_exit();
192
198
 
193
199
        if (!mtr_memo_contains(mtr, block, MTR_MEMO_MODIFY)) {
194
200