diff options
| author | simonb <simonb@NetBSD.org> | 2021-09-06 08:37:43 +0000 |
|---|---|---|
| committer | simonb <simonb@NetBSD.org> | 2021-09-06 08:37:43 +0000 |
| commit | 5ebe29bbf06f0ee121fc42e08733a034ee836d84 (patch) | |
| tree | 2c181e84e425e387eb1556f3bc6c764ccd53187c /external/cddl | |
| parent | 671612ef35e522ddae7e2784084275cae6e47ee5 (diff) | |
Clamp zfs nlinks at UINT32_MAX (nlink_t max) instead of (much) smaller
16-bit LINK_MAX until we bump LINK_MAX. Fixes fts(3) problems with
"rm -rf" on zfs directories with > 32766 subdirectories.
Thanks mlelstv@ and mrg@ for helping debug this.
Diffstat (limited to 'external/cddl')
| -rw-r--r-- | external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c b/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c index 7301a58c7bb..3f1c4edc523 100644 --- a/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c +++ b/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c @@ -3116,7 +3116,8 @@ zfs_getattr(vnode_t *vp, vattr_t *vap, int flags, cred_t *cr, links = zp->z_links + 1; else links = zp->z_links; - vap->va_nlink = MIN(links, LINK_MAX); /* nlink_t limit! */ + /* XXX NetBSD: use LINK_MAX when that value matches 32-bit nlink_t */ + vap->va_nlink = MIN(links, UINT32_MAX); /* nlink_t limit! */ vap->va_size = zp->z_size; #ifdef illumos vap->va_rdev = vp->v_rdev; |
