unsigned long ext2_find_near (struct inode * inode, Indirect * ind);
This function returns the prefered place for block allocation. It is used when heuristic for sequential allocation fails.
+ if there is a block to the left of our position - allocate near it. + if pointer will live in indirect block - allocate near that block. + if pointer will live in inode - allocate in the same cylinder group.
In the latter case we colour the starting block by the callers PID to prevent it from clashing with concurrent allocations for a different inode in the same block group. The PID is used here so that functionally related files will be close-by on-disk.
Caller must make sure that ind is valid and will stay that way.