};
 
 #ifdef CONFIG_NVME_MULTIPATH
+/*
+ * NOTE: The dummy attribute does not appear in sysfs. It exists solely to allow
+ * control over the visibility of the multipath sysfs node. Without at least one
+ * attribute defined in nvme_ns_mpath_attrs[], the sysfs implementation does not
+ * invoke the multipath_sysfs_group_visible() method. As a result, we would not
+ * be able to control the visibility of the multipath sysfs node.
+ */
+static struct attribute dummy_attr = {
+       .name = "dummy",
+};
+
 static struct attribute *nvme_ns_mpath_attrs[] = {
+       &dummy_attr,
        NULL,
 };
 
+static bool multipath_sysfs_group_visible(struct kobject *kobj)
+{
+       struct device *dev = container_of(kobj, struct device, kobj);
+
+       return nvme_disk_is_ns_head(dev_to_disk(dev));
+}
+
+static bool multipath_sysfs_attr_visible(struct kobject *kobj,
+               struct attribute *attr, int n)
+{
+       return false;
+}
+
+DEFINE_SYSFS_GROUP_VISIBLE(multipath_sysfs)
+
 const struct attribute_group nvme_ns_mpath_attr_group = {
        .name           = "multipath",
        .attrs          = nvme_ns_mpath_attrs,
+       .is_visible     = SYSFS_GROUP_VISIBLE(multipath_sysfs),
 };
 #endif