version 1.70.10.1, 2010/03/11 15:04:14 |
version 1.83, 2013/03/06 11:39:37 |
Line 53 extern const struct vnodeopv_desc puffs_ |
|
Line 53 extern const struct vnodeopv_desc puffs_ |
|
extern const struct vnodeopv_desc puffs_msgop_opv_desc; |
extern const struct vnodeopv_desc puffs_msgop_opv_desc; |
|
|
extern struct pool puffs_pnpool; |
extern struct pool puffs_pnpool; |
|
extern struct pool puffs_vapool; |
|
|
#ifdef DEBUG |
#ifdef DEBUG |
#ifndef PUFFSDEBUG |
#ifndef PUFFSDEBUG |
Line 89 extern int puffsdebug; /* puffs_subr.c * |
|
Line 90 extern int puffsdebug; /* puffs_subr.c * |
|
(((pmp)->pmp_flags & PUFFS_KFLAG_NOCACHE_PAGE) == 0) |
(((pmp)->pmp_flags & PUFFS_KFLAG_NOCACHE_PAGE) == 0) |
#define PUFFS_USE_FULLPNBUF(pmp) \ |
#define PUFFS_USE_FULLPNBUF(pmp) \ |
((pmp)->pmp_flags & PUFFS_KFLAG_LOOKUP_FULLPNBUF) |
((pmp)->pmp_flags & PUFFS_KFLAG_LOOKUP_FULLPNBUF) |
|
#define PUFFS_USE_FS_TTL(pmp) \ |
|
((pmp)->pmp_flags & PUFFS_KFLAG_CACHE_FS_TTL) |
|
#define PUFFS_USE_DOTDOTCACHE(pmp) \ |
|
((pmp)->pmp_flags & PUFFS_KFLAG_CACHE_DOTDOT) |
|
|
#define PUFFS_WCACHEINFO(pmp) 0 |
#define PUFFS_WCACHEINFO(pmp) 0 |
|
|
Line 98 struct puffs_newcookie { |
|
Line 103 struct puffs_newcookie { |
|
LIST_ENTRY(puffs_newcookie) pnc_entries; |
LIST_ENTRY(puffs_newcookie) pnc_entries; |
}; |
}; |
|
|
|
#define PUFFS_SOPREQ_EXPIRE_TIMEOUT 1000 |
|
extern int puffs_sopreq_expire_timeout; |
|
|
enum puffs_sopreqtype { |
enum puffs_sopreqtype { |
PUFFS_SOPREQSYS_EXIT, |
PUFFS_SOPREQSYS_EXIT, |
PUFFS_SOPREQ_FLUSH, |
PUFFS_SOPREQ_FLUSH, |
PUFFS_SOPREQ_UNMOUNT, |
PUFFS_SOPREQ_UNMOUNT, |
|
PUFFS_SOPREQ_EXPIRE, |
}; |
}; |
|
|
struct puffs_sopreq { |
struct puffs_sopreq { |
union { |
union { |
struct puffs_req preq; |
struct puffs_req preq; |
struct puffs_flush pf; |
struct puffs_flush pf; |
|
puffs_cookie_t ck; |
} psopr_u; |
} psopr_u; |
|
|
enum puffs_sopreqtype psopr_sopreq; |
enum puffs_sopreqtype psopr_sopreq; |
TAILQ_ENTRY(puffs_sopreq) psopr_entries; |
TAILQ_ENTRY(puffs_sopreq) psopr_entries; |
|
int psopr_at; |
}; |
}; |
#define psopr_preq psopr_u.preq |
#define psopr_preq psopr_u.preq |
#define psopr_pf psopr_u.pf |
#define psopr_pf psopr_u.pf |
|
#define psopr_ck psopr_u.ck |
|
|
TAILQ_HEAD(puffs_wq, puffs_msgpark); |
TAILQ_HEAD(puffs_wq, puffs_msgpark); |
LIST_HEAD(puffs_node_hashlist, puffs_node); |
LIST_HEAD(puffs_node_hashlist, puffs_node); |
Line 135 struct puffs_mount { |
|
Line 147 struct puffs_mount { |
|
struct puffs_node_hashlist *pmp_pnodehash; |
struct puffs_node_hashlist *pmp_pnodehash; |
int pmp_npnodehash; |
int pmp_npnodehash; |
|
|
|
/* |
|
* a list of cookies which is going to be puffs_getvnode'd. |
|
* this is merely a loose attempt to prevent races. |
|
*/ |
LIST_HEAD(, puffs_newcookie) pmp_newcookie; |
LIST_HEAD(, puffs_newcookie) pmp_newcookie; |
|
|
struct mount *pmp_mp; |
struct mount *pmp_mp; |
Line 165 struct puffs_mount { |
|
Line 181 struct puffs_mount { |
|
kmutex_t pmp_sopmtx; |
kmutex_t pmp_sopmtx; |
kcondvar_t pmp_sopcv; |
kcondvar_t pmp_sopcv; |
int pmp_sopthrcount; |
int pmp_sopthrcount; |
TAILQ_HEAD(, puffs_sopreq) pmp_sopreqs; |
TAILQ_HEAD(, puffs_sopreq) pmp_sopfastreqs; |
|
TAILQ_HEAD(, puffs_sopreq) pmp_sopnodereqs; |
|
bool pmp_docompat; |
}; |
}; |
|
|
#define PUFFSTAT_BEFOREINIT 0 |
#define PUFFSTAT_BEFOREINIT 0 |
Line 174 struct puffs_mount { |
|
Line 192 struct puffs_mount { |
|
#define PUFFSTAT_DYING 3 /* Do you want your possessions identified? */ |
#define PUFFSTAT_DYING 3 /* Do you want your possessions identified? */ |
|
|
|
|
#define PNODE_NOREFS 0x01 /* no backend reference */ |
#define PNODE_NOREFS 0x001 /* no backend reference */ |
#define PNODE_DYING 0x02 /* NOREFS + inactive */ |
#define PNODE_DYING 0x002 /* NOREFS + inactive */ |
#define PNODE_FAF 0x04 /* issue all operations as FAF */ |
#define PNODE_FAF 0x004 /* issue all operations as FAF */ |
#define PNODE_DOINACT 0x08 /* if inactive-on-demand, call inactive */ |
#define PNODE_DOINACT 0x008 /* if inactive-on-demand, call inactive */ |
|
#define PNODE_SOPEXP 0x100 /* Node reclaim postponed in sop thread */ |
|
|
#define PNODE_METACACHE_ATIME 0x10 /* cache atime metadata */ |
#define PNODE_METACACHE_ATIME 0x10 /* cache atime metadata */ |
#define PNODE_METACACHE_CTIME 0x20 /* cache atime metadata */ |
#define PNODE_METACACHE_CTIME 0x20 /* cache atime metadata */ |
Line 190 struct puffs_node { |
|
Line 209 struct puffs_node { |
|
|
|
kmutex_t pn_mtx; |
kmutex_t pn_mtx; |
int pn_refcount; |
int pn_refcount; |
|
int pn_nlookup; |
|
|
puffs_cookie_t pn_cookie; /* userspace pnode cookie */ |
puffs_cookie_t pn_cookie; /* userspace pnode cookie */ |
struct vnode *pn_vp; /* backpointer to vnode */ |
struct vnode *pn_vp; /* backpointer to vnode */ |
Line 206 struct puffs_node { |
|
Line 226 struct puffs_node { |
|
|
|
voff_t pn_serversize; |
voff_t pn_serversize; |
|
|
|
struct lockf * pn_lockf; |
|
|
|
kmutex_t pn_sizemtx; /* size modification mutex */ |
|
|
|
int pn_cn_timeout; /* path cache */ |
|
int pn_cn_grace; /* grace time before reclaim */ |
|
int pn_va_timeout; /* attribute cache */ |
|
struct vattr * pn_va_cache; /* attribute cache */ |
|
struct vnode * pn_parent; /* parent cache */ |
|
|
LIST_ENTRY(puffs_node) pn_hashent; |
LIST_ENTRY(puffs_node) pn_hashent; |
}; |
}; |
|
|
Line 263 void puffs_gop_markupdate(struct vnode * |
|
Line 293 void puffs_gop_markupdate(struct vnode * |
|
void puffs_senderr(struct puffs_mount *, int, int, const char *, |
void puffs_senderr(struct puffs_mount *, int, int, const char *, |
puffs_cookie_t); |
puffs_cookie_t); |
|
|
|
bool puffs_compat_outgoing(struct puffs_req *, struct puffs_req**, ssize_t*); |
|
void puffs_compat_incoming(struct puffs_req *, struct puffs_req *); |
|
|
void puffs_updatenode(struct puffs_node *, int, voff_t); |
void puffs_updatenode(struct puffs_node *, int, voff_t); |
#define PUFFS_UPDATEATIME 0x01 |
#define PUFFS_UPDATEATIME 0x01 |
#define PUFFS_UPDATECTIME 0x02 |
#define PUFFS_UPDATECTIME 0x02 |