[Devel] [PATCH VZ10 1/1] fs: namespace: transform mount flags to comma separated values

Pavel Tikhomirov ptikhomirov at virtuozzo.com
Tue Jun 2 15:12:07 MSK 2026



On 6/2/26 13:46, Pavel Tikhomirov wrote:
>> @@ -3338,6 +3344,10 @@ static int do_remount(struct path *path, int ms_flags, int sb_flags,
>>  
>>  	mnt_warn_timestamp_expiry(path, &mnt->mnt);
>>  
>> +free_mnt_data:
>> +	if (mnt_data && mnt_data != data)
>> +		free_page((unsigned long)mnt_data);
>> +err:
>>  	put_fs_context(fc);
>>  	return err;
>>  }
>> @@ -3774,8 +3784,17 @@ static int do_new_mount(struct path *path, const char *fstype, int sb_flags,
>>  					  subtype, strlen(subtype));
>>  	if (!err && name)
>>  		err = vfs_parse_fs_string(fc, "source", name, strlen(name));
>> -	if (!err)
>> -		err = parse_monolithic_mount_data(fc, data);
>> +	if (!err) {
>> +		void *mnt_data = legacy_merge_mount_data(fc, data);
>> +
>> +		if (IS_ERR(mnt_data)) {
>> +			err = PTR_ERR(mnt_data);
>> +		} else {
>> +			err = parse_monolithic_mount_data(fc, mnt_data);
>> +			if (mnt_data != data)
>> +				free_page((unsigned long)mnt_data);
>> +		}
>> +	}
> Why do we change this codepath? We don't have any vz-specific code (e.g. ve_prepare_mount_options()) here.
> 
>>  	if (!err && !mount_capable(fc))
>>  		err = -EPERM;
>>  	if (!err)

Ah I see

int parse_monolithic_mount_data(struct fs_context *fc, void *data)
{
        int (*monolithic_mount_data)(struct fs_context *, void *);
                
        monolithic_mount_data = fc->ops->parse_monolithic;
        if (!monolithic_mount_data)
                monolithic_mount_data = generic_parse_monolithic;

        return monolithic_mount_data(fc, data);
}

in generic_parse_monolithic case we get to vfs_parse_monolithic_sep -> ve_devmnt_process.

-- 
Best regards, Pavel Tikhomirov
Senior Software Developer, Virtuozzo.



More information about the Devel mailing list