+struct vncache
+{
+ struct hbucket* pool;
+ rwlock_t lock;
+};
+#define cache_atomic_read(cache, ops) \
+ do { \
+ rwlock_begin_read(&(cache)->lock); \
+ ops; \
+ rwlock_end_read(&(cache)->lock); \
+ } while (0)
+
+#define cache_atomic_write(cache, ops) \
+ do { \
+ rwlock_begin_write(&(cache)->lock); \
+ ops; \
+ rwlock_end_write(&(cache)->lock); \
+ } while (0)
+
+#define dnode_cache(dnode) (&(dnode)->super_block->d_cache)
+#define inode_cache(inode) (&(inode)->sb->i_cache)
+