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
c30f3343
Commit
c30f3343
authored
Oct 13, 2009
by
Jens Axboe
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-linus' into for-2.6.33
parents
132cc538
2ec24ff1
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
228 additions
and
201 deletions
+228
-201
block/blk-core.c
block/blk-core.c
+4
-12
block/blk-merge.c
block/blk-merge.c
+1
-1
block/blk-settings.c
block/blk-settings.c
+1
-1
block/blk-tag.c
block/blk-tag.c
+1
-1
block/cfq-iosched.c
block/cfq-iosched.c
+142
-117
block/elevator.c
block/elevator.c
+1
-3
block/genhd.c
block/genhd.c
+3
-1
drivers/block/cciss.c
drivers/block/cciss.c
+37
-42
drivers/md/dm.c
drivers/md/dm.c
+10
-6
fs/partitions/check.c
fs/partitions/check.c
+11
-1
include/linux/blkdev.h
include/linux/blkdev.h
+0
-4
include/linux/genhd.h
include/linux/genhd.h
+14
-7
kernel/sched.c
kernel/sched.c
+0
-3
mm/backing-dev.c
mm/backing-dev.c
+1
-1
mm/page-writeback.c
mm/page-writeback.c
+2
-1
No files found.
block/blk-core.c
View file @
c30f3343
...
...
@@ -70,7 +70,7 @@ static void drive_stat_acct(struct request *rq, int new_io)
part_stat_inc
(
cpu
,
part
,
merges
[
rw
]);
else
{
part_round_stats
(
cpu
,
part
);
part_inc_in_flight
(
part
);
part_inc_in_flight
(
part
,
rw
);
}
part_stat_unlock
();
...
...
@@ -1030,9 +1030,9 @@ static void part_round_stats_single(int cpu, struct hd_struct *part,
if
(
now
==
part
->
stamp
)
return
;
if
(
part
->
in_flight
)
{
if
(
part
_in_flight
(
part
)
)
{
__part_stat_add
(
cpu
,
part
,
time_in_queue
,
part
->
in_flight
*
(
now
-
part
->
stamp
));
part
_in_flight
(
part
)
*
(
now
-
part
->
stamp
));
__part_stat_add
(
cpu
,
part
,
io_ticks
,
(
now
-
part
->
stamp
));
}
part
->
stamp
=
now
;
...
...
@@ -1739,7 +1739,7 @@ static void blk_account_io_done(struct request *req)
part_stat_inc
(
cpu
,
part
,
ios
[
rw
]);
part_stat_add
(
cpu
,
part
,
ticks
[
rw
],
duration
);
part_round_stats
(
cpu
,
part
);
part_dec_in_flight
(
part
);
part_dec_in_flight
(
part
,
rw
);
part_stat_unlock
();
}
...
...
@@ -2492,14 +2492,6 @@ int kblockd_schedule_work(struct request_queue *q, struct work_struct *work)
}
EXPORT_SYMBOL
(
kblockd_schedule_work
);
int
kblockd_schedule_delayed_work
(
struct
request_queue
*
q
,
struct
delayed_work
*
work
,
unsigned
long
delay
)
{
return
queue_delayed_work
(
kblockd_workqueue
,
work
,
delay
);
}
EXPORT_SYMBOL
(
kblockd_schedule_delayed_work
);
int
__init
blk_dev_init
(
void
)
{
BUILD_BUG_ON
(
__REQ_NR_BITS
>
8
*
...
...
block/blk-merge.c
View file @
c30f3343
...
...
@@ -351,7 +351,7 @@ static void blk_account_io_merge(struct request *req)
part
=
disk_map_sector_rcu
(
req
->
rq_disk
,
blk_rq_pos
(
req
));
part_round_stats
(
cpu
,
part
);
part_dec_in_flight
(
part
);
part_dec_in_flight
(
part
,
rq_data_dir
(
req
)
);
part_stat_unlock
();
}
...
...
block/blk-settings.c
View file @
c30f3343
...
...
@@ -242,7 +242,7 @@ EXPORT_SYMBOL(blk_queue_max_hw_sectors);
/**
* blk_queue_max_discard_sectors - set max sectors for a single discard
* @q: the request queue for the device
* @max_discard: maximum number of sectors to discard
* @max_discard
_sectors
: maximum number of sectors to discard
**/
void
blk_queue_max_discard_sectors
(
struct
request_queue
*
q
,
unsigned
int
max_discard_sectors
)
...
...
block/blk-tag.c
View file @
c30f3343
...
...
@@ -359,7 +359,7 @@ int blk_queue_start_tag(struct request_queue *q, struct request *rq)
max_depth
-=
2
;
if
(
!
max_depth
)
max_depth
=
1
;
if
(
q
->
in_flight
[
0
]
>
max_depth
)
if
(
q
->
in_flight
[
BLK_RW_ASYNC
]
>
max_depth
)
return
1
;
}
...
...
block/cfq-iosched.c
View file @
c30f3343
This diff is collapsed.
Click to expand it.
block/elevator.c
View file @
c30f3343
...
...
@@ -1053,9 +1053,7 @@ ssize_t elv_iosched_store(struct request_queue *q, const char *name,
return
count
;
strlcpy
(
elevator_name
,
name
,
sizeof
(
elevator_name
));
strstrip
(
elevator_name
);
e
=
elevator_get
(
elevator_name
);
e
=
elevator_get
(
strstrip
(
elevator_name
));
if
(
!
e
)
{
printk
(
KERN_ERR
"elevator: type %s not found
\n
"
,
elevator_name
);
return
-
EINVAL
;
...
...
block/genhd.c
View file @
c30f3343
...
...
@@ -869,6 +869,7 @@ static DEVICE_ATTR(size, S_IRUGO, part_size_show, NULL);
static
DEVICE_ATTR
(
alignment_offset
,
S_IRUGO
,
disk_alignment_offset_show
,
NULL
);
static
DEVICE_ATTR
(
capability
,
S_IRUGO
,
disk_capability_show
,
NULL
);
static
DEVICE_ATTR
(
stat
,
S_IRUGO
,
part_stat_show
,
NULL
);
static
DEVICE_ATTR
(
inflight
,
S_IRUGO
,
part_inflight_show
,
NULL
);
#ifdef CONFIG_FAIL_MAKE_REQUEST
static
struct
device_attribute
dev_attr_fail
=
__ATTR
(
make
-
it
-
fail
,
S_IRUGO
|
S_IWUSR
,
part_fail_show
,
part_fail_store
);
...
...
@@ -888,6 +889,7 @@ static struct attribute *disk_attrs[] = {
&
dev_attr_alignment_offset
.
attr
,
&
dev_attr_capability
.
attr
,
&
dev_attr_stat
.
attr
,
&
dev_attr_inflight
.
attr
,
#ifdef CONFIG_FAIL_MAKE_REQUEST
&
dev_attr_fail
.
attr
,
#endif
...
...
@@ -1053,7 +1055,7 @@ static int diskstats_show(struct seq_file *seqf, void *v)
part_stat_read
(
hd
,
merges
[
1
]),
(
unsigned
long
long
)
part_stat_read
(
hd
,
sectors
[
1
]),
jiffies_to_msecs
(
part_stat_read
(
hd
,
ticks
[
1
])),
hd
->
in_flight
,
part_in_flight
(
hd
)
,
jiffies_to_msecs
(
part_stat_read
(
hd
,
io_ticks
)),
jiffies_to_msecs
(
part_stat_read
(
hd
,
time_in_queue
))
);
...
...
drivers/block/cciss.c
View file @
c30f3343
...
...
@@ -68,6 +68,12 @@ MODULE_SUPPORTED_DEVICE("HP SA5i SA5i+ SA532 SA5300 SA5312 SA641 SA642 SA6400"
MODULE_VERSION
(
"3.6.20"
);
MODULE_LICENSE
(
"GPL"
);
static
int
cciss_allow_hpsa
;
module_param
(
cciss_allow_hpsa
,
int
,
S_IRUGO
|
S_IWUSR
);
MODULE_PARM_DESC
(
cciss_allow_hpsa
,
"Prevent cciss driver from accessing hardware known to be "
" supported by the hpsa driver"
);
#include "cciss_cmd.h"
#include "cciss.h"
#include <linux/cciss_ioctl.h>
...
...
@@ -101,8 +107,6 @@ static const struct pci_device_id cciss_pci_device_id[] = {
{
PCI_VENDOR_ID_HP
,
PCI_DEVICE_ID_HP_CISSE
,
0x103C
,
0x3249
},
{
PCI_VENDOR_ID_HP
,
PCI_DEVICE_ID_HP_CISSE
,
0x103C
,
0x324A
},
{
PCI_VENDOR_ID_HP
,
PCI_DEVICE_ID_HP_CISSE
,
0x103C
,
0x324B
},
{
PCI_VENDOR_ID_HP
,
PCI_ANY_ID
,
PCI_ANY_ID
,
PCI_ANY_ID
,
PCI_CLASS_STORAGE_RAID
<<
8
,
0xffff
<<
8
,
0
},
{
0
,}
};
...
...
@@ -123,8 +127,6 @@ static struct board_type products[] = {
{
0x409D0E11
,
"Smart Array 6400 EM"
,
&
SA5_access
},
{
0x40910E11
,
"Smart Array 6i"
,
&
SA5_access
},
{
0x3225103C
,
"Smart Array P600"
,
&
SA5_access
},
{
0x3223103C
,
"Smart Array P800"
,
&
SA5_access
},
{
0x3234103C
,
"Smart Array P400"
,
&
SA5_access
},
{
0x3235103C
,
"Smart Array P400i"
,
&
SA5_access
},
{
0x3211103C
,
"Smart Array E200i"
,
&
SA5_access
},
{
0x3212103C
,
"Smart Array E200"
,
&
SA5_access
},
...
...
@@ -132,6 +134,10 @@ static struct board_type products[] = {
{
0x3214103C
,
"Smart Array E200i"
,
&
SA5_access
},
{
0x3215103C
,
"Smart Array E200i"
,
&
SA5_access
},
{
0x3237103C
,
"Smart Array E500"
,
&
SA5_access
},
/* controllers below this line are also supported by the hpsa driver. */
#define HPSA_BOUNDARY 0x3223103C
{
0x3223103C
,
"Smart Array P800"
,
&
SA5_access
},
{
0x3234103C
,
"Smart Array P400"
,
&
SA5_access
},
{
0x323D103C
,
"Smart Array P700m"
,
&
SA5_access
},
{
0x3241103C
,
"Smart Array P212"
,
&
SA5_access
},
{
0x3243103C
,
"Smart Array P410"
,
&
SA5_access
},
...
...
@@ -140,7 +146,6 @@ static struct board_type products[] = {
{
0x3249103C
,
"Smart Array P812"
,
&
SA5_access
},
{
0x324A103C
,
"Smart Array P712m"
,
&
SA5_access
},
{
0x324B103C
,
"Smart Array P711m"
,
&
SA5_access
},
{
0xFFFF103C
,
"Unknown Smart Array"
,
&
SA5_access
},
};
/* How long to wait (in milliseconds) for board to go into simple mode */
...
...
@@ -3754,7 +3759,27 @@ static int __devinit cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
__u64
cfg_offset
;
__u32
cfg_base_addr
;
__u64
cfg_base_addr_index
;
int
i
,
err
;
int
i
,
prod_index
,
err
;
subsystem_vendor_id
=
pdev
->
subsystem_vendor
;
subsystem_device_id
=
pdev
->
subsystem_device
;
board_id
=
(((
__u32
)
(
subsystem_device_id
<<
16
)
&
0xffff0000
)
|
subsystem_vendor_id
);
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
products
);
i
++
)
{
/* Stand aside for hpsa driver on request */
if
(
cciss_allow_hpsa
&&
products
[
i
].
board_id
==
HPSA_BOUNDARY
)
return
-
ENODEV
;
if
(
board_id
==
products
[
i
].
board_id
)
break
;
}
prod_index
=
i
;
if
(
prod_index
==
ARRAY_SIZE
(
products
))
{
dev_warn
(
&
pdev
->
dev
,
"unrecognized board ID: 0x%08lx, ignoring.
\n
"
,
(
unsigned
long
)
board_id
);
return
-
ENODEV
;
}
/* check to see if controller has been disabled */
/* BEFORE trying to enable it */
...
...
@@ -3778,11 +3803,6 @@ static int __devinit cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
return
err
;
}
subsystem_vendor_id
=
pdev
->
subsystem_vendor
;
subsystem_device_id
=
pdev
->
subsystem_device
;
board_id
=
(((
__u32
)
(
subsystem_device_id
<<
16
)
&
0xffff0000
)
|
subsystem_vendor_id
);
#ifdef CCISS_DEBUG
printk
(
"command = %x
\n
"
,
command
);
printk
(
"irq = %x
\n
"
,
pdev
->
irq
);
...
...
@@ -3868,14 +3888,9 @@ static int __devinit cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
* leave a little room for ioctl calls.
*/
c
->
max_commands
=
readl
(
&
(
c
->
cfgtable
->
CmdsOutMax
));
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
products
);
i
++
)
{
if
(
board_id
==
products
[
i
].
board_id
)
{
c
->
product_name
=
products
[
i
].
product_name
;
c
->
access
=
*
(
products
[
i
].
access
);
c
->
nr_cmds
=
c
->
max_commands
-
4
;
break
;
}
}
c
->
product_name
=
products
[
prod_index
].
product_name
;
c
->
access
=
*
(
products
[
prod_index
].
access
);
c
->
nr_cmds
=
c
->
max_commands
-
4
;
if
((
readb
(
&
c
->
cfgtable
->
Signature
[
0
])
!=
'C'
)
||
(
readb
(
&
c
->
cfgtable
->
Signature
[
1
])
!=
'I'
)
||
(
readb
(
&
c
->
cfgtable
->
Signature
[
2
])
!=
'S'
)
||
...
...
@@ -3884,27 +3899,6 @@ static int __devinit cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
err
=
-
ENODEV
;
goto
err_out_free_res
;
}
/* We didn't find the controller in our list. We know the
* signature is valid. If it's an HP device let's try to
* bind to the device and fire it up. Otherwise we bail.
*/
if
(
i
==
ARRAY_SIZE
(
products
))
{
if
(
subsystem_vendor_id
==
PCI_VENDOR_ID_HP
)
{
c
->
product_name
=
products
[
i
-
1
].
product_name
;
c
->
access
=
*
(
products
[
i
-
1
].
access
);
c
->
nr_cmds
=
c
->
max_commands
-
4
;
printk
(
KERN_WARNING
"cciss: This is an unknown "
"Smart Array controller.
\n
"
"cciss: Please update to the latest driver "
"available from www.hp.com.
\n
"
);
}
else
{
printk
(
KERN_WARNING
"cciss: Sorry, I don't know how"
" to access the Smart Array controller %08lx
\n
"
,
(
unsigned
long
)
board_id
);
err
=
-
ENODEV
;
goto
err_out_free_res
;
}
}
#ifdef CONFIG_X86
{
/* Need to enable prefetch in the SCSI core for 6400 in x86 */
...
...
@@ -4254,7 +4248,7 @@ static int __devinit cciss_init_one(struct pci_dev *pdev,
mutex_init
(
&
hba
[
i
]
->
busy_shutting_down
);
if
(
cciss_pci_init
(
hba
[
i
],
pdev
)
!=
0
)
goto
clean
0
;
goto
clean
_no_release_regions
;
sprintf
(
hba
[
i
]
->
devname
,
"cciss%d"
,
i
);
hba
[
i
]
->
ctlr
=
i
;
...
...
@@ -4391,13 +4385,14 @@ clean2:
clean1:
cciss_destroy_hba_sysfs_entry
(
hba
[
i
]);
clean0:
pci_release_regions
(
pdev
);
clean_no_release_regions:
hba
[
i
]
->
busy_initializing
=
0
;
/*
* Deliberately omit pci_disable_device(): it does something nasty to
* Smart Array controllers that pci_enable_device does not undo
*/
pci_release_regions
(
pdev
);
pci_set_drvdata
(
pdev
,
NULL
);
free_hba
(
i
);
return
-
1
;
...
...
drivers/md/dm.c
View file @
c30f3343
...
...
@@ -130,7 +130,7 @@ struct mapped_device {
/*
* A list of ios that arrived while we were suspended.
*/
atomic_t
pending
;
atomic_t
pending
[
2
]
;
wait_queue_head_t
wait
;
struct
work_struct
work
;
struct
bio_list
deferred
;
...
...
@@ -453,13 +453,14 @@ static void start_io_acct(struct dm_io *io)
{
struct
mapped_device
*
md
=
io
->
md
;
int
cpu
;
int
rw
=
bio_data_dir
(
io
->
bio
);
io
->
start_time
=
jiffies
;
cpu
=
part_stat_lock
();
part_round_stats
(
cpu
,
&
dm_disk
(
md
)
->
part0
);
part_stat_unlock
();
dm_disk
(
md
)
->
part0
.
in_flight
=
atomic_inc_return
(
&
md
->
pending
);
dm_disk
(
md
)
->
part0
.
in_flight
[
rw
]
=
atomic_inc_return
(
&
md
->
pending
[
rw
]
);
}
static
void
end_io_acct
(
struct
dm_io
*
io
)
...
...
@@ -479,8 +480,9 @@ static void end_io_acct(struct dm_io *io)
* After this is decremented the bio must not be touched if it is
* a barrier.
*/
dm_disk
(
md
)
->
part0
.
in_flight
=
pending
=
atomic_dec_return
(
&
md
->
pending
);
dm_disk
(
md
)
->
part0
.
in_flight
[
rw
]
=
pending
=
atomic_dec_return
(
&
md
->
pending
[
rw
]);
pending
+=
atomic_read
(
&
md
->
pending
[
rw
^
0x1
]);
/* nudge anyone waiting on suspend queue */
if
(
!
pending
)
...
...
@@ -1785,7 +1787,8 @@ static struct mapped_device *alloc_dev(int minor)
if
(
!
md
->
disk
)
goto
bad_disk
;
atomic_set
(
&
md
->
pending
,
0
);
atomic_set
(
&
md
->
pending
[
0
],
0
);
atomic_set
(
&
md
->
pending
[
1
],
0
);
init_waitqueue_head
(
&
md
->
wait
);
INIT_WORK
(
&
md
->
work
,
dm_wq_work
);
init_waitqueue_head
(
&
md
->
eventq
);
...
...
@@ -2088,7 +2091,8 @@ static int dm_wait_for_completion(struct mapped_device *md, int interruptible)
break
;
}
spin_unlock_irqrestore
(
q
->
queue_lock
,
flags
);
}
else
if
(
!
atomic_read
(
&
md
->
pending
))
}
else
if
(
!
atomic_read
(
&
md
->
pending
[
0
])
&&
!
atomic_read
(
&
md
->
pending
[
1
]))
break
;
if
(
interruptible
==
TASK_INTERRUPTIBLE
&&
...
...
fs/partitions/check.c
View file @
c30f3343
...
...
@@ -248,11 +248,19 @@ ssize_t part_stat_show(struct device *dev,
part_stat_read
(
p
,
merges
[
WRITE
]),
(
unsigned
long
long
)
part_stat_read
(
p
,
sectors
[
WRITE
]),
jiffies_to_msecs
(
part_stat_read
(
p
,
ticks
[
WRITE
])),
p
->
in_flight
,
p
art_in_flight
(
p
)
,
jiffies_to_msecs
(
part_stat_read
(
p
,
io_ticks
)),
jiffies_to_msecs
(
part_stat_read
(
p
,
time_in_queue
)));
}
ssize_t
part_inflight_show
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
hd_struct
*
p
=
dev_to_part
(
dev
);
return
sprintf
(
buf
,
"%8u %8u
\n
"
,
p
->
in_flight
[
0
],
p
->
in_flight
[
1
]);
}
#ifdef CONFIG_FAIL_MAKE_REQUEST
ssize_t
part_fail_show
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
)
...
...
@@ -281,6 +289,7 @@ static DEVICE_ATTR(start, S_IRUGO, part_start_show, NULL);
static
DEVICE_ATTR
(
size
,
S_IRUGO
,
part_size_show
,
NULL
);
static
DEVICE_ATTR
(
alignment_offset
,
S_IRUGO
,
part_alignment_offset_show
,
NULL
);
static
DEVICE_ATTR
(
stat
,
S_IRUGO
,
part_stat_show
,
NULL
);
static
DEVICE_ATTR
(
inflight
,
S_IRUGO
,
part_inflight_show
,
NULL
);
#ifdef CONFIG_FAIL_MAKE_REQUEST
static
struct
device_attribute
dev_attr_fail
=
__ATTR
(
make
-
it
-
fail
,
S_IRUGO
|
S_IWUSR
,
part_fail_show
,
part_fail_store
);
...
...
@@ -292,6 +301,7 @@ static struct attribute *part_attrs[] = {
&
dev_attr_size
.
attr
,
&
dev_attr_alignment_offset
.
attr
,
&
dev_attr_stat
.
attr
,
&
dev_attr_inflight
.
attr
,
#ifdef CONFIG_FAIL_MAKE_REQUEST
&
dev_attr_fail
.
attr
,
#endif
...
...
include/linux/blkdev.h
View file @
c30f3343
...
...
@@ -1172,11 +1172,7 @@ static inline void put_dev_sector(Sector p)
}
struct
work_struct
;
struct
delayed_work
;
int
kblockd_schedule_work
(
struct
request_queue
*
q
,
struct
work_struct
*
work
);
int
kblockd_schedule_delayed_work
(
struct
request_queue
*
q
,
struct
delayed_work
*
work
,
unsigned
long
delay
);
#define MODULE_ALIAS_BLOCKDEV(major,minor) \
MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor))
...
...
include/linux/genhd.h
View file @
c30f3343
...
...
@@ -98,7 +98,7 @@ struct hd_struct {
int
make_it_fail
;
#endif
unsigned
long
stamp
;
int
in_flight
;
int
in_flight
[
2
]
;
#ifdef CONFIG_SMP
struct
disk_stats
*
dkstats
;
#else
...
...
@@ -322,18 +322,23 @@ static inline void free_part_stats(struct hd_struct *part)
#define part_stat_sub(cpu, gendiskp, field, subnd) \
part_stat_add(cpu, gendiskp, field, -subnd)
static
inline
void
part_inc_in_flight
(
struct
hd_struct
*
part
)
static
inline
void
part_inc_in_flight
(
struct
hd_struct
*
part
,
int
rw
)
{
part
->
in_flight
++
;
part
->
in_flight
[
rw
]
++
;
if
(
part
->
partno
)
part_to_disk
(
part
)
->
part0
.
in_flight
++
;
part_to_disk
(
part
)
->
part0
.
in_flight
[
rw
]
++
;
}
static
inline
void
part_dec_in_flight
(
struct
hd_struct
*
part
)
static
inline
void
part_dec_in_flight
(
struct
hd_struct
*
part
,
int
rw
)
{
part
->
in_flight
--
;
part
->
in_flight
[
rw
]
--
;
if
(
part
->
partno
)
part_to_disk
(
part
)
->
part0
.
in_flight
--
;
part_to_disk
(
part
)
->
part0
.
in_flight
[
rw
]
--
;
}
static
inline
int
part_in_flight
(
struct
hd_struct
*
part
)
{
return
part
->
in_flight
[
0
]
+
part
->
in_flight
[
1
];
}
/* block/blk-core.c */
...
...
@@ -546,6 +551,8 @@ extern ssize_t part_size_show(struct device *dev,
struct
device_attribute
*
attr
,
char
*
buf
);
extern
ssize_t
part_stat_show
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
);
extern
ssize_t
part_inflight_show
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
);
#ifdef CONFIG_FAIL_MAKE_REQUEST
extern
ssize_t
part_fail_show
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
);
...
...
kernel/sched.c
View file @
c30f3343
...
...
@@ -6720,9 +6720,6 @@ EXPORT_SYMBOL(yield);
/*
* This task is about to go to sleep on IO. Increment rq->nr_iowait so
* that process accounting knows that this is a task in IO wait state.
*
* But don't do that if it is a deliberate, throttling IO wait (this task
* has set its backing_dev_info: the queue against which it should throttle)
*/
void
__sched
io_schedule
(
void
)
{
...
...
mm/backing-dev.c
View file @
c30f3343
...
...
@@ -92,7 +92,7 @@ static int bdi_debug_stats_show(struct seq_file *m, void *v)
"BdiDirtyThresh: %8lu kB
\n
"
"DirtyThresh: %8lu kB
\n
"
"BackgroundThresh: %8lu kB
\n
"
"Write
Back threads:
%8lu
\n
"
"Write
backThreads:
%8lu
\n
"
"b_dirty: %8lu
\n
"
"b_io: %8lu
\n
"
"b_more_io: %8lu
\n
"
...
...
mm/page-writeback.c
View file @
c30f3343
...
...
@@ -566,7 +566,8 @@ static void balance_dirty_pages(struct address_space *mapping,
if
(
pages_written
>=
write_chunk
)
break
;
/* We've done our duty */
schedule_timeout_interruptible
(
pause
);
__set_current_state
(
TASK_INTERRUPTIBLE
);
io_schedule_timeout
(
pause
);
/*
* Increase the delay for each loop, up to our previous
...
...
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