SuSE Linux: Verzió 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? [...]
Megjegyzés: Ez nem egy végtelen ciklus - a rendszer normálisan folytatja az indulást egy idő elteltével, de ez az idő hosszúra nyúlhat.
Version 1.0.5 used in kernel 2.4.10 of SuSE Linux 7.3 has a bug that only surfaces in the special case, that the root partition is being mounted read-only on bootup first. The problem is that writes to read-only devices cause the kernel to mark the device inode as dirty. JFS assumed that an attempt to mark an inode dirty on a read-only volume was a bug. When the volume is dirty, fsck.jfs writes a lot to the volume, causing the warning to be printed far too many times. Using a frame buffer console will slow down the output of these warnings even further.
Alternatívaként ez a speciális probléma megoldható a SuSE 2.4.10-es rendszermag foltozásával. Ennek végrehajtásához szüksége van a kernel-source.rpm csomag telepítésére, amely a rendszermag forráskódját tartalmazza. Adja hozzá a következő módosításokat és fordítsa újra a rendszermag moduljait:
--- 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; } /*
Másik megközelítésben jelenleg nem ajánljuk a JFS használatát a root partíción (lásd még a "Figyelmeztető üzenet telepítés alatt (JFS)" (http://sdb.suse.de/hu/sdb/html/jfs_root_73.html) cikket), e helyett használhat másik naplózó fájlrendszert (pl. ReiserFS).