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