Merge tag 'v3.13-rc6' into for-3.14/core
Needed to bring blk-mq uptodate, since changes have been going in since for-3.14/core was established. Fixup merge issues related to the immutable biovec changes. Signed-off-by: Jens Axboe <axboe@kernel.dk> Conflicts: block/blk-flush.c fs/btrfs/check-integrity.c fs/btrfs/extent_io.c fs/btrfs/scrub.c fs/logfs/dev_bdev.c
This commit is contained in:
@@ -698,7 +698,11 @@ xfs_buf_read_uncached(
|
||||
bp->b_flags |= XBF_READ;
|
||||
bp->b_ops = ops;
|
||||
|
||||
xfsbdstrat(target->bt_mount, bp);
|
||||
if (XFS_FORCED_SHUTDOWN(target->bt_mount)) {
|
||||
xfs_buf_relse(bp);
|
||||
return NULL;
|
||||
}
|
||||
xfs_buf_iorequest(bp);
|
||||
xfs_buf_iowait(bp);
|
||||
return bp;
|
||||
}
|
||||
@@ -1089,7 +1093,7 @@ xfs_bioerror(
|
||||
* This is meant for userdata errors; metadata bufs come with
|
||||
* iodone functions attached, so that we can track down errors.
|
||||
*/
|
||||
STATIC int
|
||||
int
|
||||
xfs_bioerror_relse(
|
||||
struct xfs_buf *bp)
|
||||
{
|
||||
@@ -1152,7 +1156,7 @@ xfs_bwrite(
|
||||
ASSERT(xfs_buf_islocked(bp));
|
||||
|
||||
bp->b_flags |= XBF_WRITE;
|
||||
bp->b_flags &= ~(XBF_ASYNC | XBF_READ | _XBF_DELWRI_Q);
|
||||
bp->b_flags &= ~(XBF_ASYNC | XBF_READ | _XBF_DELWRI_Q | XBF_WRITE_FAIL);
|
||||
|
||||
xfs_bdstrat_cb(bp);
|
||||
|
||||
@@ -1164,25 +1168,6 @@ xfs_bwrite(
|
||||
return error;
|
||||
}
|
||||
|
||||
/*
|
||||
* Wrapper around bdstrat so that we can stop data from going to disk in case
|
||||
* we are shutting down the filesystem. Typically user data goes thru this
|
||||
* path; one of the exceptions is the superblock.
|
||||
*/
|
||||
void
|
||||
xfsbdstrat(
|
||||
struct xfs_mount *mp,
|
||||
struct xfs_buf *bp)
|
||||
{
|
||||
if (XFS_FORCED_SHUTDOWN(mp)) {
|
||||
trace_xfs_bdstrat_shut(bp, _RET_IP_);
|
||||
xfs_bioerror_relse(bp);
|
||||
return;
|
||||
}
|
||||
|
||||
xfs_buf_iorequest(bp);
|
||||
}
|
||||
|
||||
STATIC void
|
||||
_xfs_buf_ioend(
|
||||
xfs_buf_t *bp,
|
||||
@@ -1516,6 +1501,12 @@ xfs_wait_buftarg(
|
||||
struct xfs_buf *bp;
|
||||
bp = list_first_entry(&dispose, struct xfs_buf, b_lru);
|
||||
list_del_init(&bp->b_lru);
|
||||
if (bp->b_flags & XBF_WRITE_FAIL) {
|
||||
xfs_alert(btp->bt_mount,
|
||||
"Corruption Alert: Buffer at block 0x%llx had permanent write failures!\n"
|
||||
"Please run xfs_repair to determine the extent of the problem.",
|
||||
(long long)bp->b_bn);
|
||||
}
|
||||
xfs_buf_rele(bp);
|
||||
}
|
||||
if (loop++ != 0)
|
||||
@@ -1799,7 +1790,7 @@ __xfs_buf_delwri_submit(
|
||||
|
||||
blk_start_plug(&plug);
|
||||
list_for_each_entry_safe(bp, n, io_list, b_list) {
|
||||
bp->b_flags &= ~(_XBF_DELWRI_Q | XBF_ASYNC);
|
||||
bp->b_flags &= ~(_XBF_DELWRI_Q | XBF_ASYNC | XBF_WRITE_FAIL);
|
||||
bp->b_flags |= XBF_WRITE;
|
||||
|
||||
if (!wait) {
|
||||
|
Reference in New Issue
Block a user