Date: Wed, 23 Apr 2008 15:56:17 GMT From: Oleg Koreshkov <okor@zone.salut.ru> To: freebsd-gnats-submit@FreeBSD.org Subject: misc/123019: mkdir(2) can return EMLINK, but EMLINK is not listed as possible error code in mkdir(2) manpage Message-ID: <200804231556.m3NFuHl1089131@www.freebsd.org> Resent-Message-ID: <200804231600.m3NG02BF084781@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 123019 >Category: misc >Synopsis: mkdir(2) can return EMLINK, but EMLINK is not listed as possible error code in mkdir(2) manpage >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: doc-bug >Submitter-Id: current-users >Arrival-Date: Wed Apr 23 16:00:02 UTC 2008 >Closed-Date: >Last-Modified: >Originator: Oleg Koreshkov >Release: 6.3-RELEASE >Organization: a lot of >Environment: FreeBSD 6.3-RELEASE-p2 i386 >Description: Create directory that contains 32766(7?) subdirectories. try to create another one subdirectory and you would get: mkdir: Too many links However man 2 mkdir doesn't list EMLINK in ERRORS section. It looks like it happen due to overflow of st_nlink in inode, but nlink_t is defined as __uint16_t in /usr/include/sys/_types.h: typedef __uint16_t __nlink_t; /* link count */ So there should be possible to create 65534 subdirectories? >How-To-Repeat: Create directory that contains 32766(7?) subdirectories. try to create another one subdirectory and you would get: # ls -al | wc -l 32768 # mkdir 9999999999999 mkdir: 9999999999999: Too many links >Fix: For example you can update mkdir(2) manpage with following patch: --- mkdir.2 2008-04-23 19:42:06.000000000 +0400 +++ mkdir.2 2008-04-23 19:45:13.000000000 +0400 @@ -104,6 +104,8 @@ .Fa path argument points outside the process's allocated address space. +.It Bq Er EMLINK +The directory contains too many subdirectories. .El .Sh SEE ALSO .Xr chmod 2 , >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200804231556.m3NFuHl1089131>