On 2018/10/18 13:28, Chengguang Xu wrote: > On 2018/9/25 at 3:41 PM, Chao Yu wrote: > >> On 2018/9/22 22:40, cgxu519 wrote: >>> On 09/20/2018 02:29 PM, Chao Yu wrote: >>>> On 2018/9/20 7:54, cgxu519 wrote: >>>>> On 9/19/18 10:02 PM, Chao Yu wrote: >>>>>> On 2018/9/18 21:47, cgxu519 wrote: >>>>>>> On 09/18/2018 09:20 PM, Chao Yu wrote: >>>>>>>> On 2018/9/18 14:23, Chengguang Xu wrote: >>>>>>>>> Currently we set default value to options before parsing remount >>>>>>>>> options, >>>>>>>>> it will cause unexpected change of options which were specified in >>>>>>>>> first >>>>>>>>> mount. >>>>>>>> Can you check below commit? It looks w/o it we may lose default option >>>>>>>> after >>>>>>>> remount. >>>>>>>> >>>>>>>> 498c5e9fcd10 ("f2fs: add default mount options to remount") >>>>>>> Hi Chao, >>>>>> Hi Chengguang, >>>>>> >>>>>>> It looks like there was a bug in remount at that time, but I think the >>>>>>> fix above >>>>>>> is not correct. >>>>>>> >>>>>>> from the patch '498c5e9fcd10', I think it was caused by clearing >>>>>>> sbi->mount_opt.opt before >>>>>>> >>>>>>> parsing. I think remount should not change the options which were >>>>>>> specified by >>>>>>> user in >>>>>>> >>>>>>> previous mount unless user specifies in remount. >>>>>> Can you check description in manual of mount. >>>>>> >>>>>> IIRC, old mount option will be record into /etc/mtab or /proc/mounts (for >>>>>> adapting namespace feature), with command of "mount -o remount,rw >>>>>> /dir", old >>>>>> mount options can be loaded from above config file, and merge them with >>>>>> new >>>>>> specified options. >>>>>> >>>>>> Even we kill old mount options by call default_options() in ->remount, >>>>>> user's >>>>>> old mount option can still be set through parameters. >>>>> Please let me show you different behaviors before/after this patch. >>>>> >>>>> >>>>> [root@x201 cgxu]# uname -a >>>>> Linux x201 4.19.0-rc2+ #51 SMP Wed Sep 19 22:41:20 CST 2018 x86_64 >>>>> x86_64 x86_64 GNU/Linux >>>>> >>>>> >>>>> Before: >>>>> >>>>> [root@x201 cgxu]# mount -o fsync_mode=strict /dev/mapper/test-test1 >>>>> /mnt/test/test1 >>>>> [root@x201 cgxu]# mount | grep test1 >>>>> /dev/mapper/test-test1 on /mnt/test/test1 type f2fs >>>>> (rw,relatime,lazytime,background_gc=on,discard,no_heap,user_xattr,inline_xattr,acl,inline_data,inline_dentry,flush_merge,extent_cache,mode=adaptive,active_logs=6,alloc_mode=reuse,fsync_mode=strict) >>>>> >>>>> [root@x201 cgxu]# mount -o remount,background_gc=sync >>>>> /dev/mapper/test-test1 /mnt/test/test1 >>>>> [root@x201 cgxu]# mount | grep test1 >>>>> /dev/mapper/test-test1 on /mnt/test/test1 type f2fs >>>>> (rw,relatime,background_gc=sync,discard,no_heap,user_xattr,inline_xattr,acl,inline_data,inline_dentry,flush_merge,extent_cache,mode=adaptive,active_logs=6,alloc_mode=default,fsync_mode=posix) >>>>> >>>>> >>>>> I only changed background_gc in ->remount, but fsync_mode is implicitly >>>>> set to default value 'posix'. >>>> IMO, the resul is as expected, let's referenced description in manual of >>>> mount: >>>> >>>> The remount functionality follows the standard way how >>>> the >>>> mount command works with options from fstab. It means the mount command >>>> doesn't read fstab (or mtab) only when a device and >>>> dir are fully specified. >>>> >>>> mount -o remount,rw /dev/foo /dir >>>> >>>> After this call all old mount options are replaced and >>>> arbitrary stuff from fstab is ignored, except the loop= option which is >>>> internally generated and maintained by the mount command. >>>> >>>> mount -o remount,rw /dir >>>> >>>> After this call mount reads fstab (or mtab) and merges these >>>> options with options from command line ( -o ). >>>> >>>> >>>> So if you want to keep old mount option, you should use: >>>> >>>> mount -o remount,background_gc=sync /mnt/test/test1 >>>> >>>> instead of >>>> >>>> mount -o remount,background_gc=sync /dev/mapper/test-test1 /mnt/test/test1 >>> >>> I get your point about how mount command organizes options , >>> but it seems other filesystem do not initialize mount option in remount. >>> What do you think for that? and if we keep initialization in f2fs, >>> shouldn't we set default value to all mount options for remount? >> >> I'm okay with this change to keep line with other filesystems. > > Hi Chao > > Do you agree this patch without change of commit log?
Hi Chengguang, I didn't see unexpected result caused by calling default_options() in f2fs_remount(), if there is, we'd better add such example in commit message. Otherwise, it will be better to say 'keep line with other filesystem'... Thanks, > > Thanks, > Chengguang > > > . > _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel