xref: /linux/fs/jbd2/commit.c (revision e9fb13bfec7e017130ddc5c1b5466340470f4900)
1 /*
2  * linux/fs/jbd2/commit.c
3  *
4  * Written by Stephen C. Tweedie <sct@redhat.com>, 1998
5  *
6  * Copyright 1998 Red Hat corp --- All Rights Reserved
7  *
8  * This file is part of the Linux kernel and is made available under
9  * the terms of the GNU General Public License, version 2, or at your
10  * option, any later version, incorporated herein by reference.
11  *
12  * Journal commit routines for the generic filesystem journaling code;
13  * part of the ext2fs journaling system.
14  */
15 
16 #include <linux/time.h>
17 #include <linux/fs.h>
18 #include <linux/jbd2.h>
19 #include <linux/errno.h>
20 #include <linux/slab.h>
21 #include <linux/mm.h>
22 #include <linux/pagemap.h>
23 #include <linux/jiffies.h>
24 #include <linux/crc32.h>
25 #include <linux/writeback.h>
26 #include <linux/backing-dev.h>
27 #include <linux/bio.h>
28 #include <linux/blkdev.h>
29 #include <linux/bitops.h>
30 #include <trace/events/jbd2.h>
31 #include <asm/system.h>
32 
33 /*
34  * Default IO end handler for temporary BJ_IO buffer_heads.
35  */
36 static void journal_end_buffer_io_sync(struct buffer_head *bh, int uptodate)
37 {
38 	BUFFER_TRACE(bh, "");
39 	if (uptodate)
40 		set_buffer_uptodate(bh);
41 	else
42 		clear_buffer_uptodate(bh);
43 	unlock_buffer(bh);
44 }
45 
46 /*
47  * When an ext4 file is truncated, it is possible that some pages are not
48  * successfully freed, because they are attached to a committing transaction.
49  * After the transaction commits, these pages are left on the LRU, with no
50  * ->mapping, and with attached buffers.  These pages are trivially reclaimable
51  * by the VM, but their apparent absence upsets the VM accounting, and it makes
52  * the numbers in /proc/meminfo look odd.
53  *
54  * So here, we have a buffer which has just come off the forget list.  Look to
55  * see if we can strip all buffers from the backing page.
56  *
57  * Called under lock_journal(), and possibly under journal_datalist_lock.  The
58  * caller provided us with a ref against the buffer, and we drop that here.
59  */
60 static void release_buffer_page(struct buffer_head *bh)
61 {
62 	struct page *page;
63 
64 	if (buffer_dirty(bh))
65 		goto nope;
66 	if (atomic_read(&bh->b_count) != 1)
67 		goto nope;
68 	page = bh->b_page;
69 	if (!page)
70 		goto nope;
71 	if (page->mapping)
72 		goto nope;
73 
74 	/* OK, it's a truncated page */
75 	if (!trylock_page(page))
76 		goto nope;
77 
78 	page_cache_get(page);
79 	__brelse(bh);
80 	try_to_free_buffers(page);
81 	unlock_page(page);
82 	page_cache_release(page);
83 	return;
84 
85 nope:
86 	__brelse(bh);
87 }
88 
89 /*
90  * Done it all: now submit the commit record.  We should have
91  * cleaned up our previous buffers by now, so if we are in abort
92  * mode we can now just skip the rest of the journal write
93  * entirely.
94  *
95  * Returns 1 if the journal needs to be aborted or 0 on success
96  */
97 static int journal_submit_commit_record(journal_t *journal,
98 					transaction_t *commit_transaction,
99 					struct buffer_head **cbh,
100 					__u32 crc32_sum)
101 {
102 	struct journal_head *descriptor;
103 	struct commit_header *tmp;
104 	struct buffer_head *bh;
105 	int ret;
106 	struct timespec now = current_kernel_time();
107 
108 	*cbh = NULL;
109 
110 	if (is_journal_aborted(journal))
111 		return 0;
112 
113 	descriptor = jbd2_journal_get_descriptor_buffer(journal);
114 	if (!descriptor)
115 		return 1;
116 
117 	bh = jh2bh(descriptor);
118 
119 	tmp = (struct commit_header *)bh->b_data;
120 	tmp->h_magic = cpu_to_be32(JBD2_MAGIC_NUMBER);
121 	tmp->h_blocktype = cpu_to_be32(JBD2_COMMIT_BLOCK);
122 	tmp->h_sequence = cpu_to_be32(commit_transaction->t_tid);
123 	tmp->h_commit_sec = cpu_to_be64(now.tv_sec);
124 	tmp->h_commit_nsec = cpu_to_be32(now.tv_nsec);
125 
126 	if (JBD2_HAS_COMPAT_FEATURE(journal,
127 				    JBD2_FEATURE_COMPAT_CHECKSUM)) {
128 		tmp->h_chksum_type 	= JBD2_CRC32_CHKSUM;
129 		tmp->h_chksum_size 	= JBD2_CRC32_CHKSUM_SIZE;
130 		tmp->h_chksum[0] 	= cpu_to_be32(crc32_sum);
131 	}
132 
133 	JBUFFER_TRACE(descriptor, "submit commit block");
134 	lock_buffer(bh);
135 	clear_buffer_dirty(bh);
136 	set_buffer_uptodate(bh);
137 	bh->b_end_io = journal_end_buffer_io_sync;
138 
139 	if (journal->j_flags & JBD2_BARRIER &&
140 	    !JBD2_HAS_INCOMPAT_FEATURE(journal,
141 				       JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT))
142 		ret = submit_bh(WRITE_SYNC | WRITE_FLUSH_FUA, bh);
143 	else
144 		ret = submit_bh(WRITE_SYNC, bh);
145 
146 	*cbh = bh;
147 	return ret;
148 }
149 
150 /*
151  * This function along with journal_submit_commit_record
152  * allows to write the commit record asynchronously.
153  */
154 static int journal_wait_on_commit_record(journal_t *journal,
155 					 struct buffer_head *bh)
156 {
157 	int ret = 0;
158 
159 	clear_buffer_dirty(bh);
160 	wait_on_buffer(bh);
161 
162 	if (unlikely(!buffer_uptodate(bh)))
163 		ret = -EIO;
164 	put_bh(bh);            /* One for getblk() */
165 	jbd2_journal_put_journal_head(bh2jh(bh));
166 
167 	return ret;
168 }
169 
170 /*
171  * write the filemap data using writepage() address_space_operations.
172  * We don't do block allocation here even for delalloc. We don't
173  * use writepages() because with dealyed allocation we may be doing
174  * block allocation in writepages().
175  */
176 static int journal_submit_inode_data_buffers(struct address_space *mapping)
177 {
178 	int ret;
179 	struct writeback_control wbc = {
180 		.sync_mode =  WB_SYNC_ALL,
181 		.nr_to_write = mapping->nrpages * 2,
182 		.range_start = 0,
183 		.range_end = i_size_read(mapping->host),
184 	};
185 
186 	ret = generic_writepages(mapping, &wbc);
187 	return ret;
188 }
189 
190 /*
191  * Submit all the data buffers of inode associated with the transaction to
192  * disk.
193  *
194  * We are in a committing transaction. Therefore no new inode can be added to
195  * our inode list. We use JI_COMMIT_RUNNING flag to protect inode we currently
196  * operate on from being released while we write out pages.
197  */
198 static int journal_submit_data_buffers(journal_t *journal,
199 		transaction_t *commit_transaction)
200 {
201 	struct jbd2_inode *jinode;
202 	int err, ret = 0;
203 	struct address_space *mapping;
204 
205 	spin_lock(&journal->j_list_lock);
206 	list_for_each_entry(jinode, &commit_transaction->t_inode_list, i_list) {
207 		mapping = jinode->i_vfs_inode->i_mapping;
208 		set_bit(__JI_COMMIT_RUNNING, &jinode->i_flags);
209 		spin_unlock(&journal->j_list_lock);
210 		/*
211 		 * submit the inode data buffers. We use writepage
212 		 * instead of writepages. Because writepages can do
213 		 * block allocation  with delalloc. We need to write
214 		 * only allocated blocks here.
215 		 */
216 		trace_jbd2_submit_inode_data(jinode->i_vfs_inode);
217 		err = journal_submit_inode_data_buffers(mapping);
218 		if (!ret)
219 			ret = err;
220 		spin_lock(&journal->j_list_lock);
221 		J_ASSERT(jinode->i_transaction == commit_transaction);
222 		commit_transaction->t_flushed_data_blocks = 1;
223 		clear_bit(__JI_COMMIT_RUNNING, &jinode->i_flags);
224 		smp_mb__after_clear_bit();
225 		wake_up_bit(&jinode->i_flags, __JI_COMMIT_RUNNING);
226 	}
227 	spin_unlock(&journal->j_list_lock);
228 	return ret;
229 }
230 
231 /*
232  * Wait for data submitted for writeout, refile inodes to proper
233  * transaction if needed.
234  *
235  */
236 static int journal_finish_inode_data_buffers(journal_t *journal,
237 		transaction_t *commit_transaction)
238 {
239 	struct jbd2_inode *jinode, *next_i;
240 	int err, ret = 0;
241 
242 	/* For locking, see the comment in journal_submit_data_buffers() */
243 	spin_lock(&journal->j_list_lock);
244 	list_for_each_entry(jinode, &commit_transaction->t_inode_list, i_list) {
245 		set_bit(__JI_COMMIT_RUNNING, &jinode->i_flags);
246 		spin_unlock(&journal->j_list_lock);
247 		err = filemap_fdatawait(jinode->i_vfs_inode->i_mapping);
248 		if (err) {
249 			/*
250 			 * Because AS_EIO is cleared by
251 			 * filemap_fdatawait_range(), set it again so
252 			 * that user process can get -EIO from fsync().
253 			 */
254 			set_bit(AS_EIO,
255 				&jinode->i_vfs_inode->i_mapping->flags);
256 
257 			if (!ret)
258 				ret = err;
259 		}
260 		spin_lock(&journal->j_list_lock);
261 		clear_bit(__JI_COMMIT_RUNNING, &jinode->i_flags);
262 		smp_mb__after_clear_bit();
263 		wake_up_bit(&jinode->i_flags, __JI_COMMIT_RUNNING);
264 	}
265 
266 	/* Now refile inode to proper lists */
267 	list_for_each_entry_safe(jinode, next_i,
268 				 &commit_transaction->t_inode_list, i_list) {
269 		list_del(&jinode->i_list);
270 		if (jinode->i_next_transaction) {
271 			jinode->i_transaction = jinode->i_next_transaction;
272 			jinode->i_next_transaction = NULL;
273 			list_add(&jinode->i_list,
274 				&jinode->i_transaction->t_inode_list);
275 		} else {
276 			jinode->i_transaction = NULL;
277 		}
278 	}
279 	spin_unlock(&journal->j_list_lock);
280 
281 	return ret;
282 }
283 
284 static __u32 jbd2_checksum_data(__u32 crc32_sum, struct buffer_head *bh)
285 {
286 	struct page *page = bh->b_page;
287 	char *addr;
288 	__u32 checksum;
289 
290 	addr = kmap_atomic(page, KM_USER0);
291 	checksum = crc32_be(crc32_sum,
292 		(void *)(addr + offset_in_page(bh->b_data)), bh->b_size);
293 	kunmap_atomic(addr, KM_USER0);
294 
295 	return checksum;
296 }
297 
298 static void write_tag_block(int tag_bytes, journal_block_tag_t *tag,
299 				   unsigned long long block)
300 {
301 	tag->t_blocknr = cpu_to_be32(block & (u32)~0);
302 	if (tag_bytes > JBD2_TAG_SIZE32)
303 		tag->t_blocknr_high = cpu_to_be32((block >> 31) >> 1);
304 }
305 
306 /*
307  * jbd2_journal_commit_transaction
308  *
309  * The primary function for committing a transaction to the log.  This
310  * function is called by the journal thread to begin a complete commit.
311  */
312 void jbd2_journal_commit_transaction(journal_t *journal)
313 {
314 	struct transaction_stats_s stats;
315 	transaction_t *commit_transaction;
316 	struct journal_head *jh, *new_jh, *descriptor;
317 	struct buffer_head **wbuf = journal->j_wbuf;
318 	int bufs;
319 	int flags;
320 	int err;
321 	unsigned long long blocknr;
322 	ktime_t start_time;
323 	u64 commit_time;
324 	char *tagp = NULL;
325 	journal_header_t *header;
326 	journal_block_tag_t *tag = NULL;
327 	int space_left = 0;
328 	int first_tag = 0;
329 	int tag_flag;
330 	int i, to_free = 0;
331 	int tag_bytes = journal_tag_bytes(journal);
332 	struct buffer_head *cbh = NULL; /* For transactional checksums */
333 	__u32 crc32_sum = ~0;
334 	struct blk_plug plug;
335 
336 	/*
337 	 * First job: lock down the current transaction and wait for
338 	 * all outstanding updates to complete.
339 	 */
340 
341 #ifdef COMMIT_STATS
342 	spin_lock(&journal->j_list_lock);
343 	summarise_journal_usage(journal);
344 	spin_unlock(&journal->j_list_lock);
345 #endif
346 
347 	/* Do we need to erase the effects of a prior jbd2_journal_flush? */
348 	if (journal->j_flags & JBD2_FLUSHED) {
349 		jbd_debug(3, "super block updated\n");
350 		jbd2_journal_update_superblock(journal, 1);
351 	} else {
352 		jbd_debug(3, "superblock not updated\n");
353 	}
354 
355 	J_ASSERT(journal->j_running_transaction != NULL);
356 	J_ASSERT(journal->j_committing_transaction == NULL);
357 
358 	commit_transaction = journal->j_running_transaction;
359 	J_ASSERT(commit_transaction->t_state == T_RUNNING);
360 
361 	trace_jbd2_start_commit(journal, commit_transaction);
362 	jbd_debug(1, "JBD: starting commit of transaction %d\n",
363 			commit_transaction->t_tid);
364 
365 	write_lock(&journal->j_state_lock);
366 	commit_transaction->t_state = T_LOCKED;
367 
368 	trace_jbd2_commit_locking(journal, commit_transaction);
369 	stats.run.rs_wait = commit_transaction->t_max_wait;
370 	stats.run.rs_locked = jiffies;
371 	stats.run.rs_running = jbd2_time_diff(commit_transaction->t_start,
372 					      stats.run.rs_locked);
373 
374 	spin_lock(&commit_transaction->t_handle_lock);
375 	while (atomic_read(&commit_transaction->t_updates)) {
376 		DEFINE_WAIT(wait);
377 
378 		prepare_to_wait(&journal->j_wait_updates, &wait,
379 					TASK_UNINTERRUPTIBLE);
380 		if (atomic_read(&commit_transaction->t_updates)) {
381 			spin_unlock(&commit_transaction->t_handle_lock);
382 			write_unlock(&journal->j_state_lock);
383 			schedule();
384 			write_lock(&journal->j_state_lock);
385 			spin_lock(&commit_transaction->t_handle_lock);
386 		}
387 		finish_wait(&journal->j_wait_updates, &wait);
388 	}
389 	spin_unlock(&commit_transaction->t_handle_lock);
390 
391 	J_ASSERT (atomic_read(&commit_transaction->t_outstanding_credits) <=
392 			journal->j_max_transaction_buffers);
393 
394 	/*
395 	 * First thing we are allowed to do is to discard any remaining
396 	 * BJ_Reserved buffers.  Note, it is _not_ permissible to assume
397 	 * that there are no such buffers: if a large filesystem
398 	 * operation like a truncate needs to split itself over multiple
399 	 * transactions, then it may try to do a jbd2_journal_restart() while
400 	 * there are still BJ_Reserved buffers outstanding.  These must
401 	 * be released cleanly from the current transaction.
402 	 *
403 	 * In this case, the filesystem must still reserve write access
404 	 * again before modifying the buffer in the new transaction, but
405 	 * we do not require it to remember exactly which old buffers it
406 	 * has reserved.  This is consistent with the existing behaviour
407 	 * that multiple jbd2_journal_get_write_access() calls to the same
408 	 * buffer are perfectly permissible.
409 	 */
410 	while (commit_transaction->t_reserved_list) {
411 		jh = commit_transaction->t_reserved_list;
412 		JBUFFER_TRACE(jh, "reserved, unused: refile");
413 		/*
414 		 * A jbd2_journal_get_undo_access()+jbd2_journal_release_buffer() may
415 		 * leave undo-committed data.
416 		 */
417 		if (jh->b_committed_data) {
418 			struct buffer_head *bh = jh2bh(jh);
419 
420 			jbd_lock_bh_state(bh);
421 			jbd2_free(jh->b_committed_data, bh->b_size);
422 			jh->b_committed_data = NULL;
423 			jbd_unlock_bh_state(bh);
424 		}
425 		jbd2_journal_refile_buffer(journal, jh);
426 	}
427 
428 	/*
429 	 * Now try to drop any written-back buffers from the journal's
430 	 * checkpoint lists.  We do this *before* commit because it potentially
431 	 * frees some memory
432 	 */
433 	spin_lock(&journal->j_list_lock);
434 	__jbd2_journal_clean_checkpoint_list(journal);
435 	spin_unlock(&journal->j_list_lock);
436 
437 	jbd_debug (3, "JBD: commit phase 1\n");
438 
439 	/*
440 	 * Switch to a new revoke table.
441 	 */
442 	jbd2_journal_switch_revoke_table(journal);
443 
444 	trace_jbd2_commit_flushing(journal, commit_transaction);
445 	stats.run.rs_flushing = jiffies;
446 	stats.run.rs_locked = jbd2_time_diff(stats.run.rs_locked,
447 					     stats.run.rs_flushing);
448 
449 	commit_transaction->t_state = T_FLUSH;
450 	journal->j_committing_transaction = commit_transaction;
451 	journal->j_running_transaction = NULL;
452 	start_time = ktime_get();
453 	commit_transaction->t_log_start = journal->j_head;
454 	wake_up(&journal->j_wait_transaction_locked);
455 	write_unlock(&journal->j_state_lock);
456 
457 	jbd_debug (3, "JBD: commit phase 2\n");
458 
459 	/*
460 	 * Now start flushing things to disk, in the order they appear
461 	 * on the transaction lists.  Data blocks go first.
462 	 */
463 	err = journal_submit_data_buffers(journal, commit_transaction);
464 	if (err)
465 		jbd2_journal_abort(journal, err);
466 
467 	blk_start_plug(&plug);
468 	jbd2_journal_write_revoke_records(journal, commit_transaction,
469 					  WRITE_SYNC);
470 	blk_finish_plug(&plug);
471 
472 	jbd_debug(3, "JBD: commit phase 2\n");
473 
474 	/*
475 	 * Way to go: we have now written out all of the data for a
476 	 * transaction!  Now comes the tricky part: we need to write out
477 	 * metadata.  Loop over the transaction's entire buffer list:
478 	 */
479 	write_lock(&journal->j_state_lock);
480 	commit_transaction->t_state = T_COMMIT;
481 	write_unlock(&journal->j_state_lock);
482 
483 	trace_jbd2_commit_logging(journal, commit_transaction);
484 	stats.run.rs_logging = jiffies;
485 	stats.run.rs_flushing = jbd2_time_diff(stats.run.rs_flushing,
486 					       stats.run.rs_logging);
487 	stats.run.rs_blocks =
488 		atomic_read(&commit_transaction->t_outstanding_credits);
489 	stats.run.rs_blocks_logged = 0;
490 
491 	J_ASSERT(commit_transaction->t_nr_buffers <=
492 		 atomic_read(&commit_transaction->t_outstanding_credits));
493 
494 	err = 0;
495 	descriptor = NULL;
496 	bufs = 0;
497 	blk_start_plug(&plug);
498 	while (commit_transaction->t_buffers) {
499 
500 		/* Find the next buffer to be journaled... */
501 
502 		jh = commit_transaction->t_buffers;
503 
504 		/* If we're in abort mode, we just un-journal the buffer and
505 		   release it. */
506 
507 		if (is_journal_aborted(journal)) {
508 			clear_buffer_jbddirty(jh2bh(jh));
509 			JBUFFER_TRACE(jh, "journal is aborting: refile");
510 			jbd2_buffer_abort_trigger(jh,
511 						  jh->b_frozen_data ?
512 						  jh->b_frozen_triggers :
513 						  jh->b_triggers);
514 			jbd2_journal_refile_buffer(journal, jh);
515 			/* If that was the last one, we need to clean up
516 			 * any descriptor buffers which may have been
517 			 * already allocated, even if we are now
518 			 * aborting. */
519 			if (!commit_transaction->t_buffers)
520 				goto start_journal_io;
521 			continue;
522 		}
523 
524 		/* Make sure we have a descriptor block in which to
525 		   record the metadata buffer. */
526 
527 		if (!descriptor) {
528 			struct buffer_head *bh;
529 
530 			J_ASSERT (bufs == 0);
531 
532 			jbd_debug(4, "JBD: get descriptor\n");
533 
534 			descriptor = jbd2_journal_get_descriptor_buffer(journal);
535 			if (!descriptor) {
536 				jbd2_journal_abort(journal, -EIO);
537 				continue;
538 			}
539 
540 			bh = jh2bh(descriptor);
541 			jbd_debug(4, "JBD: got buffer %llu (%p)\n",
542 				(unsigned long long)bh->b_blocknr, bh->b_data);
543 			header = (journal_header_t *)&bh->b_data[0];
544 			header->h_magic     = cpu_to_be32(JBD2_MAGIC_NUMBER);
545 			header->h_blocktype = cpu_to_be32(JBD2_DESCRIPTOR_BLOCK);
546 			header->h_sequence  = cpu_to_be32(commit_transaction->t_tid);
547 
548 			tagp = &bh->b_data[sizeof(journal_header_t)];
549 			space_left = bh->b_size - sizeof(journal_header_t);
550 			first_tag = 1;
551 			set_buffer_jwrite(bh);
552 			set_buffer_dirty(bh);
553 			wbuf[bufs++] = bh;
554 
555 			/* Record it so that we can wait for IO
556                            completion later */
557 			BUFFER_TRACE(bh, "ph3: file as descriptor");
558 			jbd2_journal_file_buffer(descriptor, commit_transaction,
559 					BJ_LogCtl);
560 		}
561 
562 		/* Where is the buffer to be written? */
563 
564 		err = jbd2_journal_next_log_block(journal, &blocknr);
565 		/* If the block mapping failed, just abandon the buffer
566 		   and repeat this loop: we'll fall into the
567 		   refile-on-abort condition above. */
568 		if (err) {
569 			jbd2_journal_abort(journal, err);
570 			continue;
571 		}
572 
573 		/*
574 		 * start_this_handle() uses t_outstanding_credits to determine
575 		 * the free space in the log, but this counter is changed
576 		 * by jbd2_journal_next_log_block() also.
577 		 */
578 		atomic_dec(&commit_transaction->t_outstanding_credits);
579 
580 		/* Bump b_count to prevent truncate from stumbling over
581                    the shadowed buffer!  @@@ This can go if we ever get
582                    rid of the BJ_IO/BJ_Shadow pairing of buffers. */
583 		atomic_inc(&jh2bh(jh)->b_count);
584 
585 		/* Make a temporary IO buffer with which to write it out
586                    (this will requeue both the metadata buffer and the
587                    temporary IO buffer). new_bh goes on BJ_IO*/
588 
589 		set_bit(BH_JWrite, &jh2bh(jh)->b_state);
590 		/*
591 		 * akpm: jbd2_journal_write_metadata_buffer() sets
592 		 * new_bh->b_transaction to commit_transaction.
593 		 * We need to clean this up before we release new_bh
594 		 * (which is of type BJ_IO)
595 		 */
596 		JBUFFER_TRACE(jh, "ph3: write metadata");
597 		flags = jbd2_journal_write_metadata_buffer(commit_transaction,
598 						      jh, &new_jh, blocknr);
599 		if (flags < 0) {
600 			jbd2_journal_abort(journal, flags);
601 			continue;
602 		}
603 		set_bit(BH_JWrite, &jh2bh(new_jh)->b_state);
604 		wbuf[bufs++] = jh2bh(new_jh);
605 
606 		/* Record the new block's tag in the current descriptor
607                    buffer */
608 
609 		tag_flag = 0;
610 		if (flags & 1)
611 			tag_flag |= JBD2_FLAG_ESCAPE;
612 		if (!first_tag)
613 			tag_flag |= JBD2_FLAG_SAME_UUID;
614 
615 		tag = (journal_block_tag_t *) tagp;
616 		write_tag_block(tag_bytes, tag, jh2bh(jh)->b_blocknr);
617 		tag->t_flags = cpu_to_be32(tag_flag);
618 		tagp += tag_bytes;
619 		space_left -= tag_bytes;
620 
621 		if (first_tag) {
622 			memcpy (tagp, journal->j_uuid, 16);
623 			tagp += 16;
624 			space_left -= 16;
625 			first_tag = 0;
626 		}
627 
628 		/* If there's no more to do, or if the descriptor is full,
629 		   let the IO rip! */
630 
631 		if (bufs == journal->j_wbufsize ||
632 		    commit_transaction->t_buffers == NULL ||
633 		    space_left < tag_bytes + 16) {
634 
635 			jbd_debug(4, "JBD: Submit %d IOs\n", bufs);
636 
637 			/* Write an end-of-descriptor marker before
638                            submitting the IOs.  "tag" still points to
639                            the last tag we set up. */
640 
641 			tag->t_flags |= cpu_to_be32(JBD2_FLAG_LAST_TAG);
642 
643 start_journal_io:
644 			for (i = 0; i < bufs; i++) {
645 				struct buffer_head *bh = wbuf[i];
646 				/*
647 				 * Compute checksum.
648 				 */
649 				if (JBD2_HAS_COMPAT_FEATURE(journal,
650 					JBD2_FEATURE_COMPAT_CHECKSUM)) {
651 					crc32_sum =
652 					    jbd2_checksum_data(crc32_sum, bh);
653 				}
654 
655 				lock_buffer(bh);
656 				clear_buffer_dirty(bh);
657 				set_buffer_uptodate(bh);
658 				bh->b_end_io = journal_end_buffer_io_sync;
659 				submit_bh(WRITE_SYNC, bh);
660 			}
661 			cond_resched();
662 			stats.run.rs_blocks_logged += bufs;
663 
664 			/* Force a new descriptor to be generated next
665                            time round the loop. */
666 			descriptor = NULL;
667 			bufs = 0;
668 		}
669 	}
670 
671 	err = journal_finish_inode_data_buffers(journal, commit_transaction);
672 	if (err) {
673 		printk(KERN_WARNING
674 			"JBD2: Detected IO errors while flushing file data "
675 		       "on %s\n", journal->j_devname);
676 		if (journal->j_flags & JBD2_ABORT_ON_SYNCDATA_ERR)
677 			jbd2_journal_abort(journal, err);
678 		err = 0;
679 	}
680 
681 	/*
682 	 * If the journal is not located on the file system device,
683 	 * then we must flush the file system device before we issue
684 	 * the commit record
685 	 */
686 	if (commit_transaction->t_flushed_data_blocks &&
687 	    (journal->j_fs_dev != journal->j_dev) &&
688 	    (journal->j_flags & JBD2_BARRIER))
689 		blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL);
690 
691 	/* Done it all: now write the commit record asynchronously. */
692 	if (JBD2_HAS_INCOMPAT_FEATURE(journal,
693 				      JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT)) {
694 		err = journal_submit_commit_record(journal, commit_transaction,
695 						 &cbh, crc32_sum);
696 		if (err)
697 			__jbd2_journal_abort_hard(journal);
698 	}
699 
700 	blk_finish_plug(&plug);
701 
702 	/* Lo and behold: we have just managed to send a transaction to
703            the log.  Before we can commit it, wait for the IO so far to
704            complete.  Control buffers being written are on the
705            transaction's t_log_list queue, and metadata buffers are on
706            the t_iobuf_list queue.
707 
708 	   Wait for the buffers in reverse order.  That way we are
709 	   less likely to be woken up until all IOs have completed, and
710 	   so we incur less scheduling load.
711 	*/
712 
713 	jbd_debug(3, "JBD: commit phase 3\n");
714 
715 	/*
716 	 * akpm: these are BJ_IO, and j_list_lock is not needed.
717 	 * See __journal_try_to_free_buffer.
718 	 */
719 wait_for_iobuf:
720 	while (commit_transaction->t_iobuf_list != NULL) {
721 		struct buffer_head *bh;
722 
723 		jh = commit_transaction->t_iobuf_list->b_tprev;
724 		bh = jh2bh(jh);
725 		if (buffer_locked(bh)) {
726 			wait_on_buffer(bh);
727 			goto wait_for_iobuf;
728 		}
729 		if (cond_resched())
730 			goto wait_for_iobuf;
731 
732 		if (unlikely(!buffer_uptodate(bh)))
733 			err = -EIO;
734 
735 		clear_buffer_jwrite(bh);
736 
737 		JBUFFER_TRACE(jh, "ph4: unfile after journal write");
738 		jbd2_journal_unfile_buffer(journal, jh);
739 
740 		/*
741 		 * ->t_iobuf_list should contain only dummy buffer_heads
742 		 * which were created by jbd2_journal_write_metadata_buffer().
743 		 */
744 		BUFFER_TRACE(bh, "dumping temporary bh");
745 		jbd2_journal_put_journal_head(jh);
746 		__brelse(bh);
747 		J_ASSERT_BH(bh, atomic_read(&bh->b_count) == 0);
748 		free_buffer_head(bh);
749 
750 		/* We also have to unlock and free the corresponding
751                    shadowed buffer */
752 		jh = commit_transaction->t_shadow_list->b_tprev;
753 		bh = jh2bh(jh);
754 		clear_bit(BH_JWrite, &bh->b_state);
755 		J_ASSERT_BH(bh, buffer_jbddirty(bh));
756 
757 		/* The metadata is now released for reuse, but we need
758                    to remember it against this transaction so that when
759                    we finally commit, we can do any checkpointing
760                    required. */
761 		JBUFFER_TRACE(jh, "file as BJ_Forget");
762 		jbd2_journal_file_buffer(jh, commit_transaction, BJ_Forget);
763 		/* Wake up any transactions which were waiting for this
764 		   IO to complete */
765 		wake_up_bit(&bh->b_state, BH_Unshadow);
766 		JBUFFER_TRACE(jh, "brelse shadowed buffer");
767 		__brelse(bh);
768 	}
769 
770 	J_ASSERT (commit_transaction->t_shadow_list == NULL);
771 
772 	jbd_debug(3, "JBD: commit phase 4\n");
773 
774 	/* Here we wait for the revoke record and descriptor record buffers */
775  wait_for_ctlbuf:
776 	while (commit_transaction->t_log_list != NULL) {
777 		struct buffer_head *bh;
778 
779 		jh = commit_transaction->t_log_list->b_tprev;
780 		bh = jh2bh(jh);
781 		if (buffer_locked(bh)) {
782 			wait_on_buffer(bh);
783 			goto wait_for_ctlbuf;
784 		}
785 		if (cond_resched())
786 			goto wait_for_ctlbuf;
787 
788 		if (unlikely(!buffer_uptodate(bh)))
789 			err = -EIO;
790 
791 		BUFFER_TRACE(bh, "ph5: control buffer writeout done: unfile");
792 		clear_buffer_jwrite(bh);
793 		jbd2_journal_unfile_buffer(journal, jh);
794 		jbd2_journal_put_journal_head(jh);
795 		__brelse(bh);		/* One for getblk */
796 		/* AKPM: bforget here */
797 	}
798 
799 	if (err)
800 		jbd2_journal_abort(journal, err);
801 
802 	jbd_debug(3, "JBD: commit phase 5\n");
803 
804 	if (!JBD2_HAS_INCOMPAT_FEATURE(journal,
805 				       JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT)) {
806 		err = journal_submit_commit_record(journal, commit_transaction,
807 						&cbh, crc32_sum);
808 		if (err)
809 			__jbd2_journal_abort_hard(journal);
810 	}
811 	if (cbh)
812 		err = journal_wait_on_commit_record(journal, cbh);
813 	if (JBD2_HAS_INCOMPAT_FEATURE(journal,
814 				      JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT) &&
815 	    journal->j_flags & JBD2_BARRIER) {
816 		blkdev_issue_flush(journal->j_dev, GFP_KERNEL, NULL);
817 	}
818 
819 	if (err)
820 		jbd2_journal_abort(journal, err);
821 
822 	/* End of a transaction!  Finally, we can do checkpoint
823            processing: any buffers committed as a result of this
824            transaction can be removed from any checkpoint list it was on
825            before. */
826 
827 	jbd_debug(3, "JBD: commit phase 6\n");
828 
829 	J_ASSERT(list_empty(&commit_transaction->t_inode_list));
830 	J_ASSERT(commit_transaction->t_buffers == NULL);
831 	J_ASSERT(commit_transaction->t_checkpoint_list == NULL);
832 	J_ASSERT(commit_transaction->t_iobuf_list == NULL);
833 	J_ASSERT(commit_transaction->t_shadow_list == NULL);
834 	J_ASSERT(commit_transaction->t_log_list == NULL);
835 
836 restart_loop:
837 	/*
838 	 * As there are other places (journal_unmap_buffer()) adding buffers
839 	 * to this list we have to be careful and hold the j_list_lock.
840 	 */
841 	spin_lock(&journal->j_list_lock);
842 	while (commit_transaction->t_forget) {
843 		transaction_t *cp_transaction;
844 		struct buffer_head *bh;
845 
846 		jh = commit_transaction->t_forget;
847 		spin_unlock(&journal->j_list_lock);
848 		bh = jh2bh(jh);
849 		jbd_lock_bh_state(bh);
850 		J_ASSERT_JH(jh,	jh->b_transaction == commit_transaction);
851 
852 		/*
853 		 * If there is undo-protected committed data against
854 		 * this buffer, then we can remove it now.  If it is a
855 		 * buffer needing such protection, the old frozen_data
856 		 * field now points to a committed version of the
857 		 * buffer, so rotate that field to the new committed
858 		 * data.
859 		 *
860 		 * Otherwise, we can just throw away the frozen data now.
861 		 *
862 		 * We also know that the frozen data has already fired
863 		 * its triggers if they exist, so we can clear that too.
864 		 */
865 		if (jh->b_committed_data) {
866 			jbd2_free(jh->b_committed_data, bh->b_size);
867 			jh->b_committed_data = NULL;
868 			if (jh->b_frozen_data) {
869 				jh->b_committed_data = jh->b_frozen_data;
870 				jh->b_frozen_data = NULL;
871 				jh->b_frozen_triggers = NULL;
872 			}
873 		} else if (jh->b_frozen_data) {
874 			jbd2_free(jh->b_frozen_data, bh->b_size);
875 			jh->b_frozen_data = NULL;
876 			jh->b_frozen_triggers = NULL;
877 		}
878 
879 		spin_lock(&journal->j_list_lock);
880 		cp_transaction = jh->b_cp_transaction;
881 		if (cp_transaction) {
882 			JBUFFER_TRACE(jh, "remove from old cp transaction");
883 			cp_transaction->t_chp_stats.cs_dropped++;
884 			__jbd2_journal_remove_checkpoint(jh);
885 		}
886 
887 		/* Only re-checkpoint the buffer_head if it is marked
888 		 * dirty.  If the buffer was added to the BJ_Forget list
889 		 * by jbd2_journal_forget, it may no longer be dirty and
890 		 * there's no point in keeping a checkpoint record for
891 		 * it. */
892 
893 		/* A buffer which has been freed while still being
894 		 * journaled by a previous transaction may end up still
895 		 * being dirty here, but we want to avoid writing back
896 		 * that buffer in the future after the "add to orphan"
897 		 * operation been committed,  That's not only a performance
898 		 * gain, it also stops aliasing problems if the buffer is
899 		 * left behind for writeback and gets reallocated for another
900 		 * use in a different page. */
901 		if (buffer_freed(bh) && !jh->b_next_transaction) {
902 			clear_buffer_freed(bh);
903 			clear_buffer_jbddirty(bh);
904 		}
905 
906 		if (buffer_jbddirty(bh)) {
907 			JBUFFER_TRACE(jh, "add to new checkpointing trans");
908 			__jbd2_journal_insert_checkpoint(jh, commit_transaction);
909 			if (is_journal_aborted(journal))
910 				clear_buffer_jbddirty(bh);
911 			JBUFFER_TRACE(jh, "refile for checkpoint writeback");
912 			__jbd2_journal_refile_buffer(jh);
913 			jbd_unlock_bh_state(bh);
914 		} else {
915 			J_ASSERT_BH(bh, !buffer_dirty(bh));
916 			/* The buffer on BJ_Forget list and not jbddirty means
917 			 * it has been freed by this transaction and hence it
918 			 * could not have been reallocated until this
919 			 * transaction has committed. *BUT* it could be
920 			 * reallocated once we have written all the data to
921 			 * disk and before we process the buffer on BJ_Forget
922 			 * list. */
923 			JBUFFER_TRACE(jh, "refile or unfile freed buffer");
924 			__jbd2_journal_refile_buffer(jh);
925 			if (!jh->b_transaction) {
926 				jbd_unlock_bh_state(bh);
927 				 /* needs a brelse */
928 				jbd2_journal_remove_journal_head(bh);
929 				release_buffer_page(bh);
930 			} else
931 				jbd_unlock_bh_state(bh);
932 		}
933 		cond_resched_lock(&journal->j_list_lock);
934 	}
935 	spin_unlock(&journal->j_list_lock);
936 	/*
937 	 * This is a bit sleazy.  We use j_list_lock to protect transition
938 	 * of a transaction into T_FINISHED state and calling
939 	 * __jbd2_journal_drop_transaction(). Otherwise we could race with
940 	 * other checkpointing code processing the transaction...
941 	 */
942 	write_lock(&journal->j_state_lock);
943 	spin_lock(&journal->j_list_lock);
944 	/*
945 	 * Now recheck if some buffers did not get attached to the transaction
946 	 * while the lock was dropped...
947 	 */
948 	if (commit_transaction->t_forget) {
949 		spin_unlock(&journal->j_list_lock);
950 		write_unlock(&journal->j_state_lock);
951 		goto restart_loop;
952 	}
953 
954 	/* Done with this transaction! */
955 
956 	jbd_debug(3, "JBD: commit phase 7\n");
957 
958 	J_ASSERT(commit_transaction->t_state == T_COMMIT);
959 
960 	commit_transaction->t_start = jiffies;
961 	stats.run.rs_logging = jbd2_time_diff(stats.run.rs_logging,
962 					      commit_transaction->t_start);
963 
964 	/*
965 	 * File the transaction statistics
966 	 */
967 	stats.ts_tid = commit_transaction->t_tid;
968 	stats.run.rs_handle_count =
969 		atomic_read(&commit_transaction->t_handle_count);
970 	trace_jbd2_run_stats(journal->j_fs_dev->bd_dev,
971 			     commit_transaction->t_tid, &stats.run);
972 
973 	/*
974 	 * Calculate overall stats
975 	 */
976 	spin_lock(&journal->j_history_lock);
977 	journal->j_stats.ts_tid++;
978 	journal->j_stats.run.rs_wait += stats.run.rs_wait;
979 	journal->j_stats.run.rs_running += stats.run.rs_running;
980 	journal->j_stats.run.rs_locked += stats.run.rs_locked;
981 	journal->j_stats.run.rs_flushing += stats.run.rs_flushing;
982 	journal->j_stats.run.rs_logging += stats.run.rs_logging;
983 	journal->j_stats.run.rs_handle_count += stats.run.rs_handle_count;
984 	journal->j_stats.run.rs_blocks += stats.run.rs_blocks;
985 	journal->j_stats.run.rs_blocks_logged += stats.run.rs_blocks_logged;
986 	spin_unlock(&journal->j_history_lock);
987 
988 	commit_transaction->t_state = T_FINISHED;
989 	J_ASSERT(commit_transaction == journal->j_committing_transaction);
990 	journal->j_commit_sequence = commit_transaction->t_tid;
991 	journal->j_committing_transaction = NULL;
992 	commit_time = ktime_to_ns(ktime_sub(ktime_get(), start_time));
993 
994 	/*
995 	 * weight the commit time higher than the average time so we don't
996 	 * react too strongly to vast changes in the commit time
997 	 */
998 	if (likely(journal->j_average_commit_time))
999 		journal->j_average_commit_time = (commit_time +
1000 				journal->j_average_commit_time*3) / 4;
1001 	else
1002 		journal->j_average_commit_time = commit_time;
1003 	write_unlock(&journal->j_state_lock);
1004 
1005 	if (commit_transaction->t_checkpoint_list == NULL &&
1006 	    commit_transaction->t_checkpoint_io_list == NULL) {
1007 		__jbd2_journal_drop_transaction(journal, commit_transaction);
1008 		to_free = 1;
1009 	} else {
1010 		if (journal->j_checkpoint_transactions == NULL) {
1011 			journal->j_checkpoint_transactions = commit_transaction;
1012 			commit_transaction->t_cpnext = commit_transaction;
1013 			commit_transaction->t_cpprev = commit_transaction;
1014 		} else {
1015 			commit_transaction->t_cpnext =
1016 				journal->j_checkpoint_transactions;
1017 			commit_transaction->t_cpprev =
1018 				commit_transaction->t_cpnext->t_cpprev;
1019 			commit_transaction->t_cpnext->t_cpprev =
1020 				commit_transaction;
1021 			commit_transaction->t_cpprev->t_cpnext =
1022 				commit_transaction;
1023 		}
1024 	}
1025 	spin_unlock(&journal->j_list_lock);
1026 
1027 	if (journal->j_commit_callback)
1028 		journal->j_commit_callback(journal, commit_transaction);
1029 
1030 	trace_jbd2_end_commit(journal, commit_transaction);
1031 	jbd_debug(1, "JBD: commit %d complete, head %d\n",
1032 		  journal->j_commit_sequence, journal->j_tail_sequence);
1033 	if (to_free)
1034 		kfree(commit_transaction);
1035 
1036 	wake_up(&journal->j_wait_done_commit);
1037 }
1038