Skip to content

Commit 5133898

Browse files
committed
Merge tag 'for-6.1/block-2022-10-03' of git://git.kernel.dk/linux
Pull block updates from Jens Axboe: - NVMe pull requests via Christoph: - handle number of queue changes in the TCP and RDMA drivers (Daniel Wagner) - allow changing the number of queues in nvmet (Daniel Wagner) - also consider host_iface when checking ip options (Daniel Wagner) - don't map pages which can't come from HIGHMEM (Fabio M. De Francesco) - avoid unnecessary flush bios in nvmet (Guixin Liu) - shrink and better pack the nvme_iod structure (Keith Busch) - add comment for unaligned "fake" nqn (Linjun Bao) - print actual source IP address through sysfs "address" attr (Martin Belanger) - various cleanups (Jackie Liu, Wolfram Sang, Genjian Zhang) - handle effects after freeing the request (Keith Busch) - copy firmware_rev on each init (Keith Busch) - restrict management ioctls to admin (Keith Busch) - ensure subsystem reset is single threaded (Keith Busch) - report the actual number of tagset maps in nvme-pci (Keith Busch) - small fabrics authentication fixups (Christoph Hellwig) - add common code for tagset allocation and freeing (Christoph Hellwig) - stop using the request_queue in nvmet (Christoph Hellwig) - set min_align_mask before calculating max_hw_sectors (Rishabh Bhatnagar) - send a rediscover uevent when a persistent discovery controller reconnects (Sagi Grimberg) - misc nvmet-tcp fixes (Varun Prakash, zhenwei pi) - MD pull request via Song: - Various raid5 fix and clean up, by Logan Gunthorpe and David Sloan. - Raid10 performance optimization, by Yu Kuai. - sbitmap wakeup hang fixes (Hugh, Keith, Jan, Yu) - IO scheduler switching quisce fix (Keith) - s390/dasd block driver updates (Stefan) - support for recovery for the ublk driver (ZiyangZhang) - rnbd drivers fixes and updates (Guoqing, Santosh, ye, Christoph) - blk-mq and null_blk map fixes (Bart) - various bcache fixes (Coly, Jilin, Jules) - nbd signal hang fix (Shigeru) - block writeback throttling fix (Yu) - optimize the passthrough mapping handling (me) - prepare block cgroups to being gendisk based (Christoph) - get rid of an old PSI hack in the block layer, moving it to the callers instead where it belongs (Christoph) - blk-throttle fixes and cleanups (Yu) - misc fixes and cleanups (Liu Shixin, Liu Song, Miaohe, Pankaj, Ping-Xiang, Wolfram, Saurabh, Li Jinlin, Li Lei, Lin, Li zeming, Miaohe, Bart, Coly, Gaosheng * tag 'for-6.1/block-2022-10-03' of git://git.kernel.dk/linux: (162 commits) sbitmap: fix lockup while swapping block: add rationale for not using blk_mq_plug() when applicable block: adapt blk_mq_plug() to not plug for writes that require a zone lock s390/dasd: use blk_mq_alloc_disk blk-cgroup: don't update the blkg lookup hint in blkg_conf_prep nvmet: don't look at the request_queue in nvmet_bdev_set_limits nvmet: don't look at the request_queue in nvmet_bdev_zone_mgmt_emulate_all blk-mq: use quiesced elevator switch when reinitializing queues block: replace blk_queue_nowait with bdev_nowait nvme: remove nvme_ctrl_init_connect_q nvme-loop: use the tagset alloc/free helpers nvme-loop: store the generic nvme_ctrl in set->driver_data nvme-loop: initialize sqsize later nvme-fc: use the tagset alloc/free helpers nvme-fc: store the generic nvme_ctrl in set->driver_data nvme-fc: keep ctrl->sqsize in sync with opts->queue_size nvme-rdma: use the tagset alloc/free helpers nvme-rdma: store the generic nvme_ctrl in set->driver_data nvme-tcp: use the tagset alloc/free helpers nvme-tcp: store the generic nvme_ctrl in set->driver_data ...
2 parents 0a78a37 + 30514bd commit 5133898

File tree

135 files changed

+3204
-1644
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+3204
-1644
lines changed

MAINTAINERS

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14582,6 +14582,15 @@ F: drivers/nvme/common/
1458214582
F: include/linux/nvme*
1458314583
F: include/uapi/linux/nvme_ioctl.h
1458414584

14585+
NVM EXPRESS FABRICS AUTHENTICATION
14586+
M: Hannes Reinecke <[email protected]>
14587+
14588+
S: Supported
14589+
F: drivers/nvme/host/auth.c
14590+
F: drivers/nvme/target/auth.c
14591+
F: drivers/nvme/target/fabrics-cmd-auth.c
14592+
F: include/linux/nvme-auth.h
14593+
1458514594
NVM EXPRESS FC TRANSPORT DRIVERS
1458614595
M: James Smart <[email protected]>
1458714596

arch/s390/include/asm/scsw.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,11 @@ union scsw {
215215
#define SNS2_ENV_DATA_PRESENT 0x10
216216
#define SNS2_INPRECISE_END 0x04
217217

218+
/*
219+
* architectured values for PPRC errors
220+
*/
221+
#define SNS7_INVALID_ON_SEC 0x0e
222+
218223
/**
219224
* scsw_is_tm - check for transport mode scsw
220225
* @scsw: pointer to scsw

arch/s390/include/uapi/asm/dasd.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,18 @@ typedef struct format_data_t {
182182
unsigned int intensity;
183183
} format_data_t;
184184

185+
/*
186+
* struct dasd_copypair_swap_data_t
187+
* represents all data necessary to issue a swap of the copy pair relation
188+
*/
189+
struct dasd_copypair_swap_data_t {
190+
char primary[20]; /* BUSID of primary */
191+
char secondary[20]; /* BUSID of secondary */
192+
193+
/* Reserved for future updates. */
194+
__u8 reserved[64];
195+
};
196+
185197
/*
186198
* values to be used for format_data_t.intensity
187199
* 0/8: normal format
@@ -326,6 +338,8 @@ struct dasd_snid_ioctl_data {
326338
#define BIODASDSATTR _IOW(DASD_IOCTL_LETTER,2,attrib_data_t)
327339
/* Release Allocated Space */
328340
#define BIODASDRAS _IOW(DASD_IOCTL_LETTER, 3, format_data_t)
341+
/* Swap copy pair relation */
342+
#define BIODASDCOPYPAIRSWAP _IOW(DASD_IOCTL_LETTER, 4, struct dasd_copypair_swap_data_t)
329343

330344
/* Get Sense Path Group ID (SNID) data */
331345
#define BIODASDSNID _IOWR(DASD_IOCTL_LETTER, 1, struct dasd_snid_ioctl_data)

block/bfq-cgroup.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -254,17 +254,12 @@ void bfqg_stats_update_completion(struct bfq_group *bfqg, u64 start_time_ns,
254254

255255
#else /* CONFIG_BFQ_CGROUP_DEBUG */
256256

257-
void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
258-
blk_opf_t opf) { }
259257
void bfqg_stats_update_io_remove(struct bfq_group *bfqg, blk_opf_t opf) { }
260258
void bfqg_stats_update_io_merged(struct bfq_group *bfqg, blk_opf_t opf) { }
261259
void bfqg_stats_update_completion(struct bfq_group *bfqg, u64 start_time_ns,
262260
u64 io_start_time_ns, blk_opf_t opf) { }
263261
void bfqg_stats_update_dequeue(struct bfq_group *bfqg) { }
264-
void bfqg_stats_set_start_empty_time(struct bfq_group *bfqg) { }
265-
void bfqg_stats_update_idle_time(struct bfq_group *bfqg) { }
266262
void bfqg_stats_set_start_idle_time(struct bfq_group *bfqg) { }
267-
void bfqg_stats_update_avg_queue_size(struct bfq_group *bfqg) { }
268263

269264
#endif /* CONFIG_BFQ_CGROUP_DEBUG */
270265

block/bfq-iosched.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1925,7 +1925,7 @@ static void bfq_bfqq_handle_idle_busy_switch(struct bfq_data *bfqd,
19251925
bfqq->service_from_backlogged = 0;
19261926
bfq_clear_bfqq_softrt_update(bfqq);
19271927

1928-
bfq_add_bfqq_busy(bfqd, bfqq);
1928+
bfq_add_bfqq_busy(bfqq);
19291929

19301930
/*
19311931
* Expire in-service queue if preemption may be needed for
@@ -2419,7 +2419,7 @@ static void bfq_remove_request(struct request_queue *q,
24192419
bfqq->next_rq = NULL;
24202420

24212421
if (bfq_bfqq_busy(bfqq) && bfqq != bfqd->in_service_queue) {
2422-
bfq_del_bfqq_busy(bfqd, bfqq, false);
2422+
bfq_del_bfqq_busy(bfqq, false);
24232423
/*
24242424
* bfqq emptied. In normal operation, when
24252425
* bfqq is empty, bfqq->entity.service and
@@ -3098,7 +3098,7 @@ void bfq_release_process_ref(struct bfq_data *bfqd, struct bfq_queue *bfqq)
30983098
*/
30993099
if (bfq_bfqq_busy(bfqq) && RB_EMPTY_ROOT(&bfqq->sort_list) &&
31003100
bfqq != bfqd->in_service_queue)
3101-
bfq_del_bfqq_busy(bfqd, bfqq, false);
3101+
bfq_del_bfqq_busy(bfqq, false);
31023102

31033103
bfq_reassign_last_bfqq(bfqq, NULL);
31043104

@@ -3908,7 +3908,7 @@ static bool __bfq_bfqq_expire(struct bfq_data *bfqd, struct bfq_queue *bfqq,
39083908
*/
39093909
bfqq->budget_timeout = jiffies;
39103910

3911-
bfq_del_bfqq_busy(bfqd, bfqq, true);
3911+
bfq_del_bfqq_busy(bfqq, true);
39123912
} else {
39133913
bfq_requeue_bfqq(bfqd, bfqq, true);
39143914
/*
@@ -5255,9 +5255,7 @@ void bfq_put_queue(struct bfq_queue *bfqq)
52555255
struct hlist_node *n;
52565256
struct bfq_group *bfqg = bfqq_group(bfqq);
52575257

5258-
if (bfqq->bfqd)
5259-
bfq_log_bfqq(bfqq->bfqd, bfqq, "put_queue: %p %d",
5260-
bfqq, bfqq->ref);
5258+
bfq_log_bfqq(bfqq->bfqd, bfqq, "put_queue: %p %d", bfqq, bfqq->ref);
52615259

52625260
bfqq->ref--;
52635261
if (bfqq->ref)
@@ -5321,7 +5319,7 @@ void bfq_put_queue(struct bfq_queue *bfqq)
53215319
hlist_del_init(&item->woken_list_node);
53225320
}
53235321

5324-
if (bfqq->bfqd && bfqq->bfqd->last_completed_rq_bfqq == bfqq)
5322+
if (bfqq->bfqd->last_completed_rq_bfqq == bfqq)
53255323
bfqq->bfqd->last_completed_rq_bfqq = NULL;
53265324

53275325
kmem_cache_free(bfq_pool, bfqq);

block/bfq-iosched.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -993,20 +993,23 @@ void bfq_put_async_queues(struct bfq_data *bfqd, struct bfq_group *bfqg);
993993
/* ---------------- cgroups-support interface ---------------- */
994994

995995
void bfqg_stats_update_legacy_io(struct request_queue *q, struct request *rq);
996-
void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
997-
blk_opf_t opf);
998996
void bfqg_stats_update_io_remove(struct bfq_group *bfqg, blk_opf_t opf);
999997
void bfqg_stats_update_io_merged(struct bfq_group *bfqg, blk_opf_t opf);
1000998
void bfqg_stats_update_completion(struct bfq_group *bfqg, u64 start_time_ns,
1001999
u64 io_start_time_ns, blk_opf_t opf);
10021000
void bfqg_stats_update_dequeue(struct bfq_group *bfqg);
1003-
void bfqg_stats_set_start_empty_time(struct bfq_group *bfqg);
1004-
void bfqg_stats_update_idle_time(struct bfq_group *bfqg);
10051001
void bfqg_stats_set_start_idle_time(struct bfq_group *bfqg);
1006-
void bfqg_stats_update_avg_queue_size(struct bfq_group *bfqg);
10071002
void bfq_bfqq_move(struct bfq_data *bfqd, struct bfq_queue *bfqq,
10081003
struct bfq_group *bfqg);
10091004

1005+
#ifdef CONFIG_BFQ_CGROUP_DEBUG
1006+
void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
1007+
blk_opf_t opf);
1008+
void bfqg_stats_set_start_empty_time(struct bfq_group *bfqg);
1009+
void bfqg_stats_update_idle_time(struct bfq_group *bfqg);
1010+
void bfqg_stats_update_avg_queue_size(struct bfq_group *bfqg);
1011+
#endif
1012+
10101013
void bfq_init_entity(struct bfq_entity *entity, struct bfq_group *bfqg);
10111014
void bfq_bic_update_cgroup(struct bfq_io_cq *bic, struct bio *bio);
10121015
void bfq_end_wr_async(struct bfq_data *bfqd);
@@ -1077,9 +1080,8 @@ void bfq_deactivate_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
10771080
void bfq_activate_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq);
10781081
void bfq_requeue_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
10791082
bool expiration);
1080-
void bfq_del_bfqq_busy(struct bfq_data *bfqd, struct bfq_queue *bfqq,
1081-
bool expiration);
1082-
void bfq_add_bfqq_busy(struct bfq_data *bfqd, struct bfq_queue *bfqq);
1083+
void bfq_del_bfqq_busy(struct bfq_queue *bfqq, bool expiration);
1084+
void bfq_add_bfqq_busy(struct bfq_queue *bfqq);
10831085

