Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 539de6b3 authored by Badhri Jagan Sridharan's avatar Badhri Jagan Sridharan Committed by Amit Pundir
Browse files

ANDROID: dm: android-verity: rebase for 4.9



Export the direct_access method of dm_linear target for
dm-android-verity target.

Signed-off-by: default avatarBadhri Jagan Sridharan <Badhri@google.com>
Change-Id: I46556d882305e5194352946264cbc9c06e5038e4

[AmitP: Rebased the changes for v4.14]
Signed-off-by: default avatarAmit Pundir <amit.pundir@linaro.org>
parent 0b8bcd5c
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -633,8 +633,11 @@ static int add_as_linear_device(struct dm_target *ti, char *dev)
	android_verity_target.dtr = dm_linear_dtr,
	android_verity_target.map = dm_linear_map,
	android_verity_target.status = dm_linear_status,
	android_verity_target.end_io = dm_linear_end_io,
	android_verity_target.prepare_ioctl = dm_linear_prepare_ioctl,
	android_verity_target.iterate_devices = dm_linear_iterate_devices,
        android_verity_target.direct_access = dm_linear_dax_direct_access,
        android_verity_target.dax_copy_from_iter = dm_linear_dax_copy_from_iter,
	android_verity_target.io_hints = NULL;

	err = dm_linear_ctr(ti, DM_LINEAR_ARGS, linear_table_args);
+6 −0
Original line number Diff line number Diff line
@@ -111,6 +111,8 @@ extern struct target_type linear_target;

extern void dm_linear_dtr(struct dm_target *ti);
extern int dm_linear_map(struct dm_target *ti, struct bio *bio);
extern int dm_linear_end_io(struct dm_target *ti, struct bio *bio,
			 blk_status_t *error);
extern void dm_linear_status(struct dm_target *ti, status_type_t type,
			unsigned status_flags, char *result, unsigned maxlen);
extern int dm_linear_prepare_ioctl(struct dm_target *ti,
@@ -118,4 +120,8 @@ extern int dm_linear_prepare_ioctl(struct dm_target *ti,
extern int dm_linear_iterate_devices(struct dm_target *ti,
			iterate_devices_callout_fn fn, void *data);
extern int dm_linear_ctr(struct dm_target *ti, unsigned int argc, char **argv);
extern long dm_linear_dax_direct_access(struct dm_target *ti, sector_t sector,
                                 void **kaddr, pfn_t *pfn, long size);
extern size_t dm_linear_dax_copy_from_iter(struct dm_target *ti, pgoff_t pgoff,
		void *addr, size_t bytes, struct iov_iter *i);
#endif /* DM_ANDROID_VERITY_H */
+9 −6
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ int dm_linear_map(struct dm_target *ti, struct bio *bio)
	return DM_MAPIO_REMAPPED;
}

static int linear_end_io(struct dm_target *ti, struct bio *bio,
int dm_linear_end_io(struct dm_target *ti, struct bio *bio,
			 blk_status_t *error)
{
	struct linear_c *lc = ti->private;
@@ -111,6 +111,7 @@ static int linear_end_io(struct dm_target *ti, struct bio *bio,

	return DM_ENDIO_DONE;
}
EXPORT_SYMBOL_GPL(dm_linear_end_io);

void dm_linear_status(struct dm_target *ti, status_type_t type,
			  unsigned status_flags, char *result, unsigned maxlen)
@@ -154,7 +155,7 @@ int dm_linear_iterate_devices(struct dm_target *ti,
	return fn(ti, lc->dev, lc->start, ti->len, data);
}

static long linear_dax_direct_access(struct dm_target *ti, pgoff_t pgoff,
long dm_linear_dax_direct_access(struct dm_target *ti, pgoff_t pgoff,
		long nr_pages, void **kaddr, pfn_t *pfn)
{
	long ret;
@@ -169,8 +170,9 @@ static long linear_dax_direct_access(struct dm_target *ti, pgoff_t pgoff,
		return ret;
	return dax_direct_access(dax_dev, pgoff, nr_pages, kaddr, pfn);
}
EXPORT_SYMBOL_GPL(dm_linear_dax_direct_access);

static size_t linear_dax_copy_from_iter(struct dm_target *ti, pgoff_t pgoff,
size_t dm_linear_dax_copy_from_iter(struct dm_target *ti, pgoff_t pgoff,
		void *addr, size_t bytes, struct iov_iter *i)
{
	struct linear_c *lc = ti->private;
@@ -183,6 +185,7 @@ static size_t linear_dax_copy_from_iter(struct dm_target *ti, pgoff_t pgoff,
		return 0;
	return dax_copy_from_iter(dax_dev, pgoff, addr, bytes, i);
}
EXPORT_SYMBOL_GPL(dm_linear_dax_copy_from_iter);

static struct target_type linear_target = {
	.name   = "linear",
@@ -193,11 +196,11 @@ static struct target_type linear_target = {
	.dtr    = dm_linear_dtr,
	.map    = dm_linear_map,
	.status = dm_linear_status,
	.end_io = linear_end_io,
	.end_io = dm_linear_end_io,
	.prepare_ioctl = dm_linear_prepare_ioctl,
	.iterate_devices = dm_linear_iterate_devices,
	.direct_access = linear_dax_direct_access,
	.dax_copy_from_iter = linear_dax_copy_from_iter,
	.direct_access = dm_linear_dax_direct_access,
	.dax_copy_from_iter = dm_linear_dax_copy_from_iter,
};

int __init dm_linear_init(void)