Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'block-5.6-2020-03-07' of git://git.kernel.dk/linux-block

Pull block fixes from Jens Axboe:
"Here are a few fixes that should go into this release. This contains:

- Revert of a bad bcache patch from this merge window

- Removed unused function (Daniel)

- Fixup for the blktrace fix from Jan from this release (Cengiz)

- Fix of deeper level bfqq overwrite in BFQ (Carlo)"

* tag 'block-5.6-2020-03-07' of git://git.kernel.dk/linux-block:
block, bfq: fix overwrite of bfq_group pointer in bfq_find_set_group()
blktrace: fix dereference after null check
Revert "bcache: ignore pending signals when creating gc and allocator thread"
block: Remove used kblockd_schedule_work_on()

+11 -41
+5 -4
block/bfq-cgroup.c
··· 610 610 */ 611 611 entity = &bfqg->entity; 612 612 for_each_entity(entity) { 613 - bfqg = container_of(entity, struct bfq_group, entity); 614 - if (bfqg != bfqd->root_group) { 615 - parent = bfqg_parent(bfqg); 613 + struct bfq_group *curr_bfqg = container_of(entity, 614 + struct bfq_group, entity); 615 + if (curr_bfqg != bfqd->root_group) { 616 + parent = bfqg_parent(curr_bfqg); 616 617 if (!parent) 617 618 parent = bfqd->root_group; 618 - bfq_group_set_parent(bfqg, parent); 619 + bfq_group_set_parent(curr_bfqg, parent); 619 620 } 620 621 } 621 622
-6
block/blk-core.c
··· 1663 1663 } 1664 1664 EXPORT_SYMBOL(kblockd_schedule_work); 1665 1665 1666 - int kblockd_schedule_work_on(int cpu, struct work_struct *work) 1667 - { 1668 - return queue_work_on(cpu, kblockd_workqueue, work); 1669 - } 1670 - EXPORT_SYMBOL(kblockd_schedule_work_on); 1671 - 1672 1666 int kblockd_mod_delayed_work_on(int cpu, struct delayed_work *dwork, 1673 1667 unsigned long delay) 1674 1668 {
+2 -16
drivers/md/bcache/alloc.c
··· 67 67 #include <linux/blkdev.h> 68 68 #include <linux/kthread.h> 69 69 #include <linux/random.h> 70 - #include <linux/sched/signal.h> 71 70 #include <trace/events/bcache.h> 72 71 73 72 #define MAX_OPEN_BUCKETS 128 ··· 733 734 734 735 int bch_cache_allocator_start(struct cache *ca) 735 736 { 736 - struct task_struct *k; 737 - 738 - /* 739 - * In case previous btree check operation occupies too many 740 - * system memory for bcache btree node cache, and the 741 - * registering process is selected by OOM killer. Here just 742 - * ignore the SIGKILL sent by OOM killer if there is, to 743 - * avoid kthread_run() being failed by pending signals. The 744 - * bcache registering process will exit after the registration 745 - * done. 746 - */ 747 - if (signal_pending(current)) 748 - flush_signals(current); 749 - 750 - k = kthread_run(bch_allocator_thread, ca, "bcache_allocator"); 737 + struct task_struct *k = kthread_run(bch_allocator_thread, 738 + ca, "bcache_allocator"); 751 739 if (IS_ERR(k)) 752 740 return PTR_ERR(k); 753 741
-13
drivers/md/bcache/btree.c
··· 34 34 #include <linux/random.h> 35 35 #include <linux/rcupdate.h> 36 36 #include <linux/sched/clock.h> 37 - #include <linux/sched/signal.h> 38 37 #include <linux/rculist.h> 39 38 #include <linux/delay.h> 40 39 #include <trace/events/bcache.h> ··· 1913 1914 1914 1915 int bch_gc_thread_start(struct cache_set *c) 1915 1916 { 1916 - /* 1917 - * In case previous btree check operation occupies too many 1918 - * system memory for bcache btree node cache, and the 1919 - * registering process is selected by OOM killer. Here just 1920 - * ignore the SIGKILL sent by OOM killer if there is, to 1921 - * avoid kthread_run() being failed by pending signals. The 1922 - * bcache registering process will exit after the registration 1923 - * done. 1924 - */ 1925 - if (signal_pending(current)) 1926 - flush_signals(current); 1927 - 1928 1917 c->gc_thread = kthread_run(bch_gc_thread, c, "bcache_gc"); 1929 1918 return PTR_ERR_OR_ZERO(c->gc_thread); 1930 1919 }
-1
include/linux/blkdev.h
··· 1494 1494 } 1495 1495 1496 1496 int kblockd_schedule_work(struct work_struct *work); 1497 - int kblockd_schedule_work_on(int cpu, struct work_struct *work); 1498 1497 int kblockd_mod_delayed_work_on(int cpu, struct delayed_work *dwork, unsigned long delay); 1499 1498 1500 1499 #define MODULE_ALIAS_BLOCKDEV(major,minor) \
+4 -1
kernel/trace/blktrace.c
··· 1896 1896 } 1897 1897 1898 1898 ret = 0; 1899 - if (bt == NULL) 1899 + if (bt == NULL) { 1900 1900 ret = blk_trace_setup_queue(q, bdev); 1901 + bt = rcu_dereference_protected(q->blk_trace, 1902 + lockdep_is_held(&q->blk_trace_mutex)); 1903 + } 1901 1904 1902 1905 if (ret == 0) { 1903 1906 if (attr == &dev_attr_act_mask)