Root/
1 | /* |
2 | * Copyright (C) 2003 Christophe Saout <christophe@saout.de> |
3 | * |
4 | * This file is released under the GPL. |
5 | */ |
6 | |
7 | #include <linux/device-mapper.h> |
8 | |
9 | #include <linux/module.h> |
10 | #include <linux/init.h> |
11 | #include <linux/bio.h> |
12 | |
13 | #define DM_MSG_PREFIX "zero" |
14 | |
15 | /* |
16 | * Construct a dummy mapping that only returns zeros |
17 | */ |
18 | static int zero_ctr(struct dm_target *ti, unsigned int argc, char **argv) |
19 | { |
20 | if (argc != 0) { |
21 | ti->error = "No arguments required"; |
22 | return -EINVAL; |
23 | } |
24 | |
25 | /* |
26 | * Silently drop discards, avoiding -EOPNOTSUPP. |
27 | */ |
28 | ti->num_discard_requests = 1; |
29 | |
30 | return 0; |
31 | } |
32 | |
33 | /* |
34 | * Return zeros only on reads |
35 | */ |
36 | static int zero_map(struct dm_target *ti, struct bio *bio, |
37 | union map_info *map_context) |
38 | { |
39 | switch(bio_rw(bio)) { |
40 | case READ: |
41 | zero_fill_bio(bio); |
42 | break; |
43 | case READA: |
44 | /* readahead of null bytes only wastes buffer cache */ |
45 | return -EIO; |
46 | case WRITE: |
47 | /* writes get silently dropped */ |
48 | break; |
49 | } |
50 | |
51 | bio_endio(bio, 0); |
52 | |
53 | /* accepted bio, don't make new request */ |
54 | return DM_MAPIO_SUBMITTED; |
55 | } |
56 | |
57 | static struct target_type zero_target = { |
58 | .name = "zero", |
59 | .version = {1, 0, 0}, |
60 | .module = THIS_MODULE, |
61 | .ctr = zero_ctr, |
62 | .map = zero_map, |
63 | }; |
64 | |
65 | static int __init dm_zero_init(void) |
66 | { |
67 | int r = dm_register_target(&zero_target); |
68 | |
69 | if (r < 0) |
70 | DMERR("register failed %d", r); |
71 | |
72 | return r; |
73 | } |
74 | |
75 | static void __exit dm_zero_exit(void) |
76 | { |
77 | dm_unregister_target(&zero_target); |
78 | } |
79 | |
80 | module_init(dm_zero_init) |
81 | module_exit(dm_zero_exit) |
82 | |
83 | MODULE_AUTHOR("Christophe Saout <christophe@saout.de>"); |
84 | MODULE_DESCRIPTION(DM_NAME " dummy target returning zeros"); |
85 | MODULE_LICENSE("GPL"); |
86 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9