Blame view
drivers/md/dm-zero.c
1.55 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 |
/* * Copyright (C) 2003 Christophe Saout <christophe@saout.de> * * This file is released under the GPL. */ |
586e80e6e dm: remove dm hea... |
6 |
#include <linux/device-mapper.h> |
1da177e4c Linux-2.6.12-rc2 |
7 8 9 10 |
#include <linux/module.h> #include <linux/init.h> #include <linux/bio.h> |
72d948616 [PATCH] dm: impro... |
11 |
#define DM_MSG_PREFIX "zero" |
1da177e4c Linux-2.6.12-rc2 |
12 13 14 15 16 17 |
/* * Construct a dummy mapping that only returns zeros */ static int zero_ctr(struct dm_target *ti, unsigned int argc, char **argv) { if (argc != 0) { |
72d948616 [PATCH] dm: impro... |
18 |
ti->error = "No arguments required"; |
1da177e4c Linux-2.6.12-rc2 |
19 20 |
return -EINVAL; } |
f8facb61b dm: zero silently... |
21 22 23 24 |
/* * Silently drop discards, avoiding -EOPNOTSUPP. */ ti->num_discard_requests = 1; |
1da177e4c Linux-2.6.12-rc2 |
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
return 0; } /* * Return zeros only on reads */ static int zero_map(struct dm_target *ti, struct bio *bio, union map_info *map_context) { switch(bio_rw(bio)) { case READ: zero_fill_bio(bio); break; case READA: /* readahead of null bytes only wastes buffer cache */ return -EIO; case WRITE: /* writes get silently dropped */ break; } |
6712ecf8f Drop 'size' argum... |
45 |
bio_endio(bio, 0); |
1da177e4c Linux-2.6.12-rc2 |
46 47 |
/* accepted bio, don't make new request */ |
d2a7ad29a [PATCH] dm: map a... |
48 |
return DM_MAPIO_SUBMITTED; |
1da177e4c Linux-2.6.12-rc2 |
49 50 51 52 53 54 55 56 57 |
} static struct target_type zero_target = { .name = "zero", .version = {1, 0, 0}, .module = THIS_MODULE, .ctr = zero_ctr, .map = zero_map, }; |
5e198d94d [PATCH] device-ma... |
58 |
static int __init dm_zero_init(void) |
1da177e4c Linux-2.6.12-rc2 |
59 60 61 62 |
{ int r = dm_register_target(&zero_target); if (r < 0) |
72d948616 [PATCH] dm: impro... |
63 |
DMERR("register failed %d", r); |
1da177e4c Linux-2.6.12-rc2 |
64 65 66 |
return r; } |
5e198d94d [PATCH] device-ma... |
67 |
static void __exit dm_zero_exit(void) |
1da177e4c Linux-2.6.12-rc2 |
68 |
{ |
10d3bd09a dm: consolidate t... |
69 |
dm_unregister_target(&zero_target); |
1da177e4c Linux-2.6.12-rc2 |
70 71 72 73 74 75 76 77 |
} module_init(dm_zero_init) module_exit(dm_zero_exit) MODULE_AUTHOR("Christophe Saout <christophe@saout.de>"); MODULE_DESCRIPTION(DM_NAME " dummy target returning zeros"); MODULE_LICENSE("GPL"); |