### Summary

With a simple playbook:
```yaml
---
- hosts: all
  gather_facts: false
  tasks:
    - name: Test setup
      ansible.builtin.setup:
        gather_subset:
          - mounts
        gather_timeout: 600
```

```gather_timeout``` is never taken in effect in the function get_mount_facts in ansible/module_utils/facts/hardware/linux.py.

The problem seem to point to this line:
```python
maxtime = globals().get('GATHER_TIMEOUT') or timeout.DEFAULT_GATHER_TIMEOUT
```
```globals().get('GATHER_TIMEOUT')``` is always ```None``` because because ```GATHER_TIMEOUT``` is set in the timeout module ansible/module_utils/facts/collector.py therefore the global is ```timeout.GATHER_TIMEOUT``` and not ```GATHER_TIMEOUT```.

Attached are two screenshot from a vscode debug session of the AnsiballZ_setup.py from the playbook above.
<img width="949" alt="ansible_setup_timeout_linux" src="https://user-images.githubusercontent.com/1870021/215522822-fd1f8541-907d-4f1f-9dba-c8cec299514e.png">
<img width="1008" alt="ansible_setup_timeout_collector" src="https://user-images.githubusercontent.com/1870021/215522828-a9e3ea51-0da3-4497-aee6-c58ce7f7c801.png">


### Issue Type

Bug Report

### Component Name

setup

### Ansible Version

```console
$ ansible --version
ansible [core 2.14.1]
  config file = /home/dsg4269/.ansible.cfg
  configured module search path = ['/home/dsg4269/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/dsg4269/dev/git/test_timeout_fact_mount/.venv/lib64/python3.11/site-packages/ansible
  ansible collection location = /home/dsg4269/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/dsg4269/dev/git/test_timeout_fact_mount/.venv/bin/ansible
  python version = 3.11.1 (main, Jan  6 2023, 00:00:00) [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)] (/home/dsg4269/dev/git/test_timeout_fact_mount/.venv/bin/python3)
  jinja version = 3.1.2
  libyaml = True
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all
CONFIG_FILE() = None
```


### OS / Environment

Reproduce on RHEL 7.9 and WSL Fedora 37

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml
---
- hosts: all
  gather_facts: false
  tasks:
    - name: Test setup
      ansible.builtin.setup:
        gather_subset:
          - mounts
        gather_timeout: 600

```


### Expected Results

I expected the gather_timeout to be taken in effect in the setup module of the subset mounts.

### Actual Results

```console
Facts have a timeout on system with a lot of filesystem:

{
    "device": "/dev/mapper/VolGroup00-lv_varlog",
    "fstype": "xfs",
    "mount": "/var/log",
    "note": "Timed out while attempting to get extra information.",
    "options": "rw,seclabel,nodev,relatime,attr2,inode64,noquota"
}
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
pool.close()  
        
        while results:
            for mount in list(results):
                done = False
                res = results[mount]['extra']
                try:
                    if res.ready():
                        done = True
                        if res.successful():
                            mount_size, uuid = res.get()
                            if mount_size:
                                results[mount]['info'].update(mount_size)
                            results[mount]['info']['uuid'] = uuid or 'N/A'
                        else:
                            
                            results[mount]['info']['note'] = 'Could not get extra information: %s.' % (to_text(res.get()))
                    elif time.time() > results[mount]['timelimit']:
                        done = True
                        self.module.warn("Timeout exceeded when getting mount info for %s" % mount)
                        results[mount]['info']['note'] = 'Could not get extra information due to timeout'
                except Exception as e:
                    import traceback
                    done = True
                    results[mount]['info'] = 'N/A'
                    self.module.warn("Error prevented getting extra info for mount %s: [%s] %s." % (mount, type(e), to_text(e)))
                    self.module.debug(traceback.format_exc())
                if done:
                    
                    mounts.append(results[mount]['info'])