Blame SOURCES/0034-cache_req-ignore-autofs-not-configured-error.patch

b833e0
From 2499bd145f566bfd73b8c7e284b910dd2b36c6d1 Mon Sep 17 00:00:00 2001
b833e0
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina@redhat.com>
b833e0
Date: Fri, 15 Jan 2021 12:04:38 +0100
b833e0
Subject: [PATCH] cache_req: ignore autofs not configured error
b833e0
b833e0
Otherwise we return ERR_OFFLINE for domains where autofs provider is not
b833e0
set (such as implicit files domain) which is undesirable.
b833e0
b833e0
Steps to reproduce:
b833e0
1. Enable implicit files domains and LDAP domain with autofs configured
b833e0
2. Setup NFS server to export `/exports` with `/exports/home/test`
b833e0
3. Add autofs mount points:
b833e0
```
b833e0
dn: ou=mount,dc=ldap,dc=vm
b833e0
ou: mount
b833e0
objectClass: organizationalUnit
b833e0
objectClass: top
b833e0
b833e0
dn: nisMapName=auto.master,ou=mount,dc=ldap,dc=vm
b833e0
objectClass: nisMap
b833e0
objectClass: top
b833e0
nisMapName: auto.master
b833e0
b833e0
dn: cn=/export/home,nisMapName=auto.master,ou=mount,dc=ldap,dc=vm
b833e0
objectClass: nisObject
b833e0
objectClass: top
b833e0
cn: /export/home
b833e0
nisMapEntry: auto.home
b833e0
nisMapName: auto.master
b833e0
b833e0
dn: nisMapName=auto.home,ou=mount,dc=ldap,dc=vm
b833e0
objectClass: nisMap
b833e0
objectClass: top
b833e0
nisMapName: auto.home
b833e0
b833e0
dn: cn=/,nisMapName=auto.home,ou=mount,dc=ldap,dc=vm
b833e0
objectClass: nisObject
b833e0
objectClass: top
b833e0
cn: /
b833e0
nisMapEntry: -fstype=nfs,rw master.ldap.vm:/export/home/&
b833e0
nisMapName: auto.home
b833e0
```
b833e0
4. Run SSSD and autofs
b833e0
5. cd to /exports/home/test
b833e0
b833e0
The directory will not be mounted with the new autofs protocol. It
b833e0
will succeed with the old protocol. In both versions, you'll see
b833e0
that SSSD returned ERR_OFFLINE:
b833e0
b833e0
```
b833e0
(2021-01-15 11:44:48): [be[implicit_files]] [sbus_issue_request_done] (0x0040): sssd.DataProvider.Autofs.GetEntry: Error [1432158215]: DP target is not configured
b833e0
...
b833e0
(2021-01-15 11:44:49): [autofs] [cache_req_search_cache] (0x0400): CR #3: Looking up [auto.home:test] in cache
b833e0
(2021-01-15 11:44:49): [autofs] [cache_req_search_cache] (0x0400): CR #3: Object [auto.home:test] was not found in cache
b833e0
(2021-01-15 11:44:49): [autofs] [cache_req_search_ncache_add_to_domain] (0x2000): CR #3: This request type does not support negative cache
b833e0
(2021-01-15 11:44:49): [autofs] [cache_req_process_result] (0x0400): CR #3: Finished: Error 1432158212: SSSD is offline
b833e0
```
b833e0
b833e0
Reviewed-by: Alexey Tikhonov <atikhono@redhat.com>
b833e0
---
b833e0
 .../cache_req/plugins/cache_req_autofs_entry_by_name.c | 10 +++++++++-
b833e0
 .../cache_req/plugins/cache_req_autofs_map_by_name.c   | 10 +++++++++-
b833e0
 .../cache_req/plugins/cache_req_autofs_map_entries.c   | 10 +++++++++-
b833e0
 3 files changed, 27 insertions(+), 3 deletions(-)
