tmpfiles: quietly ignore ACLs on unsupported filesystems

A warning is printed if ACLs cannot be retrieved for any reason other
than -ENOSYS. For -ENOSYS, debug log is printed.
This commit is contained in:
Hans-Peter Deifel 2015-03-03 00:35:08 +01:00 committed by Zbigniew Jędrzejewski-Szmek
parent b522aee0e2
commit d873e8778c
1 changed files with 20 additions and 16 deletions

View File

@ -700,6 +700,9 @@ static int path_set_acl(const char *path, acl_type_t type, acl_t acl, bool modif
int r;
_cleanup_(acl_free_charpp) char *t = NULL;
/* Returns 0 for success, positive error if already warned,
* negative error otherwise. */
if (modify) {
r = acls_for_file(path, type, acl, &dup);
if (r < 0)
@ -727,35 +730,36 @@ static int path_set_acl(const char *path, acl_type_t type, acl_t acl, bool modif
r = acl_set_file(path, type, dup);
if (r < 0)
return log_error_errno(-errno,
"Setting %s ACL \"%s\" on %s failed: %m",
type == ACL_TYPE_ACCESS ? "access" : "default",
strna(t), path);
return -log_error_errno(errno,
"Setting %s ACL \"%s\" on %s failed: %m",
type == ACL_TYPE_ACCESS ? "access" : "default",
strna(t), path);
return 0;
}
#endif
static int path_set_acls(Item *item, const char *path) {
int r = 0;
#ifdef HAVE_ACL
int r;
assert(item);
assert(path);
if (item->acl_access) {
if (item->acl_access)
r = path_set_acl(path, ACL_TYPE_ACCESS, item->acl_access, item->force);
if (r < 0)
return r;
}
if (item->acl_default) {
if (r == 0 && item->acl_default)
r = path_set_acl(path, ACL_TYPE_DEFAULT, item->acl_default, item->force);
if (r < 0)
return r;
}
#endif
return 0;
if (r > 0)
return -r; /* already warned */
else if (r == -ENOTSUP) {
log_debug_errno(r, "ACLs not supported by file system at %s", path);
return 0;
} else if (r < 0)
log_error_errno(r, "ACL operation on \"%s\" failed: %m", path);
#endif
return r;
}
static int write_one_file(Item *i, const char *path) {