GNU bug report logs - #27739
Link counter of ls stops working at 65'000 hard links

Previous Next

Package: coreutils;

Reported by: Christoph Michelbach <michelbach94 <at> gmail.com>

Date: Mon, 17 Jul 2017 19:09:02 UTC

Severity: normal

Tags: notabug

Done: Eric Blake <eblake <at> redhat.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Eric Blake <eblake <at> redhat.com>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#27739: closed (Link counter of ls stops working at 65'000
 hard links)
Date: Mon, 17 Jul 2017 19:34:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Mon, 17 Jul 2017 14:33:28 -0500
with message-id <d7b40049-1465-eaa7-3be2-24c20675281a <at> redhat.com>
and subject line Re: bug#27739: Link counter of ls stops working at 65'000 hard links
has caused the debbugs.gnu.org bug report #27739,
regarding Link counter of ls stops working at 65'000 hard links
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
27739: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=27739
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Christoph Michelbach <michelbach94 <at> gmail.com>
To: bug-coreutils <at> gnu.org
Subject: Link counter of ls stops working at 65'000 hard links
Date: Mon, 17 Jul 2017 20:58:42 +0200
The link counter of ls stops working if a directory exceeds being linked to
64'999 times.

You can replicate this by first creating a folder on an ext4 file system

    $ mkdir deleteMe

and then filling it with 64'997 additional directories.

    $ mkdir deleteMe/{1..64997}

At this point, ls still reports the correct number of hard links:

    $ ls -l
    total 1376
    drwxrwxr-x 64999 christoph christoph 1404928 Jul 17 20:46 deleteMe

But after creating another folder

    $ mkdir deleteMe/64998

, ll reports only 1 hard link to `deleteMe`:

    $ ls -l
    total 1376
    drwxrwxr-x 1 christoph christoph 1404928 Jul 17 20:46 deleteMe

Even after the latest hard link is removed, ls still reports only 1 hard link:

    $ rm -R deleteMe/64998
    $ ls -l
    total 1376
    drwxrwxr-x 1 christoph christoph 1404928 Jul 17 20:49 deleteMe

I neither understand why this happens, nor why it happens at such a weird
number. It would be obvious that there is a 16 bit counter running out of values
if it stopped working at at or after 65'535, but it stopping to work at 65'000
hard links seems weird.

I tested this on a 64 bit system running Linux 4.4.0-83 and on a 32 bit system
running Linux 4.1.18 with the exact same result.

-- 
Christoph Michelbach <michelbach94 <at> gmail.com>



[Message part 3 (message/rfc822, inline)]
From: Eric Blake <eblake <at> redhat.com>
To: Christoph Michelbach <michelbach94 <at> gmail.com>, 27739-done <at> debbugs.gnu.org
Subject: Re: bug#27739: Link counter of ls stops working at 65'000 hard links
Date: Mon, 17 Jul 2017 14:33:28 -0500
[Message part 4 (text/plain, inline)]
tag 27739 notabug
thanks

On 07/17/2017 01:58 PM, Christoph Michelbach wrote:
> The link counter of ls stops working if a directory exceeds being linked to
> 64'999 times.

ls is just reporting the value returned by stat() from the kernel; this
sounds like a kernel (or filesystem) bug.  To double-check, you should
also be able to use the stat(1) utility (instead of ls) to show the same
results.

Since we can't address it in userspace, I'm marking this as notabug from
the perspective of the coreutils database, but please feel free to reply
further with any results you get after reporting this to the right
kernel folks.

> I neither understand why this happens, nor why it happens at such a weird
> number. It would be obvious that there is a 16 bit counter running out of values
> if it stopped working at at or after 65'535, but it stopping to work at 65'000
> hard links seems weird.

Not the first time the kernel has done something weird.

> 
> I tested this on a 64 bit system running Linux 4.4.0-83 and on a 32 bit system
> running Linux 4.1.18 with the exact same result.

Your filesystem may also matter (not all filesystems are created equal).

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

[signature.asc (application/pgp-signature, attachment)]

This bug report was last modified 8 years and 23 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.