aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd
diff options
context:
space:
mode:
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2008-01-16 07:24:14 -0500
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2008-01-25 09:41:24 -0500
commit896c0c06aa30147630e9a75949b6ae2014c841fc (patch)
treed34cbb7ed0995b92883311134e624b0d82686e4f /drivers/mtd
parentae616e1be13599c3b64e544ebe99e69ea851e99c (diff)
UBI: use bit-fields
Save 12 bytes of RAM per volume by using bit-fields instead of integers. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/ubi/ubi.h16
-rw-r--r--drivers/mtd/ubi/vmt.c12
2 files changed, 9 insertions, 19 deletions
diff --git a/drivers/mtd/ubi/ubi.h b/drivers/mtd/ubi/ubi.h
index 3cf1aa1a0240..90cdcad83cbb 100644
--- a/drivers/mtd/ubi/ubi.h
+++ b/drivers/mtd/ubi/ubi.h
@@ -144,7 +144,6 @@ struct ubi_volume_desc;
144 * @readers: number of users holding this volume in read-only mode 144 * @readers: number of users holding this volume in read-only mode
145 * @writers: number of users holding this volume in read-write mode 145 * @writers: number of users holding this volume in read-write mode
146 * @exclusive: whether somebody holds this volume in exclusive mode 146 * @exclusive: whether somebody holds this volume in exclusive mode
147 * @checked: if this static volume was checked
148 * 147 *
149 * @reserved_pebs: how many physical eraseblocks are reserved for this volume 148 * @reserved_pebs: how many physical eraseblocks are reserved for this volume
150 * @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME) 149 * @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME)
@@ -152,21 +151,22 @@ struct ubi_volume_desc;
152 * @used_ebs: how many logical eraseblocks in this volume contain data 151 * @used_ebs: how many logical eraseblocks in this volume contain data
153 * @last_eb_bytes: how many bytes are stored in the last logical eraseblock 152 * @last_eb_bytes: how many bytes are stored in the last logical eraseblock
154 * @used_bytes: how many bytes of data this volume contains 153 * @used_bytes: how many bytes of data this volume contains
155 * @upd_marker: non-zero if the update marker is set for this volume
156 * @corrupted: non-zero if the volume is corrupted (static volumes only)
157 * @alignment: volume alignment 154 * @alignment: volume alignment
158 * @data_pad: how many bytes are not used at the end of physical eraseblocks to 155 * @data_pad: how many bytes are not used at the end of physical eraseblocks to
159 * satisfy the requested alignment 156 * satisfy the requested alignment
160 * @name_len: volume name length 157 * @name_len: volume name length
161 * @name: volume name 158 * @name: volume name
162 * 159 *
163 * @updating: whether the volume is being updated
164 * @upd_ebs: how many eraseblocks are expected to be updated 160 * @upd_ebs: how many eraseblocks are expected to be updated
165 * @upd_bytes: how many bytes are expected to be received 161 * @upd_bytes: how many bytes are expected to be received
166 * @upd_received: how many update bytes were already received 162 * @upd_received: how many update bytes were already received
167 * @upd_buf: update buffer which is used to collect update data 163 * @upd_buf: update buffer which is used to collect update data
168 * 164 *
169 * @eba_tbl: EBA table of this volume (LEB->PEB mapping) 165 * @eba_tbl: EBA table of this volume (LEB->PEB mapping)
166 * @checked: %1 if this static volume was checked
167 * @corrupted: %1 if the volume is corrupted (static volumes only)
168 * @upd_marker: %1 if the update marker is set for this volume
169 * @updating: %1 if the volume is being updated
170 * 170 *
171 * @gluebi_desc: gluebi UBI volume descriptor 171 * @gluebi_desc: gluebi UBI volume descriptor
172 * @gluebi_refcount: reference count of the gluebi MTD device 172 * @gluebi_refcount: reference count of the gluebi MTD device
@@ -189,7 +189,6 @@ struct ubi_volume {
189 int readers; 189 int readers;
190 int writers; 190 int writers;
191 int exclusive; 191 int exclusive;
192 int checked;
193 192
194 int reserved_pebs; 193 int reserved_pebs;
195 int vol_type; 194 int vol_type;
@@ -197,20 +196,21 @@ struct ubi_volume {
197 int used_ebs; 196 int used_ebs;
198 int last_eb_bytes; 197 int last_eb_bytes;
199 long long used_bytes; 198 long long used_bytes;
200 int upd_marker;
201 int corrupted;
202 int alignment; 199 int alignment;
203 int data_pad; 200 int data_pad;
204 int name_len; 201 int name_len;
205 char name[UBI_VOL_NAME_MAX+1]; 202 char name[UBI_VOL_NAME_MAX+1];
206 203
207 int updating;
208 int upd_ebs; 204 int upd_ebs;
209 long long upd_bytes; 205 long long upd_bytes;
210 long long upd_received; 206 long long upd_received;
211 void *upd_buf; 207 void *upd_buf;
212 208
213 int *eba_tbl; 209 int *eba_tbl;
210 int checked:1;
211 int corrupted:1;
212 int upd_marker:1;
213 int updating:1;
214 214
215#ifdef CONFIG_MTD_UBI_GLUEBI 215#ifdef CONFIG_MTD_UBI_GLUEBI
216 /* Gluebi-related stuff may be compiled out */ 216 /* Gluebi-related stuff may be compiled out */
diff --git a/drivers/mtd/ubi/vmt.c b/drivers/mtd/ubi/vmt.c
index 177227e1f80d..221ce70be569 100644
--- a/drivers/mtd/ubi/vmt.c
+++ b/drivers/mtd/ubi/vmt.c
@@ -526,7 +526,6 @@ int ubi_resize_volume(struct ubi_volume_desc *desc, int reserved_pebs)
526 } 526 }
527 spin_unlock(&ubi->volumes_lock); 527 spin_unlock(&ubi->volumes_lock);
528 528
529
530 /* Reserve physical eraseblocks */ 529 /* Reserve physical eraseblocks */
531 pebs = reserved_pebs - vol->reserved_pebs; 530 pebs = reserved_pebs - vol->reserved_pebs;
532 if (pebs > 0) { 531 if (pebs > 0) {
@@ -746,11 +745,6 @@ static void paranoid_check_volume(struct ubi_device *ubi, int vol_id)
746 goto fail; 745 goto fail;
747 } 746 }
748 747
749 if (vol->upd_marker != 0 && vol->upd_marker != 1) {
750 ubi_err("bad upd_marker");
751 goto fail;
752 }
753
754 if (vol->upd_marker && vol->corrupted) { 748 if (vol->upd_marker && vol->corrupted) {
755 dbg_err("update marker and corrupted simultaneously"); 749 dbg_err("update marker and corrupted simultaneously");
756 goto fail; 750 goto fail;
@@ -785,7 +779,7 @@ static void paranoid_check_volume(struct ubi_device *ubi, int vol_id)
785 779
786 n = (long long)vol->used_ebs * vol->usable_leb_size; 780 n = (long long)vol->used_ebs * vol->usable_leb_size;
787 if (vol->vol_type == UBI_DYNAMIC_VOLUME) { 781 if (vol->vol_type == UBI_DYNAMIC_VOLUME) {
788 if (vol->corrupted != 0) { 782 if (vol->corrupted) {
789 ubi_err("corrupted dynamic volume"); 783 ubi_err("corrupted dynamic volume");
790 goto fail; 784 goto fail;
791 } 785 }
@@ -802,10 +796,6 @@ static void paranoid_check_volume(struct ubi_device *ubi, int vol_id)
802 goto fail; 796 goto fail;
803 } 797 }
804 } else { 798 } else {
805 if (vol->corrupted != 0 && vol->corrupted != 1) {
806 ubi_err("bad corrupted");
807 goto fail;
808 }
809 if (vol->used_ebs < 0 || vol->used_ebs > vol->reserved_pebs) { 799 if (vol->used_ebs < 0 || vol->used_ebs > vol->reserved_pebs) {
810 ubi_err("bad used_ebs"); 800 ubi_err("bad used_ebs");
811 goto fail; 801 goto fail;