[snip] > + map_bh(bh_result, sb, phys); > + if (buffer_delay(bh_result)) > + clear_buffer_delay(bh_result); > + > if (create) { > + sector_t valid_blks; > + > + valid_blks = EXFAT_B_TO_BLK_ROUND_UP(ei->valid_size, sb); > + if (iblock < valid_blks && iblock + max_blocks >= valid_blks) { > + max_blocks = valid_blks - iblock; > + goto done; > + } I don't know why this check is needed. And Why do you call exfat_map_new_buffer() about < valid blocks ? > + > err = exfat_map_new_buffer(ei, bh_result, pos); > if (err) { > exfat_fs_error(sb,