Hi!
I'am trying to implement ACL's on the ext2 Filesystem. To manipulate the ACL-Lists i use ext2_bread(). Now i found out, that in block_getblk() we try to getblk() a new block from the buffer cache without brelsing the old one. On my opinion this is a possible deadlock situation, because getblk() waits foreever if there is no free block: Imagin a couple off processes is requesting an indirekt block (all from different inodes) and the System is very low on memory and every process gets the first block (for indirection) from the Inode. Imagin this is eating up all blocks left... sure very unlikely but theoretically. Then none of them is ever getting the desired block - instead sleeping forever :-( regards Arne
|