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
5665c2a2
Commit
5665c2a2
authored
Oct 11, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://linux-bt.bkbits.net/bt-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
067239c0
b8041f7b
Changes
42
Hide whitespace changes
Inline
Side-by-side
Showing
42 changed files
with
392 additions
and
330 deletions
+392
-330
arch/i386/kernel/timers/timer_pit.c
arch/i386/kernel/timers/timer_pit.c
+1
-0
drivers/ide/pci/aec62xx.c
drivers/ide/pci/aec62xx.c
+3
-3
drivers/ide/pci/alim15x3.c
drivers/ide/pci/alim15x3.c
+3
-3
drivers/ide/pci/amd74xx.c
drivers/ide/pci/amd74xx.c
+3
-3
drivers/ide/pci/cmd64x.c
drivers/ide/pci/cmd64x.c
+3
-3
drivers/ide/pci/cs5530.c
drivers/ide/pci/cs5530.c
+3
-3
drivers/ide/pci/cy82c693.c
drivers/ide/pci/cy82c693.c
+3
-3
drivers/ide/pci/generic.c
drivers/ide/pci/generic.c
+3
-3
drivers/ide/pci/hpt34x.c
drivers/ide/pci/hpt34x.c
+3
-3
drivers/ide/pci/hpt366.c
drivers/ide/pci/hpt366.c
+3
-3
drivers/ide/pci/it8172.c
drivers/ide/pci/it8172.c
+3
-3
drivers/ide/pci/ns87415.c
drivers/ide/pci/ns87415.c
+3
-3
drivers/ide/pci/nvidia.c
drivers/ide/pci/nvidia.c
+3
-3
drivers/ide/pci/opti621.c
drivers/ide/pci/opti621.c
+3
-3
drivers/ide/pci/pdc202xx_new.c
drivers/ide/pci/pdc202xx_new.c
+3
-3
drivers/ide/pci/pdc202xx_old.c
drivers/ide/pci/pdc202xx_old.c
+3
-3
drivers/ide/pci/pdcadma.c
drivers/ide/pci/pdcadma.c
+3
-3
drivers/ide/pci/piix.c
drivers/ide/pci/piix.c
+3
-3
drivers/ide/pci/rz1000.c
drivers/ide/pci/rz1000.c
+3
-3
drivers/ide/pci/serverworks.c
drivers/ide/pci/serverworks.c
+3
-3
drivers/ide/pci/siimage.c
drivers/ide/pci/siimage.c
+3
-3
drivers/ide/pci/sis5513.c
drivers/ide/pci/sis5513.c
+3
-3
drivers/ide/pci/sl82c105.c
drivers/ide/pci/sl82c105.c
+3
-3
drivers/ide/pci/slc90e66.c
drivers/ide/pci/slc90e66.c
+3
-3
drivers/ide/pci/trm290.c
drivers/ide/pci/trm290.c
+3
-3
drivers/ide/pci/via82cxxx.c
drivers/ide/pci/via82cxxx.c
+3
-3
drivers/serial/8250.c
drivers/serial/8250.c
+1
-2
drivers/serial/8250_pci.c
drivers/serial/8250_pci.c
+2
-4
drivers/serial/core.c
drivers/serial/core.c
+2
-2
fs/affs/super.c
fs/affs/super.c
+16
-16
fs/coda/cnode.c
fs/coda/cnode.c
+3
-3
fs/coda/psdev.c
fs/coda/psdev.c
+7
-7
fs/jffs/inode-v23.c
fs/jffs/inode-v23.c
+33
-33
fs/nfs/dir.c
fs/nfs/dir.c
+0
-1
fs/nfs/nfs3proc.c
fs/nfs/nfs3proc.c
+115
-3
fs/nfs/proc.c
fs/nfs/proc.c
+59
-2
fs/nfs/unlink.c
fs/nfs/unlink.c
+2
-3
fs/nfs/write.c
fs/nfs/write.c
+39
-135
include/linux/nfs_fs.h
include/linux/nfs_fs.h
+8
-21
include/linux/nfs_xdr.h
include/linux/nfs_xdr.h
+23
-1
include/linux/serialP.h
include/linux/serialP.h
+4
-22
net/sunrpc/xprt.c
net/sunrpc/xprt.c
+2
-0
No files found.
arch/i386/kernel/timers/timer_pit.c
View file @
5665c2a2
...
...
@@ -6,6 +6,7 @@
#include <linux/spinlock.h>
#include <linux/module.h>
#include <linux/device.h>
#include <asm/mpspec.h>
#include <asm/timer.h>
#include <asm/io.h>
...
...
drivers/ide/pci/aec62xx.c
View file @
5665c2a2
...
...
@@ -544,9 +544,9 @@ static struct pci_device_id aec62xx_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"AEC62xx IDE"
,
id_table:
aec62xx_pci_tbl
,
probe:
aec62xx_init_one
,
.
name
=
"AEC62xx IDE"
,
.
id_table
=
aec62xx_pci_tbl
,
.
probe
=
aec62xx_init_one
,
};
static
int
aec62xx_ide_init
(
void
)
...
...
drivers/ide/pci/alim15x3.c
View file @
5665c2a2
...
...
@@ -869,9 +869,9 @@ static struct pci_device_id alim15x3_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"ALI15x3 IDE"
,
id_table:
alim15x3_pci_tbl
,
probe:
alim15x3_init_one
,
.
name
=
"ALI15x3 IDE"
,
.
id_table
=
alim15x3_pci_tbl
,
.
probe
=
alim15x3_init_one
,
};
static
int
ali15x3_ide_init
(
void
)
...
...
drivers/ide/pci/amd74xx.c
View file @
5665c2a2
...
...
@@ -414,9 +414,9 @@ static struct pci_device_id amd74xx_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"AMD IDE"
,
id_table:
amd74xx_pci_tbl
,
probe:
amd74xx_init_one
,
.
name
=
"AMD IDE"
,
.
id_table
=
amd74xx_pci_tbl
,
.
probe
=
amd74xx_init_one
,
};
static
int
amd74xx_ide_init
(
void
)
...
...
drivers/ide/pci/cmd64x.c
View file @
5665c2a2
...
...
@@ -784,9 +784,9 @@ static struct pci_device_id cmd64x_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"CMD64x IDE"
,
id_table:
cmd64x_pci_tbl
,
probe:
cmd64x_init_one
,
.
name
=
"CMD64x IDE"
,
.
id_table
=
cmd64x_pci_tbl
,
.
probe
=
cmd64x_init_one
,
};
static
int
cmd64x_ide_init
(
void
)
...
...
drivers/ide/pci/cs5530.c
View file @
5665c2a2
...
...
@@ -437,9 +437,9 @@ static struct pci_device_id cs5530_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"CS5530 IDE"
,
id_table:
cs5530_pci_tbl
,
probe:
cs5530_init_one
,
.
name
=
"CS5530 IDE"
,
.
id_table
=
cs5530_pci_tbl
,
.
probe
=
cs5530_init_one
,
};
static
int
cs5530_ide_init
(
void
)
...
...
drivers/ide/pci/cy82c693.c
View file @
5665c2a2
...
...
@@ -448,9 +448,9 @@ static struct pci_device_id cy82c693_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"Cypress IDE"
,
id_table:
cy82c693_pci_tbl
,
probe:
cy82c693_init_one
,
.
name
=
"Cypress IDE"
,
.
id_table
=
cy82c693_pci_tbl
,
.
probe
=
cy82c693_init_one
,
};
static
int
cy82c693_ide_init
(
void
)
...
...
drivers/ide/pci/generic.c
View file @
5665c2a2
...
...
@@ -123,9 +123,9 @@ static struct pci_device_id generic_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"PCI IDE"
,
id_table:
generic_pci_tbl
,
probe:
generic_init_one
,
.
name
=
"PCI IDE"
,
.
id_table
=
generic_pci_tbl
,
.
probe
=
generic_init_one
,
};
static
int
generic_ide_init
(
void
)
...
...
drivers/ide/pci/hpt34x.c
View file @
5665c2a2
...
...
@@ -344,9 +344,9 @@ static struct pci_device_id hpt34x_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"HPT34x IDE"
,
id_table:
hpt34x_pci_tbl
,
probe:
hpt34x_init_one
,
.
name
=
"HPT34x IDE"
,
.
id_table
=
hpt34x_pci_tbl
,
.
probe
=
hpt34x_init_one
,
};
static
int
hpt34x_ide_init
(
void
)
...
...
drivers/ide/pci/hpt366.c
View file @
5665c2a2
...
...
@@ -1199,9 +1199,9 @@ static struct pci_device_id hpt366_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"HPT366 IDE"
,
id_table:
hpt366_pci_tbl
,
probe:
hpt366_init_one
,
.
name
=
"HPT366 IDE"
,
.
id_table
=
hpt366_pci_tbl
,
.
probe
=
hpt366_init_one
,
};
static
int
hpt366_ide_init
(
void
)
...
...
drivers/ide/pci/it8172.c
View file @
5665c2a2
...
...
@@ -315,9 +315,9 @@ static struct pci_device_id it8172_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"IT8172IDE"
,
id_table:
it8172_pci_tbl
,
probe:
it8172_init_one
,
.
name
=
"IT8172IDE"
,
.
id_table
=
it8172_pci_tbl
,
.
probe
=
it8172_init_one
,
};
static
int
it8172_ide_init
(
void
)
...
...
drivers/ide/pci/ns87415.c
View file @
5665c2a2
...
...
@@ -246,9 +246,9 @@ static struct pci_device_id ns87415_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"NS87415IDE"
,
id_table:
ns87415_pci_tbl
,
probe:
ns87415_init_one
,
.
name
=
"NS87415IDE"
,
.
id_table
=
ns87415_pci_tbl
,
.
probe
=
ns87415_init_one
,
};
static
int
ns87415_ide_init
(
void
)
...
...
drivers/ide/pci/nvidia.c
View file @
5665c2a2
...
...
@@ -353,9 +353,9 @@ static struct pci_device_id nforce_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"nForce IDE"
,
id_table:
nforce_pci_tbl
,
probe:
nforce_init_one
,
.
name
=
"nForce IDE"
,
.
id_table
=
nforce_pci_tbl
,
.
probe
=
nforce_init_one
,
};
static
int
nforce_ide_init
(
void
)
...
...
drivers/ide/pci/opti621.c
View file @
5665c2a2
...
...
@@ -381,9 +381,9 @@ static struct pci_device_id opti621_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"Opti621 IDE"
,
id_table:
opti621_pci_tbl
,
probe:
opti621_init_one
,
.
name
=
"Opti621 IDE"
,
.
id_table
=
opti621_pci_tbl
,
.
probe
=
opti621_init_one
,
};
static
int
opti621_ide_init
(
void
)
...
...
drivers/ide/pci/pdc202xx_new.c
View file @
5665c2a2
...
...
@@ -679,9 +679,9 @@ static struct pci_device_id pdc202new_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"Promise IDE"
,
id_table:
pdc202new_pci_tbl
,
probe:
pdc202new_init_one
,
.
name
=
"Promise IDE"
,
.
id_table
=
pdc202new_pci_tbl
,
.
probe
=
pdc202new_init_one
,
};
static
int
pdc202new_ide_init
(
void
)
...
...
drivers/ide/pci/pdc202xx_old.c
View file @
5665c2a2
...
...
@@ -956,9 +956,9 @@ static struct pci_device_id pdc202xx_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"Promise Old IDE"
,
id_table:
pdc202xx_pci_tbl
,
probe:
pdc202xx_init_one
,
.
name
=
"Promise Old IDE"
,
.
id_table
=
pdc202xx_pci_tbl
,
.
probe
=
pdc202xx_init_one
,
};
static
int
pdc202xx_ide_init
(
void
)
...
...
drivers/ide/pci/pdcadma.c
View file @
5665c2a2
...
...
@@ -143,9 +143,9 @@ static struct pci_device_id pdcadma_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"PDCADMA-IDE"
,
id_table:
pdcadma_pci_tbl
,
probe:
pdcadma_init_one
,
.
name
=
"PDCADMA-IDE"
,
.
id_table
=
pdcadma_pci_tbl
,
.
probe
=
pdcadma_init_one
,
};
static
int
pdcadma_ide_init
(
void
)
...
...
drivers/ide/pci/piix.c
View file @
5665c2a2
...
...
@@ -705,9 +705,9 @@ static struct pci_device_id piix_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"PIIX IDE"
,
id_table:
piix_pci_tbl
,
probe:
piix_init_one
,
.
name
=
"PIIX IDE"
,
.
id_table
=
piix_pci_tbl
,
.
probe
=
piix_init_one
,
};
static
int
piix_ide_init
(
void
)
...
...
drivers/ide/pci/rz1000.c
View file @
5665c2a2
...
...
@@ -73,9 +73,9 @@ static struct pci_device_id rz1000_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"RZ1000 IDE"
,
id_table:
rz1000_pci_tbl
,
probe:
rz1000_init_one
,
.
name
=
"RZ1000 IDE"
,
.
id_table
=
rz1000_pci_tbl
,
.
probe
=
rz1000_init_one
,
};
static
int
rz1000_ide_init
(
void
)
...
...
drivers/ide/pci/serverworks.c
View file @
5665c2a2
...
...
@@ -797,9 +797,9 @@ static struct pci_device_id svwks_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"Serverworks IDE"
,
id_table:
svwks_pci_tbl
,
probe:
svwks_init_one
,
.
name
=
"Serverworks IDE"
,
.
id_table
=
svwks_pci_tbl
,
.
probe
=
svwks_init_one
,
#if 0 /* FIXME: implement */
suspend: ,
resume: ,
...
...
drivers/ide/pci/siimage.c
View file @
5665c2a2
...
...
@@ -855,9 +855,9 @@ static struct pci_device_id siimage_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"SiI IDE"
,
id_table:
siimage_pci_tbl
,
probe:
siimage_init_one
,
.
name
=
"SiI IDE"
,
.
id_table
=
siimage_pci_tbl
,
.
probe
=
siimage_init_one
,
};
static
int
siimage_ide_init
(
void
)
...
...
drivers/ide/pci/sis5513.c
View file @
5665c2a2
...
...
@@ -1040,9 +1040,9 @@ static struct pci_device_id sis5513_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"SIS IDE"
,
id_table:
sis5513_pci_tbl
,
probe:
sis5513_init_one
,
.
name
=
"SIS IDE"
,
.
id_table
=
sis5513_pci_tbl
,
.
probe
=
sis5513_init_one
,
};
static
int
sis5513_ide_init
(
void
)
...
...
drivers/ide/pci/sl82c105.c
View file @
5665c2a2
...
...
@@ -298,9 +298,9 @@ static struct pci_device_id sl82c105_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"W82C105 IDE"
,
id_table:
sl82c105_pci_tbl
,
probe:
sl82c105_init_one
,
.
name
=
"W82C105 IDE"
,
.
id_table
=
sl82c105_pci_tbl
,
.
probe
=
sl82c105_init_one
,
};
static
int
sl82c105_ide_init
(
void
)
...
...
drivers/ide/pci/slc90e66.c
View file @
5665c2a2
...
...
@@ -382,9 +382,9 @@ static struct pci_device_id slc90e66_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"SLC90e66 IDE"
,
id_table:
slc90e66_pci_tbl
,
probe:
slc90e66_init_one
,
.
name
=
"SLC90e66 IDE"
,
.
id_table
=
slc90e66_pci_tbl
,
.
probe
=
slc90e66_init_one
,
};
static
int
slc90e66_ide_init
(
void
)
...
...
drivers/ide/pci/trm290.c
View file @
5665c2a2
...
...
@@ -413,9 +413,9 @@ static struct pci_device_id trm290_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"TRM290 IDE"
,
id_table:
trm290_pci_tbl
,
probe:
trm290_init_one
,
.
name
=
"TRM290 IDE"
,
.
id_table
=
trm290_pci_tbl
,
.
probe
=
trm290_init_one
,
};
static
int
trm290_ide_init
(
void
)
...
...
drivers/ide/pci/via82cxxx.c
View file @
5665c2a2
...
...
@@ -652,9 +652,9 @@ static struct pci_device_id via_pci_tbl[] __devinitdata = {
};
static
struct
pci_driver
driver
=
{
name:
"VIA IDE"
,
id_table:
via_pci_tbl
,
probe:
via_init_one
,
.
name
=
"VIA IDE"
,
.
id_table
=
via_pci_tbl
,
.
probe
=
via_init_one
,
};
static
int
via_ide_init
(
void
)
...
...
drivers/serial/8250.c
View file @
5665c2a2
...
...
@@ -33,7 +33,6 @@
#include <linux/serial_reg.h>
#include <linux/serial.h>
#include <linux/serialP.h>
#include <linux/serial.h>
#include <linux/delay.h>
#include <asm/io.h>
...
...
@@ -1636,7 +1635,7 @@ static void serial8250_config_port(struct uart_port *port, int flags)
if
(
up
->
port
.
type
!=
PORT_RSA
&&
res_rsa
)
release_resource
(
res_rsa
);
if
(
up
->
port
.
type
==
PORT_UNKNOWN
)
if
(
up
->
port
.
type
==
PORT_UNKNOWN
&&
res_std
)
release_resource
(
res_std
);
}
...
...
drivers/serial/8250_pci.c
View file @
5665c2a2
...
...
@@ -22,10 +22,7 @@
#include <linux/slab.h>
#include <linux/serial.h>
/* 2.4.6 compatibility cruft - to be removed with the old serial.c code */
#define pci_board __pci_board
#include <linux/serialP.h>
#undef pci_board
#include <asm/bitops.h>
#include <asm/byteorder.h>
...
...
@@ -771,7 +768,8 @@ static void __devexit pci_remove_one(struct pci_dev *dev)
for
(
i
=
0
;
i
<
priv
->
nr
;
i
++
)
unregister_serial
(
priv
->
line
[
i
]);
priv
->
board
->
init_fn
(
dev
,
priv
->
board
,
0
);
if
(
priv
->
board
->
init_fn
)
priv
->
board
->
init_fn
(
dev
,
priv
->
board
,
0
);
pci_disable_device
(
dev
);
...
...
drivers/serial/core.c
View file @
5665c2a2
...
...
@@ -1604,8 +1604,6 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
return
retval
;
}
#ifdef CONFIG_PROC_FS
static
const
char
*
uart_type
(
struct
uart_port
*
port
)
{
const
char
*
str
=
NULL
;
...
...
@@ -1619,6 +1617,8 @@ static const char *uart_type(struct uart_port *port)
return
str
;
}
#ifdef CONFIG_PROC_FS
static
int
uart_line_info
(
char
*
buf
,
struct
uart_driver
*
drv
,
int
i
)
{
struct
uart_state
*
state
=
drv
->
state
+
i
;
...
...
fs/affs/super.c
View file @
5665c2a2
...
...
@@ -130,17 +130,17 @@ static void destroy_inodecache(void)
}
static
struct
super_operations
affs_sops
=
{
alloc_inode:
affs_alloc_inode
,
destroy_inode:
affs_destroy_inode
,
read_inode:
affs_read_inode
,
write_inode:
affs_write_inode
,
put_inode:
affs_put_inode
,
delete_inode:
affs_delete_inode
,
clear_inode:
affs_clear_inode
,
put_super:
affs_put_super
,
write_super:
affs_write_super
,
statfs:
affs_statfs
,
remount_fs:
affs_remount
,
.
alloc_inode
=
affs_alloc_inode
,
.
destroy_inode
=
affs_destroy_inode
,
.
read_inode
=
affs_read_inode
,
.
write_inode
=
affs_write_inode
,
.
put_inode
=
affs_put_inode
,
.
delete_inode
=
affs_delete_inode
,
.
clear_inode
=
affs_clear_inode
,
.
put_super
=
affs_put_super
,
.
write_super
=
affs_write_super
,
.
statfs
=
affs_statfs
,
.
remount_fs
=
affs_remount
,
};
static
int
...
...
@@ -550,11 +550,11 @@ static struct super_block *affs_get_sb(struct file_system_type *fs_type,
}
static
struct
file_system_type
affs_fs_type
=
{
owner:
THIS_MODULE
,
name:
"affs"
,
get_sb:
affs_get_sb
,
kill_sb:
kill_block_super
,
fs_flags:
FS_REQUIRES_DEV
,
.
owner
=
THIS_MODULE
,
.
name
=
"affs"
,
.
get_sb
=
affs_get_sb
,
.
kill_sb
=
kill_block_super
,
.
fs_flags
=
FS_REQUIRES_DEV
,
};
static
int
__init
init_affs_fs
(
void
)
...
...
fs/coda/cnode.c
View file @
5665c2a2
...
...
@@ -26,9 +26,9 @@ inline int coda_isnullfid(ViceFid *fid)
}
static
struct
inode_operations
coda_symlink_inode_operations
=
{
readlink:
page_readlink
,
follow_link:
page_follow_link
,
setattr:
coda_setattr
,
.
readlink
=
page_readlink
,
.
follow_link
=
page_follow_link
,
.
setattr
=
coda_setattr
,
};
/* cnode.c */
...
...
fs/coda/psdev.c
View file @
5665c2a2
...
...
@@ -353,13 +353,13 @@ static int coda_psdev_release(struct inode * inode, struct file * file)
static
struct
file_operations
coda_psdev_fops
=
{
owner:
THIS_MODULE
,
read:
coda_psdev_read
,
write:
coda_psdev_write
,
poll:
coda_psdev_poll
,
ioctl:
coda_psdev_ioctl
,
open:
coda_psdev_open
,
release:
coda_psdev_release
,
.
owner
=
THIS_MODULE
,
.
read
=
coda_psdev_read
,
.
write
=
coda_psdev_write
,
.
poll
=
coda_psdev_poll
,
.
ioctl
=
coda_psdev_ioctl
,
.
open
=
coda_psdev_open
,
.
release
=
coda_psdev_release
,
};
static
devfs_handle_t
devfs_handle
;
...
...
fs/jffs/inode-v23.c
View file @
5665c2a2
...
...
@@ -1615,9 +1615,9 @@ jffs_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
static
struct
address_space_operations
jffs_address_operations
=
{
readpage:
jffs_readpage
,
prepare_write:
jffs_prepare_write
,
commit_write:
jffs_commit_write
,
.
readpage
=
jffs_readpage
,
.
prepare_write
=
jffs_prepare_write
,
.
commit_write
=
jffs_commit_write
,
};
static
int
jffs_fsync
(
struct
file
*
f
,
struct
dentry
*
d
,
int
datasync
)
...
...
@@ -1634,41 +1634,41 @@ extern loff_t generic_file_llseek(struct file *, loff_t, int) __attribute__((wea
static
struct
file_operations
jffs_file_operations
=
{
open:
generic_file_open
,
llseek:
generic_file_llseek
,
read:
generic_file_read
,
write:
generic_file_write
,
ioctl:
jffs_ioctl
,
mmap:
generic_file_mmap
,
fsync:
jffs_fsync
,
sendfile:
generic_file_sendfile
,
.
open
=
generic_file_open
,
.
llseek
=
generic_file_llseek
,
.
read
=
generic_file_read
,
.
write
=
generic_file_write
,
.
ioctl
=
jffs_ioctl
,
.
mmap
=
generic_file_mmap
,
.
fsync
=
jffs_fsync
,
.
sendfile
=
generic_file_sendfile
,
};
static
struct
inode_operations
jffs_file_inode_operations
=
{
lookup:
jffs_lookup
,
/* lookup */
setattr:
jffs_setattr
,
.
lookup
=
jffs_lookup
,
/* lookup */
.
setattr
=
jffs_setattr
,
};
static
struct
file_operations
jffs_dir_operations
=
{
readdir:
jffs_readdir
,
.
readdir
=
jffs_readdir
,
};
static
struct
inode_operations
jffs_dir_inode_operations
=
{
create:
jffs_create
,
lookup:
jffs_lookup
,
unlink:
jffs_unlink
,
symlink:
jffs_symlink
,
mkdir:
jffs_mkdir
,
rmdir:
jffs_rmdir
,
mknod:
jffs_mknod
,
rename:
jffs_rename
,
setattr:
jffs_setattr
,
.
create
=
jffs_create
,
.
lookup
=
jffs_lookup
,
.
unlink
=
jffs_unlink
,
.
symlink
=
jffs_symlink
,
.
mkdir
=
jffs_mkdir
,
.
rmdir
=
jffs_rmdir
,
.
mknod
=
jffs_mknod
,
.
rename
=
jffs_rename
,
.
setattr
=
jffs_setattr
,
};
...
...
@@ -1768,11 +1768,11 @@ jffs_write_super(struct super_block *sb)
static
struct
super_operations
jffs_ops
=
{
read_inode:
jffs_read_inode
,
delete_inode:
jffs_delete_inode
,
put_super:
jffs_put_super
,
write_super:
jffs_write_super
,
statfs:
jffs_statfs
,
.
read_inode
=
jffs_read_inode
,
.
delete_inode
=
jffs_delete_inode
,
.
put_super
=
jffs_put_super
,
.
write_super
=
jffs_write_super
,
.
statfs
=
jffs_statfs
,
};
static
struct
super_block
*
jffs_get_sb
(
struct
file_system_type
*
fs_type
,
...
...
@@ -1782,11 +1782,11 @@ static struct super_block *jffs_get_sb(struct file_system_type *fs_type,
}
static
struct
file_system_type
jffs_fs_type
=
{
owner:
THIS_MODULE
,
name:
"jffs"
,
get_sb:
jffs_get_sb
,
kill_sb:
kill_block_super
,
fs_flags:
FS_REQUIRES_DEV
,
.
owner
=
THIS_MODULE
,
.
name
=
"jffs"
,
.
get_sb
=
jffs_get_sb
,
.
kill_sb
=
kill_block_super
,
.
fs_flags
=
FS_REQUIRES_DEV
,
};
static
int
__init
...
...
fs/nfs/dir.c
View file @
5665c2a2
...
...
@@ -130,7 +130,6 @@ int nfs_readdir_filler(nfs_readdir_descriptor_t *desc, struct page *page)
return
0
;
error:
SetPageError
(
page
);
kunmap
(
page
);
unlock_page
(
page
);
invalidate_inode_pages
(
inode
->
i_mapping
);
desc
->
error
=
error
;
...
...
fs/nfs/nfs3proc.c
View file @
5665c2a2
...
...
@@ -54,6 +54,17 @@ nfs3_rpc_call_wrapper(struct rpc_clnt *clnt, u32 proc, void *argp, void *resp, i
#define rpc_call_sync(clnt, msg, flags) \
nfs3_rpc_wrapper(clnt, msg, flags)
static
int
nfs3_async_handle_jukebox
(
struct
rpc_task
*
task
)
{
if
(
task
->
tk_status
!=
-
EJUKEBOX
)
return
0
;
task
->
tk_status
=
0
;
rpc_restart_call
(
task
);
rpc_delay
(
task
,
NFS_JUKEBOX_RETRY_TIME
);
return
1
;
}
/*
* Bare-bones access to getattr: this is for nfs_read_super.
*/
...
...
@@ -392,16 +403,20 @@ nfs3_proc_unlink_setup(struct rpc_message *msg, struct dentry *dir, struct qstr
return
0
;
}
static
void
nfs3_proc_unlink_done
(
struct
dentry
*
dir
,
struct
rpc_
message
*
msg
)
static
int
nfs3_proc_unlink_done
(
struct
dentry
*
dir
,
struct
rpc_
task
*
task
)
{
struct
rpc_message
*
msg
=
&
task
->
tk_msg
;
struct
nfs_fattr
*
dir_attr
;
if
(
nfs3_async_handle_jukebox
(
task
))
return
1
;
if
(
msg
->
rpc_argp
)
{
dir_attr
=
(
struct
nfs_fattr
*
)
msg
->
rpc_resp
;
nfs_refresh_inode
(
dir
->
d_inode
,
dir_attr
);
kfree
(
msg
->
rpc_argp
);
}
return
0
;
}
static
int
...
...
@@ -652,7 +667,7 @@ nfs3_read_done(struct rpc_task *task)
{
struct
nfs_read_data
*
data
=
(
struct
nfs_read_data
*
)
task
->
tk_calldata
;
if
(
nfs_async_handle_jukebox
(
task
))
if
(
nfs
3
_async_handle_jukebox
(
task
))
return
;
nfs_readpage_result
(
task
,
data
->
u
.
v3
.
res
.
count
,
data
->
u
.
v3
.
res
.
eof
);
}
...
...
@@ -692,6 +707,101 @@ nfs3_proc_read_setup(struct nfs_read_data *data, unsigned int count)
rpc_call_setup
(
&
data
->
task
,
&
msg
,
0
);
}
static
void
nfs3_write_done
(
struct
rpc_task
*
task
)
{
struct
nfs_write_data
*
data
=
(
struct
nfs_write_data
*
)
task
->
tk_calldata
;
if
(
nfs3_async_handle_jukebox
(
task
))
return
;
nfs_writeback_done
(
task
,
data
->
u
.
v3
.
args
.
stable
,
data
->
u
.
v3
.
args
.
count
,
data
->
u
.
v3
.
res
.
count
);
}
static
void
nfs3_proc_write_setup
(
struct
nfs_write_data
*
data
,
unsigned
int
count
,
int
how
)
{
struct
rpc_task
*
task
=
&
data
->
task
;
struct
inode
*
inode
=
data
->
inode
;
struct
nfs_page
*
req
;
int
stable
;
int
flags
;
struct
rpc_message
msg
;
if
(
how
&
FLUSH_STABLE
)
{
if
(
!
NFS_I
(
inode
)
->
ncommit
)
stable
=
NFS_FILE_SYNC
;
else
stable
=
NFS_DATA_SYNC
;
}
else
stable
=
NFS_UNSTABLE
;
req
=
nfs_list_entry
(
data
->
pages
.
next
);
data
->
u
.
v3
.
args
.
fh
=
NFS_FH
(
inode
);
data
->
u
.
v3
.
args
.
offset
=
req_offset
(
req
)
+
req
->
wb_offset
;
data
->
u
.
v3
.
args
.
pgbase
=
req
->
wb_offset
;
data
->
u
.
v3
.
args
.
count
=
count
;
data
->
u
.
v3
.
args
.
stable
=
stable
;
data
->
u
.
v3
.
args
.
pages
=
data
->
pagevec
;
data
->
u
.
v3
.
res
.
fattr
=
&
data
->
fattr
;
data
->
u
.
v3
.
res
.
count
=
count
;
data
->
u
.
v3
.
res
.
verf
=
&
data
->
verf
;
/* Set the initial flags for the task. */
flags
=
(
how
&
FLUSH_SYNC
)
?
0
:
RPC_TASK_ASYNC
;
/* Finalize the task. */
rpc_init_task
(
task
,
NFS_CLIENT
(
inode
),
nfs3_write_done
,
flags
);
task
->
tk_calldata
=
data
;
/* Release requests */
task
->
tk_release
=
nfs_writedata_release
;
msg
.
rpc_proc
=
NFS3PROC_WRITE
;
msg
.
rpc_argp
=
&
data
->
u
.
v3
.
args
;
msg
.
rpc_resp
=
&
data
->
u
.
v3
.
res
;
msg
.
rpc_cred
=
data
->
cred
;
rpc_call_setup
(
&
data
->
task
,
&
msg
,
0
);
}
static
void
nfs3_commit_done
(
struct
rpc_task
*
task
)
{
if
(
nfs3_async_handle_jukebox
(
task
))
return
;
nfs_commit_done
(
task
);
}
static
void
nfs3_proc_commit_setup
(
struct
nfs_write_data
*
data
,
u64
start
,
u32
len
,
int
how
)
{
struct
rpc_task
*
task
=
&
data
->
task
;
struct
inode
*
inode
=
data
->
inode
;
int
flags
;
struct
rpc_message
msg
;
data
->
u
.
v3
.
args
.
fh
=
NFS_FH
(
data
->
inode
);
data
->
u
.
v3
.
args
.
offset
=
start
;
data
->
u
.
v3
.
args
.
count
=
len
;
data
->
u
.
v3
.
res
.
count
=
len
;
data
->
u
.
v3
.
res
.
fattr
=
&
data
->
fattr
;
data
->
u
.
v3
.
res
.
verf
=
&
data
->
verf
;
/* Set the initial flags for the task. */
flags
=
(
how
&
FLUSH_SYNC
)
?
0
:
RPC_TASK_ASYNC
;
/* Finalize the task. */
rpc_init_task
(
task
,
NFS_CLIENT
(
inode
),
nfs3_commit_done
,
flags
);
task
->
tk_calldata
=
data
;
/* Release requests */
task
->
tk_release
=
nfs_writedata_release
;
msg
.
rpc_proc
=
NFS3PROC_COMMIT
;
msg
.
rpc_argp
=
&
data
->
u
.
v3
.
args
;
msg
.
rpc_resp
=
&
data
->
u
.
v3
.
res
;
msg
.
rpc_cred
=
data
->
cred
;
rpc_call_setup
(
&
data
->
task
,
&
msg
,
0
);
}
struct
nfs_rpc_ops
nfs_v3_clientops
=
{
.
version
=
3
,
/* protocol version */
.
getroot
=
nfs3_proc_get_root
,
...
...
@@ -716,4 +826,6 @@ struct nfs_rpc_ops nfs_v3_clientops = {
.
statfs
=
nfs3_proc_statfs
,
.
decode_dirent
=
nfs3_decode_dirent
,
.
read_setup
=
nfs3_proc_read_setup
,
.
write_setup
=
nfs3_proc_write_setup
,
.
commit_setup
=
nfs3_proc_commit_setup
,
};
fs/nfs/proc.c
View file @
5665c2a2
...
...
@@ -312,13 +312,16 @@ nfs_proc_unlink_setup(struct rpc_message *msg, struct dentry *dir, struct qstr *
return
0
;
}
static
void
nfs_proc_unlink_done
(
struct
dentry
*
dir
,
struct
rpc_
message
*
msg
)
static
int
nfs_proc_unlink_done
(
struct
dentry
*
dir
,
struct
rpc_
task
*
task
)
{
struct
rpc_message
*
msg
=
&
task
->
tk_msg
;
if
(
msg
->
rpc_argp
)
{
NFS_CACHEINV
(
dir
->
d_inode
);
kfree
(
msg
->
rpc_argp
);
}
return
0
;
}
static
int
...
...
@@ -512,6 +515,58 @@ nfs_proc_read_setup(struct nfs_read_data *data, unsigned int count)
rpc_call_setup
(
&
data
->
task
,
&
msg
,
0
);
}
static
void
nfs_write_done
(
struct
rpc_task
*
task
)
{
struct
nfs_write_data
*
data
=
(
struct
nfs_write_data
*
)
task
->
tk_calldata
;
nfs_writeback_done
(
task
,
data
->
u
.
v3
.
args
.
stable
,
data
->
u
.
v3
.
args
.
count
,
data
->
u
.
v3
.
res
.
count
);
}
static
void
nfs_proc_write_setup
(
struct
nfs_write_data
*
data
,
unsigned
int
count
,
int
how
)
{
struct
rpc_task
*
task
=
&
data
->
task
;
struct
inode
*
inode
=
data
->
inode
;
struct
nfs_page
*
req
;
int
flags
;
struct
rpc_message
msg
;
/* Note: NFSv2 ignores @stable and always uses NFS_FILE_SYNC */
req
=
nfs_list_entry
(
data
->
pages
.
next
);
data
->
u
.
v3
.
args
.
fh
=
NFS_FH
(
inode
);
data
->
u
.
v3
.
args
.
offset
=
req_offset
(
req
)
+
req
->
wb_offset
;
data
->
u
.
v3
.
args
.
pgbase
=
req
->
wb_offset
;
data
->
u
.
v3
.
args
.
count
=
count
;
data
->
u
.
v3
.
args
.
stable
=
NFS_FILE_SYNC
;
data
->
u
.
v3
.
args
.
pages
=
data
->
pagevec
;
data
->
u
.
v3
.
res
.
fattr
=
&
data
->
fattr
;
data
->
u
.
v3
.
res
.
count
=
count
;
data
->
u
.
v3
.
res
.
verf
=
&
data
->
verf
;
/* Set the initial flags for the task. */
flags
=
(
how
&
FLUSH_SYNC
)
?
0
:
RPC_TASK_ASYNC
;
/* Finalize the task. */
rpc_init_task
(
task
,
NFS_CLIENT
(
inode
),
nfs_write_done
,
flags
);
task
->
tk_calldata
=
data
;
/* Release requests */
task
->
tk_release
=
nfs_writedata_release
;
msg
.
rpc_proc
=
NFSPROC_WRITE
;
msg
.
rpc_argp
=
&
data
->
u
.
v3
.
args
;
msg
.
rpc_resp
=
&
data
->
u
.
v3
.
res
;
msg
.
rpc_cred
=
data
->
cred
;
rpc_call_setup
(
&
data
->
task
,
&
msg
,
0
);
}
static
void
nfs_proc_commit_setup
(
struct
nfs_write_data
*
data
,
u64
start
,
u32
len
,
int
how
)
{
BUG
();
}
struct
nfs_rpc_ops
nfs_v2_clientops
=
{
.
version
=
2
,
/* protocol version */
.
getroot
=
nfs_proc_get_root
,
...
...
@@ -537,4 +592,6 @@ struct nfs_rpc_ops nfs_v2_clientops = {
.
statfs
=
nfs_proc_statfs
,
.
decode_dirent
=
nfs_decode_dirent
,
.
read_setup
=
nfs_proc_read_setup
,
.
write_setup
=
nfs_proc_write_setup
,
.
commit_setup
=
nfs_proc_commit_setup
,
};
fs/nfs/unlink.c
View file @
5665c2a2
...
...
@@ -123,13 +123,12 @@ nfs_async_unlink_done(struct rpc_task *task)
struct
dentry
*
dir
=
data
->
dir
;
struct
inode
*
dir_i
;
if
(
nfs_async_handle_jukebox
(
task
))
return
;
if
(
!
dir
)
return
;
dir_i
=
dir
->
d_inode
;
nfs_zap_caches
(
dir_i
);
NFS_PROTO
(
dir_i
)
->
unlink_done
(
dir
,
&
task
->
tk_msg
);
if
(
NFS_PROTO
(
dir_i
)
->
unlink_done
(
dir
,
task
))
return
;
put_rpccred
(
data
->
cred
);
data
->
cred
=
NULL
;
dput
(
dir
);
...
...
fs/nfs/write.c
View file @
5665c2a2
...
...
@@ -63,23 +63,6 @@
#define NFSDBG_FACILITY NFSDBG_PAGECACHE
/*
* Local structures
*
* This is the struct where the WRITE/COMMIT arguments go.
*/
struct
nfs_write_data
{
struct
rpc_task
task
;
struct
inode
*
inode
;
struct
rpc_cred
*
cred
;
struct
nfs_writeargs
args
;
/* argument struct */
struct
nfs_writeres
res
;
/* result struct */
struct
nfs_fattr
fattr
;
struct
nfs_writeverf
verf
;
struct
list_head
pages
;
/* Coalesced requests we wish to flush */
struct
page
*
pagevec
[
NFS_WRITE_MAXIOV
];
};
/*
* Local function declarations
*/
...
...
@@ -87,15 +70,6 @@ static struct nfs_page * nfs_update_request(struct file*, struct inode *,
struct
page
*
,
unsigned
int
,
unsigned
int
);
static
void
nfs_strategy
(
struct
inode
*
inode
);
static
void
nfs_writeback_done
(
struct
rpc_task
*
);
#if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4)
static
void
nfs_commit_done
(
struct
rpc_task
*
);
#endif
/* Hack for future NFS swap support */
#ifndef IS_SWAPFILE
# define IS_SWAPFILE(inode) (0)
#endif
static
kmem_cache_t
*
nfs_wdata_cachep
;
...
...
@@ -106,7 +80,6 @@ static __inline__ struct nfs_write_data *nfs_writedata_alloc(void)
if
(
p
)
{
memset
(
p
,
0
,
sizeof
(
*
p
));
INIT_LIST_HEAD
(
&
p
->
pages
);
p
->
args
.
pages
=
p
->
pagevec
;
}
return
p
;
}
...
...
@@ -116,7 +89,7 @@ static __inline__ void nfs_writedata_free(struct nfs_write_data *p)
kmem_cache_free
(
nfs_wdata_cachep
,
p
);
}
static
void
nfs_writedata_release
(
struct
rpc_task
*
task
)
void
nfs_writedata_release
(
struct
rpc_task
*
task
)
{
struct
nfs_write_data
*
wdata
=
(
struct
nfs_write_data
*
)
task
->
tk_calldata
;
nfs_writedata_free
(
wdata
);
...
...
@@ -860,8 +833,10 @@ nfs_updatepage(struct file *file, struct page *page, unsigned int offset, unsign
* Set up the argument/result storage required for the RPC call.
*/
static
void
nfs_write_rpcsetup
(
struct
list_head
*
head
,
struct
nfs_write_data
*
data
)
nfs_write_rpcsetup
(
struct
list_head
*
head
,
struct
nfs_write_data
*
data
,
int
how
)
{
struct
rpc_task
*
task
=
&
data
->
task
;
struct
inode
*
inode
;
struct
nfs_page
*
req
;
struct
page
**
pages
;
unsigned
int
count
;
...
...
@@ -869,27 +844,28 @@ nfs_write_rpcsetup(struct list_head *head, struct nfs_write_data *data)
/* Set up the RPC argument and reply structs
* NB: take care not to mess about with data->commit et al. */
pages
=
data
->
args
.
pages
;
pages
=
data
->
pagevec
;
count
=
0
;
while
(
!
list_empty
(
head
))
{
struct
nfs_page
*
req
=
nfs_list_entry
(
head
->
next
);
req
=
nfs_list_entry
(
head
->
next
);
nfs_list_remove_request
(
req
);
nfs_list_add_request
(
req
,
&
data
->
pages
);
*
pages
++
=
req
->
wb_page
;
count
+=
req
->
wb_bytes
;
}
req
=
nfs_list_entry
(
data
->
pages
.
next
);
data
->
inode
=
req
->
wb_inode
;
data
->
inode
=
inode
=
req
->
wb_inode
;
data
->
cred
=
req
->
wb_cred
;
data
->
args
.
fh
=
NFS_FH
(
req
->
wb_inode
);
data
->
args
.
offset
=
req_offset
(
req
)
+
req
->
wb_offset
;
data
->
args
.
pgbase
=
req
->
wb_offset
;
data
->
args
.
count
=
count
;
data
->
res
.
fattr
=
&
data
->
fattr
;
data
->
res
.
count
=
count
;
data
->
res
.
verf
=
&
data
->
verf
;
}
NFS_PROTO
(
inode
)
->
write_setup
(
data
,
count
,
how
);
dprintk
(
"NFS: %4d initiated write call (req %s/%Ld, %u bytes @ offset %Lu)
\n
"
,
task
->
tk_pid
,
inode
->
i_sb
->
s_id
,
(
long
long
)
NFS_FILEID
(
inode
),
count
,
(
unsigned
long
long
)
req_offset
(
req
)
+
req
->
wb_offset
);
}
/*
* Create an RPC task for the given write request and kick it.
...
...
@@ -902,64 +878,20 @@ nfs_write_rpcsetup(struct list_head *head, struct nfs_write_data *data)
static
int
nfs_flush_one
(
struct
list_head
*
head
,
struct
inode
*
inode
,
int
how
)
{
struct
nfs_inode
*
nfsi
=
NFS_I
(
inode
);
struct
rpc_clnt
*
clnt
=
NFS_CLIENT
(
inode
);
struct
nfs_write_data
*
data
;
struct
rpc_task
*
task
;
struct
rpc_message
msg
;
int
flags
,
nfsvers
=
NFS_PROTO
(
inode
)
->
version
,
async
=
!
(
how
&
FLUSH_SYNC
),
stable
=
(
how
&
FLUSH_STABLE
);
sigset_t
oldset
;
data
=
nfs_writedata_alloc
();
if
(
!
data
)
goto
out_bad
;
task
=
&
data
->
task
;
/* Set the initial flags for the task. */
flags
=
(
async
)
?
RPC_TASK_ASYNC
:
0
;
/* Set up the argument struct */
nfs_write_rpcsetup
(
head
,
data
);
if
(
nfsvers
<
3
)
data
->
args
.
stable
=
NFS_FILE_SYNC
;
else
if
(
stable
)
{
if
(
!
nfsi
->
ncommit
)
data
->
args
.
stable
=
NFS_FILE_SYNC
;
else
data
->
args
.
stable
=
NFS_DATA_SYNC
;
}
else
data
->
args
.
stable
=
NFS_UNSTABLE
;
/* Finalize the task. */
rpc_init_task
(
task
,
clnt
,
nfs_writeback_done
,
flags
);
task
->
tk_calldata
=
data
;
/* Release requests */
task
->
tk_release
=
nfs_writedata_release
;
#ifdef CONFIG_NFS_V3
msg
.
rpc_proc
=
(
nfsvers
==
3
)
?
NFS3PROC_WRITE
:
NFSPROC_WRITE
;
#else
msg
.
rpc_proc
=
NFSPROC_WRITE
;
#endif
msg
.
rpc_argp
=
&
data
->
args
;
msg
.
rpc_resp
=
&
data
->
res
;
msg
.
rpc_cred
=
data
->
cred
;
dprintk
(
"NFS: %4d initiated write call (req %s/%Ld, %u bytes @ offset %Lu)
\n
"
,
task
->
tk_pid
,
inode
->
i_sb
->
s_id
,
(
long
long
)
NFS_FILEID
(
inode
),
(
unsigned
int
)
data
->
args
.
count
,
(
unsigned
long
long
)
data
->
args
.
offset
);
nfs_write_rpcsetup
(
head
,
data
,
how
);
rpc_clnt_sigmask
(
clnt
,
&
oldset
);
rpc_call_setup
(
task
,
&
msg
,
0
);
lock_kernel
();
rpc_execute
(
task
);
rpc_execute
(
&
data
->
task
);
unlock_kernel
();
rpc_clnt_sigunmask
(
clnt
,
&
oldset
);
return
0
;
...
...
@@ -1004,12 +936,11 @@ nfs_flush_list(struct list_head *head, int wpages, int how)
/*
* This function is called when the WRITE call is complete.
*/
static
void
nfs_writeback_done
(
struct
rpc_task
*
task
)
void
nfs_writeback_done
(
struct
rpc_task
*
task
,
int
stable
,
unsigned
int
arg_count
,
unsigned
int
res_count
)
{
struct
nfs_write_data
*
data
=
(
struct
nfs_write_data
*
)
task
->
tk_calldata
;
struct
nfs_writeargs
*
argp
=
&
data
->
args
;
struct
nfs_writeres
*
resp
=
&
data
->
res
;
struct
inode
*
inode
=
data
->
inode
;
struct
nfs_page
*
req
;
struct
page
*
page
;
...
...
@@ -1017,11 +948,8 @@ nfs_writeback_done(struct rpc_task *task)
dprintk
(
"NFS: %4d nfs_writeback_done (status %d)
\n
"
,
task
->
tk_pid
,
task
->
tk_status
);
if
(
nfs_async_handle_jukebox
(
task
))
return
;
/* We can't handle that yet but we check for it nevertheless */
if
(
res
p
->
count
<
argp
->
count
&&
task
->
tk_status
>=
0
)
{
if
(
res
_count
<
arg_
count
&&
task
->
tk_status
>=
0
)
{
static
unsigned
long
complain
;
if
(
time_before
(
complain
,
jiffies
))
{
printk
(
KERN_WARNING
...
...
@@ -1033,7 +961,7 @@ nfs_writeback_done(struct rpc_task *task)
task
->
tk_status
=
-
EIO
;
}
#if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4)
if
(
resp
->
verf
->
committed
<
argp
->
stable
&&
task
->
tk_status
>=
0
)
{
if
(
data
->
verf
.
committed
<
stable
&&
task
->
tk_status
>=
0
)
{
/* We tried a write call, but the server did not
* commit data to stable storage even though we
* requested it.
...
...
@@ -1045,10 +973,10 @@ nfs_writeback_done(struct rpc_task *task)
static
unsigned
long
complain
;
if
(
time_before
(
complain
,
jiffies
))
{
dprintk
(
"NFS: faulty NFS
v3
server %s:"
dprintk
(
"NFS: faulty NFS server %s:"
" (committed = %d) != (stable = %d)
\n
"
,
NFS_SERVER
(
inode
)
->
hostname
,
resp
->
verf
->
committed
,
argp
->
stable
);
data
->
verf
.
committed
,
stable
);
complain
=
jiffies
+
300
*
HZ
;
}
}
...
...
@@ -1060,7 +988,7 @@ nfs_writeback_done(struct rpc_task *task)
* writebacks since the page->count is kept > 1 for as long
* as the page has a write request pending.
*/
nfs_write_attributes
(
inode
,
resp
->
fattr
);
nfs_write_attributes
(
inode
,
&
data
->
fattr
);
while
(
!
list_empty
(
&
data
->
pages
))
{
req
=
nfs_list_entry
(
data
->
pages
.
next
);
nfs_list_remove_request
(
req
);
...
...
@@ -1083,12 +1011,12 @@ nfs_writeback_done(struct rpc_task *task)
}
#if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4)
if
(
argp
->
stable
!=
NFS_UNSTABLE
||
resp
->
verf
->
committed
==
NFS_FILE_SYNC
)
{
if
(
stable
!=
NFS_UNSTABLE
||
data
->
verf
.
committed
==
NFS_FILE_SYNC
)
{
nfs_inode_remove_request
(
req
);
dprintk
(
" OK
\n
"
);
goto
next
;
}
memcpy
(
&
req
->
wb_verf
,
resp
->
verf
,
sizeof
(
req
->
wb_verf
));
memcpy
(
&
req
->
wb_verf
,
&
data
->
verf
,
sizeof
(
req
->
wb_verf
));
req
->
wb_timeout
=
jiffies
+
NFS_COMMIT_DELAY
;
nfs_mark_request_commit
(
req
);
dprintk
(
" marked for commit
\n
"
);
...
...
@@ -1106,8 +1034,9 @@ nfs_writeback_done(struct rpc_task *task)
* Set up the argument/result storage required for the RPC call.
*/
static
void
nfs_commit_rpcsetup
(
struct
list_head
*
head
,
struct
nfs_write_data
*
data
)
nfs_commit_rpcsetup
(
struct
list_head
*
head
,
struct
nfs_write_data
*
data
,
int
how
)
{
struct
rpc_task
*
task
=
&
data
->
task
;
struct
nfs_page
*
first
,
*
last
;
struct
inode
*
inode
;
loff_t
start
,
end
,
len
;
...
...
@@ -1133,11 +1062,10 @@ nfs_commit_rpcsetup(struct list_head *head, struct nfs_write_data *data)
data
->
inode
=
inode
;
data
->
cred
=
first
->
wb_cred
;
data
->
args
.
fh
=
NFS_FH
(
inode
);
data
->
args
.
offset
=
start
;
data
->
res
.
count
=
data
->
args
.
count
=
(
u32
)
len
;
data
->
res
.
fattr
=
&
data
->
fattr
;
data
->
res
.
verf
=
&
data
->
verf
;
NFS_PROTO
(
inode
)
->
commit_setup
(
data
,
start
,
len
,
how
);
dprintk
(
"NFS: %4d initiated commit call
\n
"
,
task
->
tk_pid
);
}
/*
...
...
@@ -1146,43 +1074,23 @@ nfs_commit_rpcsetup(struct list_head *head, struct nfs_write_data *data)
int
nfs_commit_list
(
struct
list_head
*
head
,
int
how
)
{
struct
rpc_message
msg
;
struct
rpc_clnt
*
clnt
;
struct
nfs_write_data
*
data
;
struct
rpc_task
*
task
;
struct
nfs_page
*
req
;
int
flags
,
async
=
!
(
how
&
FLUSH_SYNC
);
sigset_t
oldset
;
data
=
nfs_writedata_alloc
();
if
(
!
data
)
goto
out_bad
;
task
=
&
data
->
task
;
flags
=
(
async
)
?
RPC_TASK_ASYNC
:
0
;
/* Set up the argument struct */
nfs_commit_rpcsetup
(
head
,
data
);
req
=
nfs_list_entry
(
data
->
pages
.
next
);
clnt
=
NFS_CLIENT
(
req
->
wb_inode
);
rpc_init_task
(
task
,
clnt
,
nfs_commit_done
,
flags
);
task
->
tk_calldata
=
data
;
/* Release requests */
task
->
tk_release
=
nfs_writedata_release
;
nfs_commit_rpcsetup
(
head
,
data
,
how
);
clnt
=
NFS_CLIENT
(
data
->
inode
);
msg
.
rpc_proc
=
NFS3PROC_COMMIT
;
msg
.
rpc_argp
=
&
data
->
args
;
msg
.
rpc_resp
=
&
data
->
res
;
msg
.
rpc_cred
=
data
->
cred
;
dprintk
(
"NFS: %4d initiated commit call
\n
"
,
task
->
tk_pid
);
rpc_clnt_sigmask
(
clnt
,
&
oldset
);
rpc_call_setup
(
task
,
&
msg
,
0
);
lock_kernel
();
rpc_execute
(
task
);
rpc_execute
(
&
data
->
task
);
unlock_kernel
();
rpc_clnt_sigunmask
(
clnt
,
&
oldset
);
return
0
;
...
...
@@ -1199,21 +1107,17 @@ nfs_commit_list(struct list_head *head, int how)
/*
* COMMIT call returned
*/
static
void
void
nfs_commit_done
(
struct
rpc_task
*
task
)
{
struct
nfs_write_data
*
data
=
(
struct
nfs_write_data
*
)
task
->
tk_calldata
;
struct
nfs_writeres
*
resp
=
&
data
->
res
;
struct
nfs_page
*
req
;
struct
inode
*
inode
=
data
->
inode
;
dprintk
(
"NFS: %4d nfs_commit_done (status %d)
\n
"
,
task
->
tk_pid
,
task
->
tk_status
);
if
(
nfs_async_handle_jukebox
(
task
))
return
;
nfs_write_attributes
(
inode
,
resp
->
fattr
);
nfs_write_attributes
(
inode
,
&
data
->
fattr
);
while
(
!
list_empty
(
&
data
->
pages
))
{
req
=
nfs_list_entry
(
data
->
pages
.
next
);
nfs_list_remove_request
(
req
);
...
...
include/linux/nfs_fs.h
View file @
5665c2a2
...
...
@@ -323,6 +323,14 @@ extern void nfs_complete_unlink(struct dentry *);
extern
int
nfs_writepage
(
struct
page
*
);
extern
int
nfs_flush_incompatible
(
struct
file
*
file
,
struct
page
*
page
);
extern
int
nfs_updatepage
(
struct
file
*
,
struct
page
*
,
unsigned
int
,
unsigned
int
);
extern
void
nfs_writeback_done
(
struct
rpc_task
*
task
,
int
stable
,
unsigned
int
arg_count
,
unsigned
int
res_count
);
extern
void
nfs_writedata_release
(
struct
rpc_task
*
task
);
#if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4)
extern
void
nfs_commit_done
(
struct
rpc_task
*
);
#endif
/*
* Try to write back everything synchronously (but check the
* return value!)
...
...
@@ -462,28 +470,7 @@ extern void * nfs_root_data(void);
__retval; \
})
#ifdef CONFIG_NFS_V3
#define NFS_JUKEBOX_RETRY_TIME (5 * HZ)
static
inline
int
nfs_async_handle_jukebox
(
struct
rpc_task
*
task
)
{
if
(
task
->
tk_status
!=
-
EJUKEBOX
)
return
0
;
task
->
tk_status
=
0
;
rpc_restart_call
(
task
);
rpc_delay
(
task
,
NFS_JUKEBOX_RETRY_TIME
);
return
1
;
}
#else
static
inline
int
nfs_async_handle_jukebox
(
struct
rpc_task
*
task
)
{
return
0
;
}
#endif
/* CONFIG_NFS_V3 */
#endif
/* __KERNEL__ */
...
...
include/linux/nfs_xdr.h
View file @
5665c2a2
...
...
@@ -67,6 +67,7 @@ struct nfs_fsinfo {
__u64
afiles
;
/* # of files available to user */
__u32
linkmax
;
/* max # of hard links */
__u32
namelen
;
/* max name length */
__u32
lease_time
;
/* in seconds */
};
/*
...
...
@@ -326,6 +327,25 @@ struct nfs_read_data {
}
u
;
};
struct
nfs_write_data
{
struct
rpc_task
task
;
struct
inode
*
inode
;
struct
rpc_cred
*
cred
;
struct
nfs_fattr
fattr
;
struct
nfs_writeverf
verf
;
struct
list_head
pages
;
/* Coalesced requests we wish to flush */
struct
page
*
pagevec
[
NFS_WRITE_MAXIOV
];
union
{
struct
{
struct
nfs_writeargs
args
;
struct
nfs_writeres
res
;
}
v3
;
#ifdef CONFIG_NFS_V4
/* NFSv4 data to come here... */
#endif
}
u
;
};
/*
* RPC procedure vector for NFSv2/NFSv3 demuxing
*/
...
...
@@ -356,7 +376,7 @@ struct nfs_rpc_ops {
int
(
*
remove
)
(
struct
inode
*
,
struct
qstr
*
);
int
(
*
unlink_setup
)
(
struct
rpc_message
*
,
struct
dentry
*
,
struct
qstr
*
);
void
(
*
unlink_done
)
(
struct
dentry
*
,
struct
rpc_message
*
);
int
(
*
unlink_done
)
(
struct
dentry
*
,
struct
rpc_task
*
);
int
(
*
rename
)
(
struct
inode
*
,
struct
qstr
*
,
struct
inode
*
,
struct
qstr
*
);
int
(
*
link
)
(
struct
inode
*
,
struct
inode
*
,
struct
qstr
*
);
...
...
@@ -374,6 +394,8 @@ struct nfs_rpc_ops {
struct
nfs_fsinfo
*
);
u32
*
(
*
decode_dirent
)(
u32
*
,
struct
nfs_entry
*
,
int
plus
);
void
(
*
read_setup
)
(
struct
nfs_read_data
*
,
unsigned
int
count
);
void
(
*
write_setup
)
(
struct
nfs_write_data
*
,
unsigned
int
count
,
int
how
);
void
(
*
commit_setup
)
(
struct
nfs_write_data
*
,
u64
start
,
u32
len
,
int
how
);
};
/*
...
...
include/linux/serialP.h
View file @
5665c2a2
...
...
@@ -131,6 +131,9 @@ struct rs_multiport_struct {
* Digital did something really horribly wrong with the OUT1 and OUT2
* lines on at least some ALPHA's. The failure mode is that if either
* is cleared, the machine locks up with endless interrupts.
*
* This is still used by arch/mips/au1000/common/serial.c for some weird
* reason (mips != alpha!)
*/
#define ALPHA_KLUDGE_MCR (UART_MCR_OUT2 | UART_MCR_OUT1)
#else
...
...
@@ -138,29 +141,8 @@ struct rs_multiport_struct {
#endif
/*
*
Structures and definitions for PCI support
*
Definitions for PCI support.
*/
struct
pci_dev
;
struct
pci_board
{
int
flags
;
int
num_ports
;
int
base_baud
;
int
uart_offset
;
int
reg_shift
;
int
(
*
init_fn
)(
struct
pci_dev
*
dev
,
struct
pci_board
*
board
,
int
enable
);
int
first_uart_offset
;
};
struct
pci_board_inst
{
struct
pci_board
board
;
struct
pci_dev
*
dev
;
};
#ifndef PCI_ANY_ID
#define PCI_ANY_ID (~0)
#endif
#define SPCI_FL_BASE_MASK 0x0007
#define SPCI_FL_BASE0 0x0000
#define SPCI_FL_BASE1 0x0001
...
...
net/sunrpc/xprt.c
View file @
5665c2a2
...
...
@@ -1446,6 +1446,8 @@ xprt_bind_socket(struct rpc_xprt *xprt, struct socket *sock)
sk
->
no_check
=
UDP_CSUM_NORCV
;
xprt_set_connected
(
xprt
);
}
else
{
struct
tcp_opt
*
tp
=
tcp_sk
(
sk
);
tp
->
nonagle
=
1
;
/* disable Nagle's algorithm */
sk
->
data_ready
=
tcp_data_ready
;
sk
->
state_change
=
tcp_state_change
;
xprt_clear_connected
(
xprt
);
...
...
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