From: Eric Sandeen <sandeen@redhat.com>
To: Jan Kara <jack@suse.cz>
Cc: ext4 development <linux-ext4@vger.kernel.org>,
Anand Avati <avati@redhat.com>
Subject: Re: [PATCH, RFC V2] ext3: add ioctl to force 32-bit hashes from indexed dirs
Date: Mon, 01 Apr 2013 10:13:39 -0500 [thread overview]
Message-ID: <5159A423.90503@redhat.com> (raw)
In-Reply-To: <20130329114334.GB5913@quack.suse.cz>
On 3/29/13 6:43 AM, Jan Kara wrote:
> On Thu 28-03-13 15:40:20, Eric Sandeen wrote:
>> This adds a new ioctl, EXT3_IOC_32BITHASH, which allows a
>> userspace application to request 32-bit rather than 64-bit
>> hashes from readdir on an indexed / dx / htree directory.
>>
>> Gluster had been relying on the top bits of the d_off being
>> free; there are some reports that filling all 64 bits breaks
>> Samba as well. The infrastructure to return 32-bit hashes
>> already exists; NFS can turn it on, and it's turned on for
>> 32-bit processes as well. So it's just a matter of flipping
>> on the f_mode flag before readdir starts.
>>
>> Care needs to be taken that we don't change the FMODE flag
>> after readdir has been started, so we make sure that
>> filp->private_data has not yet been set before we set the flag.
>> (Thanks Zach!).
>>
>> Pre-submission-fixes-by: Zach Brown <zab@redhat.com>
>> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
>> ---
>>
>> V2:
>> fix "readir" typo
>> rename goto target to *_out like others
>> remove parameter; we can't really ever turn this back off once it's used.
>> closing and reopening is the only way to get back to 64 bit hashes.
> Looks good. Just one nit below:
Oh, of course, duh! I'll send V3, thanks.
-Eric
>> diff --git a/fs/ext3/ext3.h b/fs/ext3/ext3.h
>> + case EXT3_IOC_32BITHASH: {
>> + int err = 0;
>> +
>> + /* Serialize with readdir */
>> + if ((err = mutex_lock_killable(&inode->i_mutex)))
>> + return err;
>> +
>> + /* protect f_mode */
>> + spin_lock(&filp->f_lock);
>> +
>> + /* Only valid for htree directories */
>> + if (!S_ISDIR(inode->i_mode) || !is_dx_dir(inode)) {
> Won't it be better to return ENOTDIR in !S_ISDIR case?
>
>> + err = -EINVAL;
>> + goto hash32bits_out;
>> + }
>> +
>> + /* Have we already started readdir on this dx dir? */
>> + if (filp->private_data) {
>> + err = -EINVAL;
> And here maybe EBUSY, but in this case I'm really undecided.
>
>> + goto hash32bits_out;
>> + }
>> +
>> + filp->f_mode |= FMODE_32BITHASH;
>> +hash32bits_out:
>> + spin_unlock(&filp->f_lock);
>> + mutex_unlock(&inode->i_mutex);
>> + return err;
>> + }
>> case FITRIM: {
>>
>> struct super_block *sb = inode->i_sb;
>
> Honza
>
next prev parent reply other threads:[~2013-04-01 15:14 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-28 16:25 [PATCH, RFC] ext3: add ioctl to force 32-bit hashes from indexed dirs Eric Sandeen
2013-03-28 20:40 ` [PATCH, RFC V2] " Eric Sandeen
2013-03-29 11:43 ` Jan Kara
2013-04-01 15:13 ` Eric Sandeen [this message]
2013-04-01 15:33 ` [PATCH, RFC V3] " Eric Sandeen
2013-04-01 18:17 ` Theodore Ts'o
2013-04-01 18:21 ` Eric Sandeen
2013-04-01 19:08 ` Theodore Ts'o
2013-04-01 19:49 ` Eric Sandeen
2013-04-01 20:00 ` Theodore Ts'o
2013-04-01 20:05 ` Eric Sandeen
2013-04-01 20:09 ` Theodore Ts'o
[not found] ` <5159E88F.8030704-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-04-01 20:34 ` Anand Avati
2013-04-05 23:05 ` Andrew Bartlett
2013-04-05 23:28 ` J. Bruce Fields
2013-04-05 23:26 ` Anand Avati
2013-04-08 9:28 ` Andrew Bartlett
2013-04-03 12:54 ` Jan Kara
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=5159A423.90503@redhat.com \
--to=sandeen@redhat.com \
--cc=avati@redhat.com \
--cc=jack@suse.cz \
--cc=linux-ext4@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.