Skip to contentSkip to conversation

mount udf UDF_PART_FLAG_READ_ONLY partitions with MS_RDONLY

PATCH New Eric Sandeen 1 participant 1 message Jul 31, 2006 UDF filesystem

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mount udf UDF_PART_FLAG_READ_ONLY partitions with MS_RDONLY

Hi, seems there's a bug where a UDF_PART_FLAG_READ_ONLY udf partition gets mounted read-write, then subsequent problems happen; files seem to be able to be removed, but file creation results in EIO or worse, oops.

EIO is coming from udf_new_block(), which returns EIO if the right flags aren't set; only UDF_PART_FLAG_READ_ONLY is set in this case. We probably s hould not have gotten this far...

Attached patch seems to fix it - and includes a printk to alert the user that their "rw" mount request has been converted to "ro."

Oh, btw, here's the testcase I used:

[root@magnesium ~]# mkisofs -R -J -udf -o testiso /tmp/
...
Total translation table size: 0
Total rockridge attributes bytes: 342923
Total directory bytes: 382312
Path table size(bytes): 104
Max brk space used 103000
105059 extents written (205 MB)

[root@magnesium ~]# mount -o loop testiso /mnt/test/ [root@magnesium ~]# ls /mnt/test/fsfile /mnt/test/fsfile
[root@magnesium ~]# rm /mnt/test/fsfile [root@magnesium ~]# ls /mnt/test/fsfile
ls: /mnt/test/fsfile: No such file or directory [root@magnesium ~]# touch /mnt/test/fsfile
touch: cannot touch `/mnt/test/fsfile': Input/output error [root@magnesium tmp]# grep udf /proc/mounts /dev/loop1 /mnt/test udf rw 0 0

Thanks,

-Eric

Force readonly mounts of UDF partitions marked as read-only.

fs/udf/super.c +0 -0
Index: linux-2.6.17/fs/udf/super.c
===================================================================
@@ -1615,6 +1615,10 @@ static int udf_fill_super(struct super_b
		goto error_out;
	}

+ if (UDF_SB_PARTFLAGS(sb, UDF_SB_PARTITION(sb)) & UDF_PART_FLAG_READ_ONLY)
+ printk("UDF-fs: Partition marked readonly; forcing readonly mount\n");
+ sb->s_flags |= MS_RDONLY;
+

	if ( udf_find_fileset(sb, &fileset, &rootdir) )
	{
		printk("UDF-fs: No fileset found\n");