diff options
Diffstat (limited to 'usr/src/uts/common/fs/xattr.c')
-rw-r--r-- | usr/src/uts/common/fs/xattr.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/usr/src/uts/common/fs/xattr.c b/usr/src/uts/common/fs/xattr.c index 1657f25549..a1173e69f5 100644 --- a/usr/src/uts/common/fs/xattr.c +++ b/usr/src/uts/common/fs/xattr.c @@ -228,6 +228,12 @@ xattr_fill_nvlist(vnode_t *vp, xattr_view_t xattr_view, nvlist_t *nvlp, case F_GEN: XVA_SET_REQ(&xvattr, XAT_GEN); break; + case F_OFFLINE: + XVA_SET_REQ(&xvattr, XAT_OFFLINE); + break; + case F_SPARSE: + XVA_SET_REQ(&xvattr, XAT_SPARSE); + break; default: break; } @@ -320,6 +326,16 @@ xattr_fill_nvlist(vnode_t *vp, xattr_view_t xattr_view, nvlist_t *nvlp, attr_to_name(F_GEN), xoap->xoa_generation) == 0); } + if (XVA_ISSET_RTN(&xvattr, XAT_OFFLINE)) { + VERIFY(nvlist_add_boolean_value(nvlp, + attr_to_name(F_OFFLINE), + xoap->xoa_offline) == 0); + } + if (XVA_ISSET_RTN(&xvattr, XAT_SPARSE)) { + VERIFY(nvlist_add_boolean_value(nvlp, + attr_to_name(F_SPARSE), + xoap->xoa_sparse) == 0); + } } /* * Check for optional ownersid/groupsid @@ -697,6 +713,14 @@ xattr_file_write(vnode_t *vp, uio_t *uiop, int ioflag, cred_t *cr, XVA_SET_REQ(&xvattr, XAT_REPARSE); xoap->xoa_reparse = value; break; + case F_OFFLINE: + XVA_SET_REQ(&xvattr, XAT_OFFLINE); + xoap->xoa_offline = value; + break; + case F_SPARSE: + XVA_SET_REQ(&xvattr, XAT_SPARSE); + xoap->xoa_sparse = value; + break; default: break; } @@ -838,6 +862,8 @@ xattr_copy(vnode_t *sdvp, char *snm, vnode_t *tdvp, char *tnm, XVA_SET_REQ(&xvattr, XAT_AV_QUARANTINED); XVA_SET_REQ(&xvattr, XAT_CREATETIME); XVA_SET_REQ(&xvattr, XAT_REPARSE); + XVA_SET_REQ(&xvattr, XAT_OFFLINE); + XVA_SET_REQ(&xvattr, XAT_SPARSE); pdvp = gfs_file_parent(sdvp); error = VOP_GETATTR(pdvp, &xvattr.xva_vattr, 0, cr, ct); |