forked from Minki/linux
UBI: prepare debugging stuff to further debugfs conversion
We'll need the 'struct ubi_device *ubi' pointer in every debugging function (to access the ->dbg field), so add this pointer to all the functions implementing UBI debugging test modes like 'ubi_dbg_is_bitflip()' etc. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
This commit is contained in:
parent
2a734bb8d5
commit
27a0f2a37a
@ -126,21 +126,23 @@ enum {
|
||||
|
||||
/**
|
||||
* ubi_dbg_is_bgt_disabled - if the background thread is disabled.
|
||||
* @ubi: UBI device description object
|
||||
*
|
||||
* Returns non-zero if the UBI background thread is disabled for testing
|
||||
* purposes.
|
||||
*/
|
||||
static inline int ubi_dbg_is_bgt_disabled(void)
|
||||
static inline int ubi_dbg_is_bgt_disabled(const struct ubi_device *ubi)
|
||||
{
|
||||
return ubi_tst_flags & UBI_TST_DISABLE_BGT;
|
||||
}
|
||||
|
||||
/**
|
||||
* ubi_dbg_is_bitflip - if it is time to emulate a bit-flip.
|
||||
* @ubi: UBI device description object
|
||||
*
|
||||
* Returns non-zero if a bit-flip should be emulated, otherwise returns zero.
|
||||
*/
|
||||
static inline int ubi_dbg_is_bitflip(void)
|
||||
static inline int ubi_dbg_is_bitflip(const struct ubi_device *ubi)
|
||||
{
|
||||
if (ubi_tst_flags & UBI_TST_EMULATE_BITFLIPS)
|
||||
return !(random32() % 200);
|
||||
@ -149,11 +151,12 @@ static inline int ubi_dbg_is_bitflip(void)
|
||||
|
||||
/**
|
||||
* ubi_dbg_is_write_failure - if it is time to emulate a write failure.
|
||||
* @ubi: UBI device description object
|
||||
*
|
||||
* Returns non-zero if a write failure should be emulated, otherwise returns
|
||||
* zero.
|
||||
*/
|
||||
static inline int ubi_dbg_is_write_failure(void)
|
||||
static inline int ubi_dbg_is_write_failure(const struct ubi_device *ubi)
|
||||
{
|
||||
if (ubi_tst_flags & UBI_TST_EMULATE_WRITE_FAILURES)
|
||||
return !(random32() % 500);
|
||||
@ -162,11 +165,12 @@ static inline int ubi_dbg_is_write_failure(void)
|
||||
|
||||
/**
|
||||
* ubi_dbg_is_erase_failure - if its time to emulate an erase failure.
|
||||
* @ubi: UBI device description object
|
||||
*
|
||||
* Returns non-zero if an erase failure should be emulated, otherwise returns
|
||||
* zero.
|
||||
*/
|
||||
static inline int ubi_dbg_is_erase_failure(void)
|
||||
static inline int ubi_dbg_is_erase_failure(const struct ubi_device *ubi)
|
||||
{
|
||||
if (ubi_tst_flags & UBI_TST_EMULATE_ERASE_FAILURES)
|
||||
return !(random32() % 400);
|
||||
@ -233,10 +237,13 @@ static inline void ubi_debugfs_exit(void) { return; }
|
||||
static inline int ubi_debugfs_init_dev(struct ubi_device *ubi) { return 0; }
|
||||
static inline void ubi_debugfs_exit_dev(struct ubi_device *ubi) { return; }
|
||||
|
||||
static inline int ubi_dbg_is_bgt_disabled(void) { return 0; }
|
||||
static inline int ubi_dbg_is_bitflip(void) { return 0; }
|
||||
static inline int ubi_dbg_is_write_failure(void) { return 0; }
|
||||
static inline int ubi_dbg_is_erase_failure(void) { return 0; }
|
||||
static inline int
|
||||
ubi_dbg_is_bgt_disabled(const struct ubi_device *ubi) { return 0; }
|
||||
static inline int ubi_dbg_is_bitflip(const struct ubi_device *ubi) { return 0; }
|
||||
static inline int
|
||||
ubi_dbg_is_write_failure(const struct ubi_device *ubi) { return 0; }
|
||||
static inline int
|
||||
ubi_dbg_is_erase_failure(const struct ubi_device *ubi) { return 0; }
|
||||
|
||||
#endif /* !CONFIG_MTD_UBI_DEBUG */
|
||||
#endif /* !__UBI_DEBUG_H__ */
|
||||
|
@ -212,7 +212,7 @@ retry:
|
||||
} else {
|
||||
ubi_assert(len == read);
|
||||
|
||||
if (ubi_dbg_is_bitflip()) {
|
||||
if (ubi_dbg_is_bitflip(ubi)) {
|
||||
dbg_gen("bit-flip (emulated)");
|
||||
err = UBI_IO_BITFLIPS;
|
||||
}
|
||||
@ -281,7 +281,7 @@ int ubi_io_write(struct ubi_device *ubi, const void *buf, int pnum, int offset,
|
||||
return err;
|
||||
}
|
||||
|
||||
if (ubi_dbg_is_write_failure()) {
|
||||
if (ubi_dbg_is_write_failure(ubi)) {
|
||||
dbg_err("cannot write %d bytes to PEB %d:%d "
|
||||
"(emulated)", len, pnum, offset);
|
||||
ubi_dbg_dump_stack();
|
||||
@ -396,7 +396,7 @@ retry:
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (ubi_dbg_is_erase_failure()) {
|
||||
if (ubi_dbg_is_erase_failure(ubi)) {
|
||||
dbg_err("cannot erase PEB %d (emulated)", pnum);
|
||||
return -EIO;
|
||||
}
|
||||
|
@ -616,7 +616,7 @@ static void schedule_ubi_work(struct ubi_device *ubi, struct ubi_work *wrk)
|
||||
list_add_tail(&wrk->list, &ubi->works);
|
||||
ubi_assert(ubi->works_count >= 0);
|
||||
ubi->works_count += 1;
|
||||
if (ubi->thread_enabled && !ubi_dbg_is_bgt_disabled())
|
||||
if (ubi->thread_enabled && !ubi_dbg_is_bgt_disabled(ubi))
|
||||
wake_up_process(ubi->bgt_thread);
|
||||
spin_unlock(&ubi->wl_lock);
|
||||
}
|
||||
@ -1367,7 +1367,7 @@ int ubi_thread(void *u)
|
||||
|
||||
spin_lock(&ubi->wl_lock);
|
||||
if (list_empty(&ubi->works) || ubi->ro_mode ||
|
||||
!ubi->thread_enabled || ubi_dbg_is_bgt_disabled()) {
|
||||
!ubi->thread_enabled || ubi_dbg_is_bgt_disabled(ubi)) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
spin_unlock(&ubi->wl_lock);
|
||||
schedule();
|
||||
|
Loading…
Reference in New Issue
Block a user