Messages in this thread Patch in this message | | | Date | Mon, 25 Feb 2002 22:51:23 +0100 | From | Anders Larsen <> | Subject | [PATCH][RESEND] qnx4fs (against kernel 2.4.18) |
| |
Hi Marcelo,
the patch below replaces the check for the QNX boot-sector signature by a check for another signature in the superblock (the (invariant) name of the root dir) - this allows us to mount partitions created with QNX 6.1 (that don't have the boot-sector signature we used to check for) without breaking QNX 4 functionality.
I've also updated Configure.help to reflect the fact that QNX6 uses the same file-system as QNX4 and have removed the EXPERIMENTAL tag from the read-only part (apart from a complete system hang in 2.4.8/9 there have been no severe bugs reported since 2.4.0, so I think that move is appropriate now).
The patch doesn't touch any code outside the qnx4 file-system.
Cheers Anders (maintainer)
>>> patch against 2.4.18 >>> diff -u --new-file --recursive linux-2.4.18/Documentation/Configure.help linux/Documentation/Configure.help --- linux-2.4.18/Documentation/Configure.help Wed Jan 30 21:10:47 2002 +++ linux/Documentation/Configure.help Wed Jan 30 21:23:58 2002 @@ -14674,10 +14674,12 @@ QNX4 file system support (read only) CONFIG_QNX4FS_FS - This is the file system used by the operating system QNX 4. Say Y if - you intend to mount QNX hard disks or floppies. Unless you say Y to - "QNX4FS read-write support" below, you will only be able to read - these file systems. + This is the file system used by the real-time operating systems + QNX 4 and QNX 6 (the latter is also called QNX RTP). + Further information is available at <http://www.qnx.com/>. + Say Y if you intend to mount QNX hard disks or floppies. + Unless you say Y to "QNX4FS read-write support" below, you will + only be able to read these file systems. This file system support is also available as a module ( = code which can be inserted in and removed from the running kernel @@ -14691,6 +14693,9 @@ QNX4FS write support (DANGEROUS) CONFIG_QNX4FS_RW Say Y if you want to test write support for QNX4 file systems. + + It's currently broken, so for now: + answer N. Kernel automounter support CONFIG_AUTOFS_FS diff -u --new-file --recursive linux-2.4.18/fs/Config.in linux/fs/Config.in --- linux-2.4.18/fs/Config.in Wed Jan 30 21:10:50 2002 +++ linux/fs/Config.in Wed Jan 30 21:03:50 2002 @@ -71,7 +71,7 @@ # breaks. dep_bool '/dev/pts file system for Unix98 PTYs' CONFIG_DEVPTS_FS $CONFIG_UNIX98_PTYS -dep_tristate 'QNX4 file system support (read only) (EXPERIMENTAL)' CONFIG_QNX4FS_FS $CONFIG_EXPERIMENTAL +tristate 'QNX4 file system support (read only)' CONFIG_QNX4FS_FS dep_mbool ' QNX4FS write support (DANGEROUS)' CONFIG_QNX4FS_RW $CONFIG_QNX4FS_FS $CONFIG_EXPERIMENTAL tristate 'ROM file system support' CONFIG_ROMFS_FS diff -u --new-file --recursive linux-2.4.18/fs/qnx4/BUGS linux/fs/qnx4/BUGS --- linux-2.4.18/fs/qnx4/BUGS Thu Dec 23 02:38:27 1999 +++ linux/fs/qnx4/BUGS Thu Jan 1 01:00:00 1970 @@ -1,30 +0,0 @@ -Last update: 1999-12-23 - -- Fragmented files and directories were incorrectly handled. - Fixed 1999-12-23, Anders. - -- readdir sometimes returned the same dir entry more than once. - Fixed 1999-12-13, Anders. - -- File names with a length of exactly 16 chars were handled incorrectly. - Fixed 1999-12-11, Anders. - -- Files in a subdir can't be accessed, I think that the inode information - is not correctly copied at some point. Solved 06-06-1998, Richard. - -- At some point the mounted device can't be unmounted. I think that somewhere - in the code a buffer is not given free. - -- Make the '..' entry work, I give it a great chance that the above bug - (not given free) has something to do with this one, after a 'ls -l' - the mounted device can't be unmounted and that's where the '..' entry - is accessed. - Seems to be solved 21-06-1998, Frank. - -- File read function not correct, after the first block it goes beserk. - Solved 21-06-1998, Frank. - -- This fs will not work if not built as a module. - Solved 25-06-1998, Frank. - -- Write/truncate/delete functions don't update the bitmap. diff -u --new-file --recursive linux-2.4.18/fs/qnx4/TODO linux/fs/qnx4/TODO --- linux-2.4.18/fs/qnx4/TODO Thu Dec 23 02:38:27 1999 +++ linux/fs/qnx4/TODO Thu Jan 1 01:00:00 1970 @@ -1,30 +0,0 @@ -Name : QNX4 TODO list -Last update: 1999-12-23 - - - Writing is still unsupported (it may compile, but it certainly won't - bring you any joy). - - - qnx4_checkroot (inode.c), currently there's a look for the '/' in - the root direntry, if so then the current mounted device is a qnx4 - partition. This has to be rewritten with a look for 'QNX4' in the - bootblock, it seems to me the savest way to ensure that the mounted - device is in fact a QNX4 partition. - Done 20-06-1998, Frank. But some disks (like QNX install floppies) - don't have 'QNX4' in their bootblock. - - - Bitmap functions. To find out the free space, largest free block, etc. - Partly done (RO), Richard, 05/06/1998. Optimized 20-06-1998, Frank. - - - Complete write, unlink and truncate functions : the bitmap should be -updated. - - - Porting to linux 2.1.99+ with dcache support. 20-06-1998, Frank. - - - Don't rewrite the file_read function : use the generic_file_read hook, - and write readpage instead. Done on 21-06-1998, Frank. - - - Write dinit and dcheck. - - - Solving the bugs. - - - Use le32_to_cpu and vice-versa for portability. diff -u --new-file --recursive linux-2.4.18/fs/qnx4/inode.c linux/fs/qnx4/inode.c --- linux-2.4.18/fs/qnx4/inode.c Wed Jan 30 21:10:50 2002 +++ linux/fs/qnx4/inode.c Wed Jan 30 21:01:18 2002 @@ -351,25 +351,18 @@ s->s_blocksize = QNX4_BLOCK_SIZE; s->s_blocksize_bits = QNX4_BLOCK_SIZE_BITS; - /* Check the boot signature. Since the qnx4 code is + /* Check the superblock signature. Since the qnx4 code is dangerous, we should leave as quickly as possible if we don't belong here... */ - bh = sb_bread(s, 0); + bh = sb_bread(s, 1); if (!bh) { - printk("qnx4: unable to read the boot sector\n"); + printk("qnx4: unable to read the superblock\n"); goto outnobh; } - if ( memcmp( (char*)bh->b_data + 4, "QNX4FS", 6 ) ) { + if ( le32_to_cpu( *(__u32*)bh->b_data ) != QNX4_SUPER_MAGIC ) { if (!silent) - printk("qnx4: wrong fsid in boot sector.\n"); + printk("qnx4: wrong fsid in superblock sector.\n"); goto out; - } - brelse(bh); - - bh = sb_bread(s, 1); - if (!bh) { - printk("qnx4: unable to read the superblock\n"); - goto outnobh; } s->s_op = &qnx4_sops; s->s_magic = QNX4_SUPER_MAGIC;
<<< end of patch <<< - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |