Merge tag 'upstream-3.8-rc1' of git://git.infradead.org/linux-ubi
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 20 Dec 2012 15:39:03 +0000 (07:39 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 20 Dec 2012 15:39:03 +0000 (07:39 -0800)
Pull UBI update from Artem Bityutskiy:
 "Nothing exciting, just clean-ups and nicification.  Oh, and one small
  optimization which makes UBI to use less RAM."

* tag 'upstream-3.8-rc1' of git://git.infradead.org/linux-ubi:
  UBI: embed ubi_debug_info field in ubi_device struct
  UBI: introduce helpers dbg_chk_{io, gen}
  UBI: replace memcpy with struct assignment
  UBI: remove spurious comment
  UBI: gluebi: rename misleading variables
  UBI: do not allocate the memory unnecessarily
  UBI: use list_move_tail instead of list_del/list_add_tail

12 files changed:
drivers/mtd/ubi/attach.c
drivers/mtd/ubi/build.c
drivers/mtd/ubi/debug.c
drivers/mtd/ubi/debug.h
drivers/mtd/ubi/fastmap.c
drivers/mtd/ubi/gluebi.c
drivers/mtd/ubi/io.c
drivers/mtd/ubi/ubi.h
drivers/mtd/ubi/upd.c
drivers/mtd/ubi/vmt.c
drivers/mtd/ubi/vtbl.c
drivers/mtd/ubi/wl.c

index fec406b4553d0fc28e605369d080d8b98805dd7d..c071d410488f4c95a25ef4a4fedfc325b5ff83c9 100644 (file)
@@ -322,7 +322,6 @@ static struct ubi_ainf_volume *add_volume(struct ubi_attach_info *ai,
 int ubi_compare_lebs(struct ubi_device *ubi, const struct ubi_ainf_peb *aeb,
                        int pnum, const struct ubi_vid_hdr *vid_hdr)
 {
-       void *buf;
        int len, err, second_is_newer, bitflips = 0, corrupted = 0;
        uint32_t data_crc, crc;
        struct ubi_vid_hdr *vh = NULL;
@@ -393,18 +392,14 @@ int ubi_compare_lebs(struct ubi_device *ubi, const struct ubi_ainf_peb *aeb,
        /* Read the data of the copy and check the CRC */
 
        len = be32_to_cpu(vid_hdr->data_size);
-       buf = vmalloc(len);
-       if (!buf) {
-               err = -ENOMEM;
-               goto out_free_vidh;
-       }
 
-       err = ubi_io_read_data(ubi, buf, pnum, 0, len);
+       mutex_lock(&ubi->buf_mutex);
+       err = ubi_io_read_data(ubi, ubi->peb_buf, pnum, 0, len);
        if (err && err != UBI_IO_BITFLIPS && !mtd_is_eccerr(err))
-               goto out_free_buf;
+               goto out_unlock;
 
        data_crc = be32_to_cpu(vid_hdr->data_crc);
-       crc = crc32(UBI_CRC32_INIT, buf, len);
+       crc = crc32(UBI_CRC32_INIT, ubi->peb_buf, len);
        if (crc != data_crc) {
                dbg_bld("PEB %d CRC error: calculated %#08x, must be %#08x",
                        pnum, crc, data_crc);
@@ -415,8 +410,8 @@ int ubi_compare_lebs(struct ubi_device *ubi, const struct ubi_ainf_peb *aeb,
                dbg_bld("PEB %d CRC is OK", pnum);
                bitflips = !!err;
        }
+       mutex_unlock(&ubi->buf_mutex);
 
-       vfree(buf);
        ubi_free_vid_hdr(ubi, vh);
 
        if (second_is_newer)
@@ -426,8 +421,8 @@ int ubi_compare_lebs(struct ubi_device *ubi, const struct ubi_ainf_peb *aeb,
 
        return second_is_newer | (bitflips << 1) | (corrupted << 2);
 
-out_free_buf:
-       vfree(buf);
+out_unlock:
+       mutex_unlock(&ubi->buf_mutex);
 out_free_vidh:
        ubi_free_vid_hdr(ubi, vh);
        return err;
@@ -1453,7 +1448,7 @@ int ubi_attach(struct ubi_device *ubi, int force_scan)
                goto out_wl;
 
 #ifdef CONFIG_MTD_UBI_FASTMAP
-       if (ubi->fm && ubi->dbg->chk_gen) {
+       if (ubi->fm && ubi_dbg_chk_gen(ubi)) {
                struct ubi_attach_info *scan_ai;
 
                scan_ai = alloc_ai("ubi_ckh_aeb_slab_cache");
@@ -1503,7 +1498,7 @@ static int self_check_ai(struct ubi_device *ubi, struct ubi_attach_info *ai)
        struct ubi_ainf_peb *aeb, *last_aeb;
        uint8_t *buf;
 
-       if (!ubi->dbg->chk_gen)
+       if (!ubi_dbg_chk_gen(ubi))
                return 0;
 
        /*
index 344b4cb49d4ea1a1075653ed788377b16925095b..a56133585e924048a297041115336a58f3d6d709 100644 (file)
@@ -825,8 +825,7 @@ static int autoresize(struct ubi_device *ubi, int vol_id)
                 * No available PEBs to re-size the volume, clear the flag on
                 * flash and exit.
                 */
-               memcpy(&vtbl_rec, &ubi->vtbl[vol_id],
-                      sizeof(struct ubi_vtbl_record));
+               vtbl_rec = ubi->vtbl[vol_id];
                err = ubi_change_vtbl_record(ubi, vol_id, &vtbl_rec);
                if (err)
                        ubi_err("cannot clean auto-resize flag for volume %d",
@@ -986,14 +985,10 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
        if (!ubi->fm_buf)
                goto out_free;
 #endif
-       err = ubi_debugging_init_dev(ubi);
-       if (err)
-               goto out_free;
-
        err = ubi_attach(ubi, 0);
        if (err) {
                ubi_err("failed to attach mtd%d, error %d", mtd->index, err);
-               goto out_debugging;
+               goto out_free;
        }
 
        if (ubi->autoresize_vol_id != -1) {
@@ -1060,8 +1055,6 @@ out_detach:
        ubi_wl_close(ubi);
        ubi_free_internal_volumes(ubi);
        vfree(ubi->vtbl);
-out_debugging:
-       ubi_debugging_exit_dev(ubi);
 out_free:
        vfree(ubi->peb_buf);
        vfree(ubi->fm_buf);
@@ -1139,7 +1132,6 @@ int ubi_detach_mtd_dev(int ubi_num, int anyway)
        ubi_free_internal_volumes(ubi);
        vfree(ubi->vtbl);
        put_mtd_device(ubi->mtd);
-       ubi_debugging_exit_dev(ubi);
        vfree(ubi->peb_buf);
        vfree(ubi->fm_buf);
        ubi_msg("mtd%d is detached from ubi%d", ubi->mtd->index, ubi->ubi_num);
index 26908a59506b09925accb2eace4e492c88fe4b97..63cb1d7236ce1112f15d2ff9855db93a5a3db0c0 100644 (file)
@@ -217,32 +217,6 @@ void ubi_dump_mkvol_req(const struct ubi_mkvol_req *req)
        pr_err("\t1st 16 characters of name: %s\n", nm);
 }
 
-/**
- * ubi_debugging_init_dev - initialize debugging for an UBI device.
- * @ubi: UBI device description object
- *
- * This function initializes debugging-related data for UBI device @ubi.
- * Returns zero in case of success and a negative error code in case of
- * failure.
- */
-int ubi_debugging_init_dev(struct ubi_device *ubi)
-{
-       ubi->dbg = kzalloc(sizeof(struct ubi_debug_info), GFP_KERNEL);
-       if (!ubi->dbg)
-               return -ENOMEM;
-
-       return 0;
-}
-
-/**
- * ubi_debugging_exit_dev - free debugging data for an UBI device.
- * @ubi: UBI device description object
- */
-void ubi_debugging_exit_dev(struct ubi_device *ubi)
-{
-       kfree(ubi->dbg);
-}
-
 /*
  * Root directory for UBI stuff in debugfs. Contains sub-directories which
  * contain the stuff specific to particular UBI devices.
@@ -295,7 +269,7 @@ static ssize_t dfs_file_read(struct file *file, char __user *user_buf,
        ubi = ubi_get_device(ubi_num);
        if (!ubi)
                return -ENODEV;
-       d = ubi->dbg;
+       d = &ubi->dbg;
 
        if (dent == d->dfs_chk_gen)
                val = d->chk_gen;
@@ -341,7 +315,7 @@ static ssize_t dfs_file_write(struct file *file, const char __user *user_buf,
        ubi = ubi_get_device(ubi_num);
        if (!ubi)
                return -ENODEV;
-       d = ubi->dbg;
+       d = &ubi->dbg;
 
        buf_size = min_t(size_t, count, (sizeof(buf) - 1));
        if (copy_from_user(buf, user_buf, buf_size)) {
@@ -398,7 +372,7 @@ int ubi_debugfs_init_dev(struct ubi_device *ubi)
        unsigned long ubi_num = ubi->ubi_num;
        const char *fname;
        struct dentry *dent;
-       struct ubi_debug_info *d = ubi->dbg;
+       struct ubi_debug_info *d = &ubi->dbg;
 
        if (!IS_ENABLED(CONFIG_DEBUG_FS))
                return 0;
@@ -471,5 +445,5 @@ out:
 void ubi_debugfs_exit_dev(struct ubi_device *ubi)
 {
        if (IS_ENABLED(CONFIG_DEBUG_FS))
-               debugfs_remove_recursive(ubi->dbg->dfs_dir);
+               debugfs_remove_recursive(ubi->dbg.dfs_dir);
 }
index 3dbc877d96633b5324c725f6a47810811b64e30c..33f8f3b2c9b22ac9909aa6ad07f6a1317873ed7c 100644 (file)
@@ -60,51 +60,11 @@ void ubi_dump_aeb(const struct ubi_ainf_peb *aeb, int type);
 void ubi_dump_mkvol_req(const struct ubi_mkvol_req *req);
 int ubi_self_check_all_ff(struct ubi_device *ubi, int pnum, int offset,
                          int len);
-int ubi_debugging_init_dev(struct ubi_device *ubi);
-void ubi_debugging_exit_dev(struct ubi_device *ubi);
 int ubi_debugfs_init(void);
 void ubi_debugfs_exit(void);
 int ubi_debugfs_init_dev(struct ubi_device *ubi);
 void ubi_debugfs_exit_dev(struct ubi_device *ubi);
 
-/*
- * The UBI debugfs directory name pattern and maximum name length (3 for "ubi"
- * + 2 for the number plus 1 for the trailing zero byte.
- */
-#define UBI_DFS_DIR_NAME "ubi%d"
-#define UBI_DFS_DIR_LEN  (3 + 2 + 1)
-
-/**
- * struct ubi_debug_info - debugging information for an UBI device.
- *
- * @chk_gen: if UBI general extra checks are enabled
- * @chk_io: if UBI I/O extra checks are enabled
- * @disable_bgt: disable the background task for testing purposes
- * @emulate_bitflips: emulate bit-flips for testing purposes
- * @emulate_io_failures: emulate write/erase failures for testing purposes
- * @dfs_dir_name: name of debugfs directory containing files of this UBI device
- * @dfs_dir: direntry object of the UBI device debugfs directory
- * @dfs_chk_gen: debugfs knob to enable UBI general extra checks
- * @dfs_chk_io: debugfs knob to enable UBI I/O extra checks
- * @dfs_disable_bgt: debugfs knob to disable the background task
- * @dfs_emulate_bitflips: debugfs knob to emulate bit-flips
- * @dfs_emulate_io_failures: debugfs knob to emulate write/erase failures
- */
-struct ubi_debug_info {
-       unsigned int chk_gen:1;
-       unsigned int chk_io:1;
-       unsigned int disable_bgt:1;
-       unsigned int emulate_bitflips:1;
-       unsigned int emulate_io_failures:1;
-       char dfs_dir_name[UBI_DFS_DIR_LEN + 1];
-       struct dentry *dfs_dir;
-       struct dentry *dfs_chk_gen;
-       struct dentry *dfs_chk_io;
-       struct dentry *dfs_disable_bgt;
-       struct dentry *dfs_emulate_bitflips;
-       struct dentry *dfs_emulate_io_failures;
-};
-
 /**
  * ubi_dbg_is_bgt_disabled - if the background thread is disabled.
  * @ubi: UBI device description object
@@ -114,7 +74,7 @@ struct ubi_debug_info {
  */
 static inline int ubi_dbg_is_bgt_disabled(const struct ubi_device *ubi)
 {
-       return ubi->dbg->disable_bgt;
+       return ubi->dbg.disable_bgt;
 }
 
 /**
@@ -125,7 +85,7 @@ static inline int ubi_dbg_is_bgt_disabled(const struct ubi_device *ubi)
  */
 static inline int ubi_dbg_is_bitflip(const struct ubi_device *ubi)
 {
-       if (ubi->dbg->emulate_bitflips)
+       if (ubi->dbg.emulate_bitflips)
                return !(random32() % 200);
        return 0;
 }
@@ -139,7 +99,7 @@ static inline int ubi_dbg_is_bitflip(const struct ubi_device *ubi)
  */
 static inline int ubi_dbg_is_write_failure(const struct ubi_device *ubi)
 {
-       if (ubi->dbg->emulate_io_failures)
+       if (ubi->dbg.emulate_io_failures)
                return !(random32() % 500);
        return 0;
 }
@@ -153,9 +113,18 @@ static inline int ubi_dbg_is_write_failure(const struct ubi_device *ubi)
  */
 static inline int ubi_dbg_is_erase_failure(const struct ubi_device *ubi)
 {
-       if (ubi->dbg->emulate_io_failures)
+       if (ubi->dbg.emulate_io_failures)
                return !(random32() % 400);
        return 0;
 }
 
+static inline int ubi_dbg_chk_io(const struct ubi_device *ubi)
+{
+       return ubi->dbg.chk_io;
+}
+
+static inline int ubi_dbg_chk_gen(const struct ubi_device *ubi)
+{
+       return ubi->dbg.chk_gen;
+}
 #endif /* !__UBI_DEBUG_H__ */
index 1a5f53c090d40ab6f6d3a601f4b2992c61215b14..0648c6996d43a94031d135163d4a693132dcc2b4 100644 (file)
@@ -814,10 +814,8 @@ static int ubi_attach_fastmap(struct ubi_device *ubi,
        if (max_sqnum > ai->max_sqnum)
                ai->max_sqnum = max_sqnum;
 
-       list_for_each_entry_safe(tmp_aeb, _tmp_aeb, &free, u.list) {
-               list_del(&tmp_aeb->u.list);
-               list_add_tail(&tmp_aeb->u.list, &ai->free);
-       }
+       list_for_each_entry_safe(tmp_aeb, _tmp_aeb, &free, u.list)
+               list_move_tail(&tmp_aeb->u.list, &ai->free);
 
        /*
         * If fastmap is leaking PEBs (must not happen), raise a
index 4bd4db8c84c96cd4c925d59b567eaa39f72c92e2..b93807b4c45966f2b3cdeef1e55c4c237e1bbd3c 100644 (file)
@@ -171,17 +171,17 @@ static void gluebi_put_device(struct mtd_info *mtd)
 static int gluebi_read(struct mtd_info *mtd, loff_t from, size_t len,
                       size_t *retlen, unsigned char *buf)
 {
-       int err = 0, lnum, offs, total_read;
+       int err = 0, lnum, offs, bytes_left;
        struct gluebi_device *gluebi;
 
        gluebi = container_of(mtd, struct gluebi_device, mtd);
        lnum = div_u64_rem(from, mtd->erasesize, &offs);
-       total_read = len;
-       while (total_read) {
+       bytes_left = len;
+       while (bytes_left) {
                size_t to_read = mtd->erasesize - offs;
 
-               if (to_read > total_read)
-                       to_read = total_read;
+               if (to_read > bytes_left)
+                       to_read = bytes_left;
 
                err = ubi_read(gluebi->desc, lnum, buf, offs, to_read);
                if (err)
@@ -189,11 +189,11 @@ static int gluebi_read(struct mtd_info *mtd, loff_t from, size_t len,
 
                lnum += 1;
                offs = 0;
-               total_read -= to_read;
+               bytes_left -= to_read;
                buf += to_read;
        }
 
-       *retlen = len - total_read;
+       *retlen = len - bytes_left;
        return err;
 }
 
@@ -211,7 +211,7 @@ static int gluebi_read(struct mtd_info *mtd, loff_t from, size_t len,
 static int gluebi_write(struct mtd_info *mtd, loff_t to, size_t len,
                        size_t *retlen, const u_char *buf)
 {
-       int err = 0, lnum, offs, total_written;
+       int err = 0, lnum, offs, bytes_left;
        struct gluebi_device *gluebi;
 
        gluebi = container_of(mtd, struct gluebi_device, mtd);
@@ -220,12 +220,12 @@ static int gluebi_write(struct mtd_info *mtd, loff_t to, size_t len,
        if (len % mtd->writesize || offs % mtd->writesize)
                return -EINVAL;
 
-       total_written = len;
-       while (total_written) {
+       bytes_left = len;
+       while (bytes_left) {
                size_t to_write = mtd->erasesize - offs;
 
-               if (to_write > total_written)
-                       to_write = total_written;
+               if (to_write > bytes_left)
+                       to_write = bytes_left;
 
                err = ubi_leb_write(gluebi->desc, lnum, buf, offs, to_write);
                if (err)
@@ -233,11 +233,11 @@ static int gluebi_write(struct mtd_info *mtd, loff_t to, size_t len,
 
                lnum += 1;
                offs = 0;
-               total_written -= to_write;
+               bytes_left -= to_write;
                buf += to_write;
        }
 
-       *retlen = len - total_written;
+       *retlen = len - bytes_left;
        return err;
 }
 
index 78a1dcbf210758536ac3da2ebf83419ef6af8de0..bf79def40126865e4df5c13633fa5e5b052e3176 100644 (file)
@@ -1132,7 +1132,7 @@ static int self_check_not_bad(const struct ubi_device *ubi, int pnum)
 {
        int err;
 
-       if (!ubi->dbg->chk_io)
+       if (!ubi_dbg_chk_io(ubi))
                return 0;
 
        err = ubi_io_is_bad(ubi, pnum);
@@ -1159,7 +1159,7 @@ static int self_check_ec_hdr(const struct ubi_device *ubi, int pnum,
        int err;
        uint32_t magic;
 
-       if (!ubi->dbg->chk_io)
+       if (!ubi_dbg_chk_io(ubi))
                return 0;
 
        magic = be32_to_cpu(ec_hdr->magic);
@@ -1197,7 +1197,7 @@ static int self_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum)
        uint32_t crc, hdr_crc;
        struct ubi_ec_hdr *ec_hdr;
 
-       if (!ubi->dbg->chk_io)
+       if (!ubi_dbg_chk_io(ubi))
                return 0;
 
        ec_hdr = kzalloc(ubi->ec_hdr_alsize, GFP_NOFS);
@@ -1241,7 +1241,7 @@ static int self_check_vid_hdr(const struct ubi_device *ubi, int pnum,
        int err;
        uint32_t magic;
 
-       if (!ubi->dbg->chk_io)
+       if (!ubi_dbg_chk_io(ubi))
                return 0;
 
        magic = be32_to_cpu(vid_hdr->magic);
@@ -1282,7 +1282,7 @@ static int self_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum)
        struct ubi_vid_hdr *vid_hdr;
        void *p;
 
-       if (!ubi->dbg->chk_io)
+       if (!ubi_dbg_chk_io(ubi))
                return 0;
 
        vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS);
@@ -1334,7 +1334,7 @@ static int self_check_write(struct ubi_device *ubi, const void *buf, int pnum,
        void *buf1;
        loff_t addr = (loff_t)pnum * ubi->peb_size + offset;
 
-       if (!ubi->dbg->chk_io)
+       if (!ubi_dbg_chk_io(ubi))
                return 0;
 
        buf1 = __vmalloc(len, GFP_NOFS, PAGE_KERNEL);
@@ -1398,7 +1398,7 @@ int ubi_self_check_all_ff(struct ubi_device *ubi, int pnum, int offset, int len)
        void *buf;
        loff_t addr = (loff_t)pnum * ubi->peb_size + offset;
 
-       if (!ubi->dbg->chk_io)
+       if (!ubi_dbg_chk_io(ubi))
                return 0;
 
        buf = __vmalloc(len, GFP_NOFS, PAGE_KERNEL);
index 7d57469723cf4c761dd7a115f5038de4b642e084..8ea6297a208f9f8ae79fb10fe6b8d967828f4d36 100644 (file)
 /* The volume ID/LEB number/erase counter is unknown */
 #define UBI_UNKNOWN -1
 
+/*
+ * The UBI debugfs directory name pattern and maximum name length (3 for "ubi"
+ * + 2 for the number plus 1 for the trailing zero byte.
+ */
+#define UBI_DFS_DIR_NAME "ubi%d"
+#define UBI_DFS_DIR_LEN  (3 + 2 + 1)
+
 /*
  * Error codes returned by the I/O sub-system.
  *
@@ -341,6 +348,37 @@ struct ubi_volume_desc {
 
 struct ubi_wl_entry;
 
+/**
+ * struct ubi_debug_info - debugging information for an UBI device.
+ *
+ * @chk_gen: if UBI general extra checks are enabled
+ * @chk_io: if UBI I/O extra checks are enabled
+ * @disable_bgt: disable the background task for testing purposes
+ * @emulate_bitflips: emulate bit-flips for testing purposes
+ * @emulate_io_failures: emulate write/erase failures for testing purposes
+ * @dfs_dir_name: name of debugfs directory containing files of this UBI device
+ * @dfs_dir: direntry object of the UBI device debugfs directory
+ * @dfs_chk_gen: debugfs knob to enable UBI general extra checks
+ * @dfs_chk_io: debugfs knob to enable UBI I/O extra checks
+ * @dfs_disable_bgt: debugfs knob to disable the background task
+ * @dfs_emulate_bitflips: debugfs knob to emulate bit-flips
+ * @dfs_emulate_io_failures: debugfs knob to emulate write/erase failures
+ */
+struct ubi_debug_info {
+       unsigned int chk_gen:1;
+       unsigned int chk_io:1;
+       unsigned int disable_bgt:1;
+       unsigned int emulate_bitflips:1;
+       unsigned int emulate_io_failures:1;
+       char dfs_dir_name[UBI_DFS_DIR_LEN + 1];
+       struct dentry *dfs_dir;
+       struct dentry *dfs_chk_gen;
+       struct dentry *dfs_chk_io;
+       struct dentry *dfs_disable_bgt;
+       struct dentry *dfs_emulate_bitflips;
+       struct dentry *dfs_emulate_io_failures;
+};
+
 /**
  * struct ubi_device - UBI device description structure
  * @dev: UBI device object to use the the Linux device model
@@ -545,7 +583,7 @@ struct ubi_device {
        struct mutex buf_mutex;
        struct mutex ckvol_mutex;
 
-       struct ubi_debug_info *dbg;
+       struct ubi_debug_info dbg;
 };
 
 /**
index 9f2ebd8750e791fdcd450c8efa9aebd86fae7d51..ec2c2dc1c1ca06ad89144289f2996ad112526425 100644 (file)
@@ -64,8 +64,7 @@ static int set_update_marker(struct ubi_device *ubi, struct ubi_volume *vol)
                return 0;
        }
 
-       memcpy(&vtbl_rec, &ubi->vtbl[vol->vol_id],
-              sizeof(struct ubi_vtbl_record));
+       vtbl_rec = ubi->vtbl[vol->vol_id];
        vtbl_rec.upd_marker = 1;
 
        mutex_lock(&ubi->device_mutex);
@@ -93,8 +92,7 @@ static int clear_update_marker(struct ubi_device *ubi, struct ubi_volume *vol,
 
        dbg_gen("clear update marker for volume %d", vol->vol_id);
 
-       memcpy(&vtbl_rec, &ubi->vtbl[vol->vol_id],
-              sizeof(struct ubi_vtbl_record));
+       vtbl_rec = ubi->vtbl[vol->vol_id];
        ubi_assert(vol->upd_marker && vtbl_rec.upd_marker);
        vtbl_rec.upd_marker = 0;
 
index 9169e58c262ec47eaf9b5abb543b12e476af705a..8330703c098f8a1d29591054f2aaed467e145c30 100644 (file)
@@ -535,7 +535,7 @@ int ubi_resize_volume(struct ubi_volume_desc *desc, int reserved_pebs)
        }
 
        /* Change volume table record */
-       memcpy(&vtbl_rec, &ubi->vtbl[vol_id], sizeof(struct ubi_vtbl_record));
+       vtbl_rec = ubi->vtbl[vol_id];
        vtbl_rec.reserved_pebs = cpu_to_be32(reserved_pebs);
        err = ubi_change_vtbl_record(ubi, vol_id, &vtbl_rec);
        if (err)
@@ -847,7 +847,7 @@ static int self_check_volumes(struct ubi_device *ubi)
 {
        int i, err = 0;
 
-       if (!ubi->dbg->chk_gen)
+       if (!ubi_dbg_chk_gen(ubi))
                return 0;
 
        for (i = 0; i < ubi->vtbl_slots; i++) {
index 926e3df14fb2a83776650a820742f4882b41893f..d77b1c1d7c7267c3186635497eeba492f539d735 100644 (file)
@@ -858,7 +858,7 @@ out_free:
  */
 static void self_vtbl_check(const struct ubi_device *ubi)
 {
-       if (!ubi->dbg->chk_gen)
+       if (!ubi_dbg_chk_gen(ubi))
                return;
 
        if (vtbl_check(ubi, ubi->vtbl)) {
index 2144f611196e3188bd3983ea5e084dd4bafd47ff..5df49d3cb5c7c05e7644bd9e534950b070336d5b 100644 (file)
@@ -1,5 +1,4 @@
 /*
- * @ubi: UBI device description object
  * Copyright (c) International Business Machines Corp., 2006
  *
  * This program is free software; you can redistribute it and/or modify
@@ -2050,7 +2049,7 @@ static int self_check_ec(struct ubi_device *ubi, int pnum, int ec)
        long long read_ec;
        struct ubi_ec_hdr *ec_hdr;
 
-       if (!ubi->dbg->chk_gen)
+       if (!ubi_dbg_chk_gen(ubi))
                return 0;
 
        ec_hdr = kzalloc(ubi->ec_hdr_alsize, GFP_NOFS);
@@ -2090,7 +2089,7 @@ out_free:
 static int self_check_in_wl_tree(const struct ubi_device *ubi,
                                 struct ubi_wl_entry *e, struct rb_root *root)
 {
-       if (!ubi->dbg->chk_gen)
+       if (!ubi_dbg_chk_gen(ubi))
                return 0;
 
        if (in_wl_tree(e, root))
@@ -2116,7 +2115,7 @@ static int self_check_in_pq(const struct ubi_device *ubi,
        struct ubi_wl_entry *p;
        int i;
 
-       if (!ubi->dbg->chk_gen)
+       if (!ubi_dbg_chk_gen(ubi))
                return 0;
 
        for (i = 0; i < UBI_PROT_QUEUE_LEN; ++i)