You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'for-3.1/core' of git://git.kernel.dk/linux-block
* 'for-3.1/core' of git://git.kernel.dk/linux-block: (24 commits) block: strict rq_affinity backing-dev: use synchronize_rcu_expedited instead of synchronize_rcu block: fix patch import error in max_discard_sectors check block: reorder request_queue to remove 64 bit alignment padding CFQ: add think time check for group CFQ: add think time check for service tree CFQ: move think time check variables to a separate struct fixlet: Remove fs_excl from struct task. cfq: Remove special treatment for metadata rqs. block: document blk_plug list access block: avoid building too big plug list compat_ioctl: fix make headers_check regression block: eliminate potential for infinite loop in blkdev_issue_discard compat_ioctl: fix warning caused by qemu block: flush MEDIA_CHANGE from drivers on close(2) blk-throttle: Make total_nr_queued unsigned block: Add __attribute__((format(printf...) and fix fallout fs/partitions/check.c: make local symbols static block:remove some spare spaces in genhd.c block:fix the comment error in blkdev.h ...
This commit is contained in:
+15
-13
@@ -602,7 +602,7 @@ void add_disk(struct gendisk *disk)
|
||||
disk->major = MAJOR(devt);
|
||||
disk->first_minor = MINOR(devt);
|
||||
|
||||
/* Register BDI before referencing it from bdev */
|
||||
/* Register BDI before referencing it from bdev */
|
||||
bdi = &disk->queue->backing_dev_info;
|
||||
bdi_register_dev(bdi, disk_devt(disk));
|
||||
|
||||
@@ -1140,7 +1140,7 @@ static int diskstats_show(struct seq_file *seqf, void *v)
|
||||
"wsect wuse running use aveq"
|
||||
"\n\n");
|
||||
*/
|
||||
|
||||
|
||||
disk_part_iter_init(&piter, gp, DISK_PITER_INCL_EMPTY_PART0);
|
||||
while ((hd = disk_part_iter_next(&piter))) {
|
||||
cpu = part_stat_lock();
|
||||
@@ -1164,7 +1164,7 @@ static int diskstats_show(struct seq_file *seqf, void *v)
|
||||
);
|
||||
}
|
||||
disk_part_iter_exit(&piter);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1492,30 +1492,32 @@ void disk_unblock_events(struct gendisk *disk)
|
||||
}
|
||||
|
||||
/**
|
||||
* disk_check_events - schedule immediate event checking
|
||||
* @disk: disk to check events for
|
||||
* disk_flush_events - schedule immediate event checking and flushing
|
||||
* @disk: disk to check and flush events for
|
||||
* @mask: events to flush
|
||||
*
|
||||
* Schedule immediate event checking on @disk if not blocked.
|
||||
* Schedule immediate event checking on @disk if not blocked. Events in
|
||||
* @mask are scheduled to be cleared from the driver. Note that this
|
||||
* doesn't clear the events from @disk->ev.
|
||||
*
|
||||
* CONTEXT:
|
||||
* Don't care. Safe to call from irq context.
|
||||
* If @mask is non-zero must be called with bdev->bd_mutex held.
|
||||
*/
|
||||
void disk_check_events(struct gendisk *disk)
|
||||
void disk_flush_events(struct gendisk *disk, unsigned int mask)
|
||||
{
|
||||
struct disk_events *ev = disk->ev;
|
||||
unsigned long flags;
|
||||
|
||||
if (!ev)
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&ev->lock, flags);
|
||||
spin_lock_irq(&ev->lock);
|
||||
ev->clearing |= mask;
|
||||
if (!ev->block) {
|
||||
cancel_delayed_work(&ev->dwork);
|
||||
queue_delayed_work(system_nrt_wq, &ev->dwork, 0);
|
||||
}
|
||||
spin_unlock_irqrestore(&ev->lock, flags);
|
||||
spin_unlock_irq(&ev->lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(disk_check_events);
|
||||
|
||||
/**
|
||||
* disk_clear_events - synchronously check, clear and return pending events
|
||||
@@ -1705,7 +1707,7 @@ static int disk_events_set_dfl_poll_msecs(const char *val,
|
||||
mutex_lock(&disk_events_mutex);
|
||||
|
||||
list_for_each_entry(ev, &disk_events, node)
|
||||
disk_check_events(ev->disk);
|
||||
disk_flush_events(ev->disk, 0);
|
||||
|
||||
mutex_unlock(&disk_events_mutex);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user