ext4: journal_path mount options should follow links
commite3ea75ee65
upstream. Before the commit461c3af045
("ext4: Change handle_mount_opt() to use fs_parameter") ext4 mount option journal_path did follow links in the provided path. Bring this behavior back by allowing to pass pathwalk flags to fs_lookup_param(). Fixes:461c3af045
("ext4: Change handle_mount_opt() to use fs_parameter") Signed-off-by: Lukas Czerner <lczerner@redhat.com> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Link: https://lore.kernel.org/r/20221004135803.32283-1-lczerner@redhat.com Signed-off-by: Theodore Ts'o <tytso@mit.edu> Cc: stable@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
5e1d519af5
commit
15adfbb2d1
|
@ -814,6 +814,7 @@ process the parameters it is given.
|
|||
int fs_lookup_param(struct fs_context *fc,
|
||||
struct fs_parameter *value,
|
||||
bool want_bdev,
|
||||
unsigned int flags,
|
||||
struct path *_path);
|
||||
|
||||
This takes a parameter that carries a string or filename type and attempts
|
||||
|
|
|
@ -2247,7 +2247,7 @@ static int ext4_parse_param(struct fs_context *fc, struct fs_parameter *param)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
error = fs_lookup_param(fc, param, 1, &path);
|
||||
error = fs_lookup_param(fc, param, 1, LOOKUP_FOLLOW, &path);
|
||||
if (error) {
|
||||
ext4_msg(NULL, KERN_ERR, "error: could not find "
|
||||
"journal device path");
|
||||
|
|
|
@ -138,15 +138,16 @@ EXPORT_SYMBOL(__fs_parse);
|
|||
* @fc: The filesystem context to log errors through.
|
||||
* @param: The parameter.
|
||||
* @want_bdev: T if want a blockdev
|
||||
* @flags: Pathwalk flags passed to filename_lookup()
|
||||
* @_path: The result of the lookup
|
||||
*/
|
||||
int fs_lookup_param(struct fs_context *fc,
|
||||
struct fs_parameter *param,
|
||||
bool want_bdev,
|
||||
unsigned int flags,
|
||||
struct path *_path)
|
||||
{
|
||||
struct filename *f;
|
||||
unsigned int flags = 0;
|
||||
bool put_f;
|
||||
int ret;
|
||||
|
||||
|
|
|
@ -76,6 +76,7 @@ static inline int fs_parse(struct fs_context *fc,
|
|||
extern int fs_lookup_param(struct fs_context *fc,
|
||||
struct fs_parameter *param,
|
||||
bool want_bdev,
|
||||
unsigned int flags,
|
||||
struct path *_path);
|
||||
|
||||
extern int lookup_constant(const struct constant_table tbl[], const char *name, int not_found);
|
||||
|
|
Loading…
Reference in New Issue