2011-03-25 01:56:57

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: manual merge of the ext4 tree with Linus' tree

Hi Ted,

Today's linux-next merge of the ext4 tree got a conflict in
fs/ext4/super.c between commit fd89d5f2030a ("ext4: convert to
alloc_workqueue()") from Linus' tree and commit 198868f35de9 ("ext4: Use
single thread to perform DIO unwritten convertion") from the ext4 tree.

I just used the ext4 tree version.

P.S. Ted, that ext4 tree commit has no SOB from you even though you are
the committer ...
--
Cheers,
Stephen Rothwell [email protected]
http://www.canb.auug.org.au/~sfr/


Attachments:
(No filename) (507.00 B)
(No filename) (490.00 B)
Download all attachments

2011-03-25 14:45:52

by Tejun Heo

[permalink] [raw]
Subject: Re: linux-next: manual merge of the ext4 tree with Linus' tree

Hello, Stephen, Ted.

On Fri, Mar 25, 2011 at 12:56:43PM +1100, Stephen Rothwell wrote:
> Today's linux-next merge of the ext4 tree got a conflict in
> fs/ext4/super.c between commit fd89d5f2030a ("ext4: convert to
> alloc_workqueue()") from Linus' tree and commit 198868f35de9 ("ext4: Use
> single thread to perform DIO unwritten convertion") from the ext4 tree.
>
> I just used the ext4 tree version.

Both are about the same conversion but the one using alloc_workqueue()
is better because 1. create_singlethread_workqueue() is going away and
2. it doesn't require strict ordering among queued works.

Ted, what do you think?

Thanks.

--
tejun

2011-03-25 16:30:52

by Sedat Dilek

[permalink] [raw]
Subject: Re: linux-next: manual merge of the ext4 tree with Linus' tree

On Fri, Mar 25, 2011 at 3:45 PM, Tejun Heo <[email protected]> wrote:
> Hello, Stephen, Ted.
>
> On Fri, Mar 25, 2011 at 12:56:43PM +1100, Stephen Rothwell wrote:
>> Today's linux-next merge of the ext4 tree got a conflict in
>> fs/ext4/super.c between commit fd89d5f2030a ("ext4: convert to
>> alloc_workqueue()") from Linus' tree and commit 198868f35de9 ("ext4: Use
>> single thread to perform DIO unwritten convertion") from the ext4 tree.
>>
>> I just used the ext4 tree version.
>
> Both are about the same conversion but the one using alloc_workqueue()
> is better because 1. create_singlethread_workqueue() is going away and
> 2. it doesn't require strict ordering among queued works.
>
> Ted, what do you think?
>
> Thanks.
>
> --
> tejun
>

As my linux-next system is unstable, I had a look into my own merge
(into linux-next GIT) before ext4 stuff went to mainline.
Just wanted to test a revert to "old" code in linux-next (see below).

- Sedat -

--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -596,7 +596,7 @@ __acquires(bitlock)

vaf.fmt = fmt;
vaf.va = &args;
- printk(KERN_CRIT "EXT4-fs error (device %s): %s:%d: group %u",
+ printk(KERN_CRIT "EXT4-fs error (device %s): %s:%d: group %u, ",
sb->s_id, function, line, grp);
if (ino)
printk(KERN_CONT "inode %lu: ", ino);
@@ -3518,12 +3518,7 @@ static int ext4_fill_super(struct super_block
*sb, void *data, int silent)
percpu_counter_set(&sbi->s_dirtyblocks_counter, 0);

no_journal:
- /*
- * The maximum number of concurrent works can be high and
- * concurrency isn't really necessary. Limit it to 1.
- */
- EXT4_SB(sb)->dio_unwritten_wq =
- alloc_workqueue("ext4-dio-unwritten", WQ_MEM_RECLAIM, 1);
+ EXT4_SB(sb)->dio_unwritten_wq =
create_singlethread_workqueue("ext4-dio-unwritten");
if (!EXT4_SB(sb)->dio_unwritten_wq) {
printk(KERN_ERR "EXT4-fs: failed to create DIO workqueue\n");
goto failed_mount_wq;
- EOT -

2011-03-25 19:59:12

by Theodore Ts'o

[permalink] [raw]
Subject: Re: linux-next: manual merge of the ext4 tree with Linus' tree

On Fri, Mar 25, 2011 at 03:45:44PM +0100, Tejun Heo wrote:
> Both are about the same conversion but the one using alloc_workqueue()
> is better because 1. create_singlethread_workqueue() is going away and
> 2. it doesn't require strict ordering among queued works.
>
> Ted, what do you think?

Agreed. And it looks like Linus agreed as well:

diff --cc fs/ext4/super.c
index 203f9e4,ccfa686..22546ad
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@@ -3511,12 -3514,7 +3516,12 @@@ static int ext4_fill_super(struct super
percpu_counter_set(&sbi->s_dirtyblocks_counter, 0);

no_journal:
- EXT4_SB(sb)->dio_unwritten_wq = create_singlethread_workqueue("ext4-dio-
+ /*
+ * The maximum number of concurrent works can be high and
+ * concurrency isn't really necessary. Limit it to 1.
+ */
+ EXT4_SB(sb)->dio_unwritten_wq =
- alloc_workqueue("ext4-dio-unwritten", WQ_MEM_RECLAIM, 1);
++ alloc_workqueue("ext4-dio-unwritten", WQ_MEM_RECLAIM | WQ_UNBOUND, 1);
if (!EXT4_SB(sb)->dio_unwritten_wq) {
printk(KERN_ERR "EXT4-fs: failed to create DIO workqueue\n");
goto failed_mount_wq;

- Ted