journal.c (70d1b1a7f8b32b78c09b30dbcfa25ba1e470568b) | journal.c (f3ed5df398e8bc5b5e38f2db9b6494997e5ada49) |
---|---|
1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * linux/fs/jbd2/journal.c 4 * 5 * Written by Stephen C. Tweedie <sct@redhat.com>, 1998 6 * 7 * Copyright 1998 Red Hat corp --- All Rights Reserved 8 * --- 1592 unchanged lines hidden (view full) --- 1601/* 1602 * This function expects that the caller will have locked the journal 1603 * buffer head, and will return with it unlocked 1604 */ 1605static int jbd2_write_superblock(journal_t *journal, blk_opf_t write_flags) 1606{ 1607 struct buffer_head *bh = journal->j_sb_buffer; 1608 journal_superblock_t *sb = journal->j_superblock; | 1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * linux/fs/jbd2/journal.c 4 * 5 * Written by Stephen C. Tweedie <sct@redhat.com>, 1998 6 * 7 * Copyright 1998 Red Hat corp --- All Rights Reserved 8 * --- 1592 unchanged lines hidden (view full) --- 1601/* 1602 * This function expects that the caller will have locked the journal 1603 * buffer head, and will return with it unlocked 1604 */ 1605static int jbd2_write_superblock(journal_t *journal, blk_opf_t write_flags) 1606{ 1607 struct buffer_head *bh = journal->j_sb_buffer; 1608 journal_superblock_t *sb = journal->j_superblock; |
1609 int ret; | 1609 int ret = 0; |
1610 1611 /* Buffer got discarded which means block device got invalidated */ 1612 if (!buffer_mapped(bh)) { 1613 unlock_buffer(bh); 1614 return -EIO; 1615 } 1616 1617 trace_jbd2_write_superblock(journal, write_flags); --- 13 unchanged lines hidden (view full) --- 1631 journal->j_devname); 1632 clear_buffer_write_io_error(bh); 1633 set_buffer_uptodate(bh); 1634 } 1635 if (jbd2_journal_has_csum_v2or3(journal)) 1636 sb->s_checksum = jbd2_superblock_csum(journal, sb); 1637 get_bh(bh); 1638 bh->b_end_io = end_buffer_write_sync; | 1610 1611 /* Buffer got discarded which means block device got invalidated */ 1612 if (!buffer_mapped(bh)) { 1613 unlock_buffer(bh); 1614 return -EIO; 1615 } 1616 1617 trace_jbd2_write_superblock(journal, write_flags); --- 13 unchanged lines hidden (view full) --- 1631 journal->j_devname); 1632 clear_buffer_write_io_error(bh); 1633 set_buffer_uptodate(bh); 1634 } 1635 if (jbd2_journal_has_csum_v2or3(journal)) 1636 sb->s_checksum = jbd2_superblock_csum(journal, sb); 1637 get_bh(bh); 1638 bh->b_end_io = end_buffer_write_sync; |
1639 ret = submit_bh(REQ_OP_WRITE | write_flags, bh); | 1639 submit_bh(REQ_OP_WRITE | write_flags, bh); |
1640 wait_on_buffer(bh); 1641 if (buffer_write_io_error(bh)) { 1642 clear_buffer_write_io_error(bh); 1643 set_buffer_uptodate(bh); 1644 ret = -EIO; 1645 } 1646 if (ret) { | 1640 wait_on_buffer(bh); 1641 if (buffer_write_io_error(bh)) { 1642 clear_buffer_write_io_error(bh); 1643 set_buffer_uptodate(bh); 1644 ret = -EIO; 1645 } 1646 if (ret) { |
1647 printk(KERN_ERR "JBD2: Error %d detected when updating " 1648 "journal superblock for %s.\n", ret, 1649 journal->j_devname); | 1647 printk(KERN_ERR "JBD2: I/O error when updating journal superblock for %s.\n", 1648 journal->j_devname); |
1650 if (!is_journal_aborted(journal)) 1651 jbd2_journal_abort(journal, ret); 1652 } 1653 1654 return ret; 1655} 1656 1657/** --- 1541 unchanged lines hidden --- | 1649 if (!is_journal_aborted(journal)) 1650 jbd2_journal_abort(journal, ret); 1651 } 1652 1653 return ret; 1654} 1655 1656/** --- 1541 unchanged lines hidden --- |