SuSE Linux: Verze 7.3
VFS: Mounted root (jfs filesystem) readonly. change_root: old root has d_count=2 Trying to unmount old root ... okay Freeing unused kernel memory: 124k freed Adding Swap: 128480k swap-space (priority 42) jfs_dirty inode called on read-only volume Is remount racy? jfs_dirty inode called on read-only volume Is remount racy? jfs_dirty inode called on read-only volume Is remount racy? jfs_dirty inode called on read-only volume Is remount racy? jfs_dirty inode called on read-only volume Is remount racy? jfs_dirty inode called on read-only volume Is remount racy? [...]
Poznámka: Systém se nedostal do nekonečné smyčky! Start bude po určitém čase dál pokračovat.
Jádro 2.4.10 v SuSE Linuxu 7.3 obsahuje JFS verze 1.0.5, která obsahuje chybu projevující se v případě, že je kořenový adresář při spuštění systému připojen pouze ke čtení. Pokud se pokusíte do kořenového adresáře zapisovat, linuxové jádro označí jednotlivé svazky jako "dirty". Souborový systém se pak neodpojí jako čistý a zapřičiňuje výše zmíněné chybové hlášení. Protože je pro každý soubor vypisována jedna řádka, může tato akce systému trvat i velmi dlouho (zvláště na framebufferové konzoli).
Další možností k odstranění této speciální chyby je použít následující patch na jádro SuSE 2.4.10 (balík kernel-source.rpm).
--- linux-2.4.10.SuSE/fs/jfs/inode.c Fri Sep 28 10:30:19 2001 +++ linux-2.4.10-suse+/fs/jfs/inode.c Sun Oct 28 15:27:52 2001 @@ -91,6 +91,9 @@ make_bad_inode(inode); } +/* This define is from fs/open.c */ +#define special_file(m) (S_ISCHR(m)||S_ISBLK(m)||S_ISFIFO(m)||S_ISSOCK(m)) + /* * Workhorse of both fsync & write_inode */ @@ -98,13 +101,20 @@ { int rc = 0; int tid; + static int noisy = 5; jFYI(1, ("In jfs_commit_inode, inode = 0x%p\n", inode)); if (isReadOnly(inode)) { - jERROR(1,("jfs_commit_inode(0x%p) called on read-only volume\n", - inode)); - jERROR(1,("Is remount racy?\n")); + /* kernel allows writes to devices on read-only + * partitions and may think inode is dirty + */ + if(!special_file(inode->i_mode) && noisy) { + jERROR(1,("jfs_commit_inode(0x%p) called on " + "read-only volume\n", inode)); + jERROR(1,("Is remount racy?\n")); + noisy--; + } return 0; } @@ -176,9 +186,18 @@ #if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,1) void jfs_dirty_inode(struct inode *inode) { + static int noisy = 5; + if (isReadOnly(inode)) { - jERROR(1,("jfs_dirty inode called on read-only volume\n")); - jERROR(1,("Is remount racy?\n")); + if(!special_file(inode->i_mode) && noisy) { + /* kernel allows writes to devices on read-only + * partitions and may try to mark inode dirty + */ + jERROR(1,("jfs_dirty_inode called on " + "read-only volume\n")); + jERROR(1,("Is remount racy?\n")); + noisy--; + } return; } /*
Zatím nedoporučujeme používat souborový systém JFS pro kořenový adresář a jako jeho alternativu zvolit jiný žurnálový souborový systém (např. ReiserFS).