Merge tag 'xfs-for-linus-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc...
[cascardo/linux.git] / fs / xfs / xfs_aops.c
index 458fced..50ab287 100644 (file)
@@ -119,8 +119,7 @@ xfs_setfilesize_trans_alloc(
         * We may pass freeze protection with a transaction.  So tell lockdep
         * we released it.
         */
-       rwsem_release(&ioend->io_inode->i_sb->s_writers.lock_map[SB_FREEZE_FS-1],
-                     1, _THIS_IP_);
+       __sb_writers_release(ioend->io_inode->i_sb, SB_FREEZE_FS);
        /*
         * We hand off the transaction to the completion thread now, so
         * clear the flag here.
@@ -171,8 +170,7 @@ xfs_setfilesize_ioend(
         * Similarly for freeze protection.
         */
        current_set_flags_nested(&tp->t_pflags, PF_FSTRANS);
-       rwsem_acquire_read(&VFS_I(ip)->i_sb->s_writers.lock_map[SB_FREEZE_FS-1],
-                          0, 1, _THIS_IP_);
+       __sb_writers_acquired(VFS_I(ip)->i_sb, SB_FREEZE_FS);
 
        return xfs_setfilesize(ip, tp, ioend->io_offset, ioend->io_size);
 }
@@ -351,13 +349,12 @@ xfs_imap_valid(
  */
 STATIC void
 xfs_end_bio(
-       struct bio              *bio,
-       int                     error)
+       struct bio              *bio)
 {
        xfs_ioend_t             *ioend = bio->bi_private;
 
-       if (!ioend->io_error && !test_bit(BIO_UPTODATE, &bio->bi_flags))
-               ioend->io_error = error;
+       if (!ioend->io_error)
+               ioend->io_error = bio->bi_error;
 
        /* Toss bio and pass work off to an xfsdatad thread */
        bio->bi_private = NULL;
@@ -383,8 +380,7 @@ STATIC struct bio *
 xfs_alloc_ioend_bio(
        struct buffer_head      *bh)
 {
-       int                     nvecs = bio_get_nr_vecs(bh->b_bdev);
-       struct bio              *bio = bio_alloc(GFP_NOIO, nvecs);
+       struct bio              *bio = bio_alloc(GFP_NOIO, BIO_MAX_PAGES);
 
        ASSERT(bio->bi_private == NULL);
        bio->bi_iter.bi_sector = bh->b_blocknr * (bh->b_size >> 9);