UBI: use bit-fields
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Wed, 16 Jan 2008 12:24:14 +0000 (14:24 +0200)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Fri, 25 Jan 2008 14:41:24 +0000 (16:41 +0200)
Save 12 bytes of RAM per volume by using bit-fields instead of integers.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
drivers/mtd/ubi/ubi.h
drivers/mtd/ubi/vmt.c

index 3cf1aa1..90cdcad 100644 (file)
@@ -144,7 +144,6 @@ struct ubi_volume_desc;
  * @readers: number of users holding this volume in read-only mode
  * @writers: number of users holding this volume in read-write mode
  * @exclusive: whether somebody holds this volume in exclusive mode
- * @checked: if this static volume was checked
  *
  * @reserved_pebs: how many physical eraseblocks are reserved for this volume
  * @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME)
@@ -152,21 +151,22 @@ struct ubi_volume_desc;
  * @used_ebs: how many logical eraseblocks in this volume contain data
  * @last_eb_bytes: how many bytes are stored in the last logical eraseblock
  * @used_bytes: how many bytes of data this volume contains
- * @upd_marker: non-zero if the update marker is set for this volume
- * @corrupted: non-zero if the volume is corrupted (static volumes only)
  * @alignment: volume alignment
  * @data_pad: how many bytes are not used at the end of physical eraseblocks to
  *            satisfy the requested alignment
  * @name_len: volume name length
  * @name: volume name
  *
- * @updating: whether the volume is being updated
  * @upd_ebs: how many eraseblocks are expected to be updated
  * @upd_bytes: how many bytes are expected to be received
  * @upd_received: how many update bytes were already received
  * @upd_buf: update buffer which is used to collect update data
  *
  * @eba_tbl: EBA table of this volume (LEB->PEB mapping)
+ * @checked: %1 if this static volume was checked
+ * @corrupted: %1 if the volume is corrupted (static volumes only)
+ * @upd_marker: %1 if the update marker is set for this volume
+ * @updating: %1 if the volume is being updated
  *
  * @gluebi_desc: gluebi UBI volume descriptor
  * @gluebi_refcount: reference count of the gluebi MTD device
@@ -189,7 +189,6 @@ struct ubi_volume {
        int readers;
        int writers;
        int exclusive;
-       int checked;
 
        int reserved_pebs;
        int vol_type;
@@ -197,20 +196,21 @@ struct ubi_volume {
        int used_ebs;
        int last_eb_bytes;
        long long used_bytes;
-       int upd_marker;
-       int corrupted;
        int alignment;
        int data_pad;
        int name_len;
        char name[UBI_VOL_NAME_MAX+1];
 
-       int updating;
        int upd_ebs;
        long long upd_bytes;
        long long upd_received;
        void *upd_buf;
 
        int *eba_tbl;
+       int checked:1;
+       int corrupted:1;
+       int upd_marker:1;
+       int updating:1;
 
 #ifdef CONFIG_MTD_UBI_GLUEBI
        /* Gluebi-related stuff may be compiled out */
index 177227e..221ce70 100644 (file)
@@ -526,7 +526,6 @@ int ubi_resize_volume(struct ubi_volume_desc *desc, int reserved_pebs)
        }
        spin_unlock(&ubi->volumes_lock);
 
-
        /* Reserve physical eraseblocks */
        pebs = reserved_pebs - vol->reserved_pebs;
        if (pebs > 0) {
@@ -746,11 +745,6 @@ static void paranoid_check_volume(struct ubi_device *ubi, int vol_id)
                goto fail;
        }
 
-       if (vol->upd_marker != 0 && vol->upd_marker != 1) {
-               ubi_err("bad upd_marker");
-               goto fail;
-       }
-
        if (vol->upd_marker && vol->corrupted) {
                dbg_err("update marker and corrupted simultaneously");
                goto fail;
@@ -785,7 +779,7 @@ static void paranoid_check_volume(struct ubi_device *ubi, int vol_id)
 
        n = (long long)vol->used_ebs * vol->usable_leb_size;
        if (vol->vol_type == UBI_DYNAMIC_VOLUME) {
-               if (vol->corrupted != 0) {
+               if (vol->corrupted) {
                        ubi_err("corrupted dynamic volume");
                        goto fail;
                }
@@ -802,10 +796,6 @@ static void paranoid_check_volume(struct ubi_device *ubi, int vol_id)
                        goto fail;
                }
        } else {
-               if (vol->corrupted != 0 && vol->corrupted != 1) {
-                       ubi_err("bad corrupted");
-                       goto fail;
-               }
                if (vol->used_ebs < 0 || vol->used_ebs > vol->reserved_pebs) {
                        ubi_err("bad used_ebs");
                        goto fail;