* @bdev:      blockdev to issue flush for
  * @gfp_mask:  memory allocation flags (for bio_alloc)
  * @error_sector:      error sector
- * @flags:     BLKDEV_IFL_* flags to control behaviour
  *
  * Description:
  *    Issue a flush for the block device in question. Caller can supply
  *    request was pushed in some internal queue for later handling.
  */
 int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask,
-               sector_t *error_sector, unsigned long flags)
+               sector_t *error_sector)
 {
        DECLARE_COMPLETION_ONSTACK(wait);
        struct request_queue *q;
        bio = bio_alloc(gfp_mask, 0);
        bio->bi_end_io = bio_end_flush;
        bio->bi_bdev = bdev;
-       if (test_bit(BLKDEV_WAIT, &flags))
-               bio->bi_private = &wait;
+       bio->bi_private = &wait;
 
        bio_get(bio);
        submit_bio(WRITE_FLUSH, bio);
-       if (test_bit(BLKDEV_WAIT, &flags)) {
-               wait_for_completion(&wait);
-               /*
-                * The driver must store the error location in ->bi_sector, if
-                * it supports it. For non-stacked drivers, this should be
-                * copied from blk_rq_pos(rq).
-                */
-               if (error_sector)
-                       *error_sector = bio->bi_sector;
-       }
+       wait_for_completion(&wait);
+
+       /*
+        * The driver must store the error location in ->bi_sector, if
+        * it supports it. For non-stacked drivers, this should be
+        * copied from blk_rq_pos(rq).
+        */
+       if (error_sector)
+               *error_sector = bio->bi_sector;
 
        if (!bio_flagged(bio, BIO_UPTODATE))
                ret = -EIO;
 
                max_discard_sectors &= ~(disc_sects - 1);
        }
 
-       if (flags & BLKDEV_IFL_SECURE) {
+       if (flags & BLKDEV_DISCARD_SECURE) {
                if (!blk_queue_secdiscard(q))
                        return -EOPNOTSUPP;
                type |= REQ_SECURE;
                bio->bi_sector = sector;
                bio->bi_end_io = blkdev_discard_end_io;
                bio->bi_bdev = bdev;
-               if (flags & BLKDEV_IFL_WAIT)
-                       bio->bi_private = &wait;
+               bio->bi_private = &wait;
 
                if (nr_sects > max_discard_sectors) {
                        bio->bi_size = max_discard_sectors << 9;
                bio_get(bio);
                submit_bio(type, bio);
 
-               if (flags & BLKDEV_IFL_WAIT)
-                       wait_for_completion(&wait);
+               wait_for_completion(&wait);
 
                if (bio_flagged(bio, BIO_EOPNOTSUPP))
                        ret = -EOPNOTSUPP;
  * @sector:    start sector
  * @nr_sects:  number of sectors to write
  * @gfp_mask:  memory allocation flags (for bio_alloc)
- * @flags:     BLKDEV_IFL_* flags to control behaviour
  *
  * Description:
  *  Generate and issue number of bios with zerofiled pages.
  */
 
 int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector,
-                       sector_t nr_sects, gfp_t gfp_mask, unsigned long flags)
+                       sector_t nr_sects, gfp_t gfp_mask)
 {
        int ret;
        struct bio *bio;
                bio->bi_sector = sector;
                bio->bi_bdev   = bdev;
                bio->bi_end_io = bio_batch_end_io;
-               if (flags & BLKDEV_IFL_WAIT)
-                       bio->bi_private = &bb;
+               bio->bi_private = &bb;
 
                while (nr_sects != 0) {
                        sz = min((sector_t) PAGE_SIZE >> 9 , nr_sects);
                submit_bio(WRITE, bio);
        }
 
-       if (flags & BLKDEV_IFL_WAIT)
-               /* Wait for bios in-flight */
-               while ( issued != atomic_read(&bb.done))
-                       wait_for_completion(&wait);
+       /* Wait for bios in-flight */
+       while (issued != atomic_read(&bb.done))
+               wait_for_completion(&wait);
 
        if (!test_bit(BIO_UPTODATE, &bb.flags))
                /* One of bios in the batch was completed with error.*/
 
 static int blk_ioctl_discard(struct block_device *bdev, uint64_t start,
                             uint64_t len, int secure)
 {
-       unsigned long flags = BLKDEV_IFL_WAIT;
+       unsigned long flags = 0;
 
        if (start & 511)
                return -EINVAL;
        if (start + len > (bdev->bd_inode->i_size >> 9))
                return -EINVAL;
        if (secure)
-               flags |= BLKDEV_IFL_SECURE;
+               flags |= BLKDEV_DISCARD_SECURE;
        return blkdev_issue_discard(bdev, start, len, GFP_KERNEL, flags);
 }
 
 
        if (test_bit(MD_NO_BARRIER, &mdev->flags))
                return;
 
-       r = blkdev_issue_flush(mdev->ldev->md_bdev, GFP_KERNEL, NULL,
-                       BLKDEV_IFL_WAIT);
+       r = blkdev_issue_flush(mdev->ldev->md_bdev, GFP_KERNEL, NULL);
        if (r) {
                set_bit(MD_NO_BARRIER, &mdev->flags);
                dev_err(DEV, "meta data flush failed with status %d, disabling md-flushes\n", r);
 
 
        if (mdev->write_ordering >= WO_bdev_flush && get_ldev(mdev)) {
                rv = blkdev_issue_flush(mdev->ldev->backing_bdev, GFP_KERNEL,
-                                       NULL, BLKDEV_IFL_WAIT);
+                                       NULL);
                if (rv) {
                        dev_err(DEV, "local disk flush failed with status %d\n", rv);
                        /* would rather check on EOPNOTSUPP, but that is not reliable.
 
         */
        mutex_unlock(&bd_inode->i_mutex);
 
-       error = blkdev_issue_flush(bdev, GFP_KERNEL, NULL, BLKDEV_IFL_WAIT);
+       error = blkdev_issue_flush(bdev, GFP_KERNEL, NULL);
        if (error == -EOPNOTSUPP)
                error = 0;
 
 
 static void btrfs_issue_discard(struct block_device *bdev,
                                u64 start, u64 len)
 {
-       blkdev_issue_discard(bdev, start >> 9, len >> 9, GFP_KERNEL,
-                       BLKDEV_IFL_WAIT);
+       blkdev_issue_discard(bdev, start >> 9, len >> 9, GFP_KERNEL, 0);
 }
 
 static int btrfs_discard_extent(struct btrfs_root *root, u64 bytenr,
 
         * storage
         */
        if (needs_barrier)
-               blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL,
-                               BLKDEV_IFL_WAIT);
+               blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
        return ret;
 }
 
                    (journal->j_fs_dev != journal->j_dev) &&
                    (journal->j_flags & JBD2_BARRIER))
                        blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL,
-                                       NULL, BLKDEV_IFL_WAIT);
+                                       NULL);
                ret = jbd2_log_wait_commit(journal, commit_tid);
        } else if (journal->j_flags & JBD2_BARRIER)