b833e0
b833e0
diff --git a/src/responder/common/cache_req/plugins/cache_req_autofs_entry_by_name.c b/src/responder/common/cache_req/plugins/cache_req_autofs_entry_by_name.c
b833e0
index cd2085187..f411fd351 100644
b833e0
--- a/src/responder/common/cache_req/plugins/cache_req_autofs_entry_by_name.c
b833e0
+++ b/src/responder/common/cache_req/plugins/cache_req_autofs_entry_by_name.c
b833e0
@@ -92,7 +92,15 @@ bool
b833e0
 cache_req_autofs_entry_by_name_dp_recv(struct tevent_req *subreq,
b833e0
                                        struct cache_req *cr)
b833e0
 {
b833e0
-    return sbus_call_dp_autofs_GetEntry_recv(subreq) == EOK;
b833e0
+    errno_t ret;
b833e0
+
b833e0
+    ret = sbus_call_dp_autofs_GetEntry_recv(subreq);
b833e0
+
b833e0
+    if (ret == ERR_MISSING_DP_TARGET) {
b833e0
+        ret = EOK;
b833e0
+    }
b833e0
+
b833e0
+    return ret == EOK;
b833e0
 }
b833e0
 
b833e0
 const struct cache_req_plugin cache_req_autofs_entry_by_name = {
b833e0
diff --git a/src/responder/common/cache_req/plugins/cache_req_autofs_map_by_name.c b/src/responder/common/cache_req/plugins/cache_req_autofs_map_by_name.c
b833e0
index 9d9bc3a97..c22cf0c8e 100644
b833e0
--- a/src/responder/common/cache_req/plugins/cache_req_autofs_map_by_name.c
b833e0
+++ b/src/responder/common/cache_req/plugins/cache_req_autofs_map_by_name.c
b833e0
@@ -88,7 +88,15 @@ bool
b833e0
 cache_req_autofs_map_by_name_dp_recv(struct tevent_req *subreq,
b833e0
                                      struct cache_req *cr)
b833e0
 {
b833e0
-    return sbus_call_dp_autofs_GetMap_recv(subreq) == EOK;
b833e0
+    errno_t ret;
b833e0
+
b833e0
+    ret = sbus_call_dp_autofs_GetMap_recv(subreq);
b833e0
+
b833e0
+    if (ret == ERR_MISSING_DP_TARGET) {
b833e0
+        ret = EOK;
b833e0
+    }
b833e0
+
b833e0
+    return ret == EOK;
b833e0
 }
b833e0
 
b833e0
 const struct cache_req_plugin cache_req_autofs_map_by_name = {
b833e0
diff --git a/src/responder/common/cache_req/plugins/cache_req_autofs_map_entries.c b/src/responder/common/cache_req/plugins/cache_req_autofs_map_entries.c
b833e0
index ee0156b6a..4d9db6595 100644
b833e0
--- a/src/responder/common/cache_req/plugins/cache_req_autofs_map_entries.c
b833e0
+++ b/src/responder/common/cache_req/plugins/cache_req_autofs_map_entries.c
b833e0
@@ -120,7 +120,15 @@ bool
b833e0
 cache_req_autofs_map_entries_dp_recv(struct tevent_req *subreq,
b833e0
                                      struct cache_req *cr)
b833e0
 {
b833e0
-    return sbus_call_dp_autofs_Enumerate_recv(subreq) == EOK;
b833e0
+    errno_t ret;
b833e0
+
b833e0
+    ret = sbus_call_dp_autofs_Enumerate_recv(subreq);
b833e0
+
b833e0
+    if (ret == ERR_MISSING_DP_TARGET) {
b833e0
+        ret = EOK;
b833e0
+    }
b833e0
+
b833e0
+    return ret == EOK;
b833e0
 }
b833e0
 
b833e0
 const struct cache_req_plugin cache_req_autofs_map_entries = {
b833e0
-- 
b833e0
2.21.3
b833e0