Commit 43e6c111 authored by Mikulas Patocka's avatar Mikulas Patocka Committed by Mike Snitzer
Browse files

dm: change from DMWARN to DMERR or DMCRIT for fatal errors



Change DMWARN to DMERR in cases when there is an unrecoverable error.
Change DMWARN to DMCRIT when handling of a case is unimplemented.

Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
parent 141b3523
Loading
Loading
Loading
Loading
+39 −39
Original line number Diff line number Diff line
@@ -434,7 +434,7 @@ static struct mapped_device *dm_hash_rename(struct dm_ioctl *param,
		hc = __get_name_cell(new);

	if (hc) {
		DMWARN("Unable to change %s on mapped device %s to one that "
		DMERR("Unable to change %s on mapped device %s to one that "
		      "already exists: %s",
		      change_uuid ? "uuid" : "name",
		      param->name, new);
@@ -449,7 +449,7 @@ static struct mapped_device *dm_hash_rename(struct dm_ioctl *param,
	 */
	hc = __get_name_cell(param->name);
	if (!hc) {
		DMWARN("Unable to rename non-existent device, %s to %s%s",
		DMERR("Unable to rename non-existent device, %s to %s%s",
		      param->name, change_uuid ? "uuid " : "", new);
		up_write(&_hash_lock);
		kfree(new_data);
@@ -460,7 +460,7 @@ static struct mapped_device *dm_hash_rename(struct dm_ioctl *param,
	 * Does this device already have a uuid?
	 */
	if (change_uuid && hc->uuid) {
		DMWARN("Unable to change uuid of mapped device %s to %s "
		DMERR("Unable to change uuid of mapped device %s to %s "
		      "because uuid is already set to %s",
		      param->name, new, hc->uuid);
		dm_put(hc->md);
@@ -750,7 +750,7 @@ static int get_target_version(struct file *filp, struct dm_ioctl *param, size_t
static int check_name(const char *name)
{
	if (strchr(name, '/')) {
		DMWARN("invalid device name");
		DMERR("invalid device name");
		return -EINVAL;
	}

@@ -773,7 +773,7 @@ static struct dm_table *dm_get_inactive_table(struct mapped_device *md, int *src
	down_read(&_hash_lock);
	hc = dm_get_mdptr(md);
	if (!hc || hc->md != md) {
		DMWARN("device has been removed from the dev hash table.");
		DMERR("device has been removed from the dev hash table.");
		goto out;
	}

@@ -1026,7 +1026,7 @@ static int dev_rename(struct file *filp, struct dm_ioctl *param, size_t param_si
	if (new_data < param->data ||
	    invalid_str(new_data, (void *) param + param_size) || !*new_data ||
	    strlen(new_data) > (change_uuid ? DM_UUID_LEN - 1 : DM_NAME_LEN - 1)) {
		DMWARN("Invalid new mapped device name or uuid string supplied.");
		DMERR("Invalid new mapped device name or uuid string supplied.");
		return -EINVAL;
	}

@@ -1061,7 +1061,7 @@ static int dev_set_geometry(struct file *filp, struct dm_ioctl *param, size_t pa

	if (geostr < param->data ||
	    invalid_str(geostr, (void *) param + param_size)) {
		DMWARN("Invalid geometry supplied.");
		DMERR("Invalid geometry supplied.");
		goto out;
	}

@@ -1069,13 +1069,13 @@ static int dev_set_geometry(struct file *filp, struct dm_ioctl *param, size_t pa
		   indata + 1, indata + 2, indata + 3, &dummy);

	if (x != 4) {
		DMWARN("Unable to interpret geometry settings.");
		DMERR("Unable to interpret geometry settings.");
		goto out;
	}

	if (indata[0] > 65535 || indata[1] > 255 ||
	    indata[2] > 255 || indata[3] > ULONG_MAX) {
		DMWARN("Geometry exceeds range limits.");
		DMERR("Geometry exceeds range limits.");
		goto out;
	}

@@ -1387,7 +1387,7 @@ static int populate_table(struct dm_table *table,
	char *target_params;

	if (!param->target_count) {
		DMWARN("populate_table: no targets specified");
		DMERR("populate_table: no targets specified");
		return -EINVAL;
	}

@@ -1395,7 +1395,7 @@ static int populate_table(struct dm_table *table,

		r = next_target(spec, next, end, &spec, &target_params);
		if (r) {
			DMWARN("unable to find target");
			DMERR("unable to find target");
			return r;
		}

@@ -1404,7 +1404,7 @@ static int populate_table(struct dm_table *table,
					(sector_t) spec->length,
					target_params);
		if (r) {
			DMWARN("error adding target to table");
			DMERR("error adding target to table");
			return r;
		}

@@ -1451,7 +1451,7 @@ static int table_load(struct file *filp, struct dm_ioctl *param, size_t param_si
	if (immutable_target_type &&
	    (immutable_target_type != dm_table_get_immutable_target_type(t)) &&
	    !dm_table_get_wildcard_target(t)) {
		DMWARN("can't replace immutable target type %s",
		DMERR("can't replace immutable target type %s",
		      immutable_target_type->name);
		r = -EINVAL;
		goto err_unlock_md_type;
@@ -1461,11 +1461,11 @@ static int table_load(struct file *filp, struct dm_ioctl *param, size_t param_si
		/* setup md->queue to reflect md's type (may block) */
		r = dm_setup_md_queue(md, t);
		if (r) {
			DMWARN("unable to set up device queue for new table.");
			DMERR("unable to set up device queue for new table.");
			goto err_unlock_md_type;
		}
	} else if (!is_valid_type(dm_get_md_type(md), dm_table_get_type(t))) {
		DMWARN("can't change device type (old=%u vs new=%u) after initial table load.",
		DMERR("can't change device type (old=%u vs new=%u) after initial table load.",
		      dm_get_md_type(md), dm_table_get_type(t));
		r = -EINVAL;
		goto err_unlock_md_type;
@@ -1477,7 +1477,7 @@ static int table_load(struct file *filp, struct dm_ioctl *param, size_t param_si
	down_write(&_hash_lock);
	hc = dm_get_mdptr(md);
	if (!hc || hc->md != md) {
		DMWARN("device has been removed from the dev hash table.");
		DMERR("device has been removed from the dev hash table.");
		up_write(&_hash_lock);
		r = -ENXIO;
		goto err_destroy_table;
@@ -1686,19 +1686,19 @@ static int target_message(struct file *filp, struct dm_ioctl *param, size_t para

	if (tmsg < (struct dm_target_msg *) param->data ||
	    invalid_str(tmsg->message, (void *) param + param_size)) {
		DMWARN("Invalid target message parameters.");
		DMERR("Invalid target message parameters.");
		r = -EINVAL;
		goto out;
	}

	r = dm_split_args(&argc, &argv, tmsg->message);
	if (r) {
		DMWARN("Failed to split target message parameters");
		DMERR("Failed to split target message parameters");
		goto out;
	}

	if (!argc) {
		DMWARN("Empty message received.");
		DMERR("Empty message received.");
		r = -EINVAL;
		goto out_argv;
	}
@@ -1718,12 +1718,12 @@ static int target_message(struct file *filp, struct dm_ioctl *param, size_t para

	ti = dm_table_find_target(table, tmsg->sector);
	if (!ti) {
		DMWARN("Target message sector outside device.");
		DMERR("Target message sector outside device.");
		r = -EINVAL;
	} else if (ti->type->message)
		r = ti->type->message(ti, argc, argv, result, maxlen);
	else {
		DMWARN("Target type does not support messages");
		DMERR("Target type does not support messages");
		r = -EINVAL;
	}

@@ -1814,7 +1814,7 @@ static int check_version(unsigned int cmd, struct dm_ioctl __user *user)

	if ((DM_VERSION_MAJOR != version[0]) ||
	    (DM_VERSION_MINOR < version[1])) {
		DMWARN("ioctl interface mismatch: "
		DMERR("ioctl interface mismatch: "
		      "kernel(%u.%u.%u), user(%u.%u.%u), cmd(%d)",
		      DM_VERSION_MAJOR, DM_VERSION_MINOR,
		      DM_VERSION_PATCHLEVEL,
@@ -1927,11 +1927,11 @@ static int validate_params(uint cmd, struct dm_ioctl *param)

	if (cmd == DM_DEV_CREATE_CMD) {
		if (!*param->name) {
			DMWARN("name not supplied when creating device");
			DMERR("name not supplied when creating device");
			return -EINVAL;
		}
	} else if (*param->uuid && *param->name) {
		DMWARN("only supply one of name or uuid, cmd(%u)", cmd);
		DMERR("only supply one of name or uuid, cmd(%u)", cmd);
		return -EINVAL;
	}

@@ -1978,7 +1978,7 @@ static int ctl_ioctl(struct file *file, uint command, struct dm_ioctl __user *us

	fn = lookup_ioctl(cmd, &ioctl_flags);
	if (!fn) {
		DMWARN("dm_ctl_ioctl: unknown command 0x%x", command);
		DMERR("dm_ctl_ioctl: unknown command 0x%x", command);
		return -ENOTTY;
	}

@@ -2203,7 +2203,7 @@ int __init dm_early_create(struct dm_ioctl *dmi,
					(sector_t) spec_array[i]->length,
					target_params_array[i]);
		if (r) {
			DMWARN("error adding target to table");
			DMERR("error adding target to table");
			goto err_destroy_table;
		}
	}
@@ -2216,7 +2216,7 @@ int __init dm_early_create(struct dm_ioctl *dmi,
	/* setup md->queue to reflect md's type (may block) */
	r = dm_setup_md_queue(md, t);
	if (r) {
		DMWARN("unable to set up device queue for new table.");
		DMERR("unable to set up device queue for new table.");
		goto err_destroy_table;
	}

+2 −2
Original line number Diff line number Diff line
@@ -238,7 +238,7 @@ static void dm_done(struct request *clone, blk_status_t error, bool mapped)
		dm_requeue_original_request(tio, true);
		break;
	default:
		DMWARN("unimplemented target endio return value: %d", r);
		DMCRIT("unimplemented target endio return value: %d", r);
		BUG();
	}
}
@@ -409,7 +409,7 @@ static int map_request(struct dm_rq_target_io *tio)
		dm_kill_unmapped_request(rq, BLK_STS_IOERR);
		break;
	default:
		DMWARN("unimplemented target map return value: %d", r);
		DMCRIT("unimplemented target map return value: %d", r);
		BUG();
	}

+1 −1
Original line number Diff line number Diff line
@@ -1220,7 +1220,7 @@ int dm_stats_message(struct mapped_device *md, unsigned argc, char **argv,
		return 2; /* this wasn't a stats message */

	if (r == -EINVAL)
		DMWARN("Invalid parameters for message %s", argv[0]);
		DMCRIT("Invalid parameters for message %s", argv[0]);

	return r;
}
+39 −39
Original line number Diff line number Diff line
@@ -234,7 +234,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
		return 0;

	if ((start >= dev_size) || (start + len > dev_size)) {
		DMWARN("%s: %pg too small for target: "
		DMERR("%s: %pg too small for target: "
		      "start=%llu, len=%llu, dev_size=%llu",
		      dm_device_name(ti->table->md), bdev,
		      (unsigned long long)start,
@@ -251,7 +251,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
		unsigned int zone_sectors = bdev_zone_sectors(bdev);

		if (start & (zone_sectors - 1)) {
			DMWARN("%s: start=%llu not aligned to h/w zone size %u of %pg",
			DMERR("%s: start=%llu not aligned to h/w zone size %u of %pg",
			      dm_device_name(ti->table->md),
			      (unsigned long long)start,
			      zone_sectors, bdev);
@@ -268,7 +268,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
		 * the sector range.
		 */
		if (len & (zone_sectors - 1)) {
			DMWARN("%s: len=%llu not aligned to h/w zone size %u of %pg",
			DMERR("%s: len=%llu not aligned to h/w zone size %u of %pg",
			      dm_device_name(ti->table->md),
			      (unsigned long long)len,
			      zone_sectors, bdev);
@@ -280,7 +280,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
		return 0;

	if (start & (logical_block_size_sectors - 1)) {
		DMWARN("%s: start=%llu not aligned to h/w "
		DMERR("%s: start=%llu not aligned to h/w "
		      "logical block size %u of %pg",
		      dm_device_name(ti->table->md),
		      (unsigned long long)start,
@@ -289,7 +289,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
	}

	if (len & (logical_block_size_sectors - 1)) {
		DMWARN("%s: len=%llu not aligned to h/w "
		DMERR("%s: len=%llu not aligned to h/w "
		      "logical block size %u of %pg",
		      dm_device_name(ti->table->md),
		      (unsigned long long)len,
@@ -434,7 +434,7 @@ void dm_put_device(struct dm_target *ti, struct dm_dev *d)
		}
	}
	if (!found) {
		DMWARN("%s: device %s not in table devices list",
		DMERR("%s: device %s not in table devices list",
		      dm_device_name(ti->table->md), d->name);
		return;
	}
@@ -618,7 +618,7 @@ static int validate_hardware_logical_block_alignment(struct dm_table *t,
	}

	if (remaining) {
		DMWARN("%s: table line %u (start sect %llu len %llu) "
		DMERR("%s: table line %u (start sect %llu len %llu) "
		      "not aligned to h/w logical block size %u",
		      dm_device_name(t->md), i,
		      (unsigned long long) ti->begin,
@@ -1008,7 +1008,7 @@ static int dm_table_alloc_md_mempools(struct dm_table *t, struct mapped_device *
	struct dm_md_mempools *pools;

	if (unlikely(type == DM_TYPE_NONE)) {
		DMWARN("no table type is set, can't allocate mempools");
		DMERR("no table type is set, can't allocate mempools");
		return -EINVAL;
	}

@@ -1185,7 +1185,7 @@ static int dm_table_register_integrity(struct dm_table *t)
	 * profile the new profile should not conflict.
	 */
	if (blk_integrity_compare(dm_disk(md), template_disk) < 0) {
		DMWARN("%s: conflict with existing integrity profile: "
		DMERR("%s: conflict with existing integrity profile: "
		      "%s profile mismatch",
		      dm_device_name(t->md),
		      template_disk->disk_name);
@@ -1327,7 +1327,7 @@ static int dm_table_construct_crypto_profile(struct dm_table *t)
	if (t->md->queue &&
	    !blk_crypto_has_capabilities(profile,
					 t->md->queue->crypto_profile)) {
		DMWARN("Inline encryption capabilities of new DM table were more restrictive than the old table's. This is not supported!");
		DMERR("Inline encryption capabilities of new DM table were more restrictive than the old table's. This is not supported!");
		dm_destroy_crypto_profile(profile);
		return -EINVAL;
	}
+4 −4
Original line number Diff line number Diff line
@@ -864,7 +864,7 @@ int dm_set_geometry(struct mapped_device *md, struct hd_geometry *geo)
	sector_t sz = (sector_t)geo->cylinders * geo->heads * geo->sectors;

	if (geo->start > sz) {
		DMWARN("Start sector is beyond the geometry limits.");
		DMERR("Start sector is beyond the geometry limits.");
		return -EINVAL;
	}

@@ -1149,7 +1149,7 @@ static void clone_endio(struct bio *bio)
			/* The target will handle the io */
			return;
		default:
			DMWARN("unimplemented target endio return value: %d", r);
			DMCRIT("unimplemented target endio return value: %d", r);
			BUG();
		}
	}
@@ -1455,7 +1455,7 @@ static void __map_bio(struct bio *clone)
			dm_io_dec_pending(io, BLK_STS_DM_REQUEUE);
		break;
	default:
		DMWARN("unimplemented target map return value: %d", r);
		DMCRIT("unimplemented target map return value: %d", r);
		BUG();
	}
}
@@ -2005,7 +2005,7 @@ static struct mapped_device *alloc_dev(int minor)

	md = kvzalloc_node(sizeof(*md), GFP_KERNEL, numa_node_id);
	if (!md) {
		DMWARN("unable to allocate device, out of memory.");
		DMERR("unable to allocate device, out of memory.");
		return NULL;
	}