Commit dbd468b
committed
mountinfo: Mounted: normalize path, return ENOENT
1. In case the argument does not exist, Mounted now returns an
appropriate error. Previously, this condition was treated as
"not a mount point", with no error returned, but in fact such
path could be a mount point, overshadowed by another mount.
Since the mount is still unreachable, it can not be unmounted
anyway, so we do not fall back to mountedByMountinfo, returning
an error instead.
In case callers are not interested in ENOENT, they should filter it
out. Amend the function doc accordingly.
2. There are some corner cases in which mountedByOpenat2 or mountedByStat
do not work properly. In particular,
- neither work if there's an ending slash;
- neither work for a symlink to a mounted directory;
- mountedByStat do not work a parent of path is a symlink residing on
different filesystem.
To solve these cases, we have to call normalizePath() before path is used
for any of mountedBy* functions, not just before mountedByMountinfo
like it was done earlier.
More tests are to be added by the next commit.
Signed-off-by: Kir Kolyshkin <[email protected]>1 parent 1bcc0b1 commit dbd468b
4 files changed
Lines changed: 12 additions & 18 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | 19 | | |
23 | 20 | | |
24 | 21 | | |
| |||
32 | 29 | | |
33 | 30 | | |
34 | 31 | | |
35 | | - | |
36 | | - | |
37 | 32 | | |
38 | 33 | | |
39 | 34 | | |
40 | 35 | | |
41 | 36 | | |
42 | 37 | | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
43 | 42 | | |
44 | 43 | | |
45 | 44 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | 7 | | |
9 | 8 | | |
10 | 9 | | |
| |||
16 | 15 | | |
17 | 16 | | |
18 | 17 | | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | 18 | | |
24 | 19 | | |
25 | 20 | | |
| |||
50 | 45 | | |
51 | 46 | | |
52 | 47 | | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | 48 | | |
62 | 49 | | |
63 | 50 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
14 | 18 | | |
15 | 19 | | |
16 | 20 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
59 | 63 | | |
60 | 64 | | |
61 | 65 | | |
| |||
0 commit comments