diff options
| author | Eric Van Hensbergen <ericvh@kernel.org> | 2022-12-18 20:34:45 +0000 | 
|---|---|---|
| committer | Eric Van Hensbergen <ericvh@kernel.org> | 2023-03-27 02:33:48 +0000 | 
| commit | 6deffc8924b59df173da5fc7a9c96d3717cd9e96 (patch) | |
| tree | 889271459f1616f67f698d282df9ec844043d4a5 | |
| parent | 46c30cb8f5393586c6ebc7b53a235c85bfac1de8 (diff) | |
fs/9p: Add new mount modes
Add some additional mount modes for cache management including
specifying directio as a mount option and an option for ignore
qid.version for determining whether or not a file is cacheable.
Signed-off-by: Eric Van Hensbergen <ericvh@kernel.org>
| -rw-r--r-- | fs/9p/v9fs.c | 16 | ||||
| -rw-r--r-- | fs/9p/v9fs.h | 5 | 
2 files changed, 18 insertions, 3 deletions
| diff --git a/fs/9p/v9fs.c b/fs/9p/v9fs.c index f8e952c013f9..43d3806150a9 100644 --- a/fs/9p/v9fs.c +++ b/fs/9p/v9fs.c @@ -38,7 +38,7 @@ enum {  	/* String options */  	Opt_uname, Opt_remotename, Opt_cache, Opt_cachetag,  	/* Options that take no arguments */ -	Opt_nodevmap, Opt_noxattr, +	Opt_nodevmap, Opt_noxattr, Opt_directio, Opt_ignoreqv,  	/* Access options */  	Opt_access, Opt_posixacl,  	/* Lock timeout option */ @@ -56,6 +56,8 @@ static const match_table_t tokens = {  	{Opt_remotename, "aname=%s"},  	{Opt_nodevmap, "nodevmap"},  	{Opt_noxattr, "noxattr"}, +	{Opt_directio, "directio"}, +	{Opt_ignoreqv, "ignoreqv"},  	{Opt_cache, "cache=%s"},  	{Opt_cachetag, "cachetag=%s"},  	{Opt_access, "access=%s"}, @@ -125,7 +127,7 @@ int v9fs_show_options(struct seq_file *m, struct dentry *root)  	if (v9ses->nodev)  		seq_puts(m, ",nodevmap");  	if (v9ses->cache) -		seq_printf(m, ",%s", v9fs_cache_modes[v9ses->cache]); +		seq_printf(m, ",cache=%s", v9fs_cache_modes[v9ses->cache]);  #ifdef CONFIG_9P_FSCACHE  	if (v9ses->cachetag && v9ses->cache == CACHE_FSCACHE)  		seq_printf(m, ",cachetag=%s", v9ses->cachetag); @@ -147,6 +149,10 @@ int v9fs_show_options(struct seq_file *m, struct dentry *root)  		break;  	} +	if (v9ses->flags & V9FS_IGNORE_QV) +		seq_puts(m, ",ignoreqv"); +	if (v9ses->flags & V9FS_DIRECT_IO) +		seq_puts(m, ",directio");  	if (v9ses->flags & V9FS_POSIX_ACL)  		seq_puts(m, ",posixacl"); @@ -276,6 +282,12 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts)  		case Opt_noxattr:  			v9ses->flags |= V9FS_NO_XATTR;  			break; +		case Opt_directio: +			v9ses->flags |= V9FS_DIRECT_IO; +			break; +		case Opt_ignoreqv: +			v9ses->flags |= V9FS_IGNORE_QV; +			break;  		case Opt_cachetag:  #ifdef CONFIG_9P_FSCACHE  			kfree(v9ses->cachetag); diff --git a/fs/9p/v9fs.h b/fs/9p/v9fs.h index 8cd63782a25c..12401f1be5d6 100644 --- a/fs/9p/v9fs.h +++ b/fs/9p/v9fs.h @@ -37,7 +37,10 @@ enum p9_session_flags {  	V9FS_ACCESS_USER	= 0x08,  	V9FS_ACCESS_CLIENT	= 0x10,  	V9FS_POSIX_ACL		= 0x20, -	V9FS_NO_XATTR		= 0x40 +	V9FS_NO_XATTR		= 0x40, +	V9FS_IGNORE_QV		= 0x80, /* ignore qid.version for cache hints */ +	V9FS_DIRECT_IO		= 0x100, +	V9FS_SYNC		= 0x200  };  /* possible values of ->cache */ | 
