Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
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 @@ get_rq:
...
@@ -1244,7 +1247,7 @@ get_rq:
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