Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
213d9417
Commit
213d9417
authored
Jan 06, 2009
by
Jens Axboe
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
block: seperate bio/request unplug and sync bits
Signed-off-by:
Jens Axboe
<
jens.axboe@oracle.com
>
parent
1308835f
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
17 additions
and
8 deletions
+17
-8
block/blk-core.c
block/blk-core.c
+4
-1
include/linux/bio.h
include/linux/bio.h
+11
-7
include/linux/blkdev.h
include/linux/blkdev.h
+2
-0
No files found.
block/blk-core.c
View file @
213d9417
...
@@ -1125,6 +1125,8 @@ void init_request_from_bio(struct request *req, struct bio *bio)
...
@@ -1125,6 +1125,8 @@ void init_request_from_bio(struct request *req, struct bio *bio)
if
(
bio_sync
(
bio
))
if
(
bio_sync
(
bio
))
req
->
cmd_flags
|=
REQ_RW_SYNC
;
req
->
cmd_flags
|=
REQ_RW_SYNC
;
if
(
bio_unplug
(
bio
))
req
->
cmd_flags
|=
REQ_UNPLUG
;
if
(
bio_rw_meta
(
bio
))
if
(
bio_rw_meta
(
bio
))
req
->
cmd_flags
|=
REQ_RW_META
;
req
->
cmd_flags
|=
REQ_RW_META
;
...
@@ -1141,6 +1143,7 @@ static int __make_request(struct request_queue *q, struct bio *bio)
...
@@ -1141,6 +1143,7 @@ static int __make_request(struct request_queue *q, struct bio *bio)
int
el_ret
,
nr_sectors
;
int
el_ret
,
nr_sectors
;
const
unsigned
short
prio
=
bio_prio
(
bio
);
const
unsigned
short
prio
=
bio_prio
(
bio
);
const
int
sync
=
bio_sync
(
bio
);
const
int
sync
=
bio_sync
(
bio
);
const
int
unplug
=
bio_unplug
(
bio
);
int
rw_flags
;
int
rw_flags
;
nr_sectors
=
bio_sectors
(
bio
);
nr_sectors
=
bio_sectors
(
bio
);
...
@@ -1244,7 +1247,7 @@ static int __make_request(struct request_queue *q, struct bio *bio)
...
@@ -1244,7 +1247,7 @@ static int __make_request(struct request_queue *q, struct bio *bio)
blk_plug_device
(
q
);
blk_plug_device
(
q
);
add_request
(
q
,
req
);
add_request
(
q
,
req
);
out:
out:
if
(
sync
||
blk_queue_nonrot
(
q
))
if
(
unplug
||
blk_queue_nonrot
(
q
))
__generic_unplug_device
(
q
);
__generic_unplug_device
(
q
);
spin_unlock_irq
(
q
->
queue_lock
);
spin_unlock_irq
(
q
->
queue_lock
);
return
0
;
return
0
;
...
...
include/linux/bio.h
View file @
213d9417
...
@@ -163,12 +163,15 @@ struct bio {
...
@@ -163,12 +163,15 @@ struct bio {
#define BIO_RW 0
/* Must match RW in req flags (blkdev.h) */
#define BIO_RW 0
/* Must match RW in req flags (blkdev.h) */
#define BIO_RW_AHEAD 1
/* Must match FAILFAST in req flags */
#define BIO_RW_AHEAD 1
/* Must match FAILFAST in req flags */
#define BIO_RW_BARRIER 2
#define BIO_RW_BARRIER 2
#define BIO_RW_SYNC 3
#define BIO_RW_SYNCIO 3
#define BIO_RW_META 4
#define BIO_RW_UNPLUG 4
#define BIO_RW_DISCARD 5
#define BIO_RW_META 5
#define BIO_RW_FAILFAST_DEV 6
#define BIO_RW_DISCARD 6
#define BIO_RW_FAILFAST_TRANSPORT 7
#define BIO_RW_FAILFAST_DEV 7
#define BIO_RW_FAILFAST_DRIVER 8
#define BIO_RW_FAILFAST_TRANSPORT 8
#define BIO_RW_FAILFAST_DRIVER 9
#define BIO_RW_SYNC (BIO_RW_SYNCIO | BIO_RW_UNPLUG)
/*
/*
* upper 16 bits of bi_rw define the io priority of this bio
* upper 16 bits of bi_rw define the io priority of this bio
...
@@ -194,7 +197,8 @@ struct bio {
...
@@ -194,7 +197,8 @@ struct bio {
#define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx)
#define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx)
#define bio_sectors(bio) ((bio)->bi_size >> 9)
#define bio_sectors(bio) ((bio)->bi_size >> 9)
#define bio_barrier(bio) ((bio)->bi_rw & (1 << BIO_RW_BARRIER))
#define bio_barrier(bio) ((bio)->bi_rw & (1 << BIO_RW_BARRIER))
#define bio_sync(bio) ((bio)->bi_rw & (1 << BIO_RW_SYNC))
#define bio_sync(bio) ((bio)->bi_rw & (1 << BIO_RW_SYNCIO))
#define bio_unplug(bio) ((bio)->bi_rw & (1 << BIO_RW_UNPLUG))
#define bio_failfast_dev(bio) ((bio)->bi_rw & (1 << BIO_RW_FAILFAST_DEV))
#define bio_failfast_dev(bio) ((bio)->bi_rw & (1 << BIO_RW_FAILFAST_DEV))
#define bio_failfast_transport(bio) \
#define bio_failfast_transport(bio) \
((bio)->bi_rw & (1 << BIO_RW_FAILFAST_TRANSPORT))
((bio)->bi_rw & (1 << BIO_RW_FAILFAST_TRANSPORT))
...
...
include/linux/blkdev.h
View file @
213d9417
...
@@ -108,6 +108,7 @@ enum rq_flag_bits {
...
@@ -108,6 +108,7 @@ enum rq_flag_bits {
__REQ_RW_META
,
/* metadata io request */
__REQ_RW_META
,
/* metadata io request */
__REQ_COPY_USER
,
/* contains copies of user pages */
__REQ_COPY_USER
,
/* contains copies of user pages */
__REQ_INTEGRITY
,
/* integrity metadata has been remapped */
__REQ_INTEGRITY
,
/* integrity metadata has been remapped */
__REQ_UNPLUG
,
/* unplug queue on submission */
__REQ_NR_BITS
,
/* stops here */
__REQ_NR_BITS
,
/* stops here */
};
};
...
@@ -134,6 +135,7 @@ enum rq_flag_bits {
...
@@ -134,6 +135,7 @@ enum rq_flag_bits {
#define REQ_RW_META (1 << __REQ_RW_META)
#define REQ_RW_META (1 << __REQ_RW_META)
#define REQ_COPY_USER (1 << __REQ_COPY_USER)
#define REQ_COPY_USER (1 << __REQ_COPY_USER)
#define REQ_INTEGRITY (1 << __REQ_INTEGRITY)
#define REQ_INTEGRITY (1 << __REQ_INTEGRITY)
#define REQ_UNPLUG (1 << __REQ_UNPLUG)
#define BLK_MAX_CDB 16
#define BLK_MAX_CDB 16
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment