From owner-freebsd-bugs@FreeBSD.ORG Sat Nov 11 21:00:44 2006 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6925C16A4D1 for ; Sat, 11 Nov 2006 21:00:44 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 812A143D5E for ; Sat, 11 Nov 2006 21:00:42 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id kABL0gQR057347 for ; Sat, 11 Nov 2006 21:00:42 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id kABL0g8f057318; Sat, 11 Nov 2006 21:00:42 GMT (envelope-from gnats) Resent-Date: Sat, 11 Nov 2006 21:00:42 GMT Resent-Message-Id: <200611112100.kABL0g8f057318@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Eugene Grosbein Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4674D16A412 for ; Sat, 11 Nov 2006 20:55:01 +0000 (UTC) (envelope-from eu@grosbein.pp.ru) Received: from grosbein.pp.ru (grgw.svzserv.kemerovo.su [213.184.64.166]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8FD0A43D66 for ; Sat, 11 Nov 2006 20:54:57 +0000 (GMT) (envelope-from eu@grosbein.pp.ru) Received: from grosbein.pp.ru (localhost [127.0.0.1]) by grosbein.pp.ru (8.13.8/8.13.8) with ESMTP id kABKsrEH002903 for ; Sun, 12 Nov 2006 03:54:53 +0700 (KRAT) (envelope-from eu@grosbein.pp.ru) Received: (from root@localhost) by grosbein.pp.ru (8.13.8/8.13.8/Submit) id kABKsqnM002902; Sun, 12 Nov 2006 03:54:52 +0700 (KRAT) (envelope-from eu) Message-Id: <200611112054.kABKsqnM002902@grosbein.pp.ru> Date: Sun, 12 Nov 2006 03:54:52 +0700 (KRAT) From: Eugene Grosbein To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: kern/105412: [msdosfs] msdosfs mounted as r/o cannot be remounted to r/w X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Eugene Grosbein List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Nov 2006 21:00:44 -0000 >Number: 105412 >Category: kern >Synopsis: [msdosfs] msdosfs mounted as r/o cannot be remounted to r/w >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat Nov 11 21:00:41 GMT 2006 >Closed-Date: >Last-Modified: >Originator: Eugene Grosbein >Release: FreeBSD 6.2-PRERELEASE i386 >Organization: Svyaz Service JSC >Environment: System: FreeBSD grosbein.pp.ru 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #20: Fri Nov 10 20:05:19 KRAT 2006 eu@grosbein.pp.ru:/mnt/home/obj/usr/local/src/sys/DADV i386 >Description: It must be possible to remount msdosfs from r/o to r/w >How-To-Repeat: Let's make an image for file system to play with: # dd if=/dev/zero bs=1k count=1440 of=image Then make it device /dev/md0: # mdconfig -a -t vnode -f image Then make new filesystem to mount: # newfs_msdos -f 1440 /dev/md0 Then mount it read-only: # mount_msdosfs -o ro /dev/md0 /mnt/tmp Now look at this: # mount | grep md0 /dev/md0 on /mnt/tmp (msdosfs, local, read-only) Still good. Now try to remount it r/w: # mount -u -o rw /dev/md0; echo $? 0 It pretends to finish with success. But it has failed: # echo test > /mnt/tmp/test; mount | grep md0 bash: /mnt/tmp/test: Read-only file system /dev/md0 on /mnt/tmp (msdosfs, local, read-only) >Fix: Unknown. There are two problems really. First, mount(8) does not treat msdosfs as remountable. This should be fixed with the following patch: --- sbin/mount/mount.c.orig Sun Nov 12 01:16:13 2006 +++ sbin/mount/mount.c Sun Nov 12 01:16:23 2006 @@ -116,7 +116,7 @@ */ static const char * remountable_fs_names[] = { - "ufs", "ffs", "ext2fs", + "ufs", "ffs", "ext2fs","msdosfs", 0 }; Second, "mount -o update,noro /dev/md0" results in a call to msdosfs_mount() that for some reason finds "export" option in its arguments and just returns 0 effectively ignoring the request for upgrade to r/w. Eugene Grosbein >Release-Note: >Audit-Trail: >Unformatted: