public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: "Diego Elio 'Flameeyes' Petten??" <flameeyes@gmail.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Add basic export support to HFS+.
Date: Tue, 9 Dec 2008 05:06:19 -0500	[thread overview]
Message-ID: <20081209100619.GA18141@infradead.org> (raw)
In-Reply-To: <20081204174706.10397.94789.stgit@localhost>

On Thu, Dec 04, 2008 at 06:47:06PM +0100, Diego Elio 'Flameeyes' Petten?? wrote:
> From: Diego E. 'Flameeyes' Petten?? <flameeyes@gmail.com>
> 
> The functions' skeleton is taken from ext2/super.c and seems to work
> fine for R/W access to HFS+ non-journaled case-sensitive filesystems.
> 
> It's probably slow and has a lot of space for improvement but it's
> still better than having no hope to export HFS+ filesystems.
> 
> Signed-off-by: Diego E. 'Flameeyes' Petten?? <flameeyes@gmail.com>
> ---
> 
>  fs/hfsplus/super.c |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 49 insertions(+), 0 deletions(-)
> 

> +static struct inode *hfsplus_export_get_inode(struct super_block *sb,
> +					      u64 ino, u32 generation)
> +{
> +	struct inode *inode;
> +
> +	if (ino < HFSPLUS_FIRSTUSER_CNID && ino != HFSPLUS_ROOT_CNID)
> +		return ERR_PTR(-ESTALE);
> +
> +	/* iget isn't really right if the inode is currently unallocated!!
> +	 */

I don't understand this comment.  This interface is only used when
getting the FH for an already allocated inode.  hfsplus_iget is what
all other operations use in hfsplus, so it seems fine.  hfs experts
might chime in that something else might be needed due to the strange
ways links work in hfs, but from the VFS POW it seems fine.

> +	inode = hfsplus_iget(sb, ino);
> +	if (IS_ERR(inode))
> +		return ERR_CAST(inode);
> +	if (generation && inode->i_generation != generation) {
> +		/* we didn't find the right inode.. */
> +		iput(inode);
> +		return ERR_PTR(-ESTALE);
> +	}

hfsplus never updates i_generation, so this check is superflous.  Brad,
Roman: is there something that can help to guard against inode number
reuse on HFS/HFSplus?


> +/* Yes, most of these are left as NULL!!
> + * A NULL value implies the default, which (hopefully) works with
> + * hfs+-like file systems, but can be improved upon.
> + * Currently only fh_to_dentry is required.
> + */

You _do_ need a get_parent, otherwise access will magically fail once
any directory inode in a path is out of the cache.  This can be
trivially reproduced by unexporting and unmounting a filesystem while
a client has a cwd deep inside the exported filesystem.

And otherwise I don't think this comment is helpful in the code,
fh_to_parent / fh_To_dentry and get_parent is what most simpler
filesystems have.


  reply	other threads:[~2008-12-09 10:06 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-04 17:47 [PATCH] Add basic export support to HFS+ Diego Elio 'Flameeyes' Pettenò
2008-12-09 10:06 ` Christoph Hellwig [this message]
2008-12-09 14:16   ` Diego E. 'Flameeyes' Pettenò

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=20081209100619.GA18141@infradead.org \
    --to=hch@infradead.org \
    --cc=flameeyes@gmail.com \
    --cc=linux-kernel@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