version 1.24, 2007/03/14 12:13:58 |
version 1.25, 2007/03/20 10:21:59 |
Line 418 puffs_gop_markupdate(struct vnode *vp, i |
|
Line 418 puffs_gop_markupdate(struct vnode *vp, i |
|
void |
void |
puffs_updatenode(struct vnode *vp, int flags) |
puffs_updatenode(struct vnode *vp, int flags) |
{ |
{ |
|
struct puffs_node *pn; |
struct timespec ts; |
struct timespec ts; |
struct puffs_vnreq_setattr *setattr_arg; |
|
|
|
if (flags == 0) |
if (flags == 0) |
return; |
return; |
|
|
setattr_arg = malloc(sizeof(struct puffs_vnreq_setattr), M_PUFFS, |
pn = VPTOPP(vp); |
M_NOWAIT | M_ZERO); |
|
if (setattr_arg == NULL) |
|
return; /* 2bad */ |
|
|
|
nanotime(&ts); |
nanotime(&ts); |
|
|
VATTR_NULL(&setattr_arg->pvnr_va); |
if (flags & PUFFS_UPDATEATIME) { |
if (flags & PUFFS_UPDATEATIME) |
pn->pn_mc_atime = ts; |
setattr_arg->pvnr_va.va_atime = ts; |
pn->pn_stat |= PNODE_METACACHE_ATIME; |
if (flags & PUFFS_UPDATECTIME) |
} |
setattr_arg->pvnr_va.va_ctime = ts; |
if (flags & PUFFS_UPDATECTIME) { |
if (flags & PUFFS_UPDATEMTIME) |
pn->pn_mc_ctime = ts; |
setattr_arg->pvnr_va.va_mtime = ts; |
pn->pn_stat |= PNODE_METACACHE_CTIME; |
if (flags & PUFFS_UPDATESIZE) |
} |
setattr_arg->pvnr_va.va_size = vp->v_size; |
if (flags & PUFFS_UPDATEMTIME) { |
|
pn->pn_mc_mtime = ts; |
setattr_arg->pvnr_pid = 0; |
pn->pn_stat |= PNODE_METACACHE_MTIME; |
puffs_credcvt(&setattr_arg->pvnr_cred, NOCRED); |
} |
|
if (flags & PUFFS_UPDATESIZE) { |
/* setattr_arg ownership shifted to callee */ |
pn->pn_mc_size = vp->v_size; |
puffs_vntouser_faf(MPTOPUFFSMP(vp->v_mount), PUFFS_VN_SETATTR, |
pn->pn_stat |= PNODE_METACACHE_SIZE; |
setattr_arg, sizeof(struct puffs_vnreq_setattr), VPTOPNC(vp)); |
} |
} |
} |
|
|
void |
void |