From: Ted Ts'o <tytso@mit.edu>
To: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
Cc: linux-nfs@vger.kernel.org, linux-ext4@vger.kernel.org,
linux-fsdevel@vger.kernel.org, Fan Yong <yong.fan@whamcloud.com>,
bfields@redhat.com, sandeen@redhat.com,
Andreas Dilger <adilger@whamcloud.com>
Subject: Re: [PATCH 5 2/4] Return 32/64-bit dir name hash according to usage type
Date: Mon, 5 Mar 2012 21:28:38 -0500 [thread overview]
Message-ID: <20120306022838.GA24323@thunk.org> (raw)
In-Reply-To: <4F555CE5.7050401@itwm.fraunhofer.de>
On Tue, Mar 06, 2012 at 01:40:05AM +0100, Bernd Schubert wrote:
>
> Yeah, you are right, we also should check for 64-bit EOF. But
> wouldn't be something like this be better?
>
> /* check for hash collision */
> if(is_32bit_api() ) {
> if (hash == (EXT4_HTREE_EOF_32BIT<< 1))
> hash = (EXT4_HTREE_EOF_32BIT - 1)<< 1;
> } else {
> if (hash == (EXT4_HTREE_EOF_64BIT<< 1))
> hash = (EXT4_HTREE_EOF_64BIT - 1)<< 1;
> }
Actually, neither change is needed, now that I look at things more
closely. hash is a __u32, so it could never been
EXT4_HTREE_EOF_64BIT. But given that we won't let major hash become
larger than 0xfffffffc, that means the largest possible position value
is 0x7ffffffeffffffff. So using an EOF value of 0x0x7fffffffffffffff
will work fine.
The bigger problem that I found when I looked more closely at the
patch is that the patch uses f_flags in places where f_mode needs to
be used:
static inline loff_t hash2pos(struct file *filp, __u32 major, __u32 minor)
{
if ((filp->f_flags & FMODE_32BITHASH) ||
^^^^^^^
(!(filp->f_flags & FMODE_64BITHASH) && is_32bit_api()))
^^^^^^^
return major >> 1;
else
return ((__u64)(major >> 1) << 32) | (__u64)minor;
}
static inline __u32 pos2maj_hash(struct file *filp, loff_t pos)
{
if ((filp->f_flags & FMODE_32BITHASH) ||
^^^^^^
(!(filp->f_mode & FMODE_64BITHASH) && is_32bit_api()))
^^^^^^
return (pos << 1) & 0xffffffff;
else
return ((pos >> 32) << 1) & 0xffffffff;
}
Which makes me wonder how much this has been tested?
- Ted
next prev parent reply other threads:[~2012-03-06 2:28 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-09 13:21 [PATCH 0/4] [RESEND] 32/64 bit llseek hashes (v5) Bernd Schubert
2012-01-09 13:21 ` [PATCH 5 1/4] Add new FMODE flags: FMODE_32bithash and FMODE_64bithash Bernd Schubert
2012-01-09 13:21 ` [PATCH 5 2/4] Return 32/64-bit dir name hash according to usage type Bernd Schubert
2012-03-05 15:59 ` Ted Ts'o
[not found] ` <20120305155939.GE21356-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2012-03-06 0:40 ` Bernd Schubert
2012-03-06 2:28 ` Ted Ts'o [this message]
[not found] ` <20120306022838.GA24323-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2012-03-06 9:59 ` Bernd Schubert
[not found] ` <4F55E01B.3060105-mPn0NPGs4xGatNDF+KUbs4QuADTiUCJX@public.gmane.org>
2012-03-06 15:15 ` Ted Ts'o
[not found] ` <20120306151543.GA32282-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2012-03-07 9:01 ` Bernd Schubert
[not found] ` <20120109132148.2616029.68798.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2012-04-20 20:04 ` Eric Sandeen
[not found] ` <4F91C15B.6070200-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-22 12:51 ` Bernd Schubert
2012-04-23 20:37 ` Eric Sandeen
[not found] ` <4F95BD72.6090200-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-23 20:52 ` Bernd Schubert
2012-04-23 21:22 ` Eric Sandeen
[not found] ` <4F95C109.1030401-mPn0NPGs4xGatNDF+KUbs4QuADTiUCJX@public.gmane.org>
2012-04-23 22:23 ` Eric Sandeen
2012-04-23 22:42 ` Andreas Dilger
[not found] ` <A754D23B-B946-4E80-ACEA-0E2C2E6FAA2E-KloliPT79xf2eFz/2MeuCQ@public.gmane.org>
2012-04-24 16:10 ` Bernd Schubert
2012-01-09 13:21 ` [PATCH 5 3/4] nfsd_open(): rename 'int access' to 'int may_flags' in nfsd_open() Bernd Schubert
2012-01-09 13:21 ` [PATCH 5 4/4] nfsd: vfs_llseek() with 32 or 64 bit offsets (hashes) Bernd Schubert
[not found] ` <20120109132158.2616029.30467.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
[not found] ` <20120109132153.2616029.26302.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2012-03-06 0:08 ` [PATCH 5 3/4] nfsd_open(): rename 'int access' to 'int may_flags' in nfsd_open() Ted Ts'o
[not found] ` <20120306000837.GA17164-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2012-03-06 2:08 ` J. Bruce Fields
2012-03-06 15:18 ` Ted Ts'o
2012-03-06 15:28 ` J. Bruce Fields
2012-03-09 20:51 ` Ted Ts'o
[not found] ` <20120309205148.GB5635-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2012-03-12 15:09 ` Ted Ts'o
[not found] ` <20120312150912.GB12440-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2012-03-12 15:49 ` J. Bruce Fields
2012-03-12 22:22 ` J. Bruce Fields
2012-03-13 20:01 ` J. Bruce Fields
[not found] ` <20120313200117.GA21991-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2012-03-13 20:03 ` Bernd Schubert
[not found] ` <4F5FA827.8020606-mPn0NPGs4xGatNDF+KUbs4QuADTiUCJX@public.gmane.org>
2012-03-13 20:34 ` J. Bruce Fields
2012-03-13 21:09 ` Bernd Schubert
2012-03-13 21:29 ` J. Bruce Fields
[not found] ` <20120313212947.GK31995-spRCxval1Z7TsXDwO4sDpg@public.gmane.org>
2012-03-14 14:32 ` Bernd Schubert
[not found] ` <4F60AC0D.9020204-mPn0NPGs4xGatNDF+KUbs4QuADTiUCJX@public.gmane.org>
2012-03-14 16:05 ` J. Bruce Fields
[not found] ` <20120314160529.GB31194-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2012-03-16 21:22 ` Bernd Schubert
2012-03-19 2:54 ` Ted Ts'o
[not found] ` <20120319025455.GD31682-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2012-03-19 20:00 ` J. Bruce Fields
[not found] ` <20120319200041.GA25161-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2012-03-20 0:10 ` Ted Ts'o
2012-04-12 20:49 ` J. Bruce Fields
[not found] ` <20120412204948.GE6667-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2012-04-12 21:22 ` Bernd Schubert
[not found] ` <4F8747A1.8060800-97jfqw80gc6171pxa8y+qA@public.gmane.org>
2012-04-12 21:25 ` J. Bruce Fields
[not found] ` <20120313203446.GB21991-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2012-03-13 21:10 ` Ted Ts'o
[not found] ` <20120313211009.GA11969-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2012-03-13 21:27 ` J. Bruce Fields
2012-01-10 11:27 ` [PATCH 0/4] [RESEND] 32/64 bit llseek hashes (v5) Andreas Dilger
2012-01-11 14:48 ` J. Bruce Fields
[not found] ` <20120111144827.GA32381-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2012-01-11 15:31 ` Ted Ts'o
2012-03-05 12:23 ` Bernd Schubert
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=20120306022838.GA24323@thunk.org \
--to=tytso@mit.edu \
--cc=adilger@whamcloud.com \
--cc=bernd.schubert@itwm.fraunhofer.de \
--cc=bfields@redhat.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=sandeen@redhat.com \
--cc=yong.fan@whamcloud.com \
/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;
as well as URLs for NNTP newsgroup(s).