From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: xfs <linux-xfs@vger.kernel.org>
Cc: Dave Chinner <david@fromorbit.com>, Brian Foster <bfoster@redhat.com>
Subject: MAXPATHLEN == 1024 and 4096?!
Date: Thu, 6 Jul 2017 15:47:38 -0700 [thread overview]
Message-ID: <20170706224738.GA4103@magnolia> (raw)
Heh,
Brian Foster complained that he could create filesystems that do this on
for-next during the first mount attempt:
[62548.735187] XFS (dm-1): Log size 4497 blocks too small, minimum size is 4499 blocks
[62548.742853] XFS (dm-1): AAIEEE! Log failed size checks. Abort!
I started looking into why mkfs and mount have different ideas about the
minimum log length, and discovered that the struct xfs_trans_res between
kernel and userspace have vastly different ideas about how much space a
transaction type requires. Most of the problems are easily fixed by
constructing a more complete phony superblock in mkfs' max_trans_res()
(patches soon), but I ran into a nasty one that I cannot resolve in
tr_symlink.
In fs/xfs/, MAXPATHLEN is defined as 1024, and returns -ENAMETOOLONG
(set) or -EFSCORRUPTED (get) if it is fed a symlink with a target longer
than 1024 bytes.
However, xfsprogs picks up the definition offered by libc, which is
PATH_MAX (4096). Unfortunately, this also means that xfs_repair only
complains if the target is longer than 4096 bytes.
AFAICT the other filesystems allow 4k symlink targets, but XFS' special
definition has been there at least since git-prehistory.
Soooo... which is the correct value? We could raise the kernel limit to
4k with at least the obvious problem that old kernels can't read such
symlinks, or lower the xfsprogs limit to 1k, with the problem that at
least in theory this would result in xfs_repair flagging things it
wouldn't have before.
My cautious side says lower xfsprogs, but I'll ask the list anyway. :)
--D
next reply other threads:[~2017-07-06 22:47 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-06 22:47 Darrick J. Wong [this message]
2017-07-06 23:11 ` MAXPATHLEN == 1024 and 4096?! Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170706224738.GA4103@magnolia \
--to=darrick.wong@oracle.com \
--cc=bfoster@redhat.com \
--cc=david@fromorbit.com \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox