xfs
[Top] [All Lists]

Re: detecting case-insensitivity

To: "J. Bruce Fields" <bfields@xxxxxxxxxxxx>
Subject: Re: detecting case-insensitivity
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Tue, 10 Apr 2012 08:19:46 +1000
Cc: Vyacheslav Dubeyko <slava@xxxxxxxxxxx>, xfs@xxxxxxxxxxx
In-reply-to: <20120409212833.GA10508@xxxxxxxxxxxx>
References: <LBVkglc6jtb7.r3bLKBnl@xxxxxxxxxxxxxxxxxxxxxxx> <20120409212833.GA10508@xxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Mon, Apr 09, 2012 at 05:28:33PM -0400, J. Bruce Fields wrote:
> > > From: Dave Chinner <david@xxxxxxxxxxxxx>
> > > Date: 09.04.2012 03.30
> > > 
> > > On Sat, Apr 07, 2012 at 10:00:29AM -0400, J. Bruce Fields wrote:
> > > > Is there a generic way to detect whether a given filesystem is
> > > > case-insensitive?  If not, how should it be done?  (A bit in s_flags?)
> > > 
> > > I don't think there is a generic flag for it. We could trivially add
> > > one, I think, as it is generally a fixed property for the entire
> > > filesystem....
> 
> So, I assume the following is totally wrong, but the basic idea (create
> a new flag, set it based on xfs_sb_version_hasasciici, check it in nfsd)
> would work?

Looks mostly OK to me.

> On Mon, Apr 09, 2012 at 09:01:11AM +0400, Vyacheslav Dubeyko wrote:
> > But why does it need to detect that filesystem case-insensitive or not? In 
> > what use-case does it need to make such detection?
> 
> To be honest, I have no idea--it's not a mandatory attribute, so I think
> I'll instead just ceasing to support the attribute and seeing if anyone
> complains....

I suspect that there are some applications out there that might care
that Bruce and bruce are the same file for matching purposes (e.g. a
file manager)

....

> diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
> index 7423d71..890f439 100644
> --- a/fs/nfsd/vfs.c
> +++ b/fs/nfsd/vfs.c
> @@ -1458,7 +1458,7 @@ do_nfsd_create(struct svc_rqst *rqstp, struct svc_fh 
> *fhp,
>               switch (createmode) {
>               case NFS3_CREATE_UNCHECKED:
>                       if (! S_ISREG(dchild->d_inode->i_mode))
> -                             err = nfserr_exist;
> +                             goto out;

Not sure what this change is for, though....

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>