-               blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL,
-                       BLKDEV_IFL_WAIT);
+               blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
        return ret;
 }
 
        discard_block = block + ext4_group_first_block_no(sb, block_group);
        trace_ext4_discard_blocks(sb,
                        (unsigned long long) discard_block, count);
-       ret = sb_issue_discard(sb, discard_block, count, GFP_NOFS,
-                              BLKDEV_IFL_WAIT);
+       ret = sb_issue_discard(sb, discard_block, count, GFP_NOFS, 0);
        if (ret == EOPNOTSUPP) {
                ext4_warning(sb, "discard not supported, disabling");
                clear_opt(EXT4_SB(sb)->s_mount_opt, DISCARD);
 
                                sb_issue_discard(sb,
                                        fat_clus_to_blknr(sbi, first_cl),
                                        nr_clus * sbi->sec_per_clus,
-                                       GFP_NOFS,
-                                       BLKDEV_IFL_WAIT);
+                                       GFP_NOFS, 0);
 
                                first_cl = cluster;
                        }
 
                                if ((start + nr_sects) != blk) {
                                        rv = blkdev_issue_discard(bdev, start,
                                                            nr_sects, GFP_NOFS,
-                                                           BLKDEV_IFL_WAIT);
+                                                           0);
                                        if (rv)
                                                goto fail;
                                        nr_sects = 0;
                }
        }
        if (nr_sects) {
-               rv = blkdev_issue_discard(bdev, start, nr_sects, GFP_NOFS,
-                                        BLKDEV_IFL_WAIT);
+               rv = blkdev_issue_discard(bdev, start, nr_sects, GFP_NOFS, 0);
                if (rv)
                        goto fail;
        }
 
         */
        if ((journal->j_fs_dev != journal->j_dev) &&
            (journal->j_flags & JBD2_BARRIER))
