linux: libshare/smb: cache smb_available

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #13165
This commit is contained in:
наб 2022-04-17 15:00:15 +02:00 committed by Brian Behlendorf
parent 1ec9218faa
commit 086af23e68
1 changed files with 11 additions and 7 deletions

View File

@ -378,14 +378,18 @@ const sa_fstype_t libshare_smb_type = {
static boolean_t
smb_available(void)
{
struct stat statbuf;
static int avail;
if (lstat(SHARE_DIR, &statbuf) != 0 ||
!S_ISDIR(statbuf.st_mode))
return (B_FALSE);
if (!avail) {
struct stat statbuf;
if (access(NET_CMD_PATH, F_OK) != 0)
return (B_FALSE);
if (access(NET_CMD_PATH, F_OK) != 0 ||
lstat(SHARE_DIR, &statbuf) != 0 ||
!S_ISDIR(statbuf.st_mode))
avail = -1;
else
avail = 1;
}
return (B_TRUE);
return (avail == 1);
}