virtiofsd: Announce FUSE_ATTR_FLAGS
The fuse_attr.flags field is currently just initialized to 0, which is valid. Thus, there is no reason not to always announce FUSE_ATTR_FLAGS (when the kernel supports it). Signed-off-by: Max Reitz <mreitz@redhat.com> Message-Id: <20200909184028.262297-3-mreitz@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
		
				
					committed by
					
						
						Dr. David Alan Gilbert
					
				
			
			
				
	
			
			
			
						parent
						
							97d741cc96
						
					
				
				
					commit
					2f10415abf
				
			@@ -352,6 +352,14 @@ struct fuse_file_info {
 | 
			
		||||
 */
 | 
			
		||||
#define FUSE_CAP_NO_OPENDIR_SUPPORT (1 << 24)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Indicates that the client will provide fuse_attr.flags, and the kernel will
 | 
			
		||||
 * interpret it.
 | 
			
		||||
 *
 | 
			
		||||
 * This feature is enabled by default when supported by the kernel.
 | 
			
		||||
 */
 | 
			
		||||
#define FUSE_CAP_ATTR_FLAGS (1 << 27)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Ioctl flags
 | 
			
		||||
 *
 | 
			
		||||
 
 | 
			
		||||
@@ -1988,6 +1988,9 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid,
 | 
			
		||||
            bufsize = max_bufsize;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (arg->flags & FUSE_ATTR_FLAGS) {
 | 
			
		||||
        se->conn.capable |= FUSE_CAP_ATTR_FLAGS;
 | 
			
		||||
    }
 | 
			
		||||
#ifdef HAVE_SPLICE
 | 
			
		||||
#ifdef HAVE_VMSPLICE
 | 
			
		||||
    se->conn.capable |= FUSE_CAP_SPLICE_WRITE | FUSE_CAP_SPLICE_MOVE;
 | 
			
		||||
@@ -2014,6 +2017,7 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid,
 | 
			
		||||
    LL_SET_DEFAULT(1, FUSE_CAP_ASYNC_DIO);
 | 
			
		||||
    LL_SET_DEFAULT(1, FUSE_CAP_IOCTL_DIR);
 | 
			
		||||
    LL_SET_DEFAULT(1, FUSE_CAP_ATOMIC_O_TRUNC);
 | 
			
		||||
    LL_SET_DEFAULT(1, FUSE_CAP_ATTR_FLAGS);
 | 
			
		||||
    LL_SET_DEFAULT(se->op.write_buf, FUSE_CAP_SPLICE_READ);
 | 
			
		||||
    LL_SET_DEFAULT(se->op.getlk && se->op.setlk, FUSE_CAP_POSIX_LOCKS);
 | 
			
		||||
    LL_SET_DEFAULT(se->op.flock, FUSE_CAP_FLOCK_LOCKS);
 | 
			
		||||
@@ -2103,6 +2107,9 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid,
 | 
			
		||||
    if (se->conn.want & FUSE_CAP_POSIX_ACL) {
 | 
			
		||||
        outarg.flags |= FUSE_POSIX_ACL;
 | 
			
		||||
    }
 | 
			
		||||
    if (se->conn.want & FUSE_CAP_ATTR_FLAGS) {
 | 
			
		||||
        outarg.flags |= FUSE_ATTR_FLAGS;
 | 
			
		||||
    }
 | 
			
		||||
    outarg.max_readahead = se->conn.max_readahead;
 | 
			
		||||
    outarg.max_write = se->conn.max_write;
 | 
			
		||||
    if (se->conn.max_background >= (1 << 16)) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user