OpenWrt – Blame information for rev 2
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | From 08263a9ae664b24fa777d20b365601534842b236 Mon Sep 17 00:00:00 2001 |
2 | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> |
||
3 | Date: Wed, 21 Jun 2017 08:26:42 +0200 |
||
4 | Subject: [PATCH] mtd: partitions: add helper for deleting partition |
||
5 | MIME-Version: 1.0 |
||
6 | Content-Type: text/plain; charset=UTF-8 |
||
7 | Content-Transfer-Encoding: 8bit |
||
8 | |||
9 | There are two similar functions handling deletion. One handles single |
||
10 | partition and another the whole MTD flash device. They share (duplicate) |
||
11 | some code so it makes sense to add a small helper for that part. |
||
12 | |||
13 | Function del_mtd_partitions has been moved a bit to keep all deleting |
||
14 | stuff together. |
||
15 | |||
16 | Signed-off-by: Rafał Miłecki <rafal@milecki.pl> |
||
17 | Signed-off-by: Brian Norris <computersforpeace@gmail.com> |
||
18 | --- |
||
19 | drivers/mtd/mtdpart.c | 75 +++++++++++++++++++++++++++++---------------------- |
||
20 | 1 file changed, 43 insertions(+), 32 deletions(-) |
||
21 | |||
22 | --- a/drivers/mtd/mtdpart.c |
||
23 | +++ b/drivers/mtd/mtdpart.c |
||
24 | @@ -363,32 +363,6 @@ static inline void free_partition(struct |
||
25 | kfree(p); |
||
26 | } |
||
27 | |||
28 | -/* |
||
29 | - * This function unregisters and destroy all slave MTD objects which are |
||
30 | - * attached to the given master MTD object. |
||
31 | - */ |
||
32 | - |
||
33 | -int del_mtd_partitions(struct mtd_info *master) |
||
34 | -{ |
||
35 | - struct mtd_part *slave, *next; |
||
36 | - int ret, err = 0; |
||
37 | - |
||
38 | - mutex_lock(&mtd_partitions_mutex); |
||
39 | - list_for_each_entry_safe(slave, next, &mtd_partitions, list) |
||
40 | - if (slave->master == master) { |
||
41 | - ret = del_mtd_device(&slave->mtd); |
||
42 | - if (ret < 0) { |
||
43 | - err = ret; |
||
44 | - continue; |
||
45 | - } |
||
46 | - list_del(&slave->list); |
||
47 | - free_partition(slave); |
||
48 | - } |
||
49 | - mutex_unlock(&mtd_partitions_mutex); |
||
50 | - |
||
51 | - return err; |
||
52 | -} |
||
53 | - |
||
54 | static struct mtd_part *allocate_partition(struct mtd_info *master, |
||
55 | const struct mtd_partition *part, int partno, |
||
56 | uint64_t cur_offset) |
||
57 | @@ -675,6 +649,48 @@ int mtd_add_partition(struct mtd_info *m |
||
58 | } |
||
59 | EXPORT_SYMBOL_GPL(mtd_add_partition); |
||
60 | |||
61 | +/** |
||
62 | + * __mtd_del_partition - delete MTD partition |
||
63 | + * |
||
64 | + * @priv: internal MTD struct for partition to be deleted |
||
65 | + * |
||
66 | + * This function must be called with the partitions mutex locked. |
||
67 | + */ |
||
68 | +static int __mtd_del_partition(struct mtd_part *priv) |
||
69 | +{ |
||
70 | + int err; |
||
71 | + |
||
72 | + err = del_mtd_device(&priv->mtd); |
||
73 | + if (err) |
||
74 | + return err; |
||
75 | + |
||
76 | + list_del(&priv->list); |
||
77 | + free_partition(priv); |
||
78 | + |
||
79 | + return 0; |
||
80 | +} |
||
81 | + |
||
82 | +/* |
||
83 | + * This function unregisters and destroy all slave MTD objects which are |
||
84 | + * attached to the given master MTD object. |
||
85 | + */ |
||
86 | +int del_mtd_partitions(struct mtd_info *master) |
||
87 | +{ |
||
88 | + struct mtd_part *slave, *next; |
||
89 | + int ret, err = 0; |
||
90 | + |
||
91 | + mutex_lock(&mtd_partitions_mutex); |
||
92 | + list_for_each_entry_safe(slave, next, &mtd_partitions, list) |
||
93 | + if (slave->master == master) { |
||
94 | + ret = __mtd_del_partition(slave); |
||
95 | + if (ret < 0) |
||
96 | + err = ret; |
||
97 | + } |
||
98 | + mutex_unlock(&mtd_partitions_mutex); |
||
99 | + |
||
100 | + return err; |
||
101 | +} |
||
102 | + |
||
103 | int mtd_del_partition(struct mtd_info *master, int partno) |
||
104 | { |
||
105 | struct mtd_part *slave, *next; |
||
106 | @@ -686,12 +702,7 @@ int mtd_del_partition(struct mtd_info *m |
||
107 | (slave->mtd.index == partno)) { |
||
108 | sysfs_remove_files(&slave->mtd.dev.kobj, |
||
109 | mtd_partition_attrs); |
||
110 | - ret = del_mtd_device(&slave->mtd); |
||
111 | - if (ret < 0) |
||
112 | - break; |
||
113 | - |
||
114 | - list_del(&slave->list); |
||
115 | - free_partition(slave); |
||
116 | + ret = __mtd_del_partition(slave); |
||
117 | break; |
||
118 | } |
||
119 | mutex_unlock(&mtd_partitions_mutex); |