lkml.org 
[lkml]   [2003]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: Quota in 2.6.0-test2 broken ...
  Hello,

> > > Quota is definitely broken in 2.6.0-test2 because the
> > > code tries to acquire dqio_sem in *_read_file_info, while
> > > already holding the same sem in vfs_quota_on, which
> > > simply deadlocks ...
> > Huh I see. Actually only old quota format is affected by this bug
> > (that may be a reason why it went unnoticed for a while).
>
> yes, but the 'new' quota format doesn't work either ...
>
> quotacheck -vaugm
> quotacheck: Scanning /dev/discs/disc1/part2 [/mnt/part2] ...
> quotacheck: Checked 4 directories and 0 files
> quotacheck: Old file not found.
> quotacheck: Old file not found.
>
> quotaon /dev/discs/disc1/part2
> quotaon: using /mnt/part2/quota.user on /dev/discs/disc1/part2 [/mnt/part2]: Invalid argument
> quotaon: Maybe create new quota files with quotacheck(8)?
Are you sure you compiled old quota format support into the kernel?

> > > it seems this stuff hasn't been tested since the last
> > > update? doesn't anybody use quota anymore?
> > When you have test machine you usually don't run a quota on it and
> > when you have machine with lots of users on it you won't use unstable
> > kernels. So I guess this is not a big wonder (I suppose the bugreports
> > for 2.6 quota code will start to appear soon ;).
>
> yeah, but I would expect, that you at least
> once tested the stuff yourself ... well no such luck,
Of course I did. I don't know how this thing could get into the
kernel...

> when will it be fixed? any plans?
I've attached possible fix (untested because first I have to update
binutils to be able to compile the kernel and it will take some time
because I have only modem line).

Honza
diff -ruNX /home/jack/.kerndiffexclude linux-2.6.0-test2/fs/quota_v1.c linux-2.6.0-test2-quotafix/fs/quota_v1.c
--- linux-2.6.0-test2/fs/quota_v1.c Sun Jul 27 19:06:18 2003
+++ linux-2.6.0-test2-quotafix/fs/quota_v1.c Tue Jul 29 21:19:39 2003
@@ -164,7 +164,6 @@
struct v1_disk_dqblk dqblk;
int ret;

- down(&dqopt->dqio_sem);
offset = v1_dqoff(0);
fs = get_fs();
set_fs(KERNEL_DS);
@@ -177,7 +176,6 @@
dqopt->info[type].dqi_igrace = dqblk.dqb_itime ? dqblk.dqb_itime : MAX_IQ_TIME;
dqopt->info[type].dqi_bgrace = dqblk.dqb_btime ? dqblk.dqb_btime : MAX_DQ_TIME;
out:
- up(&dqopt->dqio_sem);
set_fs(fs);
return ret;
}
@@ -191,7 +189,6 @@
loff_t offset;
int ret;

- down(&dqopt->dqio_sem);
dqopt->info[type].dqi_flags &= ~DQF_INFO_DIRTY;
offset = v1_dqoff(0);
fs = get_fs();
@@ -210,7 +207,6 @@
else if (ret > 0)
ret = -EIO;
out:
- up(&dqopt->dqio_sem);
set_fs(fs);
return ret;
}
\
 
 \ /
  Last update: 2005-03-22 13:47    [W:0.039 / U:1.208 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site