@@ -1907,6 +1907,13 @@ static void __nvme_revalidate_disk(struct gendisk *disk, struct nvme_id_ns *id)
if (ns->head->disk) {
nvme_update_disk_info(ns->head->disk, ns, id);
blk_queue_stack_limits(ns->head->disk->queue, ns->queue);
+ if (bdi_cap_stable_pages_required(ns->queue->backing_dev_info)) {
+ struct backing_dev_info *info =
+ ns->head->disk->queue->backing_dev_info;
+
+ info->capabilities |= BDI_CAP_STABLE_WRITES;
+ }
I think this needs to go into blk_queue_stack_limits instead, otherwise
we have the same problem with other stacking drivers.
I thought about this, but the stack_limits has different variants
(blk_stack_limits, bdev_stack_limits) but only the first takes a
request_queue...
I see that dm-table does roughly the same thing, drbd ignores it.
In general, dm is doing a whole bunch of stacking limits/capabilities
related stuff that are not involved in blk_stack_limits...
I could theoretically add a flag to queue_limits to mirror this, is
that what you are suggesting?