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