From: Joel Becker <Joel.Becker@oracle.com>
To: Mark Fasheh <mfasheh@suse.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, ocfs2-devel@oss.oracle.com,
jack@suse.cz
Subject: [Ocfs2-devel] [PATCH 19/56] mm: Export pdflush_operation()
Date: Wed, 31 Dec 2008 14:17:24 -0800 [thread overview]
Message-ID: <20081231221723.GA14548@mail.oracle.com> (raw)
In-Reply-To: <20081231192854.GK17410@wotan.suse.de>
On Wed, Dec 31, 2008 at 11:28:54AM -0800, Mark Fasheh wrote:
> On Wed, Dec 24, 2008 at 05:05:44PM -0800, Mark Fasheh wrote:
> > On Mon, Dec 22, 2008 at 04:01:04PM -0800, Andrew Morton wrote:
> > > On Mon, 22 Dec 2008 13:48:00 -0800
> > > Mark Fasheh <mfasheh@suse.com> wrote:
> > >
> > > > OCSF2 will need to queue up work for periodic syncing of quotas
> > > > among nodes in the cluster. pdflush() is good thread for this so
> > > > export it's controlling function so that OCFS2 can use it.
> > >
> > > I trust that nothing will explode if pdflush_operation() fails
> > > to do anything and returns -1?
> >
> > Hmm, Jan do you have any opinion here? I'm wondering if we just need our own
> > thread for this after all...
> > --Mark
>
> Ok, looking at this closer, it seems like this could be a problem after all.
> Starving the quota syncing thread doesn't seem like a great idea either.
Definitely don't like the pdflush method. You guys are right
that it is buggy.
> The following patch changes things to use a workqueue. Really, this doesn't
> seem like a big deal anyway - the workqueue has reasonable overhead.
I like the patch overall. A couple comments.
> I could add this on top of my upstream branch along with a revert of the
> 'mm: Export pdflush_operation()' patch, or I could work this into the patch
> series so we never get the export patch in the 1st place.
Regarding merge, I'd rather drop the export patch and merge this
with the patch that uses pdflush_operation().
> diff --git a/fs/ocfs2/quota_local.c b/fs/ocfs2/quota_local.c
> index a5f6e2a..07deec5 100644
> --- a/fs/ocfs2/quota_local.c
> +++ b/fs/ocfs2/quota_local.c
> @@ -780,7 +780,7 @@ static int ocfs2_local_free_info(struct super_block *sb, int type)
> /* At this point we know there are no more dquots and thus
> * even if there's some sync in the pdflush queue, it won't
> * find any dquots and return without doing anything */
> - del_timer_sync(&oinfo->dqi_sync_timer);
> + cancel_delayed_work_sync(&oinfo->dqi_sync_work);
> iput(oinfo->dqi_gqinode);
> ocfs2_simple_drop_lockres(OCFS2_SB(sb), &oinfo->dqi_gqlock);
> ocfs2_lock_res_free(&oinfo->dqi_gqlock);
Ok, I found what I was looking for. The workqueue is not
flushed when unmounting a single volume, and I wanted to be sure that
was correct. It is, as vfs_quota_disable() calls ->write_info() before
calling ->free_file_info() here. So we can just cancel any delayed work
and forget about it safely.
> diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
> index a79e67b..25ccf22 100644
> --- a/fs/ocfs2/super.c
> +++ b/fs/ocfs2/super.c
> @@ -1326,6 +1326,10 @@ static int __init ocfs2_init(void)
> mlog(ML_ERROR, "Unable to create ocfs2 debugfs root.\n");
> }
>
> + status = ocfs2_quota_setup();
> + if (status)
> + goto leave;
> +
> ocfs2_set_locking_protocol();
>
> status = register_quota_format(&ocfs2_quota_format);
Don't you need to shutdown the quota workqueue if
register_quota_format() fails?
Joel
--
Life's Little Instruction Book #80
"Slow dance"
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127
WARNING: multiple messages have this Message-ID (diff)
From: Joel Becker <Joel.Becker@oracle.com>
To: Mark Fasheh <mfasheh@suse.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, ocfs2-devel@oss.oracle.com,
jack@suse.cz
Subject: Re: [PATCH 19/56] mm: Export pdflush_operation()
Date: Wed, 31 Dec 2008 14:17:24 -0800 [thread overview]
Message-ID: <20081231221723.GA14548@mail.oracle.com> (raw)
In-Reply-To: <20081231192854.GK17410@wotan.suse.de>
On Wed, Dec 31, 2008 at 11:28:54AM -0800, Mark Fasheh wrote:
> On Wed, Dec 24, 2008 at 05:05:44PM -0800, Mark Fasheh wrote:
> > On Mon, Dec 22, 2008 at 04:01:04PM -0800, Andrew Morton wrote:
> > > On Mon, 22 Dec 2008 13:48:00 -0800
> > > Mark Fasheh <mfasheh@suse.com> wrote:
> > >
> > > > OCSF2 will need to queue up work for periodic syncing of quotas
> > > > among nodes in the cluster. pdflush() is good thread for this so
> > > > export it's controlling function so that OCFS2 can use it.
> > >
> > > I trust that nothing will explode if pdflush_operation() fails
> > > to do anything and returns -1?
> >
> > Hmm, Jan do you have any opinion here? I'm wondering if we just need our own
> > thread for this after all...
> > --Mark
>
> Ok, looking at this closer, it seems like this could be a problem after all.
> Starving the quota syncing thread doesn't seem like a great idea either.
Definitely don't like the pdflush method. You guys are right
that it is buggy.
> The following patch changes things to use a workqueue. Really, this doesn't
> seem like a big deal anyway - the workqueue has reasonable overhead.
I like the patch overall. A couple comments.
> I could add this on top of my upstream branch along with a revert of the
> 'mm: Export pdflush_operation()' patch, or I could work this into the patch
> series so we never get the export patch in the 1st place.
Regarding merge, I'd rather drop the export patch and merge this
with the patch that uses pdflush_operation().
> diff --git a/fs/ocfs2/quota_local.c b/fs/ocfs2/quota_local.c
> index a5f6e2a..07deec5 100644
> --- a/fs/ocfs2/quota_local.c
> +++ b/fs/ocfs2/quota_local.c
> @@ -780,7 +780,7 @@ static int ocfs2_local_free_info(struct super_block *sb, int type)
> /* At this point we know there are no more dquots and thus
> * even if there's some sync in the pdflush queue, it won't
> * find any dquots and return without doing anything */
> - del_timer_sync(&oinfo->dqi_sync_timer);
> + cancel_delayed_work_sync(&oinfo->dqi_sync_work);
> iput(oinfo->dqi_gqinode);
> ocfs2_simple_drop_lockres(OCFS2_SB(sb), &oinfo->dqi_gqlock);
> ocfs2_lock_res_free(&oinfo->dqi_gqlock);
Ok, I found what I was looking for. The workqueue is not
flushed when unmounting a single volume, and I wanted to be sure that
was correct. It is, as vfs_quota_disable() calls ->write_info() before
calling ->free_file_info() here. So we can just cancel any delayed work
and forget about it safely.
> diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
> index a79e67b..25ccf22 100644
> --- a/fs/ocfs2/super.c
> +++ b/fs/ocfs2/super.c
> @@ -1326,6 +1326,10 @@ static int __init ocfs2_init(void)
> mlog(ML_ERROR, "Unable to create ocfs2 debugfs root.\n");
> }
>
> + status = ocfs2_quota_setup();
> + if (status)
> + goto leave;
> +
> ocfs2_set_locking_protocol();
>
> status = register_quota_format(&ocfs2_quota_format);
Don't you need to shutdown the quota workqueue if
register_quota_format() fails?
Joel
--
Life's Little Instruction Book #80
"Slow dance"
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127
next prev parent reply other threads:[~2008-12-31 22:17 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-22 21:47 [Ocfs2-devel] [git patches] Ocfs2 patches for merge window, batch 2/3 Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 01/56] quota: Add callbacks for allocating and destroying dquot structures Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 02/56] quota: Increase size of variables for limits and inode usage Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 03/56] quota: Remove bogus 'optimization' in check_idq() and check_bdq() Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 04/56] quota: Make _SUSPENDED just a flag Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 05/56] quota: Allow to separately enable quota accounting and enforcing limits Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 06/56] ext3: Use sb_any_quota_loaded() instead of sb_any_quota_enabled() Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 07/56] ext4: " Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 08/56] reiserfs: " Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 09/56] quota: Remove compatibility function sb_any_quota_enabled() Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 10/56] quota: Introduce DQUOT_QUOTA_SYS_FILE flag Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 11/56] quota: Move quotaio_v[12].h from include/linux/ to fs/ Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 12/56] quota: Split off quota tree handling into a separate file Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 13/56] quota: Convert union in mem_dqinfo to a pointer Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 14/56] quota: Allow negative usage of space and inodes Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 15/56] quota: Keep which entries were set by SETQUOTA quotactl Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 16/56] quota: Update version number Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 17/56] quota: Add helpers to allow ocfs2 specific quota initialization, freeing and recovery Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:47 ` [Ocfs2-devel] [PATCH 18/56] quota: Implement function for scanning active dquots Mark Fasheh
2008-12-22 21:47 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 19/56] mm: Export pdflush_operation() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-23 0:01 ` [Ocfs2-devel] " Andrew Morton
2008-12-23 0:01 ` Andrew Morton
2008-12-25 1:05 ` [Ocfs2-devel] " Mark Fasheh
2008-12-25 1:05 ` Mark Fasheh
2008-12-31 19:28 ` [Ocfs2-devel] " Mark Fasheh
2008-12-31 19:28 ` Mark Fasheh
2008-12-31 22:17 ` Joel Becker [this message]
2008-12-31 22:17 ` Joel Becker
2008-12-31 23:09 ` [Ocfs2-devel] " Mark Fasheh
2008-12-31 23:09 ` Mark Fasheh
2009-01-05 13:27 ` Jan Kara
2009-01-05 13:27 ` Jan Kara
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 20/56] ocfs2: Support nested transactions Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 21/56] ocfs2: Assign feature bits and system inodes to quota feature and quota files Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 22/56] ocfs2: Mark system files as not subject to quota accounting Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 23/56] ocfs2: Implementation of local and global quota file handling Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-23 0:11 ` [Ocfs2-devel] " Andrew Morton
2008-12-23 0:11 ` Andrew Morton
2008-12-25 0:29 ` [Ocfs2-devel] " Mark Fasheh
2008-12-25 0:29 ` Mark Fasheh
2008-12-26 2:29 ` [Ocfs2-devel] " Andrew Morton
2008-12-26 2:29 ` Andrew Morton
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 24/56] ocfs2: Add quota calls for allocation and freeing of inodes and space Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 25/56] ocfs2: Implement quota syncing thread Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 26/56] ocfs2: Implement quota recovery Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 27/56] ocfs2: Enable quota accounting on mount, disable on umount Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 28/56] jbd2: Add BH_JBDPrivateStart Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 29/56] ocfs2: Use BH_JBDPrivateStart instead of BH_Unshadow Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 30/56] ocfs2: Add missing initialization Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 31/56] ocfs2: Fix ocfs2_read_quota_block() error handling Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 32/56] ocfs2: Fix oops when extending quota files Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 33/56] ocfs2: Make ocfs2_get_quota_block() consistent with ocfs2_read_quota_block() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 34/56] ocfs2: Fix build warnings (64-bit types vs long long) Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 35/56] quota: Unexport dqblk_v1.h and dqblk_v2.h Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 36/56] quota: Export dquot_alloc() and dquot_destroy() functions Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 37/56] reiserfs: Add default allocation routines for quota structures Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 38/56] ext3: " Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 39/56] ext4: " Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 40/56] ocfs2: fix indendation in ocfs2_dquot_drop_slow Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 41/56] ocfs2/quota: sparse fixes for quota Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 42/56] ocfs2: Dirty the entire bucket in ocfs2_bucket_value_truncate() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 43/56] ocfs2: Narrow the transaction for deleting xattrs from a bucket Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 44/56] ocfs2: Dirty the entire first bucket in ocfs2_extend_xattr_bucket() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 45/56] ocfs2: Dirty the entire first bucket in ocfs2_cp_xattr_cluster() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 46/56] ocfs2: Explain t_is_new " Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 47/56] ocfs2: Use ocfs2_cp_xattr_bucket() in ocfs2_mv_xattr_bucket_cross_cluster() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 48/56] ocfs2: Rename ocfs2_cp_xattr_cluster() to ocfs2_mv_xattr_buckets() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 49/56] ocfs2: ocfs2_mv_xattr_buckets() can handle a partial cluster now Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 50/56] ocfs2: Use ocfs2_mv_xattr_buckets() in ocfs2_mv_xattr_bucket_cross_cluster() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 51/56] ocfs2: Start using buckets in ocfs2_adjust_xattr_cross_cluster() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 52/56] ocfs2: Pass buckets into ocfs2_mv_xattr_bucket_cross_cluster() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 53/56] ocfs2: Move buckets up into ocfs2_add_new_xattr_cluster() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 54/56] ocfs2: Move buckets up into ocfs2_add_new_xattr_bucket() Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 55/56] ocfs2: Pass xs->bucket " Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
2008-12-22 21:48 ` [Ocfs2-devel] [PATCH 56/56] ocfs2/quota: Add QUOTA in mlog_attribute Mark Fasheh
2008-12-22 21:48 ` Mark Fasheh
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=20081231221723.GA14548@mail.oracle.com \
--to=joel.becker@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=jack@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=mfasheh@suse.com \
--cc=ocfs2-devel@oss.oracle.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.