All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Tinguely <tinguely@sgi.com>
To: Dave Chinner <david@fromorbit.com>
Cc: XFS Mailing List <xfs@oss.sgi.com>
Subject: Re: [RFC] libxfs: adding attribute fork frees xfs_inode ptr
Date: Thu, 24 Apr 2014 12:11:56 -0500	[thread overview]
Message-ID: <535945DC.6010108@sgi.com> (raw)
In-Reply-To: <20140423222215.GT18672@dastard>

On 04/23/14 17:22, Dave Chinner wrote:
> On Wed, Apr 23, 2014 at 04:04:35PM -0500, Mark Tinguely wrote:
>> User space does not currently perform any attribute adding/deleting,
>> but if we do want to fix attributes or use them for parent inode
>> pointers, user space should support attributes.
>>
>> The adding an attribute fork is done in an embedded transaction
>> inside xfs_attr_set_int(). The xfs_trans_commit in xfs_bmap_add_attrfork()
>> will free the xfs_inode pointer causing xfs_attr_calc_size() in
>> xfs_attr_set_int() to fail.
>
> It shouldn't. xfs_bmap_add_attrfork() does:
>
> 	xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
>
> which in the kernel code sets:
>
> 	iip->ili_lock_flags = lock_flags;
>
>
> The libxfs code doesn't do that, so when xfs_trans_commit() gets
> to inode_item_unlock():
>
>
>          if (!iip->ili_lock_flags)
>                  libxfs_iput(ip, 0);
>          else
>                  iip->ili_lock_flags = 0;
>
> It frees the inode rather than just returning it with the lock
> flags cleared.
>
> Note that libxfs still has libxfs_trans_ijoin_ref() which sets the
> lock flags, but this has been removed from the kernel code. IOWs,
> this is a libxfs/trans.c::xfs_trans_ijoin() bug, not something that
> needs fixing in the shared kernel/user libxfs code.
>
> Cheers,
>
> Dave.

nod. That is the correct thing to do.

Since the shared user/kernel code will no longer do a xfs_trans_ihold(), 
the libxfs_iput() should be factored out out of inode_item_unlock() and 
have the creator release the inode pointer when it is appropriate.

No one besides me is using this so it can go into the next release of 
xfs_progs.

--Mark.

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

  reply	other threads:[~2014-04-24 17:11 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20140423210034.892939354@sgi.com>
2014-04-23 21:04 ` [RFC] libxfs: adding attribute fork frees xfs_inode ptr Mark Tinguely
2014-04-23 22:22   ` Dave Chinner
2014-04-24 17:11     ` Mark Tinguely [this message]
2014-04-24 20:59       ` Mark Tinguely
2014-04-25  5:40         ` Christoph Hellwig
2014-04-25 13:18           ` Mark Tinguely

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=535945DC.6010108@sgi.com \
    --to=tinguely@sgi.com \
    --cc=david@fromorbit.com \
    --cc=xfs@oss.sgi.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 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.