aboutsummaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
Diffstat (limited to 'block')
-rw-r--r--block/Kconfig2
-rw-r--r--block/cfq-iosched.c9
-rw-r--r--block/compat_ioctl.c1
3 files changed, 7 insertions, 5 deletions
diff --git a/block/Kconfig b/block/Kconfig
index 9bda7bc80307..7db9a411649d 100644
--- a/block/Kconfig
+++ b/block/Kconfig
@@ -38,7 +38,7 @@ config BLK_DEV_IO_TRACE
38 on a block device queue. For more information (and the user space 38 on a block device queue. For more information (and the user space
39 support tools needed), fetch the blktrace app from: 39 support tools needed), fetch the blktrace app from:
40 40
41 git://brick.kernel.dk/data/git/blktrace.git 41 git://git.kernel.dk/blktrace.git
42 42
43config LSF 43config LSF
44 bool "Support for Large Single Files" 44 bool "Support for Large Single Files"
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index f26da2bfcc15..f4e1006c253d 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1214,6 +1214,8 @@ static void cfq_exit_cfqq(struct cfq_data *cfqd, struct cfq_queue *cfqq)
1214static void __cfq_exit_single_io_context(struct cfq_data *cfqd, 1214static void __cfq_exit_single_io_context(struct cfq_data *cfqd,
1215 struct cfq_io_context *cic) 1215 struct cfq_io_context *cic)
1216{ 1216{
1217 struct io_context *ioc = cic->ioc;
1218
1217 list_del_init(&cic->queue_list); 1219 list_del_init(&cic->queue_list);
1218 1220
1219 /* 1221 /*
@@ -1223,6 +1225,9 @@ static void __cfq_exit_single_io_context(struct cfq_data *cfqd,
1223 cic->dead_key = (unsigned long) cic->key; 1225 cic->dead_key = (unsigned long) cic->key;
1224 cic->key = NULL; 1226 cic->key = NULL;
1225 1227
1228 if (ioc->ioc_data == cic)
1229 rcu_assign_pointer(ioc->ioc_data, NULL);
1230
1226 if (cic->cfqq[ASYNC]) { 1231 if (cic->cfqq[ASYNC]) {
1227 cfq_exit_cfqq(cfqd, cic->cfqq[ASYNC]); 1232 cfq_exit_cfqq(cfqd, cic->cfqq[ASYNC]);
1228 cic->cfqq[ASYNC] = NULL; 1233 cic->cfqq[ASYNC] = NULL;
@@ -1255,7 +1260,6 @@ static void cfq_exit_single_io_context(struct io_context *ioc,
1255 */ 1260 */
1256static void cfq_exit_io_context(struct io_context *ioc) 1261static void cfq_exit_io_context(struct io_context *ioc)
1257{ 1262{
1258 rcu_assign_pointer(ioc->ioc_data, NULL);
1259 call_for_each_cic(ioc, cfq_exit_single_io_context); 1263 call_for_each_cic(ioc, cfq_exit_single_io_context);
1260} 1264}
1261 1265
@@ -1478,8 +1482,7 @@ cfq_drop_dead_cic(struct cfq_data *cfqd, struct io_context *ioc,
1478 1482
1479 spin_lock_irqsave(&ioc->lock, flags); 1483 spin_lock_irqsave(&ioc->lock, flags);
1480 1484
1481 if (ioc->ioc_data == cic) 1485 BUG_ON(ioc->ioc_data == cic);
1482 rcu_assign_pointer(ioc->ioc_data, NULL);
1483 1486
1484 radix_tree_delete(&ioc->radix_root, (unsigned long) cfqd); 1487 radix_tree_delete(&ioc->radix_root, (unsigned long) cfqd);
1485 hlist_del_rcu(&cic->cic_list); 1488 hlist_del_rcu(&cic->cic_list);
diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
index b73373216b0e..c70d0b6f666f 100644
--- a/block/compat_ioctl.c
+++ b/block/compat_ioctl.c
@@ -624,7 +624,6 @@ static int compat_blkdev_driver_ioctl(struct inode *inode, struct file *file,
624 case HDIO_GET_IDENTITY: 624 case HDIO_GET_IDENTITY:
625 case HDIO_DRIVE_TASK: 625 case HDIO_DRIVE_TASK:
626 case HDIO_DRIVE_CMD: 626 case HDIO_DRIVE_CMD:
627 case HDIO_SCAN_HWIF:
628 /* 0x330 is reserved -- it used to be HDIO_GETGEO_BIG */ 627 /* 0x330 is reserved -- it used to be HDIO_GETGEO_BIG */
629 case 0x330: 628 case 0x330:
630 /* 0x02 -- Floppy ioctls */ 629 /* 0x02 -- Floppy ioctls */