From 030c29470b561bc56d06d05980798f757a1d7c30 Mon Sep 17 00:00:00 2001 From: fanyong Date: Tue, 17 Oct 2006 13:49:30 +0000 Subject: [PATCH] Process "-ENODATA" correctly for ACL, update lli_posix_acl even if no acl. --- lustre/mdc/mdc_request.c | 12 ++++++++---- lustre/mdt/mdt_handler.c | 9 +++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lustre/mdc/mdc_request.c b/lustre/mdc/mdc_request.c index a85031c..2d8a3b6 100644 --- a/lustre/mdc/mdc_request.c +++ b/lustre/mdc/mdc_request.c @@ -559,10 +559,14 @@ int mdc_get_lustre_md(struct obd_export *exp, struct ptlrpc_request *req, /* for ACL, it's possible that FLACL is set but aclsize is zero. only * when aclsize != 0 there's an actual segment for ACL in reply * buffer. */ - else if ((md->body->valid & OBD_MD_FLACL) && md->body->aclsize) { - rc = mdc_unpack_acl(dt_exp, req, md, offset++); - if (rc) - GOTO(out, rc); + else if (md->body->valid & OBD_MD_FLACL) { + if (md->body->aclsize) { + rc = mdc_unpack_acl(dt_exp, req, md, offset++); + if (rc) + GOTO(out, rc); + } else { + md->posix_acl = NULL; + } } if (md->body->valid & OBD_MD_FLMDSCAPA) { diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index 96ab26f..83f5b3b 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -392,10 +392,15 @@ static int mdt_getattr_internal(struct mdt_thread_info *info, rc = mo_xattr_get(env, next, buffer, XATTR_NAME_ACL_ACCESS); if (rc < 0) { - if (rc == -ENODATA || rc == -EOPNOTSUPP) + if (rc == -ENODATA) { + repbody->aclsize = 0; + repbody->valid |= OBD_MD_FLACL; rc = 0; - else + } else if (rc == -EOPNOTSUPP) { + rc = 0; + } else { CERROR("got acl size: %d\n", rc); + } } else { repbody->aclsize = rc; repbody->valid |= OBD_MD_FLACL; -- 1.8.3.1