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->flush_bypasses_map = true; in linear_ctr()
66 ti->private = lc; in linear_ctr()
76 struct linear_c *lc = ti->private; in linear_dtr()
78 dm_put_device(ti, lc->dev); in linear_dtr()
84 struct linear_c *lc = ti->private; in linear_map_sector()
86 return lc->start + dm_target_offset(ti, bi_sector); in linear_map_sector()
91 struct linear_c *lc = ti->private; in linear_map()
93 bio_set_dev(bio, lc->dev->bdev); in linear_map()
94 bio->bi_iter.bi_sector = linear_map_sector(ti, bio->bi_iter.bi_sector); in linear_map()
102 struct linear_c *lc = ti->private; in linear_status()
111 DMEMIT("%s %llu", lc->dev->name, (unsigned long long)lc->start); in linear_status()
115 DMEMIT_TARGET_NAME_VERSION(ti->type); in linear_status()
116 DMEMIT(",device_name=%s,start=%llu;", lc->dev->name, in linear_status()
117 (unsigned long long)lc->start); in linear_status()
124 struct linear_c *lc = ti->private; in linear_prepare_ioctl()
125 struct dm_dev *dev = lc->dev; in linear_prepare_ioctl()
127 *bdev = dev->bdev; in linear_prepare_ioctl()
132 if (lc->start || ti->len != bdev_nr_sectors(dev->bdev)) in linear_prepare_ioctl()
141 struct linear_c *lc = ti->private; in linear_report_zones()
143 return dm_report_zones(lc->dev->bdev, lc->start, in linear_report_zones()
144 linear_map_sector(ti, args->next_sector), in linear_report_zones()
154 struct linear_c *lc = ti->private; in linear_iterate_devices()
156 return fn(ti, lc->dev, lc->start, ti->len, data); in linear_iterate_devices()
162 struct linear_c *lc = ti->private; in linear_dax_pgoff()
165 *pgoff = (get_start_sect(lc->dev->bdev) + sector) >> PAGE_SECTORS_SHIFT; in linear_dax_pgoff()
166 return lc->dev->dax_dev; in linear_dax_pgoff()
170 long nr_pages, enum dax_access_mode mode, void **kaddr, in linear_dax_direct_access() argument
175 return dax_direct_access(dax_dev, pgoff, nr_pages, mode, kaddr, pfn); in linear_dax_direct_access()
201 .name = "linear",