From: Christoph Hellwig <hch@infradead.org>
To: Alex Elder <aelder@sgi.com>
Cc: bfields@fieldses.org, Ben Myers <bpm@sgi.com>,
linux-nfs@vger.kernel.org, xfs@oss.sgi.com
Subject: Re: [PATCH 1/2] commit_metadata export operation replacing nfsd_sync_dir
Date: Fri, 12 Feb 2010 12:31:06 -0500 [thread overview]
Message-ID: <20100212173106.GA22633@infradead.org> (raw)
In-Reply-To: <1265984620.3201.73.camel@doink1>
> In the cases you pass the child dentry, you will now be syncing
> things to disk in a slightly different way/order from before.
> I think this way is actually much better, but I thought I'd ask
> anyway: are you sure that it's OK to sync them at the same time,
> rather than directory first, then child (or the other way around,
> depending on the case)?
The order is defined by when we commit the transactions, if we do
the log force on the later one first we already write out the first
transaction. Note that in any transaction filesystems the changes
that create/mkdir/link/unlink do to parent and child will be in
the same transaction anyway, which is kinda the point of adding
the transactions to start with. Only for the case where we do
a setattr in addition to the primary transaction we'll actually
have another transaction to deal with and the above applies.
> > nfsd4_sync_rec_dir(void)
> > {
> > - mutex_lock(&rec_dir.dentry->d_inode->i_mutex);
> > - nfsd_sync_dir(rec_dir.dentry);
> > - mutex_unlock(&rec_dir.dentry->d_inode->i_mutex);
> > + vfs_fsync(NULL, rec_dir.dentry, 0);
>
> Why do you no longer need to acquire the mutex here?
> I see it gets acquired during the ->fsync() call
> inside vfs_fsync_range(), but is there a reason
> that it needed to be held during the filemap_write_and_wait()
> (as is done in the nfsd_sync_dir() code) also?
We don't need i_mutex for filemap_write_and_wait, it's just held
because someone used the nfsd_sync_dir helper where it doesn't
fit very well.
> > @@ -415,9 +449,8 @@ nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap,
> > }
> > if (size_change)
> > put_write_access(inode);
> > - if (!err)
> > - if (EX_ISSYNC(fhp->fh_export))
> > - write_inode_now(inode, 1);
> > + if (!err && !delay_commit)
> > + err = nfserrno(commit_metadata(fhp, NULL));
>
> Is this sufficient even if the size has changed?
Yes.
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2010-02-12 17:29 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-11 22:04 [PATCH 0/2] commit_metadata export operation v4 Ben Myers
2010-02-11 22:05 ` [PATCH 1/2] commit_metadata export operation replacing nfsd_sync_dir Ben Myers
2010-02-12 14:23 ` Alex Elder
2010-02-12 17:31 ` Christoph Hellwig [this message]
2010-02-11 22:05 ` [PATCH 2/2] xfs_export_operations.commit_metadata Ben Myers
2010-02-12 14:46 ` Alex Elder
2010-02-12 17:47 ` Christoph Hellwig
2010-02-12 19:56 ` bpm
2010-02-12 20:03 ` J. Bruce Fields
2010-02-12 20:37 ` Christoph Hellwig
2010-02-12 20:35 ` Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2010-02-17 20:05 [PATCH 0/2] commit_metadata export operation v6 Ben Myers
2010-02-17 20:05 ` [PATCH 1/2] commit_metadata export operation replacing nfsd_sync_dir Ben Myers
2010-02-16 21:04 [PATCH 0/2] commit_metadata export operation v5 Ben Myers
2010-02-16 21:04 ` [PATCH 1/2] commit_metadata export operation replacing nfsd_sync_dir Ben Myers
2010-02-16 22:06 ` Christoph Hellwig
2010-02-11 19:26 [PATCH 0/2] commit_metadata export operation v3 Ben Myers
2010-02-11 19:26 ` [PATCH 1/2] commit_metadata export operation replacing nfsd_sync_dir Ben Myers
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=20100212173106.GA22633@infradead.org \
--to=hch@infradead.org \
--cc=aelder@sgi.com \
--cc=bfields@fieldses.org \
--cc=bpm@sgi.com \
--cc=linux-nfs@vger.kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox