diff options
Diffstat (limited to 'firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c')
-rw-r--r-- | firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c index e4abcafba8..15c97ccb0d 100644 --- a/firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c +++ b/firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c | |||
@@ -1778,6 +1778,8 @@ uint32_t ftl_sync(void) | |||
1778 | uint32_t ppb = (*ftl_nand_type).pagesperblock * ftl_banks; | 1778 | uint32_t ppb = (*ftl_nand_type).pagesperblock * ftl_banks; |
1779 | if (ftl_cxt.clean_flag == 1) return 0; | 1779 | if (ftl_cxt.clean_flag == 1) return 0; |
1780 | 1780 | ||
1781 | mutex_lock(&ftl_mtx); | ||
1782 | |||
1781 | if (ftl_cxt.swapcounter >= 20) | 1783 | if (ftl_cxt.swapcounter >= 20) |
1782 | for (i = 0; i < 4; i++) | 1784 | for (i = 0; i < 4; i++) |
1783 | if (ftl_swap_blocks() == 0) | 1785 | if (ftl_swap_blocks() == 0) |
@@ -1793,10 +1795,19 @@ uint32_t ftl_sync(void) | |||
1793 | rc |= ftl_commit_sequential(&ftl_log[i]); | 1795 | rc |= ftl_commit_sequential(&ftl_log[i]); |
1794 | else rc |= ftl_commit_scattered(&ftl_log[i]); | 1796 | else rc |= ftl_commit_scattered(&ftl_log[i]); |
1795 | } | 1797 | } |
1796 | if (rc != 0) return 1; | 1798 | if (rc != 0) |
1799 | { | ||
1800 | mutex_unlock(&ftl_mtx); | ||
1801 | return 1; | ||
1802 | } | ||
1797 | for (i = 0; i < 5; i++) | 1803 | for (i = 0; i < 5; i++) |
1798 | if (ftl_commit_cxt() == 0) return 0; | 1804 | if (ftl_commit_cxt() == 0) |
1805 | { | ||
1806 | mutex_unlock(&ftl_mtx); | ||
1807 | return 0; | ||
1808 | } | ||
1799 | else ftl_cxt.ftlctrlpage |= ppb - 1; | 1809 | else ftl_cxt.ftlctrlpage |= ppb - 1; |
1810 | mutex_unlock(&ftl_mtx); | ||
1800 | return 1; | 1811 | return 1; |
1801 | } | 1812 | } |
1802 | #endif | 1813 | #endif |