diff options
Diffstat (limited to 'include/linux/blkdev.h')
| -rw-r--r-- | include/linux/blkdev.h | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 669e419d6234..1fd8fdff2f81 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -433,8 +433,6 @@ struct request_queue {  	/*  	 * for flush operations  	 */ -	unsigned int		flush_flags; -	unsigned int		flush_not_queueable:1;  	struct blk_flush_queue	*fq;  	struct list_head	requeue_list; @@ -491,6 +489,9 @@ struct request_queue {  #define QUEUE_FLAG_INIT_DONE   20	/* queue is initialized */  #define QUEUE_FLAG_NO_SG_MERGE 21	/* don't attempt to merge SG segments*/  #define QUEUE_FLAG_POLL	       22	/* IO polling enabled if set */ +#define QUEUE_FLAG_WC	       23	/* Write back caching */ +#define QUEUE_FLAG_FUA	       24	/* device supports FUA writes */ +#define QUEUE_FLAG_FLUSH_NQ    25	/* flush not queueuable */  #define QUEUE_FLAG_DEFAULT	((1 << QUEUE_FLAG_IO_STAT) |		\  				 (1 << QUEUE_FLAG_STACKABLE)	|	\ @@ -779,7 +780,7 @@ extern struct request *blk_make_request(struct request_queue *, struct bio *,  extern void blk_rq_set_block_pc(struct request *);  extern void blk_requeue_request(struct request_queue *, struct request *);  extern void blk_add_request_payload(struct request *rq, struct page *page, -		unsigned int len); +		int offset, unsigned int len);  extern int blk_lld_busy(struct request_queue *q);  extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src,  			     struct bio_set *bs, gfp_t gfp_mask, @@ -1007,8 +1008,8 @@ extern void blk_queue_update_dma_alignment(struct request_queue *, int);  extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *);  extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *);  extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); -extern void blk_queue_flush(struct request_queue *q, unsigned int flush);  extern void blk_queue_flush_queueable(struct request_queue *q, bool queueable); +extern void blk_queue_write_cache(struct request_queue *q, bool enabled, bool fua);  extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev);  extern int blk_rq_map_sg(struct request_queue *, struct request *, struct scatterlist *); @@ -1128,6 +1129,8 @@ static inline struct request *blk_map_queue_find_tag(struct blk_queue_tag *bqt,  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_discard(struct block_device *bdev, sector_t sector, +		sector_t nr_sects, gfp_t gfp_mask, int type, struct bio **biop);  extern int blkdev_issue_write_same(struct block_device *bdev, sector_t sector,  		sector_t nr_sects, gfp_t gfp_mask, struct page *page);  extern int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector, @@ -1363,7 +1366,7 @@ static inline unsigned int block_size(struct block_device *bdev)  static inline bool queue_flush_queueable(struct request_queue *q)  { -	return !q->flush_not_queueable; +	return !test_bit(QUEUE_FLAG_FLUSH_NQ, &q->queue_flags);  }  typedef struct {struct page *v;} Sector;  |