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 'for-linus-2019-11-08' of git://git.kernel.dk/linux-block

Pull block fixes from Jens Axboe:

- Two NVMe device removal crash fixes, and a compat fixup for for an
ioctl that was introduced in this release (Anton, Charles, Max - via
Keith)

- Missing error path mutex unlock for drbd (Dan)

- cgroup writeback fixup on dead memcg (Tejun)

- blkcg online stats print fix (Tejun)

* tag 'for-linus-2019-11-08' of git://git.kernel.dk/linux-block:
cgroup,writeback: don't switch wbs immediately on dead wbs if the memcg is dead
block: drbd: remove a stray unlock in __drbd_send_protocol()
blkcg: make blkcg_print_stat() print stats only for online blkgs
nvme: change nvme_passthru_cmd64 to explicitly mark rsvd
nvme-multipath: fix crash in nvme_mpath_clear_ctrl_paths
nvme-rdma: fix a segmentation fault during module unload

+25 -9
+8 -5
block/blk-cgroup.c
··· 934 934 int i; 935 935 bool has_stats = false; 936 936 937 + spin_lock_irq(&blkg->q->queue_lock); 938 + 939 + if (!blkg->online) 940 + goto skip; 941 + 937 942 dname = blkg_dev_name(blkg); 938 943 if (!dname) 939 - continue; 944 + goto skip; 940 945 941 946 /* 942 947 * Hooray string manipulation, count is the size written NOT ··· 950 945 * the \0 so we only add count to buf. 951 946 */ 952 947 off += scnprintf(buf+off, size-off, "%s ", dname); 953 - 954 - spin_lock_irq(&blkg->q->queue_lock); 955 948 956 949 blkg_rwstat_recursive_sum(blkg, NULL, 957 950 offsetof(struct blkcg_gq, stat_bytes), &rwstat); ··· 962 959 rios = rwstat.cnt[BLKG_RWSTAT_READ]; 963 960 wios = rwstat.cnt[BLKG_RWSTAT_WRITE]; 964 961 dios = rwstat.cnt[BLKG_RWSTAT_DISCARD]; 965 - 966 - spin_unlock_irq(&blkg->q->queue_lock); 967 962 968 963 if (rbytes || wbytes || rios || wios) { 969 964 has_stats = true; ··· 1000 999 seq_commit(sf, -1); 1001 1000 } 1002 1001 } 1002 + skip: 1003 + spin_unlock_irq(&blkg->q->queue_lock); 1003 1004 } 1004 1005 1005 1006 rcu_read_unlock();
-1
drivers/block/drbd/drbd_main.c
··· 786 786 787 787 if (nc->tentative && connection->agreed_pro_version < 92) { 788 788 rcu_read_unlock(); 789 - mutex_unlock(&sock->mutex); 790 789 drbd_err(connection, "--dry-run is not supported by peer"); 791 790 return -EOPNOTSUPP; 792 791 }
+2
drivers/nvme/host/multipath.c
··· 158 158 struct nvme_ns *ns; 159 159 160 160 mutex_lock(&ctrl->scan_lock); 161 + down_read(&ctrl->namespaces_rwsem); 161 162 list_for_each_entry(ns, &ctrl->namespaces, list) 162 163 if (nvme_mpath_clear_current_path(ns)) 163 164 kblockd_schedule_work(&ns->head->requeue_work); 165 + up_read(&ctrl->namespaces_rwsem); 164 166 mutex_unlock(&ctrl->scan_lock); 165 167 } 166 168
+8
drivers/nvme/host/rdma.c
··· 2133 2133 2134 2134 static void __exit nvme_rdma_cleanup_module(void) 2135 2135 { 2136 + struct nvme_rdma_ctrl *ctrl; 2137 + 2136 2138 nvmf_unregister_transport(&nvme_rdma_transport); 2137 2139 ib_unregister_client(&nvme_rdma_ib_client); 2140 + 2141 + mutex_lock(&nvme_rdma_ctrl_mutex); 2142 + list_for_each_entry(ctrl, &nvme_rdma_ctrl_list, list) 2143 + nvme_delete_ctrl(&ctrl->ctrl); 2144 + mutex_unlock(&nvme_rdma_ctrl_mutex); 2145 + flush_workqueue(nvme_delete_wq); 2138 2146 } 2139 2147 2140 2148 module_init(nvme_rdma_init_module);
+6 -3
fs/fs-writeback.c
··· 576 576 spin_unlock(&inode->i_lock); 577 577 578 578 /* 579 - * A dying wb indicates that the memcg-blkcg mapping has changed 580 - * and a new wb is already serving the memcg. Switch immediately. 579 + * A dying wb indicates that either the blkcg associated with the 580 + * memcg changed or the associated memcg is dying. In the first 581 + * case, a replacement wb should already be available and we should 582 + * refresh the wb immediately. In the second case, trying to 583 + * refresh will keep failing. 581 584 */ 582 - if (unlikely(wb_dying(wbc->wb))) 585 + if (unlikely(wb_dying(wbc->wb) && !css_is_dying(wbc->wb->memcg_css))) 583 586 inode_switch_wbs(inode, wbc->wb_id); 584 587 } 585 588 EXPORT_SYMBOL_GPL(wbc_attach_and_unlock_inode);
+1
include/uapi/linux/nvme_ioctl.h
··· 63 63 __u32 cdw14; 64 64 __u32 cdw15; 65 65 __u32 timeout_ms; 66 + __u32 rsvd2; 66 67 __u64 result; 67 68 }; 68 69