io: add and implement QIO_CHANNEL_FEATURE_SEEKABLE for channel file
Add a generic QIOChannel feature SEEKABLE which would be used by the qemu_file* apis. For the time being this will be only implemented for file channels. Signed-off-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
		
				
					committed by
					
						
						Fabiano Rosas
					
				
			
			
				
	
			
			
			
						parent
						
							11fc708273
						
					
				
				
					commit
					694d818a8c
				
			@@ -44,6 +44,7 @@ enum QIOChannelFeature {
 | 
				
			|||||||
    QIO_CHANNEL_FEATURE_LISTEN,
 | 
					    QIO_CHANNEL_FEATURE_LISTEN,
 | 
				
			||||||
    QIO_CHANNEL_FEATURE_WRITE_ZERO_COPY,
 | 
					    QIO_CHANNEL_FEATURE_WRITE_ZERO_COPY,
 | 
				
			||||||
    QIO_CHANNEL_FEATURE_READ_MSG_PEEK,
 | 
					    QIO_CHANNEL_FEATURE_READ_MSG_PEEK,
 | 
				
			||||||
 | 
					    QIO_CHANNEL_FEATURE_SEEKABLE,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,6 +36,10 @@ qio_channel_file_new_fd(int fd)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    ioc->fd = fd;
 | 
					    ioc->fd = fd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (lseek(fd, 0, SEEK_CUR) != (off_t)-1) {
 | 
				
			||||||
 | 
					        qio_channel_set_feature(QIO_CHANNEL(ioc), QIO_CHANNEL_FEATURE_SEEKABLE);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    trace_qio_channel_file_new_fd(ioc, fd);
 | 
					    trace_qio_channel_file_new_fd(ioc, fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return ioc;
 | 
					    return ioc;
 | 
				
			||||||
@@ -60,6 +64,10 @@ qio_channel_file_new_path(const char *path,
 | 
				
			|||||||
        return NULL;
 | 
					        return NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (lseek(ioc->fd, 0, SEEK_CUR) != (off_t)-1) {
 | 
				
			||||||
 | 
					        qio_channel_set_feature(QIO_CHANNEL(ioc), QIO_CHANNEL_FEATURE_SEEKABLE);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    trace_qio_channel_file_new_path(ioc, path, flags, mode, ioc->fd);
 | 
					    trace_qio_channel_file_new_path(ioc, path, flags, mode, ioc->fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return ioc;
 | 
					    return ioc;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user