Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
5e88de04
Commit
5e88de04
authored
Nov 23, 2007
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Import 2.1.39
parent
583c226d
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
159 additions
and
213 deletions
+159
-213
CREDITS
CREDITS
+2
-2
Makefile
Makefile
+1
-1
arch/i386/kernel/irq.h
arch/i386/kernel/irq.h
+3
-28
drivers/char/tty_io.c
drivers/char/tty_io.c
+18
-52
drivers/scsi/eata.c
drivers/scsi/eata.c
+61
-33
drivers/scsi/eata.h
drivers/scsi/eata.h
+1
-1
drivers/scsi/u14-34f.c
drivers/scsi/u14-34f.c
+52
-26
drivers/scsi/u14-34f.h
drivers/scsi/u14-34f.h
+1
-1
fs/binfmt_elf.c
fs/binfmt_elf.c
+0
-1
fs/buffer.c
fs/buffer.c
+6
-1
fs/isofs/dir.c
fs/isofs/dir.c
+5
-0
fs/isofs/namei.c
fs/isofs/namei.c
+2
-24
fs/isofs/rock.c
fs/isofs/rock.c
+5
-38
include/linux/sched.h
include/linux/sched.h
+0
-3
include/linux/sunrpc/clnt.h
include/linux/sunrpc/clnt.h
+1
-1
mm/memory.c
mm/memory.c
+1
-1
No files found.
CREDITS
View file @
5e88de04
...
...
@@ -733,8 +733,8 @@ S: USA
N: Alain L. Knaff
E: Alain.Knaff@poboxes.com
D: floppy driver
S:
2a, rue de l'Acier
S: L-
4505 Differdange
S:
19, rue Jean l'Aveugle
S: L-
1148 Luxembourg-City
S: Luxembourg
N: Gerd Knorr
...
...
Makefile
View file @
5e88de04
VERSION
=
2
PATCHLEVEL
=
1
SUBLEVEL
=
3
8
SUBLEVEL
=
3
9
ARCH
:=
$(
shell
uname
-m
|
sed
s/i.86/i386/
)
...
...
arch/i386/kernel/irq.h
View file @
5e88de04
...
...
@@ -62,32 +62,8 @@ static inline void irq_exit(int cpu, int irq)
"mov %dx,%ds\n\t" \
"mov %dx,%es\n\t"
/*
* These are used just for the "bad" interrupt handlers,
* which just clear the mask and return..
*/
#define SAVE_MOST \
"cld\n\t" \
"push %es\n\t" \
"push %ds\n\t" \
"pushl %eax\n\t" \
"pushl %edx\n\t" \
"pushl %ecx\n\t" \
"movl $" STR(KERNEL_DS) ",%edx\n\t" \
"mov %dx,%ds\n\t" \
"mov %dx,%es\n\t"
#define RESTORE_MOST \
"popl %ecx\n\t" \
"popl %edx\n\t" \
"popl %eax\n\t" \
"pop %ds\n\t" \
"pop %es\n\t" \
"iret"
#define IRQ_NAME2(nr) nr##_interrupt(void)
#define IRQ_NAME(nr) IRQ_NAME2(IRQ##nr)
#define BAD_IRQ_NAME(nr) IRQ_NAME2(bad_IRQ##nr)
#define GET_CURRENT \
"movl %esp, %ebx\n\t" \
...
...
@@ -150,15 +126,14 @@ static inline void x86_do_profile (unsigned long eip)
extern
int
_stext
;
eip
-=
(
unsigned
long
)
&
_stext
;
eip
>>=
prof_shift
;
if
(
eip
<
prof_len
)
atomic_inc
((
atomic_t
*
)
&
prof_buffer
[
eip
]);
else
/*
* Dont ignore out-of-bounds EIP values silently,
* put them into the last histogram slot, so if
* present, they will show up as a sharp peak.
*/
atomic_inc
((
atomic_t
*
)
&
prof_buffer
[
prof_len
-
1
]);
if
(
eip
>
prof_len
-
1
)
eip
=
prof_len
-
1
;
atomic_inc
((
atomic_t
*
)
&
prof_buffer
[
eip
]);
}
}
...
...
drivers/char/tty_io.c
View file @
5e88de04
...
...
@@ -838,7 +838,7 @@ static void release_dev(struct file * filp)
{
struct
tty_struct
*
tty
,
*
o_tty
;
struct
termios
*
tp
,
*
o_tp
,
*
ltp
,
*
o_ltp
;
struct
task_struct
*
*
p
;
struct
task_struct
*
p
;
int
idx
;
tty
=
(
struct
tty_struct
*
)
filp
->
private_data
;
...
...
@@ -972,14 +972,14 @@ static void release_dev(struct file * filp)
* Make sure there aren't any processes that still think this
* tty is their controlling tty.
*/
for
(
p
=
&
LAST_TASK
;
p
>
&
FIRST_TASK
;
--
p
)
{
if
(
*
p
==
0
)
continue
;
if
((
*
p
)
->
tty
==
tty
)
(
*
p
)
->
tty
=
NULL
;
if
(
o_tty
&&
(
*
p
)
->
tty
==
o_tty
)
(
*
p
)
->
tty
=
NULL
;
read_lock
(
&
tasklist_lock
);
for_each_task
(
p
)
{
if
(
p
->
tty
==
tty
)
p
->
tty
=
NULL
;
if
(
o_tty
&&
p
->
tty
==
o_tty
)
p
->
tty
=
NULL
;
}
read_unlock
(
&
tasklist_lock
);
/*
* Shutdown the current line discipline, and reset it to
...
...
@@ -1216,40 +1216,6 @@ static int tty_fasync(struct inode * inode, struct file * filp, int on)
return
0
;
}
#if 0
/*
* XXX does anyone use this anymore?!?
*/
static int do_get_ps_info(unsigned long arg)
{
struct tstruct {
int flag;
int present[NR_TASKS];
struct task_struct tasks[NR_TASKS];
};
struct tstruct *ts = (struct tstruct *)arg;
struct task_struct **p;
char *c, *d;
int i, n = 0;
i = verify_area(VERIFY_WRITE, (void *)arg, sizeof(struct tstruct));
if (i)
return i;
for (p = &FIRST_TASK ; p <= &LAST_TASK ; p++, n++)
if (*p)
{
c = (char *)(*p);
d = (char *)(ts->tasks+n);
for (i=0 ; i<sizeof(struct task_struct) ; i++)
put_user(*c++, d++);
put_user(1, ts->present+n);
}
else
put_user(0, ts->present+n);
return(0);
}
#endif
static
int
tiocsti
(
struct
tty_struct
*
tty
,
char
*
arg
)
{
char
ch
,
mbz
=
0
;
...
...
@@ -1495,7 +1461,7 @@ void do_SAK( struct tty_struct *tty)
#ifdef TTY_SOFT_SAK
tty_hangup
(
tty
);
#else
struct
task_struct
*
*
p
;
struct
task_struct
*
p
;
int
session
;
int
i
;
struct
file
*
filp
;
...
...
@@ -1507,23 +1473,23 @@ void do_SAK( struct tty_struct *tty)
tty
->
ldisc
.
flush_buffer
(
tty
);
if
(
tty
->
driver
.
flush_buffer
)
tty
->
driver
.
flush_buffer
(
tty
);
for
(
p
=
&
LAST_TASK
;
p
>
&
FIRST_TASK
;
--
p
)
{
if
(
!
(
*
p
))
continue
;
if
(((
*
p
)
->
tty
==
tty
)
||
((
session
>
0
)
&&
((
*
p
)
->
session
==
session
)))
send_sig
(
SIGKILL
,
*
p
,
1
);
else
if
((
*
p
)
->
files
)
{
read_lock
(
&
tasklist_lock
);
for_each_task
(
p
)
{
if
((
p
->
tty
==
tty
)
||
((
session
>
0
)
&&
(
p
->
session
==
session
)))
send_sig
(
SIGKILL
,
p
,
1
);
else
if
(
p
->
files
)
{
for
(
i
=
0
;
i
<
NR_OPEN
;
i
++
)
{
filp
=
(
*
p
)
->
files
->
fd
[
i
];
filp
=
p
->
files
->
fd
[
i
];
if
(
filp
&&
(
filp
->
f_op
==
&
tty_fops
)
&&
(
filp
->
private_data
==
tty
))
{
send_sig
(
SIGKILL
,
*
p
,
1
);
send_sig
(
SIGKILL
,
p
,
1
);
break
;
}
}
}
}
read_unlock
(
&
tasklist_lock
);
#endif
}
...
...
drivers/scsi/eata.c
View file @
5e88de04
This diff is collapsed.
Click to expand it.
drivers/scsi/eata.h
View file @
5e88de04
...
...
@@ -12,7 +12,7 @@ int eata2x_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
int
eata2x_abort
(
Scsi_Cmnd
*
);
int
eata2x_reset
(
Scsi_Cmnd
*
,
unsigned
int
);
#define EATA_VERSION "3.
00.09
"
#define EATA_VERSION "3.
10.00
"
#define EATA { \
...
...
drivers/scsi/u14-34f.c
View file @
5e88de04
/*
* u14-34f.c - Low-level driver for UltraStor 14F/34F SCSI host adapters.
*
* 17 May 1997 rev. 3.10 for linux 2.0.30 and 2.1.38
* Use of serial_number_at_timeout in abort and reset processing.
* Use of the __initfunc and __initdata macro in setup code.
* Minor cleanups in the list_statistics code.
*
* 24 Feb 1997 rev. 3.00 for linux 2.0.29 and 2.1.26
* When loading as a module, parameter passing is now supported
* both in 2.0 and in 2.1 style.
...
...
@@ -220,10 +225,12 @@
* between increasing or decreasing by minimizing the seek distance between
* the sector of the commands just completed and the sector of the first
* command in the list to be sorted.
* Trivial math assures that if there are (Q-1) outstanding request for
* random seeks over S sectors, the unsorted average seek distance is S/2,
* while the sorted average seek distance is S/(Q-1). The seek distance is
* hence divided by a factor (Q-1)/2.
* Trivial math assures that the unsorted average seek distance when doing
* random seeks over S sectors is S/3.
* When (Q-1) requests are uniformly distributed over S sectors, the average
* distance between two adjacent requests is S/((Q-1) + 1), so the sorted
* average seek distance for (Q-1) random requests over S sectors is S/Q.
* The elevator sorting hence divides the seek distance by a factor Q/3.
* The above pure geometric remarks are valid in all cases and the
* driver effectively reduces the seek distance by the predicted factor
* when there are Q concurrent read i/o operations on the device, but this
...
...
@@ -273,8 +280,16 @@ MODULE_AUTHOR("Dario Ballabio");
#include <asm/dma.h>
#include <asm/irq.h>
#include "u14-34f.h"
#include<linux/stat.h>
#include<linux/config.h>
#include <linux/stat.h>
#include <linux/config.h>
#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,36)
#include <linux/init.h>
#else
#define __initfunc(A) A
#define __initdata
#define __init
#endif
struct
proc_dir_entry
proc_scsi_u14_34f
=
{
PROC_SCSI_U14_34F
,
6
,
"u14_34f"
,
...
...
@@ -419,7 +434,7 @@ static struct Scsi_Host *sh[MAX_BOARDS + 1];
static
const
char
*
driver_name
=
"Ux4F"
;
static
unsigned
int
irqlist
[
MAX_IRQ
],
calls
[
MAX_IRQ
];
static
unsigned
int
io_port
[]
=
{
static
unsigned
int
io_port
[]
__initdata
=
{
/* Space for MAX_INT_PARAM ports usable while loading as a module */
SKIP
,
SKIP
,
SKIP
,
SKIP
,
SKIP
,
SKIP
,
SKIP
,
SKIP
,
...
...
@@ -534,8 +549,7 @@ static void select_queue_depths(struct Scsi_Host *host, Scsi_Device *devlist) {
return
;
}
static
inline
int
wait_on_busy
(
unsigned
int
iobase
)
{
unsigned
int
loop
=
MAXLOOP
;
static
inline
int
wait_on_busy
(
unsigned
int
iobase
,
unsigned
int
loop
)
{
while
(
inb
(
iobase
+
REG_LCL_INTR
)
&
BSY_ASSERTED
)
if
(
--
loop
==
0
)
return
TRUE
;
...
...
@@ -556,7 +570,7 @@ static int board_inquiry(unsigned int j) {
cpp
->
scsi_cdbs_len
=
6
;
cpp
->
scsi_cdbs
[
0
]
=
HA_CMD_INQUIRY
;
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
))
{
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
,
MAXLOOP
))
{
printk
(
"%s: board_inquiry, adapter busy.
\n
"
,
BN
(
j
));
return
TRUE
;
}
...
...
@@ -586,8 +600,8 @@ static int board_inquiry(unsigned int j) {
return
FALSE
;
}
static
inline
int
port_detect
(
unsigned
int
port_base
,
unsigned
int
j
,
Scsi_Host_Template
*
tpnt
)
{
__initfunc
(
static
inline
int
port_detect
\
(
unsigned
int
port_base
,
unsigned
int
j
,
Scsi_Host_Template
*
tpnt
)
)
{
unsigned
char
irq
,
dma_channel
,
subversion
,
i
;
unsigned
char
in_byte
;
char
*
bus_type
,
dma_name
[
16
];
...
...
@@ -748,7 +762,7 @@ static inline int port_detect(unsigned int port_base, unsigned int j,
}
}
if
(
dma_channel
==
NO_DMA
)
sprintf
(
dma_name
,
"%s"
,
"
NO DMA
"
);
if
(
dma_channel
==
NO_DMA
)
sprintf
(
dma_name
,
"%s"
,
"
BMST
"
);
else
sprintf
(
dma_name
,
"DMA %u"
,
dma_channel
);
for
(
i
=
0
;
i
<
sh
[
j
]
->
can_queue
;
i
++
)
...
...
@@ -781,7 +795,7 @@ static inline int port_detect(unsigned int port_base, unsigned int j,
return
TRUE
;
}
void
u14_34f_setup
(
char
*
str
,
int
*
ints
)
{
__initfunc
(
void
u14_34f_setup
(
char
*
str
,
int
*
ints
)
)
{
int
i
,
argc
=
ints
[
0
];
char
*
cur
=
str
,
*
pc
;
...
...
@@ -813,7 +827,7 @@ void u14_34f_setup(char *str, int *ints) {
return
;
}
int
u14_34f_detect
(
Scsi_Host_Template
*
tpnt
)
{
__initfunc
(
int
u14_34f_detect
(
Scsi_Host_Template
*
tpnt
)
)
{
unsigned
long
flags
;
unsigned
int
j
=
0
,
k
;
...
...
@@ -983,12 +997,12 @@ int u14_34f_queuecommand(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *)) {
if
(
linked_comm
&&
SCpnt
->
device
->
queue_depth
>
2
&&
TLDEV
(
SCpnt
->
device
->
type
))
{
HD
(
j
)
->
cp_stat
[
i
]
=
READY
;
flush_dev
(
SCpnt
->
device
,
0
,
j
,
FALSE
);
flush_dev
(
SCpnt
->
device
,
SCpnt
->
request
.
sector
,
j
,
FALSE
);
restore_flags
(
flags
);
return
0
;
}
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
))
{
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
,
MAXLOOP
))
{
SCpnt
->
result
=
DID_ERROR
<<
16
;
SCpnt
->
host_scribble
=
NULL
;
printk
(
"%s: qcomm, target %d.%d:%d, pid %ld, adapter busy, DID_ERROR,"
\
...
...
@@ -1018,7 +1032,8 @@ int u14_34f_abort(Scsi_Cmnd *SCarg) {
cli
();
j
=
((
struct
hostdata
*
)
SCarg
->
host
->
hostdata
)
->
board_number
;
if
(
SCarg
->
host_scribble
==
NULL
)
{
if
(
SCarg
->
host_scribble
==
NULL
||
SCarg
->
serial_number
!=
SCarg
->
serial_number_at_timeout
)
{
printk
(
"%s: abort, target %d.%d:%d, pid %ld inactive.
\n
"
,
BN
(
j
),
SCarg
->
channel
,
SCarg
->
target
,
SCarg
->
lun
,
SCarg
->
pid
);
restore_flags
(
flags
);
...
...
@@ -1032,7 +1047,7 @@ int u14_34f_abort(Scsi_Cmnd *SCarg) {
if
(
i
>=
sh
[
j
]
->
can_queue
)
panic
(
"%s: abort, invalid SCarg->host_scribble.
\n
"
,
BN
(
j
));
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
))
{
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
,
MAXLOOP
))
{
printk
(
"%s: abort, timeout error.
\n
"
,
BN
(
j
));
restore_flags
(
flags
);
return
SCSI_ABORT_ERROR
;
...
...
@@ -1101,13 +1116,19 @@ int u14_34f_reset(Scsi_Cmnd *SCarg, unsigned int reset_flags) {
if
(
SCarg
->
host_scribble
==
NULL
)
printk
(
"%s: reset, pid %ld inactive.
\n
"
,
BN
(
j
),
SCarg
->
pid
);
if
(
SCarg
->
serial_number
!=
SCarg
->
serial_number_at_timeout
)
{
printk
(
"%s: reset, pid %ld, reset not running.
\n
"
,
BN
(
j
),
SCarg
->
pid
);
restore_flags
(
flags
);
return
SCSI_RESET_NOT_RUNNING
;
}
if
(
HD
(
j
)
->
in_reset
)
{
printk
(
"%s: reset, exit, already in reset.
\n
"
,
BN
(
j
));
restore_flags
(
flags
);
return
SCSI_RESET_ERROR
;
}
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
))
{
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
,
MAXLOOP
))
{
printk
(
"%s: reset, exit, timeout error.
\n
"
,
BN
(
j
));
restore_flags
(
flags
);
return
SCSI_RESET_ERROR
;
...
...
@@ -1158,7 +1179,7 @@ int u14_34f_reset(Scsi_Cmnd *SCarg, unsigned int reset_flags) {
if
(
SCpnt
==
SCarg
)
arg_done
=
TRUE
;
}
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
))
{
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
,
MAXLOOP
))
{
printk
(
"%s: reset, cannot reset, timeout error.
\n
"
,
BN
(
j
));
restore_flags
(
flags
);
return
SCSI_RESET_ERROR
;
...
...
@@ -1271,7 +1292,7 @@ static inline void reorder(unsigned int j, unsigned long cursec,
unsigned
int
rev
=
FALSE
,
s
=
TRUE
,
r
=
TRUE
;
unsigned
int
input_only
=
TRUE
,
overlap
=
FALSE
;
unsigned
long
sl
[
n_ready
],
pl
[
n_ready
],
ll
[
n_ready
];
unsigned
long
maxsec
=
0
,
minsec
=
ULONG_MAX
,
seek
=
0
;
unsigned
long
maxsec
=
0
,
minsec
=
ULONG_MAX
,
seek
=
0
,
iseek
=
0
;
static
unsigned
int
flushcount
=
0
,
batchcount
=
0
,
sortcount
=
0
;
static
unsigned
int
readycount
=
0
,
ovlcount
=
0
,
inputcount
=
0
;
...
...
@@ -1282,8 +1303,8 @@ static inline void reorder(unsigned int j, unsigned long cursec,
printk
(
"fc %d bc %d ic %d oc %d rc %d rs %d sc %d re %d"
\
" av %ldK as %ldK.
\n
"
,
flushcount
,
batchcount
,
inputcount
,
ovlcount
,
readycount
,
readysorted
,
sortcount
,
revcount
,
seeknosort
/
(
readycount
-
batchcount
+
1
),
seeksorted
/
(
readycount
-
batchcount
+
1
));
seeknosort
/
(
readycount
+
1
),
seeksorted
/
(
readycount
+
1
));
if
(
n_ready
<=
1
)
return
;
...
...
@@ -1311,6 +1332,10 @@ static inline void reorder(unsigned int j, unsigned long cursec,
}
if
(
link_statistics
)
{
if
(
cursec
>
sl
[
0
])
seek
+=
cursec
-
sl
[
0
];
else
seek
+=
sl
[
0
]
-
cursec
;
}
if
(
cursec
>
((
maxsec
+
minsec
)
/
2
))
rev
=
TRUE
;
if
(
!
((
rev
&&
r
)
||
(
!
rev
&&
s
)))
sort
(
sl
,
il
,
n_ready
,
rev
);
...
...
@@ -1328,10 +1353,11 @@ static inline void reorder(unsigned int j, unsigned long cursec,
if
(
overlap
)
sort
(
pl
,
il
,
n_ready
,
FALSE
);
if
(
link_statistics
)
{
if
(
cursec
>
sl
[
0
])
iseek
=
cursec
-
sl
[
0
];
else
iseek
=
sl
[
0
]
-
cursec
;
batchcount
++
;
readycount
+=
n_ready
,
seeknosort
+=
seek
/
1024
;
if
(
input_only
)
inputcount
++
;
if
(
overlap
)
{
ovlcount
++
;
seeksorted
+=
seek
/
1024
;
}
else
seeksorted
+=
(
maxsec
-
minsec
)
/
1024
;
else
seeksorted
+=
(
iseek
+
maxsec
-
minsec
)
/
1024
;
if
(
rev
&&
!
r
)
{
revcount
++
;
readysorted
+=
n_ready
;
}
if
(
!
rev
&&
!
s
)
{
sortcount
++
;
readysorted
+=
n_ready
;
}
}
...
...
@@ -1375,7 +1401,7 @@ static void flush_dev(Scsi_Device *dev, unsigned long cursec, unsigned int j,
for
(
n
=
0
;
n
<
n_ready
;
n
++
)
{
k
=
il
[
n
];
cpp
=
&
HD
(
j
)
->
cp
[
k
];
SCpnt
=
cpp
->
SCpnt
;
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
))
{
if
(
wait_on_busy
(
sh
[
j
]
->
io_port
,
MAXLOOP
))
{
printk
(
"%s: %s, target %d.%d:%d, pid %ld, Mbox %d, adapter"
\
" busy, will abort.
\n
"
,
BN
(
j
),
(
ihdlr
?
"ihdlr"
:
"qcomm"
),
SCpnt
->
channel
,
SCpnt
->
target
,
SCpnt
->
lun
,
SCpnt
->
pid
,
k
);
...
...
drivers/scsi/u14-34f.h
View file @
5e88de04
...
...
@@ -11,7 +11,7 @@ int u14_34f_abort(Scsi_Cmnd *);
int
u14_34f_reset
(
Scsi_Cmnd
*
,
unsigned
int
);
int
u14_34f_biosparam
(
Disk
*
,
kdev_t
,
int
*
);
#define U14_34F_VERSION "3.
00.09
"
#define U14_34F_VERSION "3.
10.00
"
#define ULTRASTOR_14_34F { \
NULL,
/* Ptr for modules */
\
...
...
fs/binfmt_elf.c
View file @
5e88de04
...
...
@@ -280,7 +280,6 @@ static unsigned long load_elf_interp(struct elfhdr * interp_elf_ex,
/* Real error */
sys_close
(
elf_exec_fileno
);
kfree
(
elf_phdata
);
printk
(
"%d"
,
error
);
return
~
0UL
;
}
...
...
fs/buffer.c
View file @
5e88de04
...
...
@@ -591,8 +591,9 @@ void set_blocksize(kdev_t dev, int size)
continue
;
if
(
bh
->
b_size
==
size
)
continue
;
bhnext
->
b_count
++
;
wait_on_buffer
(
bh
);
bhnext
->
b_count
--
;
if
(
bh
->
b_dev
==
dev
&&
bh
->
b_size
!=
size
)
{
clear_bit
(
BH_Dirty
,
&
bh
->
b_state
);
clear_bit
(
BH_Uptodate
,
&
bh
->
b_state
);
...
...
@@ -1606,6 +1607,7 @@ asmlinkage int sync_old_buffers(void)
ndirty
++
;
if
(
bh
->
b_flushtime
>
jiffies
)
continue
;
nwritten
++
;
next
->
b_count
++
;
bh
->
b_count
++
;
bh
->
b_flushtime
=
0
;
#ifdef DEBUG
...
...
@@ -1613,6 +1615,7 @@ asmlinkage int sync_old_buffers(void)
#endif
ll_rw_block
(
WRITE
,
1
,
&
bh
);
bh
->
b_count
--
;
next
->
b_count
--
;
}
}
#ifdef DEBUG
...
...
@@ -1751,6 +1754,7 @@ int bdflush(void * unused)
currently dirty buffers are not shared, so it does not matter */
if
(
refilled
&&
major
==
LOOP_MAJOR
)
continue
;
next
->
b_count
++
;
bh
->
b_count
++
;
ndirty
++
;
bh
->
b_flushtime
=
0
;
...
...
@@ -1766,6 +1770,7 @@ int bdflush(void * unused)
if
(
nlist
!=
BUF_DIRTY
)
ncount
++
;
#endif
bh
->
b_count
--
;
next
->
b_count
--
;
}
}
#ifdef DEBUG
...
...
fs/isofs/dir.c
View file @
5e88de04
...
...
@@ -121,6 +121,11 @@ static int do_isofs_readdir(struct inode *inode, struct file *filp,
char
*
name
;
struct
iso_directory_record
*
de
;
if
(
filp
->
f_pos
>=
inode
->
i_size
)
{
return
0
;
}
offset
=
filp
->
f_pos
&
(
bufsize
-
1
);
block
=
isofs_bmap
(
inode
,
filp
->
f_pos
>>
bufbits
);
...
...
fs/isofs/namei.c
View file @
5e88de04
...
...
@@ -65,7 +65,6 @@ static struct buffer_head * isofs_find_entry(struct inode * dir,
unsigned
char
bufbits
=
ISOFS_BUFFER_BITS
(
dir
);
unsigned
int
block
,
i
,
f_pos
,
offset
,
inode_number
;
struct
buffer_head
*
bh
;
void
*
cpnt
=
NULL
;
unsigned
int
old_offset
;
unsigned
int
backlink
;
int
dlen
,
rrflag
,
match
;
...
...
@@ -117,21 +116,8 @@ static struct buffer_head * isofs_find_entry(struct inode * dir,
/* Handle case where the directory entry spans two blocks.
Usually 1024 byte boundaries */
if
(
offset
>=
bufsize
)
{
unsigned
int
frag1
;
frag1
=
bufsize
-
old_offset
;
cpnt
=
kmalloc
(
*
((
unsigned
char
*
)
de
),
GFP_KERNEL
);
if
(
!
cpnt
)
return
0
;
memcpy
(
cpnt
,
bh
->
b_data
+
old_offset
,
frag1
);
de
=
(
struct
iso_directory_record
*
)
cpnt
;
brelse
(
bh
);
offset
=
f_pos
&
(
bufsize
-
1
);
block
=
isofs_bmap
(
dir
,
f_pos
>>
bufbits
);
if
(
!
block
||
!
(
bh
=
bread
(
dir
->
i_dev
,
block
,
bufsize
)))
{
kfree
(
cpnt
);
return
0
;
};
memcpy
((
char
*
)
cpnt
+
frag1
,
bh
->
b_data
,
offset
);
printk
(
"Directory entry extends past end of iso9660 block
\n
"
);
return
0
;
}
/* Handle the '.' case */
...
...
@@ -190,12 +176,6 @@ static struct buffer_head * isofs_find_entry(struct inode * dir,
match
=
isofs_match
(
namelen
,
name
,
dpnt
,
dlen
);
}
if
(
cpnt
)
{
kfree
(
cpnt
);
cpnt
=
NULL
;
}
if
(
rrflag
)
kfree
(
dpnt
);
if
(
match
)
{
if
(
inode_number
==
-
1
)
{
...
...
@@ -217,8 +197,6 @@ static struct buffer_head * isofs_find_entry(struct inode * dir,
}
}
out:
if
(
cpnt
)
kfree
(
cpnt
);
brelse
(
bh
);
return
NULL
;
}
...
...
fs/isofs/rock.c
View file @
5e88de04
...
...
@@ -60,21 +60,6 @@
block = cont_extent; \
offset = cont_offset; \
offset1 = 0; \
if(ISOFS_BUFFER_SIZE(DEV) == 1024) { \
block <<= 1; \
if (offset >= 1024) block++; \
offset &= 1023; \
if(offset + cont_size >= 1024) { \
bh = bread(DEV->i_dev, block++, ISOFS_BUFFER_SIZE(DEV)); \
if(!bh) {printk("Unable to read continuation Rock Ridge record\n"); \
kfree(buffer); \
buffer = NULL; } else { \
memcpy(buffer, bh->b_data + offset, 1024 - offset); \
brelse(bh); \
offset1 = 1024 - offset; \
offset = 0;} \
} \
}; \
if(buffer) { \
bh = bread(DEV->i_dev, block, ISOFS_BUFFER_SIZE(DEV)); \
if(bh){ \
...
...
@@ -429,7 +414,6 @@ char * get_rock_ridge_symlink(struct inode * inode)
unsigned
char
bufbits
=
ISOFS_BUFFER_BITS
(
inode
);
struct
buffer_head
*
bh
;
unsigned
char
*
pnt
;
void
*
cpnt
=
NULL
;
char
*
rpnt
;
struct
iso_directory_record
*
raw_inode
;
CONTINUE_DECLS
;
...
...
@@ -455,24 +439,12 @@ char * get_rock_ridge_symlink(struct inode * inode)
raw_inode
=
((
struct
iso_directory_record
*
)
pnt
);
/*
* If we go past the end of the buffer, there is some sort of error.
*/
if
((
inode
->
i_ino
&
(
bufsize
-
1
))
+
*
pnt
>
bufsize
){
int
frag1
,
offset
;
offset
=
(
inode
->
i_ino
&
(
bufsize
-
1
));
frag1
=
bufsize
-
offset
;
cpnt
=
kmalloc
(
*
pnt
,
GFP_KERNEL
);
if
(
!
cpnt
)
return
NULL
;
memcpy
(
cpnt
,
bh
->
b_data
+
offset
,
frag1
);
brelse
(
bh
);
if
(
!
(
bh
=
bread
(
inode
->
i_dev
,
++
block
,
bufsize
)))
{
kfree
(
cpnt
);
printk
(
"unable to read i-node block"
);
return
NULL
;
};
offset
+=
*
pnt
-
bufsize
;
memcpy
((
char
*
)
cpnt
+
frag1
,
bh
->
b_data
,
offset
);
pnt
=
((
unsigned
char
*
)
cpnt
);
raw_inode
=
((
struct
iso_directory_record
*
)
pnt
);
printk
(
"symlink spans iso9660 blocks
\n
"
);
return
NULL
;
};
/* Now test for possible Rock Ridge extensions which will override some of
...
...
@@ -558,11 +530,6 @@ char * get_rock_ridge_symlink(struct inode * inode)
MAYBE_CONTINUE
(
repeat
,
inode
);
brelse
(
bh
);
if
(
cpnt
)
{
kfree
(
cpnt
);
cpnt
=
NULL
;
};
return
rpnt
;
out:
if
(
buffer
)
kfree
(
buffer
);
...
...
include/linux/sched.h
View file @
5e88de04
...
...
@@ -58,9 +58,6 @@ extern unsigned long avenrun[]; /* Load averages */
extern
int
nr_running
,
nr_tasks
;
extern
int
last_pid
;
#define FIRST_TASK task[0]
#define LAST_TASK task[NR_TASKS-1]
#include <linux/head.h>
#include <linux/fs.h>
#include <linux/signal.h>
...
...
include/linux/sunrpc/clnt.h
View file @
5e88de04
...
...
@@ -23,7 +23,7 @@ struct rpc_portmap {
__u32
pm_prog
;
__u32
pm_vers
;
__u32
pm_prot
;
__u
32
pm_port
;
__u
16
pm_port
;
};
/*
...
...
mm/memory.c
View file @
5e88de04
...
...
@@ -725,7 +725,7 @@ void vmtruncate(struct inode * inode, unsigned long offset)
flush_cache_range
(
mm
,
start
,
end
);
zap_page_range
(
mm
,
start
,
len
);
flush_tlb_range
(
mm
,
start
,
end
);
}
while
((
mpnt
=
mpnt
->
vm_next_share
)
!=
inode
->
i_mmap
);
}
while
((
mpnt
=
mpnt
->
vm_next_share
)
!=
NULL
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment