/* If the directory hasn't changed since the last call to readdir(), * we can jump directly to where we left off.
*/
ino = data->ino; if (ino && inode_eq_iversion(inode, data->cookie)) {
pr_debug("readdir() left off=%d\n", ino); goto inside;
}
ino = be32_to_cpu(AFFS_HEAD(dir_bh)->table[hash_pos]); for (i = 0; ino && i < chain_pos; i++) {
fh_bh = affs_bread(sb, ino); if (!fh_bh) {
affs_error(sb, "readdir","Cannot read block %d", i);
error = -EIO; goto out_brelse_dir;
}
ino = be32_to_cpu(AFFS_TAIL(sb, fh_bh)->hash_chain);
affs_brelse(fh_bh);
fh_bh = NULL;
} if (ino) goto inside;
hash_pos++;
for (; hash_pos < AFFS_SB(sb)->s_hashsize; hash_pos++) {
ino = be32_to_cpu(AFFS_HEAD(dir_bh)->table[hash_pos]); if (!ino) continue;
ctx->pos = (hash_pos << 16) + 2;
inside: do {
fh_bh = affs_bread(sb, ino); if (!fh_bh) {
affs_error(sb, "readdir", "Cannot read block %d", ino); break;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.