struct xfs_buftarg      *btp,
        unsigned int            sectorsize)
 {
+       int                     error;
+
        /* Set up metadata sector size info */
        btp->bt_meta_sectorsize = sectorsize;
        btp->bt_meta_sectormask = sectorsize - 1;
 
-       if (set_blocksize(btp->bt_bdev_file, sectorsize)) {
+       error = bdev_validate_blocksize(btp->bt_bdev, sectorsize);
+       if (error) {
                xfs_warn(btp->bt_mount,
-                       "Cannot set_blocksize to %u on device %pg",
-                       sectorsize, btp->bt_bdev);
+                       "Cannot use blocksize %u on device %pg, err %d",
+                       sectorsize, btp->bt_bdev, error);
                return -EINVAL;
        }
 
-       return 0;
+       /*
+        * Flush the block device pagecache so our bios see anything dirtied
+        * before mount.
+        */
+       return sync_blockdev(btp->bt_bdev);
 }
 
 int