X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fosd-zfs%2Fosd_xattr.c;h=aaa94abb6f926d0eb27c0be7c8412fafcff1eaf4;hb=refs%2Fchanges%2F93%2F27093%2F40;hp=fac11ba8447f3d4c905470254430f84661cbfd1a;hpb=2c9ff6dffdf4320af95c9db9af07a416529275f0;p=fs%2Flustre-release.git diff --git a/lustre/osd-zfs/osd_xattr.c b/lustre/osd-zfs/osd_xattr.c index fac11ba..aaa94ab 100644 --- a/lustre/osd-zfs/osd_xattr.c +++ b/lustre/osd-zfs/osd_xattr.c @@ -38,7 +38,6 @@ #define DEBUG_SUBSYSTEM S_OSD -#include #include #include #include @@ -376,6 +375,16 @@ int __osd_sa_attr_init(const struct lu_env *env, struct osd_object *obj, osa->nlink = obj->oo_attr.la_nlink; osa->flags = attrs_fs2zfs(obj->oo_attr.la_flags); osa->size = obj->oo_attr.la_size; +#ifdef ZFS_PROJINHERIT + if (osd->od_projectused_dn) { + if (obj->oo_attr.la_valid & LA_PROJID) + osa->projid = obj->oo_attr.la_projid; + else + osa->projid = ZFS_DEFAULT_PROJID; + osa->flags |= ZFS_PROJID; + obj->oo_with_projid = 1; + } +#endif cnt = 0; SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_MODE(osd), NULL, &osa->mode, 8); @@ -383,15 +392,20 @@ int __osd_sa_attr_init(const struct lu_env *env, struct osd_object *obj, SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_GEN(osd), NULL, &gen, 8); SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_UID(osd), NULL, &osa->uid, 8); SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_GID(osd), NULL, &osa->gid, 8); + SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_PARENT(osd), NULL, + &obj->oo_parent, 8); SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_FLAGS(osd), NULL, &osa->flags, 8); SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_ATIME(osd), NULL, osa->atime, 16); SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_MTIME(osd), NULL, osa->mtime, 16); SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_CTIME(osd), NULL, osa->ctime, 16); SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_CRTIME(osd), NULL, crtime, 16); SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_LINKS(osd), NULL, &osa->nlink, 8); +#ifdef ZFS_PROJINHERIT + if (osd->od_projectused_dn) + SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_PROJID(osd), NULL, + &osa->projid, 8); +#endif SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_RDEV(osd), NULL, &osa->rdev, 8); - SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_PARENT(osd), NULL, - &obj->oo_parent, 8); LASSERT(cnt <= ARRAY_SIZE(osd_oti_get(env)->oti_attr_bulk)); /* Update the SA for additions, modifications, and removals. */ @@ -580,7 +594,7 @@ __osd_xattr_set(const struct lu_env *env, struct osd_object *obj, la->la_valid = LA_MODE; la->la_mode = S_IFDIR | S_IRUGO | S_IWUSR | S_IXUGO; - rc = __osd_zap_create(env, osd, &xa_zap_dn, tx, la, 0); + rc = __osd_zap_create(env, osd, &xa_zap_dn, tx, la, 0, 0); if (rc) return rc;