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 ---