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).