Re: [PATCH] fsync on unmounting root

From: Chris Mason (mason@suse.com)
Date: Thu Jan 04 2001 - 14:27:11 EST


On Thursday, January 04, 2001 01:58:47 PM -0500 Alexander Viro
<viro@math.psu.edu> wrote:
> On Thu, 4 Jan 2001, Chris Mason wrote:
>
>> Looks like the prerelease, and at least test13 don't fsync the device
>> when someone does an unmount on /
>>
>> mount -o remount works, just unmounting the root misses the fsync.
>> [snip]
>
> I have a better suggestion:
>
> if (mnt == current->fs->rootmnt && !umount_root) {
> mntput(mnt);
> return do_remount("/", 0, NULL);
> }
>

Ok, but I thought we would need an MS_RDONLY in there somewhere...How about
this:

-chris

--- linux/fs/super.c.1 Thu Jan 4 13:38:55 2001
+++ linux/fs/super.c Thu Jan 4 14:14:04 2001
@@ -54,6 +54,7 @@
 extern int root_mountflags;
 
 static int do_remount_sb(struct super_block *sb, int flags, char * data);
+static int do_remount(const char *dir, int flags, char * data);
 
 /* this is initialized in init/main.c */
 kdev_t ROOT_DEV;
@@ -1025,15 +1026,12 @@
          * call reboot(9). Then init(8) could umount root and exec /reboot.
          */
         if (mnt == current->fs->rootmnt && !umount_root) {
- int retval = 0;
                 /*
                  * Special case for "unmounting" root ...
                  * we just try to remount it readonly.
                  */
                 mntput(mnt);
- if (!(sb->s_flags & MS_RDONLY))
- retval = do_remount_sb(sb, MS_RDONLY, 0);
- return retval;
+ return do_remount("/", MS_RDONLY, NULL);
         }
 
         spin_lock(&dcache_lock);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Jan 07 2001 - 21:00:19 EST