Commit b7768c48 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'block-6.11-20240809' of git://git.kernel.dk/linux

Pull block fixes from Jens Axboe:
 "Just a set of cleanups for blk-throttle and nvme structures"

* tag 'block-6.11-20240809' of git://git.kernel.dk/linux:
  nvme: reorganize nvme_ns_head fields
  nvme: change data type of lba_shift
  nvme: remove a field from nvme_ns_head
  nvme: remove unused parameter
  blk-throttle: remove more latency dead-code
parents 8828729c eded04fe
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -31,14 +31,6 @@ static struct workqueue_struct *kthrotld_workqueue;

#define rb_entry_tg(node)	rb_entry((node), struct throtl_grp, rb_node)

/* We measure latency for request size from <= 4k to >= 1M */
#define LATENCY_BUCKET_SIZE 9

struct latency_bucket {
	unsigned long total_latency; /* ns / 1024 */
	int samples;
};

struct throtl_data
{
	/* service tree for active throtl groups */
@@ -116,9 +108,6 @@ static unsigned int tg_iops_limit(struct throtl_grp *tg, int rw)
	return tg->iops[rw];
}

#define request_bucket_index(sectors) \
	clamp_t(int, order_base_2(sectors) - 3, 0, LATENCY_BUCKET_SIZE - 1)

/**
 * throtl_log - log debug message via blktrace
 * @sq: the service_queue being reported
+9 −9
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ struct nvme_ns_info {
	struct nvme_ns_ids ids;
	u32 nsid;
	__le32 anagrpid;
	u8 pi_offset;
	bool is_shared;
	bool is_readonly;
	bool is_ready;
@@ -1757,8 +1758,8 @@ int nvme_getgeo(struct block_device *bdev, struct hd_geometry *geo)
	return 0;
}

static bool nvme_init_integrity(struct gendisk *disk, struct nvme_ns_head *head,
		struct queue_limits *lim)
static bool nvme_init_integrity(struct nvme_ns_head *head,
		struct queue_limits *lim, struct nvme_ns_info *info)
{
	struct blk_integrity *bi = &lim->integrity;

@@ -1816,7 +1817,7 @@ static bool nvme_init_integrity(struct gendisk *disk, struct nvme_ns_head *head,
	}

	bi->tuple_size = head->ms;
	bi->pi_offset = head->pi_offset;
	bi->pi_offset = info->pi_offset;
	return true;
}

@@ -1902,12 +1903,11 @@ static void nvme_configure_pi_elbas(struct nvme_ns_head *head,

static void nvme_configure_metadata(struct nvme_ctrl *ctrl,
		struct nvme_ns_head *head, struct nvme_id_ns *id,
		struct nvme_id_ns_nvm *nvm)
		struct nvme_id_ns_nvm *nvm, struct nvme_ns_info *info)
{
	head->features &= ~(NVME_NS_METADATA_SUPPORTED | NVME_NS_EXT_LBAS);
	head->pi_type = 0;
	head->pi_size = 0;
	head->pi_offset = 0;
	head->ms = le16_to_cpu(id->lbaf[nvme_lbaf_index(id->flbas)].ms);
	if (!head->ms || !(ctrl->ops->flags & NVME_F_METADATA_SUPPORTED))
		return;
@@ -1922,7 +1922,7 @@ static void nvme_configure_metadata(struct nvme_ctrl *ctrl,
	if (head->pi_size && head->ms >= head->pi_size)
		head->pi_type = id->dps & NVME_NS_DPS_PI_MASK;
	if (!(id->dps & NVME_NS_DPS_PI_FIRST))
		head->pi_offset = head->ms - head->pi_size;
		info->pi_offset = head->ms - head->pi_size;

	if (ctrl->ops->flags & NVME_F_FABRICS) {
		/*
@@ -2156,7 +2156,7 @@ static int nvme_update_ns_info_block(struct nvme_ns *ns,

	lim = queue_limits_start_update(ns->disk->queue);
	nvme_set_ctrl_limits(ns->ctrl, &lim);
	nvme_configure_metadata(ns->ctrl, ns->head, id, nvm);
	nvme_configure_metadata(ns->ctrl, ns->head, id, nvm, info);
	nvme_set_chunk_sectors(ns, id, &lim);
	if (!nvme_update_disk_info(ns, id, &lim))
		capacity = 0;
@@ -2176,7 +2176,7 @@ static int nvme_update_ns_info_block(struct nvme_ns *ns,
	 * I/O to namespaces with metadata except when the namespace supports
	 * PI, as it can strip/insert in that case.
	 */
	if (!nvme_init_integrity(ns->disk, ns->head, &lim))
	if (!nvme_init_integrity(ns->head, &lim, info))
		capacity = 0;

	ret = queue_limits_commit_update(ns->disk->queue, &lim);
@@ -2280,7 +2280,7 @@ static int nvme_update_ns_info(struct nvme_ns *ns, struct nvme_ns_info *info)
		if (unsupported)
			ns->head->disk->flags |= GENHD_FL_HIDDEN;
		else
			nvme_init_integrity(ns->head->disk, ns->head, &lim);
			nvme_init_integrity(ns->head, &lim, info);
		ret = queue_limits_commit_update(ns->head->disk->queue, &lim);

		set_capacity_and_notify(ns->head->disk, get_capacity(ns->disk));
+6 −7
Original line number Diff line number Diff line
@@ -462,20 +462,19 @@ struct nvme_ns_head {
	struct srcu_struct      srcu;
	struct nvme_subsystem	*subsys;
	struct nvme_ns_ids	ids;
	u8			lba_shift;
	u16			ms;
	u16			pi_size;
	u8			pi_type;
	u8			guard_type;
	struct list_head	entry;
	struct kref		ref;
	bool			shared;
	bool			passthru_err_log_enabled;
	int			instance;
	struct nvme_effects_log *effects;
	u64			nuse;
	unsigned		ns_id;
	int			lba_shift;
	u16			ms;
	u16			pi_size;
	u8			pi_type;
	u8			pi_offset;
	u8			guard_type;
	int			instance;
#ifdef CONFIG_BLK_DEV_ZONED
	u64			zsze;
#endif