Commit ec274075 authored by Linus Torvalds's avatar Linus Torvalds

Linux 2.1.131

2.1.131 is out there now - and will be the last kernel release for a
while. I'm going to Finland for a week and a half, and will be back mid
December. During that time I hope people will beat on this. I'll be able
to read email when I'm gone, but as I haven't been back in over a year,
I'm not very likely to.

Alan, I have got any replies (positive or negative) about the VFS fixes in
pre-2.1.131-3 (which are obviously in the real 131 too), so I hope that
means that I successfully fixed all filesystems. The chance of that being
true is remote, but hey, I can hope.  If not, I assume you'll be doing
your ac patches anyway (any bugs wrt rmdir() should be fairly obvious once
seen), and people might as well consider those official..

                Linus
parent 16c82539
......@@ -60,6 +60,8 @@ static struct {
unsigned long scaled_ticks_per_cycle;
/* last time the CMOS clock got updated */
time_t last_rtc_update;
/* partial unused tick */
unsigned long partial_tick;
} state;
unsigned long est_cycle_freq;
......@@ -79,8 +81,6 @@ static inline __u32 rpcc(void)
*/
void timer_interrupt(int irq, void *dev, struct pt_regs * regs)
{
const unsigned long half = 1UL << (FIX_SHIFT - 1);
const unsigned long mask = (1UL << (FIX_SHIFT + 1)) - 1;
unsigned long delta;
__u32 now;
long nticks;
......@@ -96,22 +96,21 @@ void timer_interrupt(int irq, void *dev, struct pt_regs * regs)
#endif
/*
* Estimate how many ticks have passed since the last update.
* Round the result, .5 to even. When we loose ticks due to
* say using IDE, the clock has been seen to run up to 15% slow
* if we truncate.
* Calculate how many ticks have passed since the last update,
* including any previous partial leftover. Save any resulting
* fraction for the next pass.
*/
now = rpcc();
delta = now - state.last_time;
state.last_time = now;
delta = delta * state.scaled_ticks_per_cycle;
if ((delta & mask) != half)
delta += half;
delta = delta * state.scaled_ticks_per_cycle + state.partial_tick;
state.partial_tick = delta & ((1UL << FIX_SHIFT) - 1);
nticks = delta >> FIX_SHIFT;
do {
while (nticks > 0) {
do_timer(regs);
} while (--nticks > 0);
nticks--;
}
/*
* If we have an externally synchronized Linux clock, then update
......@@ -325,6 +324,7 @@ time_init(void)
state.scaled_ticks_per_cycle
= ((unsigned long) HZ << FIX_SHIFT) / cycle_freq;
state.last_rtc_update = 0;
state.partial_tick = 0L;
/* setup timer */
irq_handler = timer_interrupt;
......@@ -366,7 +366,7 @@ do_gettimeofday(struct timeval *tv)
*/
delta_usec = delta_cycles * state.scaled_ticks_per_cycle * 15625;
delta_usec = ((delta_usec / ((1UL << (FIX_SHIFT-6)) * HZ)) + 1) / 2;
delta_usec = ((delta_usec / ((1UL << (FIX_SHIFT-6-1)) * HZ)) + 1) / 2;
usec += delta_usec;
if (usec >= 1000000) {
......
......@@ -237,14 +237,13 @@ ret_from_intr:
ALIGN
handle_bottom_half:
pushl $ret_from_intr
jmp SYMBOL_NAME(do_bottom_half)
call SYMBOL_NAME(do_bottom_half)
jmp ret_from_intr
ALIGN
reschedule:
pushl $ret_from_sys_call
jmp SYMBOL_NAME(schedule) # test
call SYMBOL_NAME(schedule) # test
jmp ret_from_sys_call
ENTRY(divide_error)
pushl $0 # no error code
......
......@@ -583,29 +583,6 @@ nfs_wb_pid(struct inode *inode, pid_t pid)
NFS_WB(inode, req->wb_pid == pid);
}
/*
* Write back and invalidate. Sometimes we can't leave the stuff
* hanging if we can't write it out.
*/
int
nfs_wbinval(struct inode *inode)
{
int retval = nfs_wb_all(inode);
if (retval)
nfs_cancel_dirty(inode,0);
return retval;
}
int nfs_wbinval_pid(struct inode *inode, pid_t pid)
{
int retval = nfs_wb_pid(inode, pid);
if (retval)
nfs_cancel_dirty(inode,pid);
return retval;
}
void
nfs_inval(struct inode *inode)
{
......
......@@ -228,9 +228,6 @@ extern int nfs_wb_pid(struct inode *, pid_t);
* back first..
*/
extern void nfs_inval(struct inode *);
extern int nfs_wbinval(struct inode *);
extern int nfs_wbinval_pid(struct inode *, pid_t);
extern int nfs_truncate_dirty_pages(struct inode *, unsigned long);
extern int nfs_updatepage(struct file *, struct page *, unsigned long, unsigned int, int);
......
......@@ -31,7 +31,7 @@ struct path_struct {
int len;
char buffer[256-sizeof(int)];
} path_array[2] = {
{ 23, "/usr/src/linux/include/" },
{ 0, "" },
{ 0, "" }
};
......@@ -462,8 +462,11 @@ int main(int argc, char **argv)
char *hpath;
hpath = getenv("HPATH");
if (!hpath)
hpath = "/usr/src/linux/include";
if (!hpath) {
fputs("mkdep: HPATH not set in environment. "
"Don't bypass the top level Makefile.\n", stderr);
return 1;
}
len = strlen(hpath);
memcpy(path_array[0].buffer, hpath, len);
if (len && hpath[len-1] != '/')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment