2002-04-22 05:19:55

by Ph. Marek

[permalink] [raw]
Subject: Re: [PATCH] open files in kjounald (2)

Sorry, got it the wrong way around :-(


Hello everybody!

As I wrote in my mail the previous week ("BUG: 2.4.19pre1 & journal_thread
& open filehandles") I followed the problem a little bit further.

Here's my patch; I beg the ext3-maintainers (Stephen, Andreas, Andrew) to
have a look at it and submit it to Marcelo and Linux for inclusion.
(2.4 is for now for me more important than 2.5).


Patch
-----

On every mount of ext3 (and I suppose all journaling filesystems which use
jbd, although I didn't test this) a new kjournald is created. All kjournald
share the same file-information.

Before this patch it would accumulativly fetch open files from the calling
process (normally mount); I verified this via (in bash)
exec 30< /etc/services
mount <partition> /mnt/tmp
ps -aux | grep kjournald
ls -la <pid of any kjournald>
gives, among 0, 1 and 2
30 -> /etc/services

This is really awful as you can't umount devfs (normally /dev/console is
opened as from the start-scripts) and so / can't be umounted.

After applying this patch the open files were gone.


Please apply this patch ASAP - thank you very much.


Regards,

Phil


diff -ru linux/fs/jbd/journal.c linux.ori/fs/jbd/journal.c
--- linux.ori/fs/jbd/journal.c Mon Apr 22 06:28:54 2002
+++ linux/fs/jbd/journal.c Mon Apr 22 06:29:16 2002
@@ -204,7 +204,6 @@

lock_kernel();
daemonize();
+ exit_files(current);
spin_lock_irq(&current->sigmask_lock);
sigfillset(&current->blocked);
recalc_sigpending(current);


2002-04-22 05:49:26

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] open files in kjounald (2)

"Ph. Marek" wrote:
>
> ...
> --- linux.ori/fs/jbd/journal.c Mon Apr 22 06:28:54 2002
> +++ linux/fs/jbd/journal.c Mon Apr 22 06:29:16 2002
> @@ -204,7 +204,6 @@
>
> lock_kernel();
> daemonize();
> + exit_files(current);
> spin_lock_irq(&current->sigmask_lock);
> sigfillset(&current->blocked);
> recalc_sigpending(current);

Confused. The daemonize() call makes kjournald use init's
files:

quad:/home/akpm# uname -a
Linux quad 2.4.19-pre7 #18 SMP Sun Apr 21 22:42:31 PDT 2002 i686 unknown
quad:/home/akpm# mount /dev/sdb6 /mnt/sdb6 -t ext3 < /etc/services
quad:/home/akpm# ps aux|tail -3
root 903 0.0 0.0 0 0 ? SW 22:45 0:00 [kjournald]
root 904 0.0 0.0 2640 728 pts/0 R 22:45 0:00 ps aux
root 905 0.0 0.0 1680 528 pts/0 S 22:45 0:00 tail -3
quad:/home/akpm# ls -l /proc/903/fd
total 0
lrwx------ 1 root root 64 Apr 21 22:46 0 -> socket:[479]
lrwx------ 1 root root 64 Apr 21 22:46 10 -> /dev/initctl

That all looks good - every /proc/$(pidof kjournald)/fd
shows that the kjournald instances are using init's files.

Which kernel are you using? Have you any theories as to why you're
seeing different behaviour?

-