On Wed, Jun 15, 2016 at 04:21:13AM +0000, Damien Le Moal wrote: > Jaegeuk, > > On 6/15/16 03:45, Jaegeuk Kim wrote: > > If mkfs.f2fs gives a feature flag for host-managed SMR, we can set mode=lfs > > by default. > > > > Signed-off-by: Jaegeuk Kim <jaeg...@kernel.org> > > --- > > fs/f2fs/f2fs.h | 21 +++++++++++++++++++++ > > fs/f2fs/super.c | 14 ++++++++------ > > 2 files changed, 29 insertions(+), 6 deletions(-) > > > > diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h > > index 32be19e..1a19c02 100644 > > --- a/fs/f2fs/f2fs.h > > +++ b/fs/f2fs/f2fs.h > > @@ -133,6 +133,7 @@ struct f2fs_mount_info { > > }; > > > > #define F2FS_FEATURE_ENCRYPT 0x0001 > > +#define F2FS_FEATURE_HMSMR 0x0002 > > > > #define F2FS_HAS_FEATURE(sb, mask) \ > > ((F2FS_SB(sb)->raw_super->feature & cpu_to_le32(mask)) != 0) > > @@ -2354,6 +2355,26 @@ static inline int f2fs_sb_has_crypto(struct > > super_block *sb) > > return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_ENCRYPT); > > } > > > > +static inline int f2fs_sb_mounted_hmsmr(struct super_block *sb) > > +{ > > + return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_HMSMR); > > +} > > + > > +static inline void set_opt_mode(struct f2fs_sb_info *sbi, unsigned int mt) > > +{ > > + clear_opt(sbi, ADAPTIVE); > > + clear_opt(sbi, LFS); > > + > > + switch (mt) { > > + case F2FS_MOUNT_ADAPTIVE: > > + set_opt(sbi, ADAPTIVE); > > + break; > > + case F2FS_MOUNT_LFS: > > + set_opt(sbi, LFS); > > + break; > > + } > > +} > > + > > static inline bool f2fs_may_encrypt(struct inode *inode) > > { > > #ifdef CONFIG_F2FS_FS_ENCRYPTION > > diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c > > index edc736d..71b6066 100644 > > --- a/fs/f2fs/super.c > > +++ b/fs/f2fs/super.c > > @@ -515,12 +515,10 @@ static int parse_options(struct super_block *sb, char > > *options) > > return -ENOMEM; > > if (strlen(name) == 8 && > > !strncmp(name, "adaptive", 8)) { > > - set_opt(sbi, ADAPTIVE); > > - clear_opt(sbi, LFS); > > + set_opt_mode(sbi, F2FS_MOUNT_ADAPTIVE); > > } else if (strlen(name) == 3 && > > !strncmp(name, "lfs", 3)) { > > - clear_opt(sbi, ADAPTIVE); > > - set_opt(sbi, LFS); > > + set_opt_mode(sbi, F2FS_MOUNT_LFS); > > } else { > > kfree(name); > > return -EINVAL; > > @@ -980,7 +978,10 @@ static void default_options(struct f2fs_sb_info *sbi) > > set_opt(sbi, EXTENT_CACHE); > > sbi->sb->s_flags |= MS_LAZYTIME; > > set_opt(sbi, FLUSH_MERGE); > > - set_opt(sbi, ADAPTIVE); > > + if (f2fs_sb_mounted_hmsmr(sbi->sb)) > > + set_opt_mode(sbi, F2FS_MOUNT_LFS); > > + else > > + set_opt_mode(sbi, F2FS_MOUNT_ADAPTIVE); > > Strictly speaking, host-aware drives would not require the LFS mode > as any zone of the disk can be randomly written and so the occasional > in-place updates of the adaptive mode would be OK. However, randomly > writing host-aware drives can lead to a lot of background activity on > the drive side for internal management of the accumulated random writes, > with a potential performance drop over time (this is highly dependent on > the drive FW implementation though). > > So I think it would be good to also enable the LFS mode by default for > host-aware devices, unless the user has explicitly specified mount with > adaptive mode (if the user "knows" that the drive FW handles very > efficiently random writes).
Agreed. Would HASMR also provide the same geometry, zone information, in mkfs? Cause I haven't tested it so far. IIRC, we discussed about HASMR with Marc Lehmann last year, and he gave the below link which sums up. http://comments.gmane.org/gmane.linux.file-systems.f2fs/2854 http://blog.schmorp.de/2015-10-08-smr-archive-drives-fast-now.html > So how about also introducing a F2FS_FEATURE_HASMR feature flag to > handle these different cases ? Yes, so once I can retrieve the zone information from the device, surely I'll add that. > Also, I think that the DISCARD option must be enabled by default for > HMSMR disks. Otherwise, zones write pointer will never get reset. > The same applies to HASMR devices mounted with the LFS mode. > (In any case, the discard handling does not look like it will always > align to the device zone size, which will fail on a zoned disk (discard > granularity is the zone size). I may be missing something though. Still > checking.) Yup, will do. BTW, I remember I fixed zone-aligned discard issue before. Could you please check the latest dev-test branch in f2fs.git? I'm used to rebase that branch occasionally when I changed the previous patches. Thanks, > > Best regards. > > -- > Damien Le Moal, Ph.D. > Sr. Manager, System Software Group, HGST Research, > HGST, a Western Digital company > damien.lem...@hgst.com > (+81) 0466-98-3593 (ext. 513593) > 1 kirihara-cho, Fujisawa, > Kanagawa, 252-0888 Japan > www.hgst.com > Western Digital Corporation (and its subsidiaries) E-mail Confidentiality > Notice & Disclaimer: > > This e-mail and any files transmitted with it may contain confidential or > legally privileged information of WDC and/or its affiliates, and are intended > solely for the use of the individual or entity to which they are addressed. > If you are not the intended recipient, any disclosure, copying, distribution > or any action taken or omitted to be taken in reliance on it, is prohibited. > If you have received this e-mail in error, please notify the sender > immediately and delete the e-mail in its entirety from your system. ------------------------------------------------------------------------------ What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421&iu=/41014381 _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel