From 5ebe29bbf06f0ee121fc42e08733a034ee836d84 Mon Sep 17 00:00:00 2001 From: simonb Date: Mon, 6 Sep 2021 08:37:43 +0000 Subject: 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. --- external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'external') 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; -- cgit