|
static int jffs2_scan_empty(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, __u32 *startofs, int *noise)
这个函数中的下列语句让我很困惑,关键是不知道道c->mtd->read的返回值倒底是什么!
。。。。。。
while(scanlen) {
ssize_t retlen;
int ret, i;
/*就是下边这句,如果是读出字节数,那还要retlen做什么?而且根据这个函数的逻 辑很显然不是读出字节数*/
ret = c->mtd->read(c->mtd, curofs, min((__u32)PAGE_SIZE, scanlen), &retlen, (char *)buf);
if(ret) {
D1(printk(KERN_WARNING "jffs2_scan_empty(): Read 0x%x bytes at 0x%08x returned %d\n", min((__u32)PAGE_SIZE, scanlen), curofs, ret));
kfree(buf);
return ret;
}
if (retlen < 4) {
D1(printk(KERN_WARNING "Eep. too few bytes read in scan_empty()\n"));
kfree(buf);
return -EIO;
}
for (i=0; i<(retlen / 4); i++) {
if (buf != 0xffffffff) {
curofs += i*4;
noisy_printk(noise, "jffs2_scan_empty(): Empty block at 0x%08x ends at 0x%08x (with 0x%08x)! Marking dirty\n", *startofs, curofs, buf);
DIRTY_SPACE(curofs - (*startofs));
*startofs = curofs;
kfree(buf);
return 0;
}
}
scanlen -= retlen&~3;
curofs += retlen&~3;
}
。。。。。。
}
各位大人帮帮我吧! |
|