kern/85503: panic: wrong dirclust using msdosfs in RELENG_6
Dmitry Pryanishnikov
dmitry at atlantis.dp.ua
Thu Sep 1 09:20:45 PDT 2005
Hello!
> Date: Thu, 1 Sep 2005 23:47:15 +1000 (EST)
> From: Bruce Evans <bde at zeta.org.au>
>> LIST_ENTRY(vnode) v_hashlist;
>> u_int v_hash;
>>
>> I think it's feasible and useful to upgrade type of v_hash to at least
>> off_t.
>
> This is not needed yet.
>
> Filesystems with more than 4G files are not supported yet, since ino_t
> is 32 bits and is used in critical APIs (struct stat...). Also,
Sorry, I don't agree with you. The current situation is ugly: not only
it forces us to play dirty tricks within filesystems in order to generate
unique 32-bit inode numbers, but also it creates an artificial limit
on maximum number of files for 32-bit architectures. E.g., on FreeBSD/ia64
u_int is 64 bits, and thus it would be no problem for it's API to create and
handle more than 4G files/fs. But such a file system will be incompatible
with FreeBSD/i386! Isn't this ugly? u_int has nothing to do with storage
size, while off_t has. It is clear that no media with maximum size of
off_t will contain more than off_t files, while we can't guarantee this
for u_int, which is bounded to CPU abilities. I think UNIX is about
compatibility between different architectures, isn't it?
> So all current file systems need to generate unique 32-bit inode
> numbers. This may be difficult, but once it is done I think the inode
^^^^^^^^^^^^^^^^
...and may be close-to-impossible. What if e.g. Microsoft invites say
FAT-2005 with variable-length directory entries? I'm not sure that for
every third-party filesystem it would be possible to generate 32-bit
pseudoinode. And it's very bad that we can't handle >4Gfiles/fs at all.
> For msdosfs, the inode number is essentially the byte offset divided by
> the size of a directory entry. The size is 32, so this breaks at a byte
> offset of 128G instead of 4G. Details:
This is also imperfect: it creates a lot of pain and limitations for
options MSDOSFS_LARGE
So, while I understand complexity of such a transitions, but it's clear
that for long-term solution ino_t should be upgraded to the size of off_t
everywhere. For short-term one... Well, msdosfs isn't the worst case.
>
> Bruce
>
Sincerely, Dmitry
--
Atlantis ISP, System Administrator
e-mail: dmitry at atlantis.dp.ua
nic-hdl: LYNX-RIPE
More information about the freebsd-arch
mailing list