From: card@masi.ibp.fr (Remy CARD) Subject: Patch for ext fs Date: Tue, 21 Jul 1992 16:24:15 GMT
Hi,
Enclosed is a patch for the ext file system needed to correct
two bugs :
1/ reported by Paul Douglas Page in comp.os.linux : ext fs
caused a kernel panic when running out of inodes,
2/ reported by Eric Youngdale in the mailing list : rename
sometimes caused files to disappear under certains
circumstances.
The patch is very little, so I send it in ascii form. It
should be applied to linux 0.96c-2 in the directory where the
ext fs code resides (normally /usr/src/linux/fs/ext).
Remy.
=========================Cut Here ===========================
*** ../../../../linux-0.96c-2/linux/fs/ext/freelists.c Mon Jul 20 13:26:51 1992
--- freelists.c Tue Jul 21 18:47:40 1992
***************
*** 267,273 ****
printk("ext_free_inode: inode empty, skipping to %d\n", efi->next);
#endif
j = (unsigned long) inode->i_sb->s_imap[0];
! if (efi->next < 1 || efi->next > inode->i_sb->s_ninodes) {
printk ("efi->next = %d\n", efi->next);
panic ("ext_new_inode: bad inode number in free list\n");
}
--- 267,273 ----
printk("ext_free_inode: inode empty, skipping to %d\n", efi->next);
#endif
j = (unsigned long) inode->i_sb->s_imap[0];
! if (efi->next > inode->i_sb->s_ninodes) {
printk ("efi->next = %d\n", efi->next);
panic ("ext_new_inode: bad inode number in free list\n");
}
*** ../../../../linux-0.96c-2/linux/fs/ext/namei.c Mon Jul 20 13:27:56 1992
--- namei.c Tue Jul 21 18:47:40 1992
***************
*** 845,852 ****
/* ok, that's it */
old_de->inode = 0;
old_de->name_len = 0;
- ext_merge_entries (old_de, pde, nde);
new_de->inode = old_inode->i_ino;
if (new_inode) {
new_inode->i_nlink--;
new_inode->i_dirt = 1;
--- 845,852 ----
/* ok, that's it */
old_de->inode = 0;
old_de->name_len = 0;
new_de->inode = old_inode->i_ino;
+ ext_merge_entries (old_de, pde, nde);
if (new_inode) {
new_inode->i_nlink--;
new_inode->i_dirt = 1;
=========================Cut Here ===========================