Messages in this thread | | | Date | Wed, 16 Jul 1997 10:30:07 -0400 | From | Bill Hawes <> | Subject | pre-patch 2.1.45-7: still wrapping counts |
| |
I just compiled -7, and it's still wrapping inode counts. I added some tests to the debugging message, so at least know that it's not a pipe inode. Is there a convenient way I can invoke a call traceback to see where iput() is called from when the count wraps?
One clue is that the wrapped counts don't show up on the unused list, or else they would trigger another debugging message. This implies that the device in question doesn't implement a put_inode function. iput: count wrapped device 00:00, inode 8, pipe=0, count=-1 iput: count wrapped device 00:00, inode 13, pipe=0, count=-1 iput: count wrapped device 00:00, inode 24, pipe=0, count=-1 iput: count wrapped device 00:00, inode 25, pipe=0, count=-1
Another clue -- at shutdown, the counts wrap in reverse order of inode number: iput: count wrapped device 00:00, inode 154, pipe=0, count=-1 iput: count wrapped device 00:00, inode 155, pipe=0, count=-1 iput: count wrapped device 00:00, inode 130, pipe=0, count=-1
A few other comments: setting the pipe status to dirty seems reasonable, but I still prefer keeping pipe inodes from ever getting dirty. Keeping dirty inodes off the in-use list would make it easier to check for potential bugs. Anyway, I modified my show_inodes routine to exempt pipe inodes from the dirty count:
Inodes Allocated: 320 List Inodes In-Use Hashed Locked Dirty Pipe Cnt<0 Pages CLEAN 293 120 233 0 0 2 21 124 DIRTY 22 19 22 0 18 0 0 202 UNUSED 5 0 0 0 0 0 0 0 Inodes Accounted: 320 Total Pages: 326
With the change to add inodes obtained from get_empty_inode to the in-use list, all allocated inodes are accounted for, but some are not hashed. Guess this isn't a problem ...
| |