~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to block/genhd.c

  • Committer: Package Import Robot
  • Author(s): Paolo Pisati, Paolo Pisati, Upstream Kernel Changes
  • Date: 2012-03-27 17:01:30 UTC
  • Revision ID: package-import@ubuntu.com-20120327170130-qrvi60snnxty6ibi
Tags: 3.2.0-1411.14
[ Paolo Pisati ]

* Revert to Ubuntu-3.2.0-1409.12 until we figure out what's wrong with hdmi
  - LP: #963512

[ Upstream Kernel Changes ]

* Revert "Reapply upleveled PMU interrupt patch"
* KBuild: Allow scripts/* to be cross compiled
* LINARO: Use KBUILD_SCRIPTROOT to cross build scripts

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
 
37
37
static struct device_type disk_type;
38
38
 
39
 
static void disk_alloc_events(struct gendisk *disk);
40
39
static void disk_add_events(struct gendisk *disk);
41
40
static void disk_del_events(struct gendisk *disk);
42
41
static void disk_release_events(struct gendisk *disk);
603
602
        disk->major = MAJOR(devt);
604
603
        disk->first_minor = MINOR(devt);
605
604
 
606
 
        disk_alloc_events(disk);
607
 
 
608
605
        /* Register BDI before referencing it from bdev */
609
606
        bdi = &disk->queue->backing_dev_info;
610
607
        bdi_register_dev(bdi, disk_devt(disk));
1479
1476
        intv = disk_events_poll_jiffies(disk);
1480
1477
        set_timer_slack(&ev->dwork.timer, intv / 4);
1481
1478
        if (check_now)
1482
 
                queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, 0);
 
1479
                queue_delayed_work(system_nrt_wq, &ev->dwork, 0);
1483
1480
        else if (intv)
1484
 
                queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, intv);
 
1481
                queue_delayed_work(system_nrt_wq, &ev->dwork, intv);
1485
1482
out_unlock:
1486
1483
        spin_unlock_irqrestore(&ev->lock, flags);
1487
1484
}
1525
1522
        ev->clearing |= mask;
1526
1523
        if (!ev->block) {
1527
1524
                cancel_delayed_work(&ev->dwork);
1528
 
                queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, 0);
 
1525
                queue_delayed_work(system_nrt_wq, &ev->dwork, 0);
1529
1526
        }
1530
1527
        spin_unlock_irq(&ev->lock);
1531
1528
}
1562
1559
 
1563
1560
        /* uncondtionally schedule event check and wait for it to finish */
1564
1561
        disk_block_events(disk);
1565
 
        queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, 0);
 
1562
        queue_delayed_work(system_nrt_wq, &ev->dwork, 0);
1566
1563
        flush_delayed_work(&ev->dwork);
1567
1564
        __disk_unblock_events(disk, false);
1568
1565
 
1599
1596
 
1600
1597
        intv = disk_events_poll_jiffies(disk);
1601
1598
        if (!ev->block && intv)
1602
 
                queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, intv);
 
1599
                queue_delayed_work(system_nrt_wq, &ev->dwork, intv);
1603
1600
 
1604
1601
        spin_unlock_irq(&ev->lock);
1605
1602
 
1737
1734
                &disk_events_dfl_poll_msecs, 0644);
1738
1735
 
1739
1736
/*
1740
 
 * disk_{alloc|add|del|release}_events - initialize and destroy disk_events.
 
1737
 * disk_{add|del|release}_events - initialize and destroy disk_events.
1741
1738
 */
1742
 
static void disk_alloc_events(struct gendisk *disk)
 
1739
static void disk_add_events(struct gendisk *disk)
1743
1740
{
1744
1741
        struct disk_events *ev;
1745
1742
 
1752
1749
                return;
1753
1750
        }
1754
1751
 
 
1752
        if (sysfs_create_files(&disk_to_dev(disk)->kobj,
 
1753
                               disk_events_attrs) < 0) {
 
1754
                pr_warn("%s: failed to create sysfs files for events\n",
 
1755
                        disk->disk_name);
 
1756
                kfree(ev);
 
1757
                return;
 
1758
        }
 
1759
 
 
1760
        disk->ev = ev;
 
1761
 
1755
1762
        INIT_LIST_HEAD(&ev->node);
1756
1763
        ev->disk = disk;
1757
1764
        spin_lock_init(&ev->lock);
1760
1767
        ev->poll_msecs = -1;
1761
1768
        INIT_DELAYED_WORK(&ev->dwork, disk_events_workfn);
1762
1769
 
1763
 
        disk->ev = ev;
1764
 
}
1765
 
 
1766
 
static void disk_add_events(struct gendisk *disk)
1767
 
{
1768
 
        if (!disk->ev)
1769
 
                return;
1770
 
 
1771
 
        /* FIXME: error handling */
1772
 
        if (sysfs_create_files(&disk_to_dev(disk)->kobj, disk_events_attrs) < 0)
1773
 
                pr_warn("%s: failed to create sysfs files for events\n",
1774
 
                        disk->disk_name);
1775
 
 
1776
1770
        mutex_lock(&disk_events_mutex);
1777
 
        list_add_tail(&disk->ev->node, &disk_events);
 
1771
        list_add_tail(&ev->node, &disk_events);
1778
1772
        mutex_unlock(&disk_events_mutex);
1779
1773
 
1780
1774
        /*