diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-25 10:45:10 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-25 10:45:10 -0400 |
| commit | 8e775167d54e6521e7cdbc03ee7ec42a8c67b49a (patch) | |
| tree | a49914306fb28505c6e21a456df8bdc40d6eac23 /fs/partitions | |
| parent | 4b37ba90f49d4157ac5628f8d730d3505f176724 (diff) | |
| parent | f253b86b4ad1b3220544e75880510fd455ebd23f (diff) | |
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block:
Revert "block: fix accounting bug on cross partition merges"
Diffstat (limited to 'fs/partitions')
| -rw-r--r-- | fs/partitions/check.c | 12 |
1 files changed, 0 insertions, 12 deletions
diff --git a/fs/partitions/check.c b/fs/partitions/check.c index b81bfc016a05..0a8b0ad0c7e2 100644 --- a/fs/partitions/check.c +++ b/fs/partitions/check.c | |||
| @@ -365,25 +365,17 @@ struct device_type part_type = { | |||
| 365 | static void delete_partition_rcu_cb(struct rcu_head *head) | 365 | static void delete_partition_rcu_cb(struct rcu_head *head) |
| 366 | { | 366 | { |
| 367 | struct hd_struct *part = container_of(head, struct hd_struct, rcu_head); | 367 | struct hd_struct *part = container_of(head, struct hd_struct, rcu_head); |
| 368 | struct gendisk *disk = part_to_disk(part); | ||
| 369 | struct request_queue *q = disk->queue; | ||
| 370 | unsigned long flags; | ||
| 371 | 368 | ||
| 372 | part->start_sect = 0; | 369 | part->start_sect = 0; |
| 373 | part->nr_sects = 0; | 370 | part->nr_sects = 0; |
| 374 | part_stat_set_all(part, 0); | 371 | part_stat_set_all(part, 0); |
| 375 | put_device(part_to_dev(part)); | 372 | put_device(part_to_dev(part)); |
| 376 | |||
| 377 | spin_lock_irqsave(q->queue_lock, flags); | ||
| 378 | elv_quiesce_end(q); | ||
| 379 | spin_unlock_irqrestore(q->queue_lock, flags); | ||
| 380 | } | 373 | } |
| 381 | 374 | ||
| 382 | void delete_partition(struct gendisk *disk, int partno) | 375 | void delete_partition(struct gendisk *disk, int partno) |
| 383 | { | 376 | { |
| 384 | struct disk_part_tbl *ptbl = disk->part_tbl; | 377 | struct disk_part_tbl *ptbl = disk->part_tbl; |
| 385 | struct hd_struct *part; | 378 | struct hd_struct *part; |
| 386 | struct request_queue *q = disk->queue; | ||
| 387 | 379 | ||
| 388 | if (partno >= ptbl->len) | 380 | if (partno >= ptbl->len) |
| 389 | return; | 381 | return; |
| @@ -398,10 +390,6 @@ void delete_partition(struct gendisk *disk, int partno) | |||
| 398 | kobject_put(part->holder_dir); | 390 | kobject_put(part->holder_dir); |
| 399 | device_del(part_to_dev(part)); | 391 | device_del(part_to_dev(part)); |
| 400 | 392 | ||
| 401 | spin_lock_irq(q->queue_lock); | ||
| 402 | elv_quiesce_start(q); | ||
| 403 | spin_unlock_irq(q->queue_lock); | ||
| 404 | |||
| 405 | call_rcu(&part->rcu_head, delete_partition_rcu_cb); | 393 | call_rcu(&part->rcu_head, delete_partition_rcu_cb); |
| 406 | } | 394 | } |
| 407 | 395 | ||