10841086
/* --------------- end of interface of B-WF2Q+ ---------------- */
10851087

block/bfq-wf2q.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1651,9 +1651,10 @@ void bfq_requeue_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
16511651
* the service tree. As a special case, it can be invoked during an
16521652
* expiration.
16531653
*/
1654-
void bfq_del_bfqq_busy(struct bfq_data *bfqd, struct bfq_queue *bfqq,
1655-
bool expiration)
1654+
void bfq_del_bfqq_busy(struct bfq_queue *bfqq, bool expiration)
16561655
{
1656+
struct bfq_data *bfqd = bfqq->bfqd;
1657+
16571658
bfq_log_bfqq(bfqd, bfqq, "del from busy");
16581659

16591660
bfq_clear_bfqq_busy(bfqq);
@@ -1674,8 +1675,10 @@ void bfq_del_bfqq_busy(struct bfq_data *bfqd, struct bfq_queue *bfqq,
16741675
/*
16751676
* Called when an inactive queue receives a new request.
16761677
*/
1677-
void bfq_add_bfqq_busy(struct bfq_data *bfqd, struct bfq_queue *bfqq)
1678+
void bfq_add_bfqq_busy(struct bfq_queue *bfqq)
16781679
{
1680+
struct bfq_data *bfqd = bfqq->bfqd;
1681+
16791682
bfq_log_bfqq(bfqd, bfqq, "add to busy");
16801683

16811684
bfq_activate_bfqq(bfqd, bfqq);

block/bio.c

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -760,8 +760,6 @@ EXPORT_SYMBOL(bio_put);
760760
static int __bio_clone(struct bio *bio, struct bio *bio_src, gfp_t gfp)
761761
{
762762
bio_set_flag(bio, BIO_CLONED);
763-
if (bio_flagged(bio_src, BIO_THROTTLED))
764-
bio_set_flag(bio, BIO_THROTTLED);
765763
bio->bi_ioprio = bio_src->bi_ioprio;
766764
bio->bi_iter = bio_src->bi_iter;
767765

@@ -1065,9 +1063,6 @@ void __bio_add_page(struct bio *bio, struct page *page,
10651063

10661064
bio->bi_iter.bi_size += len;
10671065
bio->bi_vcnt++;
1068-
1069-
if (!bio_flagged(bio, BIO_WORKINGSET) && unlikely(PageWorkingset(page)))
1070-
bio_set_flag(bio, BIO_WORKINGSET);
10711066
}
10721067
EXPORT_SYMBOL_GPL(__bio_add_page);
10731068

@@ -1276,9 +1271,6 @@ static int __bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter)
12761271
* fit into the bio, or are requested in @iter, whatever is smaller. If
12771272
* MM encounters an error pinning the requested pages, it stops. Error
12781273
* is returned only if 0 pages could be pinned.
1279-
*
1280-
* It's intended for direct IO, so doesn't do PSI tracking, the caller is
1281-
* responsible for setting BIO_WORKINGSET if necessary.
12821274
*/
12831275
int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter)
12841276
{
@@ -1294,8 +1286,6 @@ int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter)
12941286
ret = __bio_iov_iter_get_pages(bio, iter);
12951287
} while (!ret && iov_iter_count(iter) && !bio_full(bio, 0));
12961288

1297-
/* don't account direct I/O as memory stall */
1298-
bio_clear_flag(bio, BIO_WORKINGSET);
12991289
return bio->bi_vcnt ? 0 : ret;
13001290
}
13011291
EXPORT_SYMBOL_GPL(bio_iov_iter_get_pages);
@@ -1754,7 +1744,8 @@ static int __init init_bio(void)
17541744
cpuhp_setup_state_multi(CPUHP_BIO_DEAD, "block/bio:dead", NULL,
17551745
bio_cpu_dead);
17561746

1757-
if (bioset_init(&fs_bio_set, BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS))
1747+
if (bioset_init(&fs_bio_set, BIO_POOL_SIZE, 0,
1748+
BIOSET_NEED_BVECS | BIOSET_PERCPU_CACHE))
17581749
panic("bio: can't allocate bios\n");
17591750

17601751
if (bioset_integrity_create(&fs_bio_set, BIO_POOL_SIZE))

0 commit comments

Comments
 (0)