Re: [PATCH v3] btrfs: verify max_inline mount parameter
From: David Sterba <hidden>
Date: 2018-03-05 21:37:05
On Thu, Mar 01, 2018 at 07:51:23PM +0800, Anand Jain wrote:
quoted
quoted
@@ -605,7 +605,14 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options, case Opt_max_inline: num = match_strdup(&args[0]); if (num) { - info->max_inline = memparse(num, NULL); + char *retptr; + + info->max_inline = memparse(num, &retptr);I missed it in the patch that changed max_inline to u32, memparse returns unsigned long long, so this is not entrely correct and requires a temporary variable. We should also report if the user-specified value is larger than BTRFS_MAX_METADATA_BLOCKSIZE .(Got diverted into something else. Sorry for the delay.) Currently -o max_line can be only upto sectorsize. We have MAX_INLINE_EXTENT_BUFFER_SIZE which is 64K and is equal to BTRFS_MAX_METADATA_BLOCKSIZE (also 64K)
BTRFS_MAX_METADATA_BLOCKSIZE is the limit of nodesize, MAX_INLINE_EXTENT_BUFFER_SIZE exists only for sanity checking.
I didn't get the point that max_inline is limited by sector size in the current design. Any idea?
The sectorsize is now mandatory to be equal to the page size, so the inline file size is rather limited by that.