summaryrefslogtreecommitdiff
path: root/drivers/md/md-linear.c
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2023-07-21 12:49:21 +0300
committerDavid Sterba <dsterba@suse.com>2023-07-26 14:57:47 +0300
commitb28ff3a7d7e97456fd86b68d24caa32e1cfa7064 (patch)
treef342bd3646d8ad51bead09b06e2118f9d20d88d1 /drivers/md/md-linear.c
parentbf7ecbe9875061bf3fce1883e3b26b77f847d1e8 (diff)
downloadlinux-b28ff3a7d7e97456fd86b68d24caa32e1cfa7064.tar.xz
btrfs: check for commit error at btrfs_attach_transaction_barrier()
btrfs_attach_transaction_barrier() is used to get a handle pointing to the current running transaction if the transaction has not started its commit yet (its state is < TRANS_STATE_COMMIT_START). If the transaction commit has started, then we wait for the transaction to commit and finish before returning - however we completely ignore if the transaction was aborted due to some error during its commit, we simply return ERR_PT(-ENOENT), which makes the caller assume everything is fine and no errors happened. This could make an fsync return success (0) to user space when in fact we had a transaction abort and the target inode changes were therefore not persisted. Fix this by checking for the return value from btrfs_wait_for_commit(), and if it returned an error, return it back to the caller. Fixes: d4edf39bd5db ("Btrfs: fix uncompleted transaction") CC: stable@vger.kernel.org # 4.19+ Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'drivers/md/md-linear.c')
0 files changed, 0 insertions, 0 deletions