block: fix bad definition of BIO_RW_SYNC
We can't OR shift values, so get rid of BIO_RW_SYNC and use BIO_RW_SYNCIO
and BIO_RW_UNPLUG explicitly. This brings back the behaviour from before
213d9417fe.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
	
	
This commit is contained in:
		
					parent
					
						
							
								c1c201200a
							
						
					
				
			
			
				commit
				
					
						93dbb39350
					
				
			
		
					 9 changed files with 13 additions and 13 deletions
				
			
		| 
						 | 
				
			
			@ -142,7 +142,7 @@ static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes,
 | 
			
		|||
 | 
			
		||||
	what |= ddir_act[rw & WRITE];
 | 
			
		||||
	what |= MASK_TC_BIT(rw, BARRIER);
 | 
			
		||||
	what |= MASK_TC_BIT(rw, SYNC);
 | 
			
		||||
	what |= MASK_TC_BIT(rw, SYNCIO);
 | 
			
		||||
	what |= MASK_TC_BIT(rw, AHEAD);
 | 
			
		||||
	what |= MASK_TC_BIT(rw, META);
 | 
			
		||||
	what |= MASK_TC_BIT(rw, DISCARD);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -328,7 +328,7 @@ static void dispatch_io(int rw, unsigned int num_regions,
 | 
			
		|||
	struct dpages old_pages = *dp;
 | 
			
		||||
 | 
			
		||||
	if (sync)
 | 
			
		||||
		rw |= (1 << BIO_RW_SYNC);
 | 
			
		||||
		rw |= (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG);
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * For multiple regions we need to be careful to rewind
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -344,7 +344,7 @@ static int run_io_job(struct kcopyd_job *job)
 | 
			
		|||
{
 | 
			
		||||
	int r;
 | 
			
		||||
	struct dm_io_request io_req = {
 | 
			
		||||
		.bi_rw = job->rw | (1 << BIO_RW_SYNC),
 | 
			
		||||
		.bi_rw = job->rw | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG),
 | 
			
		||||
		.mem.type = DM_IO_PAGE_LIST,
 | 
			
		||||
		.mem.ptr.pl = job->pages,
 | 
			
		||||
		.mem.offset = job->offset,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -474,7 +474,7 @@ void md_super_write(mddev_t *mddev, mdk_rdev_t *rdev,
 | 
			
		|||
	 * causes ENOTSUPP, we allocate a spare bio...
 | 
			
		||||
	 */
 | 
			
		||||
	struct bio *bio = bio_alloc(GFP_NOIO, 1);
 | 
			
		||||
	int rw = (1<<BIO_RW) | (1<<BIO_RW_SYNC);
 | 
			
		||||
	int rw = (1<<BIO_RW) | (1<<BIO_RW_SYNCIO) | (1<<BIO_RW_UNPLUG);
 | 
			
		||||
 | 
			
		||||
	bio->bi_bdev = rdev->bdev;
 | 
			
		||||
	bio->bi_sector = sector;
 | 
			
		||||
| 
						 | 
				
			
			@ -531,7 +531,7 @@ int sync_page_io(struct block_device *bdev, sector_t sector, int size,
 | 
			
		|||
	struct completion event;
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	rw |= (1 << BIO_RW_SYNC);
 | 
			
		||||
	rw |= (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG);
 | 
			
		||||
 | 
			
		||||
	bio->bi_bdev = bdev;
 | 
			
		||||
	bio->bi_sector = sector;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -171,8 +171,6 @@ struct bio {
 | 
			
		|||
#define BIO_RW_FAILFAST_TRANSPORT	8
 | 
			
		||||
#define BIO_RW_FAILFAST_DRIVER		9
 | 
			
		||||
 | 
			
		||||
#define BIO_RW_SYNC	(BIO_RW_SYNCIO | BIO_RW_UNPLUG)
 | 
			
		||||
 | 
			
		||||
#define bio_rw_flagged(bio, flag)	((bio)->bi_rw & (1 << (flag)))
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,7 @@ enum blktrace_cat {
 | 
			
		|||
	BLK_TC_WRITE	= 1 << 1,	/* writes */
 | 
			
		||||
	BLK_TC_BARRIER	= 1 << 2,	/* barrier */
 | 
			
		||||
	BLK_TC_SYNC	= 1 << 3,	/* sync IO */
 | 
			
		||||
	BLK_TC_SYNCIO	= BLK_TC_SYNC,
 | 
			
		||||
	BLK_TC_QUEUE	= 1 << 4,	/* queueing/merging */
 | 
			
		||||
	BLK_TC_REQUEUE	= 1 << 5,	/* requeueing */
 | 
			
		||||
	BLK_TC_ISSUE	= 1 << 6,	/* issue */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -87,10 +87,10 @@ struct inodes_stat_t {
 | 
			
		|||
#define WRITE 1
 | 
			
		||||
#define READA 2		/* read-ahead  - don't block if no resources */
 | 
			
		||||
#define SWRITE 3	/* for ll_rw_block() - wait for buffer lock */
 | 
			
		||||
#define READ_SYNC	(READ | (1 << BIO_RW_SYNC))
 | 
			
		||||
#define READ_SYNC	(READ | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG))
 | 
			
		||||
#define READ_META	(READ | (1 << BIO_RW_META))
 | 
			
		||||
#define WRITE_SYNC	(WRITE | (1 << BIO_RW_SYNC))
 | 
			
		||||
#define SWRITE_SYNC	(SWRITE | (1 << BIO_RW_SYNC))
 | 
			
		||||
#define WRITE_SYNC	(WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG))
 | 
			
		||||
#define SWRITE_SYNC	(SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG))
 | 
			
		||||
#define WRITE_BARRIER	(WRITE | (1 << BIO_RW_BARRIER))
 | 
			
		||||
#define DISCARD_NOBARRIER (1 << BIO_RW_DISCARD)
 | 
			
		||||
#define DISCARD_BARRIER ((1 << BIO_RW_DISCARD) | (1 << BIO_RW_BARRIER))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,6 +60,7 @@ static struct block_device *resume_bdev;
 | 
			
		|||
static int submit(int rw, pgoff_t page_off, struct page *page,
 | 
			
		||||
			struct bio **bio_chain)
 | 
			
		||||
{
 | 
			
		||||
	const int bio_rw = rw | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG);
 | 
			
		||||
	struct bio *bio;
 | 
			
		||||
 | 
			
		||||
	bio = bio_alloc(__GFP_WAIT | __GFP_HIGH, 1);
 | 
			
		||||
| 
						 | 
				
			
			@ -80,7 +81,7 @@ static int submit(int rw, pgoff_t page_off, struct page *page,
 | 
			
		|||
	bio_get(bio);
 | 
			
		||||
 | 
			
		||||
	if (bio_chain == NULL) {
 | 
			
		||||
		submit_bio(rw | (1 << BIO_RW_SYNC), bio);
 | 
			
		||||
		submit_bio(bio_rw, bio);
 | 
			
		||||
		wait_on_page_locked(page);
 | 
			
		||||
		if (rw == READ)
 | 
			
		||||
			bio_set_pages_dirty(bio);
 | 
			
		||||
| 
						 | 
				
			
			@ -90,7 +91,7 @@ static int submit(int rw, pgoff_t page_off, struct page *page,
 | 
			
		|||
			get_page(page);	/* These pages are freed later */
 | 
			
		||||
		bio->bi_private = *bio_chain;
 | 
			
		||||
		*bio_chain = bio;
 | 
			
		||||
		submit_bio(rw | (1 << BIO_RW_SYNC), bio);
 | 
			
		||||
		submit_bio(bio_rw, bio);
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -111,7 +111,7 @@ int swap_writepage(struct page *page, struct writeback_control *wbc)
 | 
			
		|||
		goto out;
 | 
			
		||||
	}
 | 
			
		||||
	if (wbc->sync_mode == WB_SYNC_ALL)
 | 
			
		||||
		rw |= (1 << BIO_RW_SYNC);
 | 
			
		||||
		rw |= (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG);
 | 
			
		||||
	count_vm_event(PSWPOUT);
 | 
			
		||||
	set_page_writeback(page);
 | 
			
		||||
	unlock_page(page);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue