9p.h (2149675b195f2d9a1a4e3b966d45aba234def69b) | 9p.h (d2c5cf7ca15490b4737a5393e51abf0301b98971) |
---|---|
1#ifndef QEMU_9P_H 2#define QEMU_9P_H 3 4#include <dirent.h> 5#include <utime.h> 6#include <sys/resource.h> 7#include "fsdev/file-op-9p.h" 8#include "fsdev/9p-iov-marshal.h" --- 183 unchanged lines hidden (view full) --- 192 void *value; 193 V9fsString name; 194 int flags; 195 bool xattrwalk_fid; 196} V9fsXattr; 197 198typedef struct V9fsDir { 199 DIR *stream; | 1#ifndef QEMU_9P_H 2#define QEMU_9P_H 3 4#include <dirent.h> 5#include <utime.h> 6#include <sys/resource.h> 7#include "fsdev/file-op-9p.h" 8#include "fsdev/9p-iov-marshal.h" --- 183 unchanged lines hidden (view full) --- 192 void *value; 193 V9fsString name; 194 int flags; 195 bool xattrwalk_fid; 196} V9fsXattr; 197 198typedef struct V9fsDir { 199 DIR *stream; |
200 CoMutex readdir_mutex; | 200 P9ProtoVersion proto_version; 201 /* readdir mutex type used for 9P2000.u protocol variant */ 202 CoMutex readdir_mutex_u; 203 /* readdir mutex type used for 9P2000.L protocol variant */ 204 QemuMutex readdir_mutex_L; |
201} V9fsDir; 202 203static inline void v9fs_readdir_lock(V9fsDir *dir) 204{ | 205} V9fsDir; 206 207static inline void v9fs_readdir_lock(V9fsDir *dir) 208{ |
205 qemu_co_mutex_lock(&dir->readdir_mutex); | 209 if (dir->proto_version == V9FS_PROTO_2000U) { 210 qemu_co_mutex_lock(&dir->readdir_mutex_u); 211 } else { 212 qemu_mutex_lock(&dir->readdir_mutex_L); 213 } |
206} 207 208static inline void v9fs_readdir_unlock(V9fsDir *dir) 209{ | 214} 215 216static inline void v9fs_readdir_unlock(V9fsDir *dir) 217{ |
210 qemu_co_mutex_unlock(&dir->readdir_mutex); | 218 if (dir->proto_version == V9FS_PROTO_2000U) { 219 qemu_co_mutex_unlock(&dir->readdir_mutex_u); 220 } else { 221 qemu_mutex_unlock(&dir->readdir_mutex_L); 222 } |
211} 212 | 223} 224 |
213static inline void v9fs_readdir_init(V9fsDir *dir) | 225static inline void v9fs_readdir_init(P9ProtoVersion proto_version, V9fsDir *dir) |
214{ | 226{ |
215 qemu_co_mutex_init(&dir->readdir_mutex); | 227 dir->proto_version = proto_version; 228 if (proto_version == V9FS_PROTO_2000U) { 229 qemu_co_mutex_init(&dir->readdir_mutex_u); 230 } else { 231 qemu_mutex_init(&dir->readdir_mutex_L); 232 } |
216} 217 218/** 219 * Type for 9p fs drivers' (a.k.a. 9p backends) result of readdir requests, 220 * which is a chained list of directory entries. 221 */ 222typedef struct V9fsDirEnt { 223 /* mandatory (must not be NULL) information for all readdir requests */ --- 245 unchanged lines hidden --- | 233} 234 235/** 236 * Type for 9p fs drivers' (a.k.a. 9p backends) result of readdir requests, 237 * which is a chained list of directory entries. 238 */ 239typedef struct V9fsDirEnt { 240 /* mandatory (must not be NULL) information for all readdir requests */ --- 245 unchanged lines hidden --- |