38f1852759
I ran across a memory leak related to the cfq scheduler. The cfq init function increments the refcnt of the associated request_queue. This refcount gets decremented in cfq's exit function. Since blk_cleanup_queue only calls the elevator exit function when its refcnt goes to zero, the request_q never gets cleaned up. It didn't look like other io schedulers were incrementing this refcnt, so I removed the refcnt increment and it fixed the memory leak for me. To reproduce the problem, simply use cfq and use the scsi_host scan sysfs attribute to scan "- - -" repeatedly on a scsi host and watch the memory vanish. Signed-off-by: Brian King <brking@us.ibm.com> Acked-by: Jens Axboe <axboe@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org> |
||
---|---|---|
.. | ||
aoe | ||
paride | ||
DAC960.c | ||
DAC960.h | ||
Kconfig | ||
Kconfig.iosched | ||
Makefile | ||
acsi.c | ||
acsi_slm.c | ||
amiflop.c | ||
as-iosched.c | ||
ataflop.c | ||
cciss.c | ||
cciss.h | ||
cciss_cmd.h | ||
cciss_scsi.c | ||
cciss_scsi.h | ||
cfq-iosched.c | ||
cpqarray.c | ||
cpqarray.h | ||
cryptoloop.c | ||
deadline-iosched.c | ||
elevator.c | ||
floppy.c | ||
genhd.c | ||
ida_cmd.h | ||
ida_ioctl.h | ||
ioctl.c | ||
ll_rw_blk.c | ||
loop.c | ||
nbd.c | ||
noop-iosched.c | ||
pktcdvd.c | ||
ps2esdi.c | ||
rd.c | ||
scsi_ioctl.c | ||
smart1,2.h | ||
swim3.c | ||
swim_iop.c | ||
sx8.c | ||
ub.c | ||
umem.c | ||
viodasd.c | ||
xd.c | ||
xd.h | ||
z2ram.c |