@@ -1157,12 +1157,34 @@ static void nvme_report_ns_ids(struct nvme_ctrl *ctrl, unsigned int nsid,
1157
1157
}
1158
1158
}
1159
1159
1160
+ static void nvme_update_disk_info (struct gendisk * disk ,
1161
+ struct nvme_ns * ns , struct nvme_id_ns * id )
1162
+ {
1163
+ sector_t capacity = le64_to_cpup (& id -> nsze ) << (ns -> lba_shift - 9 );
1164
+ unsigned stream_alignment = 0 ;
1165
+
1166
+ if (ns -> ctrl -> nr_streams && ns -> sws && ns -> sgs )
1167
+ stream_alignment = ns -> sws * ns -> sgs ;
1168
+
1169
+ blk_mq_freeze_queue (disk -> queue );
1170
+ blk_integrity_unregister (disk );
1171
+
1172
+ blk_queue_logical_block_size (disk -> queue , 1 << ns -> lba_shift );
1173
+ if (ns -> ms && !ns -> ext &&
1174
+ (ns -> ctrl -> ops -> flags & NVME_F_METADATA_SUPPORTED ))
1175
+ nvme_init_integrity (disk , ns -> ms , ns -> pi_type );
1176
+ if (ns -> ms && !(ns -> ms == 8 && ns -> pi_type ) && !blk_get_integrity (disk ))
1177
+ capacity = 0 ;
1178
+ set_capacity (disk , capacity );
1179
+
1180
+ if (ns -> ctrl -> oncs & NVME_CTRL_ONCS_DSM )
1181
+ nvme_config_discard (ns -> ctrl , stream_alignment , disk -> queue );
1182
+ blk_mq_unfreeze_queue (disk -> queue );
1183
+ }
1184
+
1160
1185
static void __nvme_revalidate_disk (struct gendisk * disk , struct nvme_id_ns * id )
1161
1186
{
1162
1187
struct nvme_ns * ns = disk -> private_data ;
1163
- struct nvme_ctrl * ctrl = ns -> ctrl ;
1164
- unsigned stream_alignment = 0 ;
1165
- u16 bs ;
1166
1188
1167
1189
/*
1168
1190
* If identify namespace failed, use default 512 byte block size so
@@ -1171,7 +1193,6 @@ static void __nvme_revalidate_disk(struct gendisk *disk, struct nvme_id_ns *id)
1171
1193
ns -> lba_shift = id -> lbaf [id -> flbas & NVME_NS_FLBAS_LBA_MASK ].ds ;
1172
1194
if (ns -> lba_shift == 0 )
1173
1195
ns -> lba_shift = 9 ;
1174
- bs = 1 << ns -> lba_shift ;
1175
1196
ns -> noiob = le16_to_cpu (id -> noiob );
1176
1197
ns -> ext = ns -> ms && (id -> flbas & NVME_NS_FLBAS_META_EXT );
1177
1198
ns -> ms = le16_to_cpu (id -> lbaf [id -> flbas & NVME_NS_FLBAS_LBA_MASK ].ms );
@@ -1181,27 +1202,9 @@ static void __nvme_revalidate_disk(struct gendisk *disk, struct nvme_id_ns *id)
1181
1202
else
1182
1203
ns -> pi_type = 0 ;
1183
1204
1184
- if (ctrl -> nr_streams && ns -> sws && ns -> sgs )
1185
- stream_alignment = ns -> sws * ns -> sgs ;
1186
-
1187
1205
if (ns -> noiob )
1188
1206
nvme_set_chunk_size (ns );
1189
-
1190
- blk_mq_freeze_queue (disk -> queue );
1191
- blk_integrity_unregister (disk );
1192
-
1193
- blk_queue_logical_block_size (ns -> queue , bs );
1194
- if (ns -> ms && !ns -> ext &&
1195
- (ctrl -> ops -> flags & NVME_F_METADATA_SUPPORTED ))
1196
- nvme_init_integrity (disk , ns -> ms , ns -> pi_type );
1197
- if (ns -> ms && !(ns -> ms == 8 && ns -> pi_type ) && !blk_get_integrity (disk ))
1198
- set_capacity (disk , 0 );
1199
- else
1200
- set_capacity (disk , le64_to_cpup (& id -> nsze ) << (ns -> lba_shift - 9 ));
1201
-
1202
- if (ctrl -> oncs & NVME_CTRL_ONCS_DSM )
1203
- nvme_config_discard (ctrl , stream_alignment , disk -> queue );
1204
- blk_mq_unfreeze_queue (disk -> queue );
1207
+ nvme_update_disk_info (disk , ns , id );
1205
1208
}
1206
1209
1207
1210
static int nvme_revalidate_disk (struct gendisk * disk )
0 commit comments