Unverified Commit 0c7c8192 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!7446 [sync] PR-6031: nilfs2: fix potential bug in end_buffer_async_write

parents 2590ff90 21504fc6
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1677,7 +1677,6 @@ static void nilfs_segctor_prepare_write(struct nilfs_sc_info *sci)

		list_for_each_entry(bh, &segbuf->sb_payload_buffers,
				    b_assoc_buffers) {
			set_buffer_async_write(bh);
			if (bh == segbuf->sb_super_root) {
				if (bh->b_page != bd_page) {
					lock_page(bd_page);
@@ -1688,6 +1687,7 @@ static void nilfs_segctor_prepare_write(struct nilfs_sc_info *sci)
				}
				break;
			}
			set_buffer_async_write(bh);
			if (bh->b_page != fs_page) {
				nilfs_begin_page_io(fs_page);
				fs_page = bh->b_page;
@@ -1772,7 +1772,6 @@ static void nilfs_abort_logs(struct list_head *logs, int err)

		list_for_each_entry(bh, &segbuf->sb_payload_buffers,
				    b_assoc_buffers) {
			clear_buffer_async_write(bh);
			if (bh == segbuf->sb_super_root) {
				if (bh->b_page != bd_page) {
					end_page_writeback(bd_page);
@@ -1780,6 +1779,7 @@ static void nilfs_abort_logs(struct list_head *logs, int err)
				}
				break;
			}
			clear_buffer_async_write(bh);
			if (bh->b_page != fs_page) {
				nilfs_end_page_io(fs_page, err);
				fs_page = bh->b_page;
@@ -1867,8 +1867,9 @@ static void nilfs_segctor_complete_write(struct nilfs_sc_info *sci)
				 BIT(BH_Delay) | BIT(BH_NILFS_Volatile) |
				 BIT(BH_NILFS_Redirected));

			set_mask_bits(&bh->b_state, clear_bits, set_bits);
			if (bh == segbuf->sb_super_root) {
				set_buffer_uptodate(bh);
				clear_buffer_dirty(bh);
				if (bh->b_page != bd_page) {
					end_page_writeback(bd_page);
					bd_page = bh->b_page;
@@ -1876,6 +1877,7 @@ static void nilfs_segctor_complete_write(struct nilfs_sc_info *sci)
				update_sr = true;
				break;
			}
			set_mask_bits(&bh->b_state, clear_bits, set_bits);
			if (bh->b_page != fs_page) {
				nilfs_end_page_io(fs_page, 0);
				fs_page = bh->b_page;