Lines Matching +full:linear +full:- +full:mapping +full:- +full:mode
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2001-2003 Sistina Software (UK) Limited.
15 #include <linux/device-mapper.h>
17 #define DM_MSG_PREFIX "linear"
20 * Linear: maps a linear range of a device.
28 * Construct a linear mapping: <dev_path> <offset>
38 ti->error = "Invalid argument count"; in linear_ctr()
39 return -EINVAL; in linear_ctr()
44 ti->error = "Cannot allocate linear context"; in linear_ctr()
45 return -ENOMEM; in linear_ctr()
48 ret = -EINVAL; in linear_ctr()
50 ti->error = "Invalid device sector"; in linear_ctr()
53 lc->start = tmp; in linear_ctr()
55 ret = dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), &lc->dev); in linear_ctr()
57 ti->error = "Device lookup failed"; in linear_ctr()
61 ti->num_flush_bios = 1; in linear_ctr()
62 ti->num_discard_bios = 1; in linear_ctr()
63 ti->num_secure_erase_bios = 1; in linear_ctr()
64 ti->num_write_zeroes_bios = 1; in linear_ctr()
65 ti->private = lc; in linear_ctr()
75 struct linear_c *lc = ti->private; in linear_dtr()
77 dm_put_device(ti, lc->dev); in linear_dtr()
83 struct linear_c *lc = ti->private; in linear_map_sector()
85 return lc->start + dm_target_offset(ti, bi_sector); in linear_map_sector()
90 struct linear_c *lc = ti->private; in linear_map()
92 bio_set_dev(bio, lc->dev->bdev); in linear_map()
93 bio->bi_iter.bi_sector = linear_map_sector(ti, bio->bi_iter.bi_sector); in linear_map()
101 struct linear_c *lc = ti->private; in linear_status()
110 DMEMIT("%s %llu", lc->dev->name, (unsigned long long)lc->start); in linear_status()
114 DMEMIT_TARGET_NAME_VERSION(ti->type); in linear_status()
115 DMEMIT(",device_name=%s,start=%llu;", lc->dev->name, in linear_status()
116 (unsigned long long)lc->start); in linear_status()
123 struct linear_c *lc = ti->private; in linear_prepare_ioctl()
124 struct dm_dev *dev = lc->dev; in linear_prepare_ioctl()
126 *bdev = dev->bdev; in linear_prepare_ioctl()
131 if (lc->start || ti->len != bdev_nr_sectors(dev->bdev)) in linear_prepare_ioctl()
140 struct linear_c *lc = ti->private; in linear_report_zones()
142 return dm_report_zones(lc->dev->bdev, lc->start, in linear_report_zones()
143 linear_map_sector(ti, args->next_sector), in linear_report_zones()
153 struct linear_c *lc = ti->private; in linear_iterate_devices()
155 return fn(ti, lc->dev, lc->start, ti->len, data); in linear_iterate_devices()
161 struct linear_c *lc = ti->private; in linear_dax_pgoff()
164 *pgoff = (get_start_sect(lc->dev->bdev) + sector) >> PAGE_SECTORS_SHIFT; in linear_dax_pgoff()
165 return lc->dev->dax_dev; in linear_dax_pgoff()
169 long nr_pages, enum dax_access_mode mode, void **kaddr, in linear_dax_direct_access() argument
174 return dax_direct_access(dax_dev, pgoff, nr_pages, mode, kaddr, pfn); in linear_dax_direct_access()
200 .name = "linear",