-               blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL,
-                       BLKDEV_IFL_WAIT);
+               blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL);
        if (!(journal->j_flags & JBD2_ABORT))
                jbd2_journal_update_superblock(journal, 1);
        return 0;
 
        if (commit_transaction->t_flushed_data_blocks &&
            (journal->j_fs_dev != journal->j_dev) &&
            (journal->j_flags & JBD2_BARRIER))
-               blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL,
-                       BLKDEV_IFL_WAIT);
+               blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL);
 
        /* Done it all: now write the commit record asynchronously. */
        if (JBD2_HAS_INCOMPAT_FEATURE(journal,
        if (JBD2_HAS_INCOMPAT_FEATURE(journal,
                                      JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT) &&
            journal->j_flags & JBD2_BARRIER) {
-               blkdev_issue_flush(journal->j_dev, GFP_KERNEL, NULL,
-                                  BLKDEV_IFL_WAIT);
+               blkdev_issue_flush(journal->j_dev, GFP_KERNEL, NULL);
        }
 
        if (err)
 
                        ret = blkdev_issue_discard(nilfs->ns_bdev,
                                                   start * sects_per_block,
                                                   nblocks * sects_per_block,
-                                                  GFP_NOFS, BLKDEV_IFL_WAIT);
+                                                  GFP_NOFS, 0);
                        if (ret < 0)
                                return ret;
                        nblocks = 0;
                ret = blkdev_issue_discard(nilfs->ns_bdev,
                                           start * sects_per_block,
                                           nblocks * sects_per_block,
-                                          GFP_NOFS, BLKDEV_IFL_WAIT);
+                                          GFP_NOFS, 0);
        return ret;
 }
 
 
        barrier_done = reiserfs_commit_for_inode(inode);
        reiserfs_write_unlock(inode->i_sb);
        if (barrier_done != 1 && reiserfs_barrier_flush(inode->i_sb))
-               blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL, 
-                       BLKDEV_IFL_WAIT);
+               blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
        if (barrier_done < 0)
                return barrier_done;
        return (err < 0) ? -EIO : 0;
 
 xfs_blkdev_issue_flush(
        xfs_buftarg_t           *buftarg)
 {
-       blkdev_issue_flush(buftarg->bt_bdev, GFP_KERNEL, NULL,
-                       BLKDEV_IFL_WAIT);
+       blkdev_issue_flush(buftarg->bt_bdev, GFP_KERNEL, NULL);
 }
 
 STATIC void
 
                return NULL;
        return bqt->tag_index[tag];
 }
-enum{
-       BLKDEV_WAIT,    /* wait for completion */
-       BLKDEV_SECURE,  /* secure discard */
-};
-#define BLKDEV_IFL_WAIT                (1 << BLKDEV_WAIT)
-#define BLKDEV_IFL_SECURE      (1 << BLKDEV_SECURE)
-extern int blkdev_issue_flush(struct block_device *, gfp_t, sector_t *,
-                       unsigned long);
+
+#define BLKDEV_DISCARD_SECURE  0x01    /* secure discard */
+
+extern int blkdev_issue_flush(struct block_device *, gfp_t, sector_t *);
 extern int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
                sector_t nr_sects, gfp_t gfp_mask, unsigned long flags);
 extern int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector,
-                       sector_t nr_sects, gfp_t gfp_mask, unsigned long flags);
+                       sector_t nr_sects, gfp_t gfp_mask);
 static inline int sb_issue_discard(struct super_block *sb, sector_t block,
                sector_t nr_blocks, gfp_t gfp_mask, unsigned long flags)
 {
 
        nr_blocks = ((sector_t)se->nr_pages - 1) << (PAGE_SHIFT - 9);
        if (nr_blocks) {
                err = blkdev_issue_discard(si->bdev, start_block,
-                               nr_blocks, GFP_KERNEL, BLKDEV_IFL_WAIT);
+                               nr_blocks, GFP_KERNEL, 0);
                if (err)
                        return err;
                cond_resched();
                nr_blocks = (sector_t)se->nr_pages << (PAGE_SHIFT - 9);
 
                err = blkdev_issue_discard(si->bdev, start_block,
-                               nr_blocks, GFP_KERNEL, BLKDEV_IFL_WAIT);
+                               nr_blocks, GFP_KERNEL, 0);
                if (err)
                        break;
 
                        start_block <<= PAGE_SHIFT - 9;
                        nr_blocks <<= PAGE_SHIFT - 9;
                        if (blkdev_issue_discard(si->bdev, start_block,
-                                   nr_blocks, GFP_NOIO, BLKDEV_IFL_WAIT))
+                                   nr_blocks, GFP_NOIO, 0))
                                break;
                }