forked from luck/tmp_suning_uos_patched
jffs2: Reduce excessive scan of empty blocks
Scanning 1024 bytes to see if an EB is empty is a bit much. Lower it to 256 bytes and make sure the while loop is optimized. Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
parent
81cfc9f1f4
commit
41bdc602ec
|
@ -20,7 +20,7 @@
|
||||||
#include "summary.h"
|
#include "summary.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
#define DEFAULT_EMPTY_SCAN_SIZE 1024
|
#define DEFAULT_EMPTY_SCAN_SIZE 256
|
||||||
|
|
||||||
#define noisy_printk(noise, args...) do { \
|
#define noisy_printk(noise, args...) do { \
|
||||||
if (*(noise)) { \
|
if (*(noise)) { \
|
||||||
|
@ -435,7 +435,7 @@ static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblo
|
||||||
unsigned char *buf, uint32_t buf_size, struct jffs2_summary *s) {
|
unsigned char *buf, uint32_t buf_size, struct jffs2_summary *s) {
|
||||||
struct jffs2_unknown_node *node;
|
struct jffs2_unknown_node *node;
|
||||||
struct jffs2_unknown_node crcnode;
|
struct jffs2_unknown_node crcnode;
|
||||||
uint32_t ofs, prevofs;
|
uint32_t ofs, prevofs, max_ofs;
|
||||||
uint32_t hdr_crc, buf_ofs, buf_len;
|
uint32_t hdr_crc, buf_ofs, buf_len;
|
||||||
int err;
|
int err;
|
||||||
int noise = 0;
|
int noise = 0;
|
||||||
|
@ -550,12 +550,12 @@ static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblo
|
||||||
|
|
||||||
/* We temporarily use 'ofs' as a pointer into the buffer/jeb */
|
/* We temporarily use 'ofs' as a pointer into the buffer/jeb */
|
||||||
ofs = 0;
|
ofs = 0;
|
||||||
|
max_ofs = EMPTY_SCAN_SIZE(c->sector_size);
|
||||||
/* Scan only 4KiB of 0xFF before declaring it's empty */
|
/* Scan only EMPTY_SCAN_SIZE of 0xFF before declaring it's empty */
|
||||||
while(ofs < EMPTY_SCAN_SIZE(c->sector_size) && *(uint32_t *)(&buf[ofs]) == 0xFFFFFFFF)
|
while(ofs < max_ofs && *(uint32_t *)(&buf[ofs]) == 0xFFFFFFFF)
|
||||||
ofs += 4;
|
ofs += 4;
|
||||||
|
|
||||||
if (ofs == EMPTY_SCAN_SIZE(c->sector_size)) {
|
if (ofs == max_ofs) {
|
||||||
#ifdef CONFIG_JFFS2_FS_WRITEBUFFER
|
#ifdef CONFIG_JFFS2_FS_WRITEBUFFER
|
||||||
if (jffs2_cleanmarker_oob(c)) {
|
if (jffs2_cleanmarker_oob(c)) {
|
||||||
/* scan oob, take care of cleanmarker */
|
/* scan oob, take care of cleanmarker */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user