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
nexedi
linux
Commits
23d54a89
Commit
23d54a89
authored
Mar 08, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/sparc-2.6
into ppc970.osdl.org:/home/torvalds/v2.5/linux
parents
64994feb
5f3ac182
Changes
28
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
150 additions
and
120 deletions
+150
-120
fs/jfs/acl.c
fs/jfs/acl.c
+3
-3
fs/jfs/jfs_acl.h
fs/jfs/jfs_acl.h
+0
-2
fs/jfs/jfs_dmap.c
fs/jfs/jfs_dmap.c
+10
-10
fs/jfs/jfs_dmap.h
fs/jfs/jfs_dmap.h
+0
-2
fs/jfs/jfs_dtree.c
fs/jfs/jfs_dtree.c
+3
-7
fs/jfs/jfs_dtree.h
fs/jfs/jfs_dtree.h
+0
-3
fs/jfs/jfs_extent.c
fs/jfs/jfs_extent.c
+0
-1
fs/jfs/jfs_incore.h
fs/jfs/jfs_incore.h
+0
-1
fs/jfs/jfs_inode.c
fs/jfs/jfs_inode.c
+0
-1
fs/jfs/jfs_logmgr.c
fs/jfs/jfs_logmgr.c
+3
-2
fs/jfs/jfs_logmgr.h
fs/jfs/jfs_logmgr.h
+0
-1
fs/jfs/jfs_txnmgr.c
fs/jfs/jfs_txnmgr.c
+27
-35
fs/jfs/jfs_txnmgr.h
fs/jfs/jfs_txnmgr.h
+5
-1
fs/jfs/jfs_unicode.c
fs/jfs/jfs_unicode.c
+20
-4
fs/jfs/jfs_xtree.c
fs/jfs/jfs_xtree.c
+2
-2
fs/jfs/jfs_xtree.h
fs/jfs/jfs_xtree.h
+2
-0
fs/jfs/namei.c
fs/jfs/namei.c
+24
-18
fs/jfs/super.c
fs/jfs/super.c
+1
-1
fs/jfs/xattr.c
fs/jfs/xattr.c
+1
-0
include/linux/sysctl.h
include/linux/sysctl.h
+2
-1
include/net/ipv6.h
include/net/ipv6.h
+1
-0
net/core/netfilter.c
net/core/netfilter.c
+1
-0
net/ipv4/ip_sockglue.c
net/ipv4/ip_sockglue.c
+13
-1
net/ipv4/ipvs/ip_vs_ctl.c
net/ipv4/ipvs/ip_vs_ctl.c
+3
-3
net/ipv6/ipv6_sockglue.c
net/ipv6/ipv6_sockglue.c
+9
-2
net/ipv6/mcast.c
net/ipv6/mcast.c
+8
-0
net/ipv6/sysctl_net_ipv6.c
net/ipv6/sysctl_net_ipv6.c
+8
-0
net/sched/sch_red.c
net/sched/sch_red.c
+4
-19
No files found.
fs/jfs/acl.c
View file @
23d54a89
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
#include "jfs_xattr.h"
#include "jfs_xattr.h"
#include "jfs_acl.h"
#include "jfs_acl.h"
struct
posix_acl
*
jfs_get_acl
(
struct
inode
*
inode
,
int
type
)
st
atic
st
ruct
posix_acl
*
jfs_get_acl
(
struct
inode
*
inode
,
int
type
)
{
{
struct
posix_acl
*
acl
;
struct
posix_acl
*
acl
;
char
*
ea_name
;
char
*
ea_name
;
...
@@ -74,7 +74,7 @@ struct posix_acl *jfs_get_acl(struct inode *inode, int type)
...
@@ -74,7 +74,7 @@ struct posix_acl *jfs_get_acl(struct inode *inode, int type)
return
acl
;
return
acl
;
}
}
int
jfs_set_acl
(
struct
inode
*
inode
,
int
type
,
struct
posix_acl
*
acl
)
static
int
jfs_set_acl
(
struct
inode
*
inode
,
int
type
,
struct
posix_acl
*
acl
)
{
{
char
*
ea_name
;
char
*
ea_name
;
struct
jfs_inode_info
*
ji
=
JFS_IP
(
inode
);
struct
jfs_inode_info
*
ji
=
JFS_IP
(
inode
);
...
@@ -247,7 +247,7 @@ int jfs_init_acl(struct inode *inode, struct inode *dir)
...
@@ -247,7 +247,7 @@ int jfs_init_acl(struct inode *inode, struct inode *dir)
return
rc
;
return
rc
;
}
}
int
jfs_acl_chmod
(
struct
inode
*
inode
)
static
int
jfs_acl_chmod
(
struct
inode
*
inode
)
{
{
struct
posix_acl
*
acl
,
*
clone
;
struct
posix_acl
*
acl
,
*
clone
;
int
rc
;
int
rc
;
...
...
fs/jfs/jfs_acl.h
View file @
23d54a89
...
@@ -22,8 +22,6 @@
...
@@ -22,8 +22,6 @@
#include <linux/xattr_acl.h>
#include <linux/xattr_acl.h>
struct
posix_acl
*
jfs_get_acl
(
struct
inode
*
,
int
);
int
jfs_set_acl
(
struct
inode
*
,
int
,
struct
posix_acl
*
);
int
jfs_permission
(
struct
inode
*
,
int
,
struct
nameidata
*
);
int
jfs_permission
(
struct
inode
*
,
int
,
struct
nameidata
*
);
int
jfs_init_acl
(
struct
inode
*
,
struct
inode
*
);
int
jfs_init_acl
(
struct
inode
*
,
struct
inode
*
);
int
jfs_setattr
(
struct
dentry
*
,
struct
iattr
*
);
int
jfs_setattr
(
struct
dentry
*
,
struct
iattr
*
);
...
...
fs/jfs/jfs_dmap.c
View file @
23d54a89
...
@@ -124,7 +124,7 @@ static int dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb,
...
@@ -124,7 +124,7 @@ static int dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb,
s64
*
results
);
s64
*
results
);
static
int
dbAllocCtl
(
struct
bmap
*
bmp
,
s64
nblocks
,
int
l2nb
,
s64
blkno
,
static
int
dbAllocCtl
(
struct
bmap
*
bmp
,
s64
nblocks
,
int
l2nb
,
s64
blkno
,
s64
*
results
);
s64
*
results
);
int
dbExtend
(
struct
inode
*
ip
,
s64
blkno
,
s64
nblocks
,
s64
addnblocks
);
static
int
dbExtend
(
struct
inode
*
ip
,
s64
blkno
,
s64
nblocks
,
s64
addnblocks
);
static
int
dbFindBits
(
u32
word
,
int
l2nb
);
static
int
dbFindBits
(
u32
word
,
int
l2nb
);
static
int
dbFindCtl
(
struct
bmap
*
bmp
,
int
l2nb
,
int
level
,
s64
*
blkno
);
static
int
dbFindCtl
(
struct
bmap
*
bmp
,
int
l2nb
,
int
level
,
s64
*
blkno
);
static
int
dbFindLeaf
(
dmtree_t
*
tp
,
int
l2nb
,
int
*
leafidx
);
static
int
dbFindLeaf
(
dmtree_t
*
tp
,
int
l2nb
,
int
*
leafidx
);
...
@@ -134,10 +134,10 @@ static int dbFreeDmap(struct bmap * bmp, struct dmap * dp, s64 blkno,
...
@@ -134,10 +134,10 @@ static int dbFreeDmap(struct bmap * bmp, struct dmap * dp, s64 blkno,
int
nblocks
);
int
nblocks
);
static
int
dbMaxBud
(
u8
*
cp
);
static
int
dbMaxBud
(
u8
*
cp
);
s64
dbMapFileSizeToMapSize
(
struct
inode
*
ipbmap
);
s64
dbMapFileSizeToMapSize
(
struct
inode
*
ipbmap
);
int
blkstol2
(
s64
nb
);
static
int
blkstol2
(
s64
nb
);
int
cntlz
(
u32
value
);
static
int
cntlz
(
u32
value
);
int
cnttz
(
u32
word
);
static
int
cnttz
(
u32
word
);
static
int
dbAllocDmapBU
(
struct
bmap
*
bmp
,
struct
dmap
*
dp
,
s64
blkno
,
static
int
dbAllocDmapBU
(
struct
bmap
*
bmp
,
struct
dmap
*
dp
,
s64
blkno
,
int
nblocks
);
int
nblocks
);
...
@@ -155,7 +155,7 @@ static int dbGetL2AGSize(s64 nblocks);
...
@@ -155,7 +155,7 @@ static int dbGetL2AGSize(s64 nblocks);
* into the table, with the table elements yielding the maximum
* into the table, with the table elements yielding the maximum
* binary buddy of free bits within the character.
* binary buddy of free bits within the character.
*/
*/
s
igned
char
budtab
[
256
]
=
{
s
tatic
s8
budtab
[
256
]
=
{
3
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
3
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
...
@@ -942,7 +942,7 @@ int dbAlloc(struct inode *ip, s64 hint, s64 nblocks, s64 * results)
...
@@ -942,7 +942,7 @@ int dbAlloc(struct inode *ip, s64 hint, s64 nblocks, s64 * results)
return
(
rc
);
return
(
rc
);
}
}
#ifdef _NOTYET
/*
/*
* NAME: dbAllocExact()
* NAME: dbAllocExact()
*
*
...
@@ -1009,7 +1009,7 @@ int dbAllocExact(struct inode *ip, s64 blkno, int nblocks)
...
@@ -1009,7 +1009,7 @@ int dbAllocExact(struct inode *ip, s64 blkno, int nblocks)
return
(
rc
);
return
(
rc
);
}
}
#endif
/* _NOTYET */
/*
/*
* NAME: dbReAlloc()
* NAME: dbReAlloc()
...
@@ -1092,7 +1092,7 @@ dbReAlloc(struct inode *ip,
...
@@ -1092,7 +1092,7 @@ dbReAlloc(struct inode *ip,
* -ENOSPC - insufficient disk resources
* -ENOSPC - insufficient disk resources
* -EIO - i/o error
* -EIO - i/o error
*/
*/
int
dbExtend
(
struct
inode
*
ip
,
s64
blkno
,
s64
nblocks
,
s64
addnblocks
)
static
int
dbExtend
(
struct
inode
*
ip
,
s64
blkno
,
s64
nblocks
,
s64
addnblocks
)
{
{
struct
jfs_sb_info
*
sbi
=
JFS_SBI
(
ip
->
i_sb
);
struct
jfs_sb_info
*
sbi
=
JFS_SBI
(
ip
->
i_sb
);
s64
lblkno
,
lastblkno
,
extblkno
;
s64
lblkno
,
lastblkno
,
extblkno
;
...
@@ -3022,7 +3022,7 @@ static int dbMaxBud(u8 * cp)
...
@@ -3022,7 +3022,7 @@ static int dbMaxBud(u8 * cp)
* RETURN VALUES:
* RETURN VALUES:
* count of trailing zeros
* count of trailing zeros
*/
*/
int
cnttz
(
u32
word
)
static
int
cnttz
(
u32
word
)
{
{
int
n
;
int
n
;
...
@@ -3047,7 +3047,7 @@ int cnttz(u32 word)
...
@@ -3047,7 +3047,7 @@ int cnttz(u32 word)
* RETURN VALUES:
* RETURN VALUES:
* count of leading zeros
* count of leading zeros
*/
*/
int
cntlz
(
u32
value
)
static
int
cntlz
(
u32
value
)
{
{
int
n
;
int
n
;
...
...
fs/jfs/jfs_dmap.h
View file @
23d54a89
...
@@ -286,8 +286,6 @@ extern int dbNextAG(struct inode *ipbmap);
...
@@ -286,8 +286,6 @@ extern int dbNextAG(struct inode *ipbmap);
extern
int
dbAlloc
(
struct
inode
*
ipbmap
,
s64
hint
,
s64
nblocks
,
s64
*
results
);
extern
int
dbAlloc
(
struct
inode
*
ipbmap
,
s64
hint
,
s64
nblocks
,
s64
*
results
);
extern
int
dbAllocExact
(
struct
inode
*
ip
,
s64
blkno
,
int
nblocks
);
extern
int
dbReAlloc
(
struct
inode
*
ipbmap
,
extern
int
dbReAlloc
(
struct
inode
*
ipbmap
,
s64
blkno
,
s64
nblocks
,
s64
addnblocks
,
s64
*
results
);
s64
blkno
,
s64
nblocks
,
s64
addnblocks
,
s64
*
results
);
...
...
fs/jfs/jfs_dtree.c
View file @
23d54a89
...
@@ -162,9 +162,6 @@ static int dtSplitRoot(tid_t tid, struct inode *ip,
...
@@ -162,9 +162,6 @@ static int dtSplitRoot(tid_t tid, struct inode *ip,
static
int
dtDeleteUp
(
tid_t
tid
,
struct
inode
*
ip
,
struct
metapage
*
fmp
,
static
int
dtDeleteUp
(
tid_t
tid
,
struct
inode
*
ip
,
struct
metapage
*
fmp
,
dtpage_t
*
fp
,
struct
btstack
*
btstack
);
dtpage_t
*
fp
,
struct
btstack
*
btstack
);
static
int
dtSearchNode
(
struct
inode
*
ip
,
s64
lmxaddr
,
pxd_t
*
kpxd
,
struct
btstack
*
btstack
);
static
int
dtRelink
(
tid_t
tid
,
struct
inode
*
ip
,
dtpage_t
*
p
);
static
int
dtRelink
(
tid_t
tid
,
struct
inode
*
ip
,
dtpage_t
*
p
);
static
int
dtReadFirst
(
struct
inode
*
ip
,
struct
btstack
*
btstack
);
static
int
dtReadFirst
(
struct
inode
*
ip
,
struct
btstack
*
btstack
);
...
@@ -2380,7 +2377,7 @@ static int dtDeleteUp(tid_t tid, struct inode *ip,
...
@@ -2380,7 +2377,7 @@ static int dtDeleteUp(tid_t tid, struct inode *ip,
return
0
;
return
0
;
}
}
#ifdef _NOTYET
/*
/*
* NAME: dtRelocate()
* NAME: dtRelocate()
*
*
...
@@ -2575,7 +2572,6 @@ int dtRelocate(tid_t tid, struct inode *ip, s64 lmxaddr, pxd_t * opxd,
...
@@ -2575,7 +2572,6 @@ int dtRelocate(tid_t tid, struct inode *ip, s64 lmxaddr, pxd_t * opxd,
return
rc
;
return
rc
;
}
}
/*
/*
* NAME: dtSearchNode()
* NAME: dtSearchNode()
*
*
...
@@ -2677,7 +2673,7 @@ static int dtSearchNode(struct inode *ip, s64 lmxaddr, pxd_t * kpxd,
...
@@ -2677,7 +2673,7 @@ static int dtSearchNode(struct inode *ip, s64 lmxaddr, pxd_t * kpxd,
goto
loop
;
goto
loop
;
}
}
#endif
/* _NOTYET */
/*
/*
* dtRelink()
* dtRelink()
...
@@ -2933,7 +2929,7 @@ struct jfs_dirent {
...
@@ -2933,7 +2929,7 @@ struct jfs_dirent {
/*
/*
* function to determine next variable-sized jfs_dirent in buffer
* function to determine next variable-sized jfs_dirent in buffer
*/
*/
inline
struct
jfs_dirent
*
next_jfs_dirent
(
struct
jfs_dirent
*
dirent
)
static
inline
struct
jfs_dirent
*
next_jfs_dirent
(
struct
jfs_dirent
*
dirent
)
{
{
return
(
struct
jfs_dirent
*
)
return
(
struct
jfs_dirent
*
)
((
char
*
)
dirent
+
((
char
*
)
dirent
+
...
...
fs/jfs/jfs_dtree.h
View file @
23d54a89
...
@@ -265,9 +265,6 @@ extern int dtInsert(tid_t tid, struct inode *ip, struct component_name * key,
...
@@ -265,9 +265,6 @@ extern int dtInsert(tid_t tid, struct inode *ip, struct component_name * key,
extern
int
dtDelete
(
tid_t
tid
,
struct
inode
*
ip
,
struct
component_name
*
key
,
extern
int
dtDelete
(
tid_t
tid
,
struct
inode
*
ip
,
struct
component_name
*
key
,
ino_t
*
data
,
int
flag
);
ino_t
*
data
,
int
flag
);
extern
int
dtRelocate
(
tid_t
tid
,
struct
inode
*
ip
,
s64
lmxaddr
,
pxd_t
*
opxd
,
s64
nxaddr
);
extern
int
dtModify
(
tid_t
tid
,
struct
inode
*
ip
,
struct
component_name
*
key
,
extern
int
dtModify
(
tid_t
tid
,
struct
inode
*
ip
,
struct
component_name
*
key
,
ino_t
*
orig_ino
,
ino_t
new_ino
,
int
flag
);
ino_t
*
orig_ino
,
ino_t
new_ino
,
int
flag
);
...
...
fs/jfs/jfs_extent.c
View file @
23d54a89
...
@@ -35,7 +35,6 @@ static s64 extRoundDown(s64 nb);
...
@@ -35,7 +35,6 @@ static s64 extRoundDown(s64 nb);
/*
/*
* external references
* external references
*/
*/
extern
int
dbExtend
(
struct
inode
*
,
s64
,
s64
,
s64
);
extern
int
jfs_commit_inode
(
struct
inode
*
,
int
);
extern
int
jfs_commit_inode
(
struct
inode
*
,
int
);
...
...
fs/jfs/jfs_incore.h
View file @
23d54a89
...
@@ -114,7 +114,6 @@ struct jfs_inode_info {
...
@@ -114,7 +114,6 @@ struct jfs_inode_info {
* cflag
* cflag
*/
*/
enum
cflags
{
enum
cflags
{
COMMIT_New
,
/* never committed inode */
COMMIT_Nolink
,
/* inode committed with zero link count */
COMMIT_Nolink
,
/* inode committed with zero link count */
COMMIT_Inlineea
,
/* commit inode inline EA */
COMMIT_Inlineea
,
/* commit inode inline EA */
COMMIT_Freewmap
,
/* free WMAP at iClose() */
COMMIT_Freewmap
,
/* free WMAP at iClose() */
...
...
fs/jfs/jfs_inode.c
View file @
23d54a89
...
@@ -72,7 +72,6 @@ struct inode *ialloc(struct inode *parent, umode_t mode)
...
@@ -72,7 +72,6 @@ struct inode *ialloc(struct inode *parent, umode_t mode)
inode
->
i_generation
=
JFS_SBI
(
sb
)
->
gengen
++
;
inode
->
i_generation
=
JFS_SBI
(
sb
)
->
gengen
++
;
jfs_inode
->
cflag
=
0
;
jfs_inode
->
cflag
=
0
;
set_cflag
(
COMMIT_New
,
inode
);
/* Zero remaining fields */
/* Zero remaining fields */
memset
(
&
jfs_inode
->
acl
,
0
,
sizeof
(
dxd_t
));
memset
(
&
jfs_inode
->
acl
,
0
,
sizeof
(
dxd_t
));
...
...
fs/jfs/jfs_logmgr.c
View file @
23d54a89
...
@@ -196,6 +196,7 @@ static int lbmIOWait(struct lbuf * bp, int flag);
...
@@ -196,6 +196,7 @@ static int lbmIOWait(struct lbuf * bp, int flag);
static
bio_end_io_t
lbmIODone
;
static
bio_end_io_t
lbmIODone
;
static
void
lbmStartIO
(
struct
lbuf
*
bp
);
static
void
lbmStartIO
(
struct
lbuf
*
bp
);
static
void
lmGCwrite
(
struct
jfs_log
*
log
,
int
cant_block
);
static
void
lmGCwrite
(
struct
jfs_log
*
log
,
int
cant_block
);
static
int
lmLogSync
(
struct
jfs_log
*
log
,
int
nosyncwait
);
...
@@ -810,7 +811,7 @@ static void lmGCwrite(struct jfs_log * log, int cant_write)
...
@@ -810,7 +811,7 @@ static void lmGCwrite(struct jfs_log * log, int cant_write)
* NOTE:
* NOTE:
* This routine is called a interrupt time by lbmIODone
* This routine is called a interrupt time by lbmIODone
*/
*/
void
lmPostGC
(
struct
lbuf
*
bp
)
static
void
lmPostGC
(
struct
lbuf
*
bp
)
{
{
unsigned
long
flags
;
unsigned
long
flags
;
struct
jfs_log
*
log
=
bp
->
l_log
;
struct
jfs_log
*
log
=
bp
->
l_log
;
...
@@ -933,7 +934,7 @@ void lmPostGC(struct lbuf * bp)
...
@@ -933,7 +934,7 @@ void lmPostGC(struct lbuf * bp)
*
*
* serialization: LOG_LOCK() held on entry/exit
* serialization: LOG_LOCK() held on entry/exit
*/
*/
int
lmLogSync
(
struct
jfs_log
*
log
,
int
nosyncwait
)
static
int
lmLogSync
(
struct
jfs_log
*
log
,
int
nosyncwait
)
{
{
int
logsize
;
int
logsize
;
int
written
;
/* written since last syncpt */
int
written
;
/* written since last syncpt */
...
...
fs/jfs/jfs_logmgr.h
View file @
23d54a89
...
@@ -505,7 +505,6 @@ struct logsyncblk {
...
@@ -505,7 +505,6 @@ struct logsyncblk {
extern
int
lmLogOpen
(
struct
super_block
*
sb
);
extern
int
lmLogOpen
(
struct
super_block
*
sb
);
extern
int
lmLogClose
(
struct
super_block
*
sb
);
extern
int
lmLogClose
(
struct
super_block
*
sb
);
extern
int
lmLogSync
(
struct
jfs_log
*
log
,
int
nosyncwait
);
extern
int
lmLogShutdown
(
struct
jfs_log
*
log
);
extern
int
lmLogShutdown
(
struct
jfs_log
*
log
);
extern
int
lmLogInit
(
struct
jfs_log
*
log
);
extern
int
lmLogInit
(
struct
jfs_log
*
log
);
extern
int
lmLogFormat
(
struct
jfs_log
*
log
,
s64
logAddress
,
int
logSize
);
extern
int
lmLogFormat
(
struct
jfs_log
*
log
,
s64
logAddress
,
int
logSize
);
...
...
fs/jfs/jfs_txnmgr.c
View file @
23d54a89
...
@@ -168,25 +168,23 @@ extern struct completion jfsIOwait;
...
@@ -168,25 +168,23 @@ extern struct completion jfsIOwait;
/*
/*
* forward references
* forward references
*/
*/
int
diLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
static
int
diLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
,
struct
commit
*
cd
);
struct
tlock
*
tlck
,
struct
commit
*
cd
);
int
dataLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
static
int
dataLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
struct
tlock
*
tlck
);
void
dtLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
static
void
dtLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
struct
tlock
*
tlck
);
void
inlineLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
static
void
mapLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
struct
tlock
*
tlck
);
void
mapLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
static
void
txAbortCommit
(
struct
commit
*
cd
);
static
void
txAbortCommit
(
struct
commit
*
cd
);
static
void
txAllocPMap
(
struct
inode
*
ip
,
struct
maplock
*
maplock
,
static
void
txAllocPMap
(
struct
inode
*
ip
,
struct
maplock
*
maplock
,
struct
tblock
*
tblk
);
struct
tblock
*
tblk
);
void
txForce
(
struct
tblock
*
tblk
);
static
void
txForce
(
struct
tblock
*
tblk
);
static
int
txLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
commit
*
cd
);
static
int
txLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
int
txMoreLock
(
voi
d
);
struct
commit
*
c
d
);
static
void
txUpdateMap
(
struct
tblock
*
tblk
);
static
void
txUpdateMap
(
struct
tblock
*
tblk
);
static
void
txRelease
(
struct
tblock
*
tblk
);
static
void
txRelease
(
struct
tblock
*
tblk
);
void
xtLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
static
void
xtLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
struct
tlock
*
tlck
);
static
void
LogSyncRelease
(
struct
metapage
*
mp
);
static
void
LogSyncRelease
(
struct
metapage
*
mp
);
...
@@ -1240,8 +1238,8 @@ int txCommit(tid_t tid, /* transaction identifier */
...
@@ -1240,8 +1238,8 @@ int txCommit(tid_t tid, /* transaction identifier */
* Ensure that inode isn't reused before
* Ensure that inode isn't reused before
* lazy commit thread finishes processing
* lazy commit thread finishes processing
*/
*/
if
(
tblk
->
xflag
&
(
COMMIT_CREATE
|
COMMIT_DELETE
)
)
{
if
(
tblk
->
xflag
&
COMMIT_DELETE
)
{
atomic_inc
(
&
tblk
->
ip
->
i_count
);
atomic_inc
(
&
tblk
->
u
.
ip
->
i_count
);
/*
/*
* Avoid a rare deadlock
* Avoid a rare deadlock
*
*
...
@@ -1252,13 +1250,13 @@ int txCommit(tid_t tid, /* transaction identifier */
...
@@ -1252,13 +1250,13 @@ int txCommit(tid_t tid, /* transaction identifier */
* commit the transaction synchronously, so the last iput
* commit the transaction synchronously, so the last iput
* will be done by the calling thread (or later)
* will be done by the calling thread (or later)
*/
*/
if
(
tblk
->
ip
->
i_state
&
I_LOCK
)
if
(
tblk
->
u
.
ip
->
i_state
&
I_LOCK
)
tblk
->
xflag
&=
~
COMMIT_LAZY
;
tblk
->
xflag
&=
~
COMMIT_LAZY
;
}
}
ASSERT
((
!
(
tblk
->
xflag
&
COMMIT_DELETE
))
||
ASSERT
((
!
(
tblk
->
xflag
&
COMMIT_DELETE
))
||
((
tblk
->
ip
->
i_nlink
==
0
)
&&
((
tblk
->
u
.
ip
->
i_nlink
==
0
)
&&
!
test_cflag
(
COMMIT_Nolink
,
tblk
->
ip
)));
!
test_cflag
(
COMMIT_Nolink
,
tblk
->
u
.
ip
)));
/*
/*
* write COMMIT log record
* write COMMIT log record
...
@@ -1399,7 +1397,7 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
...
@@ -1399,7 +1397,7 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
*
*
* function: log inode tlock and format maplock to update bmap;
* function: log inode tlock and format maplock to update bmap;
*/
*/
int
diLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
static
int
diLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
,
struct
commit
*
cd
)
struct
tlock
*
tlck
,
struct
commit
*
cd
)
{
{
int
rc
=
0
;
int
rc
=
0
;
...
@@ -1514,7 +1512,7 @@ int diLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
...
@@ -1514,7 +1512,7 @@ int diLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
*
*
* function: log data tlock
* function: log data tlock
*/
*/
int
dataLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
static
int
dataLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
)
struct
tlock
*
tlck
)
{
{
struct
metapage
*
mp
;
struct
metapage
*
mp
;
...
@@ -1560,7 +1558,7 @@ int dataLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
...
@@ -1560,7 +1558,7 @@ int dataLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
*
*
* function: log dtree tlock and format maplock to update bmap;
* function: log dtree tlock and format maplock to update bmap;
*/
*/
void
dtLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
static
void
dtLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
)
struct
tlock
*
tlck
)
{
{
struct
metapage
*
mp
;
struct
metapage
*
mp
;
...
@@ -1665,7 +1663,7 @@ void dtLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
...
@@ -1665,7 +1663,7 @@ void dtLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
*
*
* function: log xtree tlock and format maplock to update bmap;
* function: log xtree tlock and format maplock to update bmap;
*/
*/
void
xtLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
static
void
xtLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
)
struct
tlock
*
tlck
)
{
{
struct
inode
*
ip
;
struct
inode
*
ip
;
...
@@ -2360,23 +2358,17 @@ static void txUpdateMap(struct tblock * tblk)
...
@@ -2360,23 +2358,17 @@ static void txUpdateMap(struct tblock * tblk)
* unlock mapper/write lock
* unlock mapper/write lock
*/
*/
if
(
tblk
->
xflag
&
COMMIT_CREATE
)
{
if
(
tblk
->
xflag
&
COMMIT_CREATE
)
{
ip
=
tblk
->
ip
;
diUpdatePMap
(
ipimap
,
tblk
->
ino
,
FALSE
,
tblk
);
ASSERT
(
test_cflag
(
COMMIT_New
,
ip
));
clear_cflag
(
COMMIT_New
,
ip
);
diUpdatePMap
(
ipimap
,
ip
->
i_ino
,
FALSE
,
tblk
);
ipimap
->
i_state
|=
I_DIRTY
;
ipimap
->
i_state
|=
I_DIRTY
;
/* update persistent block allocation map
/* update persistent block allocation map
* for the allocation of inode extent;
* for the allocation of inode extent;
*/
*/
pxdlock
.
flag
=
mlckALLOCPXD
;
pxdlock
.
flag
=
mlckALLOCPXD
;
pxdlock
.
pxd
=
JFS_IP
(
ip
)
->
ixpxd
;
pxdlock
.
pxd
=
tblk
->
u
.
ixpxd
;
pxdlock
.
index
=
1
;
pxdlock
.
index
=
1
;
txAllocPMap
(
ip
,
(
struct
maplock
*
)
&
pxdlock
,
tblk
);
txAllocPMap
(
ipimap
,
(
struct
maplock
*
)
&
pxdlock
,
tblk
);
iput
(
ip
);
}
else
if
(
tblk
->
xflag
&
COMMIT_DELETE
)
{
}
else
if
(
tblk
->
xflag
&
COMMIT_DELETE
)
{
ip
=
tblk
->
ip
;
ip
=
tblk
->
u
.
ip
;
diUpdatePMap
(
ipimap
,
ip
->
i_ino
,
TRUE
,
tblk
);
diUpdatePMap
(
ipimap
,
ip
->
i_ino
,
TRUE
,
tblk
);
ipimap
->
i_state
|=
I_DIRTY
;
ipimap
->
i_state
|=
I_DIRTY
;
iput
(
ip
);
iput
(
ip
);
...
@@ -2725,7 +2717,7 @@ static void txAbortCommit(struct commit * cd)
...
@@ -2725,7 +2717,7 @@ static void txAbortCommit(struct commit * cd)
* allocation maps are updated in order. For synchronous transactions,
* allocation maps are updated in order. For synchronous transactions,
* let the user thread finish processing after txUpdateMap() is called.
* let the user thread finish processing after txUpdateMap() is called.
*/
*/
void
txLazyCommit
(
struct
tblock
*
tblk
)
static
void
txLazyCommit
(
struct
tblock
*
tblk
)
{
{
struct
jfs_log
*
log
;
struct
jfs_log
*
log
;
...
...
fs/jfs/jfs_txnmgr.h
View file @
23d54a89
...
@@ -62,7 +62,11 @@ struct tblock {
...
@@ -62,7 +62,11 @@ struct tblock {
* ready transactions wait on this
* ready transactions wait on this
* event for group commit completion.
* event for group commit completion.
*/
*/
struct
inode
*
ip
;
/* inode being created or deleted */
union
{
struct
inode
*
ip
;
/* inode being deleted */
pxd_t
ixpxd
;
/* pxd of inode extent for created inode */
}
u
;
u32
ino
;
/* inode number being created */
};
};
extern
struct
tblock
*
TxBlock
;
/* transaction block table */
extern
struct
tblock
*
TxBlock
;
/* transaction block table */
...
...
fs/jfs/jfs_unicode.c
View file @
23d54a89
...
@@ -34,6 +34,8 @@ int jfs_strfromUCS_le(char *to, const wchar_t * from, /* LITTLE ENDIAN */
...
@@ -34,6 +34,8 @@ int jfs_strfromUCS_le(char *to, const wchar_t * from, /* LITTLE ENDIAN */
{
{
int
i
;
int
i
;
int
outlen
=
0
;
int
outlen
=
0
;
static
int
warn_again
=
5
;
/* Only warn up to 5 times total */
int
warn
=
!!
warn_again
;
/* once per string */
if
(
codepage
)
{
if
(
codepage
)
{
for
(
i
=
0
;
(
i
<
len
)
&&
from
[
i
];
i
++
)
{
for
(
i
=
0
;
(
i
<
len
)
&&
from
[
i
];
i
++
)
{
...
@@ -48,8 +50,22 @@ int jfs_strfromUCS_le(char *to, const wchar_t * from, /* LITTLE ENDIAN */
...
@@ -48,8 +50,22 @@ int jfs_strfromUCS_le(char *to, const wchar_t * from, /* LITTLE ENDIAN */
to
[
outlen
++
]
=
'?'
;
to
[
outlen
++
]
=
'?'
;
}
}
}
else
{
}
else
{
for
(
i
=
0
;
(
i
<
len
)
&&
from
[
i
];
i
++
)
for
(
i
=
0
;
(
i
<
len
)
&&
from
[
i
];
i
++
)
{
to
[
i
]
=
(
char
)
(
le16_to_cpu
(
from
[
i
]));
if
(
le16_to_cpu
(
from
[
i
])
&
0xff00
)
{
if
(
warn
)
{
warn
--
;
warn_again
--
;
printk
(
KERN_ERR
"non-latin1 character 0x%x found in JFS file name
\n
"
,
le16_to_cpu
(
from
[
i
]));
printk
(
KERN_ERR
"mount with iocharset=utf8 to access
\n
"
);
}
to
[
i
]
=
'?'
;
}
else
to
[
i
]
=
(
char
)
(
le16_to_cpu
(
from
[
i
]));
}
outlen
=
i
;
outlen
=
i
;
}
}
to
[
outlen
]
=
0
;
to
[
outlen
]
=
0
;
...
@@ -62,8 +78,8 @@ int jfs_strfromUCS_le(char *to, const wchar_t * from, /* LITTLE ENDIAN */
...
@@ -62,8 +78,8 @@ int jfs_strfromUCS_le(char *to, const wchar_t * from, /* LITTLE ENDIAN */
* FUNCTION: Convert character string to unicode string
* FUNCTION: Convert character string to unicode string
*
*
*/
*/
int
jfs_strtoUCS
(
wchar_t
*
to
,
static
int
jfs_strtoUCS
(
wchar_t
*
to
,
const
char
*
from
,
int
len
,
const
char
*
from
,
int
len
,
struct
nls_table
*
codepage
)
struct
nls_table
*
codepage
)
{
{
int
charlen
;
int
charlen
;
int
i
;
int
i
;
...
...
fs/jfs/jfs_xtree.c
View file @
23d54a89
...
@@ -1736,7 +1736,7 @@ int xtExtend(tid_t tid, /* transaction id */
...
@@ -1736,7 +1736,7 @@ int xtExtend(tid_t tid, /* transaction id */
return
rc
;
return
rc
;
}
}
#ifdef _NOTYET
/*
/*
* xtTailgate()
* xtTailgate()
*
*
...
@@ -1918,7 +1918,7 @@ printf("xtTailgate: xoff:0x%lx xlen:0x%x xaddr:0x%lx\n",
...
@@ -1918,7 +1918,7 @@ printf("xtTailgate: xoff:0x%lx xlen:0x%x xaddr:0x%lx\n",
return
rc
;
return
rc
;
}
}
#endif
/* _NOTYET */
/*
/*
* xtUpdate()
* xtUpdate()
...
...
fs/jfs/jfs_xtree.h
View file @
23d54a89
...
@@ -117,8 +117,10 @@ extern int xtInsert(tid_t tid, struct inode *ip,
...
@@ -117,8 +117,10 @@ extern int xtInsert(tid_t tid, struct inode *ip,
int
xflag
,
s64
xoff
,
int
xlen
,
s64
*
xaddrp
,
int
flag
);
int
xflag
,
s64
xoff
,
int
xlen
,
s64
*
xaddrp
,
int
flag
);
extern
int
xtExtend
(
tid_t
tid
,
struct
inode
*
ip
,
s64
xoff
,
int
xlen
,
extern
int
xtExtend
(
tid_t
tid
,
struct
inode
*
ip
,
s64
xoff
,
int
xlen
,
int
flag
);
int
flag
);
#ifdef _NOTYET
extern
int
xtTailgate
(
tid_t
tid
,
struct
inode
*
ip
,
extern
int
xtTailgate
(
tid_t
tid
,
struct
inode
*
ip
,
s64
xoff
,
int
xlen
,
s64
xaddr
,
int
flag
);
s64
xoff
,
int
xlen
,
s64
xaddr
,
int
flag
);
#endif
extern
int
xtUpdate
(
tid_t
tid
,
struct
inode
*
ip
,
struct
xad
*
nxad
);
extern
int
xtUpdate
(
tid_t
tid
,
struct
inode
*
ip
,
struct
xad
*
nxad
);
extern
int
xtDelete
(
tid_t
tid
,
struct
inode
*
ip
,
s64
xoff
,
int
xlen
,
extern
int
xtDelete
(
tid_t
tid
,
struct
inode
*
ip
,
s64
xoff
,
int
xlen
,
int
flag
);
int
flag
);
...
...
fs/jfs/namei.c
View file @
23d54a89
...
@@ -44,7 +44,7 @@ extern int jfs_init_acl(struct inode *, struct inode *);
...
@@ -44,7 +44,7 @@ extern int jfs_init_acl(struct inode *, struct inode *);
struct
inode_operations
jfs_dir_inode_operations
;
struct
inode_operations
jfs_dir_inode_operations
;
struct
file_operations
jfs_dir_operations
;
struct
file_operations
jfs_dir_operations
;
s64
commitZeroLink
(
tid_t
,
struct
inode
*
);
s
tatic
s
64
commitZeroLink
(
tid_t
,
struct
inode
*
);
/*
/*
* NAME: jfs_create(dip, dentry, mode)
* NAME: jfs_create(dip, dentry, mode)
...
@@ -60,7 +60,7 @@ s64 commitZeroLink(tid_t, struct inode *);
...
@@ -60,7 +60,7 @@ s64 commitZeroLink(tid_t, struct inode *);
* RETURN: Errors from subroutines
* RETURN: Errors from subroutines
*
*
*/
*/
int
jfs_create
(
struct
inode
*
dip
,
struct
dentry
*
dentry
,
int
mode
,
static
int
jfs_create
(
struct
inode
*
dip
,
struct
dentry
*
dentry
,
int
mode
,
struct
nameidata
*
nd
)
struct
nameidata
*
nd
)
{
{
int
rc
=
0
;
int
rc
=
0
;
...
@@ -104,7 +104,8 @@ int jfs_create(struct inode *dip, struct dentry *dentry, int mode,
...
@@ -104,7 +104,8 @@ int jfs_create(struct inode *dip, struct dentry *dentry, int mode,
tblk
=
tid_to_tblock
(
tid
);
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
ip
=
ip
;
tblk
->
ino
=
ip
->
i_ino
;
tblk
->
u
.
ixpxd
=
JFS_IP
(
ip
)
->
ixpxd
;
iplist
[
0
]
=
dip
;
iplist
[
0
]
=
dip
;
iplist
[
1
]
=
ip
;
iplist
[
1
]
=
ip
;
...
@@ -181,7 +182,7 @@ int jfs_create(struct inode *dip, struct dentry *dentry, int mode,
...
@@ -181,7 +182,7 @@ int jfs_create(struct inode *dip, struct dentry *dentry, int mode,
* note:
* note:
* EACCESS: user needs search+write permission on the parent directory
* EACCESS: user needs search+write permission on the parent directory
*/
*/
int
jfs_mkdir
(
struct
inode
*
dip
,
struct
dentry
*
dentry
,
int
mode
)
static
int
jfs_mkdir
(
struct
inode
*
dip
,
struct
dentry
*
dentry
,
int
mode
)
{
{
int
rc
=
0
;
int
rc
=
0
;
tid_t
tid
;
/* transaction id */
tid_t
tid
;
/* transaction id */
...
@@ -230,7 +231,8 @@ int jfs_mkdir(struct inode *dip, struct dentry *dentry, int mode)
...
@@ -230,7 +231,8 @@ int jfs_mkdir(struct inode *dip, struct dentry *dentry, int mode)
tblk
=
tid_to_tblock
(
tid
);
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
ip
=
ip
;
tblk
->
ino
=
ip
->
i_ino
;
tblk
->
u
.
ixpxd
=
JFS_IP
(
ip
)
->
ixpxd
;
iplist
[
0
]
=
dip
;
iplist
[
0
]
=
dip
;
iplist
[
1
]
=
ip
;
iplist
[
1
]
=
ip
;
...
@@ -314,7 +316,7 @@ int jfs_mkdir(struct inode *dip, struct dentry *dentry, int mode)
...
@@ -314,7 +316,7 @@ int jfs_mkdir(struct inode *dip, struct dentry *dentry, int mode)
* but the directory is not removed until the last reference to
* but the directory is not removed until the last reference to
* the directory is released (cf.unlink() of regular file).
* the directory is released (cf.unlink() of regular file).
*/
*/
int
jfs_rmdir
(
struct
inode
*
dip
,
struct
dentry
*
dentry
)
static
int
jfs_rmdir
(
struct
inode
*
dip
,
struct
dentry
*
dentry
)
{
{
int
rc
;
int
rc
;
tid_t
tid
;
/* transaction id */
tid_t
tid
;
/* transaction id */
...
@@ -346,7 +348,7 @@ int jfs_rmdir(struct inode *dip, struct dentry *dentry)
...
@@ -346,7 +348,7 @@ int jfs_rmdir(struct inode *dip, struct dentry *dentry)
tblk
=
tid_to_tblock
(
tid
);
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
ip
=
ip
;
tblk
->
u
.
ip
=
ip
;
/*
/*
* delete the entry of target directory from parent directory
* delete the entry of target directory from parent directory
...
@@ -437,7 +439,7 @@ int jfs_rmdir(struct inode *dip, struct dentry *dentry)
...
@@ -437,7 +439,7 @@ int jfs_rmdir(struct inode *dip, struct dentry *dentry)
* JFS does NOT support unlink() on directories.
* JFS does NOT support unlink() on directories.
*
*
*/
*/
int
jfs_unlink
(
struct
inode
*
dip
,
struct
dentry
*
dentry
)
static
int
jfs_unlink
(
struct
inode
*
dip
,
struct
dentry
*
dentry
)
{
{
int
rc
;
int
rc
;
tid_t
tid
;
/* transaction id */
tid_t
tid
;
/* transaction id */
...
@@ -505,7 +507,7 @@ int jfs_unlink(struct inode *dip, struct dentry *dentry)
...
@@ -505,7 +507,7 @@ int jfs_unlink(struct inode *dip, struct dentry *dentry)
}
}
tblk
=
tid_to_tblock
(
tid
);
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
ip
=
ip
;
tblk
->
u
.
ip
=
ip
;
}
}
/*
/*
...
@@ -590,7 +592,7 @@ int jfs_unlink(struct inode *dip, struct dentry *dentry)
...
@@ -590,7 +592,7 @@ int jfs_unlink(struct inode *dip, struct dentry *dentry)
*
*
* RETURN: Errors from subroutines
* RETURN: Errors from subroutines
*/
*/
s64
commitZeroLink
(
tid_t
tid
,
struct
inode
*
ip
)
s
tatic
s
64
commitZeroLink
(
tid_t
tid
,
struct
inode
*
ip
)
{
{
int
filetype
;
int
filetype
;
struct
tblock
*
tblk
;
struct
tblock
*
tblk
;
...
@@ -758,7 +760,7 @@ int freeZeroLink(struct inode *ip)
...
@@ -758,7 +760,7 @@ int freeZeroLink(struct inode *ip)
* EXDEV: target object and new link are on different file systems and
* EXDEV: target object and new link are on different file systems and
* implementation does not support links between file systems [XPG4.2].
* implementation does not support links between file systems [XPG4.2].
*/
*/
int
jfs_link
(
struct
dentry
*
old_dentry
,
static
int
jfs_link
(
struct
dentry
*
old_dentry
,
struct
inode
*
dir
,
struct
dentry
*
dentry
)
struct
inode
*
dir
,
struct
dentry
*
dentry
)
{
{
int
rc
;
int
rc
;
...
@@ -838,7 +840,8 @@ int jfs_link(struct dentry *old_dentry,
...
@@ -838,7 +840,8 @@ int jfs_link(struct dentry *old_dentry,
* an intermediate result whose length exceeds PATH_MAX [XPG4.2]
* an intermediate result whose length exceeds PATH_MAX [XPG4.2]
*/
*/
int
jfs_symlink
(
struct
inode
*
dip
,
struct
dentry
*
dentry
,
const
char
*
name
)
static
int
jfs_symlink
(
struct
inode
*
dip
,
struct
dentry
*
dentry
,
const
char
*
name
)
{
{
int
rc
;
int
rc
;
tid_t
tid
;
tid_t
tid
;
...
@@ -889,7 +892,8 @@ int jfs_symlink(struct inode *dip, struct dentry *dentry, const char *name)
...
@@ -889,7 +892,8 @@ int jfs_symlink(struct inode *dip, struct dentry *dentry, const char *name)
tblk
=
tid_to_tblock
(
tid
);
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
ip
=
ip
;
tblk
->
ino
=
ip
->
i_ino
;
tblk
->
u
.
ixpxd
=
JFS_IP
(
ip
)
->
ixpxd
;
/*
/*
* create entry for symbolic link in parent directory
* create entry for symbolic link in parent directory
...
@@ -1042,7 +1046,7 @@ int jfs_symlink(struct inode *dip, struct dentry *dentry, const char *name)
...
@@ -1042,7 +1046,7 @@ int jfs_symlink(struct inode *dip, struct dentry *dentry, const char *name)
*
*
* FUNCTION: rename a file or directory
* FUNCTION: rename a file or directory
*/
*/
int
jfs_rename
(
struct
inode
*
old_dir
,
struct
dentry
*
old_dentry
,
static
int
jfs_rename
(
struct
inode
*
old_dir
,
struct
dentry
*
old_dentry
,
struct
inode
*
new_dir
,
struct
dentry
*
new_dentry
)
struct
inode
*
new_dir
,
struct
dentry
*
new_dentry
)
{
{
struct
btstack
btstack
;
struct
btstack
btstack
;
...
@@ -1151,7 +1155,7 @@ int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
...
@@ -1151,7 +1155,7 @@ int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
}
}
tblk
=
tid_to_tblock
(
tid
);
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
ip
=
new_ip
;
tblk
->
u
.
ip
=
new_ip
;
}
else
if
(
new_ip
->
i_nlink
==
0
)
{
}
else
if
(
new_ip
->
i_nlink
==
0
)
{
assert
(
!
test_cflag
(
COMMIT_Nolink
,
new_ip
));
assert
(
!
test_cflag
(
COMMIT_Nolink
,
new_ip
));
/* free block resources */
/* free block resources */
...
@@ -1162,7 +1166,7 @@ int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
...
@@ -1162,7 +1166,7 @@ int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
}
}
tblk
=
tid_to_tblock
(
tid
);
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
ip
=
new_ip
;
tblk
->
u
.
ip
=
new_ip
;
}
else
{
}
else
{
new_ip
->
i_ctime
=
CURRENT_TIME
;
new_ip
->
i_ctime
=
CURRENT_TIME
;
mark_inode_dirty
(
new_ip
);
mark_inode_dirty
(
new_ip
);
...
@@ -1310,7 +1314,8 @@ int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
...
@@ -1310,7 +1314,8 @@ int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
*
*
* FUNCTION: Create a special file (device)
* FUNCTION: Create a special file (device)
*/
*/
int
jfs_mknod
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
int
mode
,
dev_t
rdev
)
static
int
jfs_mknod
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
int
mode
,
dev_t
rdev
)
{
{
struct
jfs_inode_info
*
jfs_ip
;
struct
jfs_inode_info
*
jfs_ip
;
struct
btstack
btstack
;
struct
btstack
btstack
;
...
@@ -1347,7 +1352,8 @@ int jfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev)
...
@@ -1347,7 +1352,8 @@ int jfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev)
tblk
=
tid_to_tblock
(
tid
);
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
ip
=
ip
;
tblk
->
ino
=
ip
->
i_ino
;
tblk
->
u
.
ixpxd
=
JFS_IP
(
ip
)
->
ixpxd
;
ino
=
ip
->
i_ino
;
ino
=
ip
->
i_ino
;
if
((
rc
=
dtInsert
(
tid
,
dir
,
&
dname
,
&
ino
,
&
btstack
)))
if
((
rc
=
dtInsert
(
tid
,
dir
,
&
dname
,
&
ino
,
&
btstack
)))
...
...
fs/jfs/super.c
View file @
23d54a89
...
@@ -321,7 +321,7 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
...
@@ -321,7 +321,7 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
return
0
;
return
0
;
}
}
int
jfs_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
static
int
jfs_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
{
s64
newLVSize
=
0
;
s64
newLVSize
=
0
;
int
rc
=
0
;
int
rc
=
0
;
...
...
fs/jfs/xattr.c
View file @
23d54a89
...
@@ -640,6 +640,7 @@ static int ea_put(struct inode *inode, struct ea_buffer *ea_buf, int new_size)
...
@@ -640,6 +640,7 @@ static int ea_put(struct inode *inode, struct ea_buffer *ea_buf, int new_size)
}
}
inode
->
i_blocks
+=
LBLK2PBLK
(
inode
->
i_sb
,
new_blocks
-
old_blocks
);
inode
->
i_blocks
+=
LBLK2PBLK
(
inode
->
i_sb
,
new_blocks
-
old_blocks
);
inode
->
i_ctime
=
CURRENT_TIME
;
rc
=
txCommit
(
tid
,
1
,
&
inode
,
0
);
rc
=
txCommit
(
tid
,
1
,
&
inode
,
0
);
txEnd
(
tid
);
txEnd
(
tid
);
up
(
&
ji
->
commit_sem
);
up
(
&
ji
->
commit_sem
);
...
...
include/linux/sysctl.h
View file @
23d54a89
...
@@ -405,7 +405,8 @@ enum {
...
@@ -405,7 +405,8 @@ enum {
NET_IPV6_IP6FRAG_HIGH_THRESH
=
21
,
NET_IPV6_IP6FRAG_HIGH_THRESH
=
21
,
NET_IPV6_IP6FRAG_LOW_THRESH
=
22
,
NET_IPV6_IP6FRAG_LOW_THRESH
=
22
,
NET_IPV6_IP6FRAG_TIME
=
23
,
NET_IPV6_IP6FRAG_TIME
=
23
,
NET_IPV6_IP6FRAG_SECRET_INTERVAL
=
24
NET_IPV6_IP6FRAG_SECRET_INTERVAL
=
24
,
NET_IPV6_MLD_MAX_MSF
=
25
,
};
};
enum
{
enum
{
...
...
include/net/ipv6.h
View file @
23d54a89
...
@@ -108,6 +108,7 @@ struct frag_hdr {
...
@@ -108,6 +108,7 @@ struct frag_hdr {
/* sysctls */
/* sysctls */
extern
int
sysctl_ipv6_bindv6only
;
extern
int
sysctl_ipv6_bindv6only
;
extern
int
sysctl_mld_max_msf
;
/* MIBs */
/* MIBs */
DECLARE_SNMP_STAT
(
struct
ipv6_mib
,
ipv6_statistics
);
DECLARE_SNMP_STAT
(
struct
ipv6_mib
,
ipv6_statistics
);
...
...
net/core/netfilter.c
View file @
23d54a89
...
@@ -636,6 +636,7 @@ int ip_route_me_harder(struct sk_buff **pskb)
...
@@ -636,6 +636,7 @@ int ip_route_me_harder(struct sk_buff **pskb)
#ifdef CONFIG_IP_ROUTE_FWMARK
#ifdef CONFIG_IP_ROUTE_FWMARK
fl
.
nl_u
.
ip4_u
.
fwmark
=
(
*
pskb
)
->
nfmark
;
fl
.
nl_u
.
ip4_u
.
fwmark
=
(
*
pskb
)
->
nfmark
;
#endif
#endif
fl
.
proto
=
iph
->
protocol
;
if
(
ip_route_output_key
(
&
rt
,
&
fl
)
!=
0
)
if
(
ip_route_output_key
(
&
rt
,
&
fl
)
!=
0
)
return
-
1
;
return
-
1
;
...
...
net/ipv4/ip_sockglue.c
View file @
23d54a89
...
@@ -771,6 +771,8 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char *optval, int opt
...
@@ -771,6 +771,8 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char *optval, int opt
}
}
case
MCAST_MSFILTER
:
case
MCAST_MSFILTER
:
{
{
extern
int
sysctl_optmem_max
;
extern
int
sysctl_igmp_max_msf
;
struct
sockaddr_in
*
psin
;
struct
sockaddr_in
*
psin
;
struct
ip_msfilter
*
msf
=
0
;
struct
ip_msfilter
*
msf
=
0
;
struct
group_filter
*
gsf
=
0
;
struct
group_filter
*
gsf
=
0
;
...
@@ -778,6 +780,10 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char *optval, int opt
...
@@ -778,6 +780,10 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char *optval, int opt
if
(
optlen
<
GROUP_FILTER_SIZE
(
0
))
if
(
optlen
<
GROUP_FILTER_SIZE
(
0
))
goto
e_inval
;
goto
e_inval
;
if
(
optlen
>
sysctl_optmem_max
)
{
err
=
-
ENOBUFS
;
break
;
}
gsf
=
(
struct
group_filter
*
)
kmalloc
(
optlen
,
GFP_KERNEL
);
gsf
=
(
struct
group_filter
*
)
kmalloc
(
optlen
,
GFP_KERNEL
);
if
(
gsf
==
0
)
{
if
(
gsf
==
0
)
{
err
=
-
ENOBUFS
;
err
=
-
ENOBUFS
;
...
@@ -787,7 +793,13 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char *optval, int opt
...
@@ -787,7 +793,13 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char *optval, int opt
if
(
copy_from_user
(
gsf
,
optval
,
optlen
))
{
if
(
copy_from_user
(
gsf
,
optval
,
optlen
))
{
goto
mc_msf_out
;
goto
mc_msf_out
;
}
}
if
(
GROUP_FILTER_SIZE
(
gsf
->
gf_numsrc
)
<
optlen
)
{
/* numsrc >= (4G-140)/128 overflow in 32 bits */
if
(
gsf
->
gf_numsrc
>=
0x1ffffff
||
gsf
->
gf_numsrc
>
sysctl_igmp_max_msf
)
{
err
=
-
ENOBUFS
;
goto
mc_msf_out
;
}
if
(
GROUP_FILTER_SIZE
(
gsf
->
gf_numsrc
)
>
optlen
)
{
err
=
EINVAL
;
err
=
EINVAL
;
goto
mc_msf_out
;
goto
mc_msf_out
;
}
}
...
...
net/ipv4/ipvs/ip_vs_ctl.c
View file @
23d54a89
...
@@ -1836,9 +1836,9 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void *user, unsigned int len)
...
@@ -1836,9 +1836,9 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void *user, unsigned int len)
/* Check for valid protocol: TCP or UDP, even for fwmark!=0 */
/* Check for valid protocol: TCP or UDP, even for fwmark!=0 */
if
(
usvc
->
protocol
!=
IPPROTO_TCP
&&
usvc
->
protocol
!=
IPPROTO_UDP
)
{
if
(
usvc
->
protocol
!=
IPPROTO_TCP
&&
usvc
->
protocol
!=
IPPROTO_UDP
)
{
IP_VS_
INFO
(
"vs_ctl: invalid protocol: %d %d.%d.%d.%d:%d %s
"
,
IP_VS_
ERR
(
"set_ctl: invalid protocol: %d %d.%d.%d.%d:%d %s
\n
"
,
ntohs
(
usvc
->
protocol
)
,
NIPQUAD
(
usvc
->
addr
),
usvc
->
protocol
,
NIPQUAD
(
usvc
->
addr
),
ntohs
(
usvc
->
port
),
usvc
->
sched_name
);
ntohs
(
usvc
->
port
),
usvc
->
sched_name
);
ret
=
-
EFAULT
;
ret
=
-
EFAULT
;
goto
out_unlock
;
goto
out_unlock
;
}
}
...
...
net/ipv6/ipv6_sockglue.c
View file @
23d54a89
...
@@ -437,6 +437,7 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname, char *optval,
...
@@ -437,6 +437,7 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname, char *optval,
case
MCAST_MSFILTER
:
case
MCAST_MSFILTER
:
{
{
extern
int
sysctl_optmem_max
;
extern
int
sysctl_optmem_max
;
extern
int
sysctl_mld_max_msf
;
struct
group_filter
*
gsf
;
struct
group_filter
*
gsf
;
if
(
optlen
<
GROUP_FILTER_SIZE
(
0
))
if
(
optlen
<
GROUP_FILTER_SIZE
(
0
))
...
@@ -455,8 +456,14 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname, char *optval,
...
@@ -455,8 +456,14 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname, char *optval,
kfree
(
gsf
);
kfree
(
gsf
);
break
;
break
;
}
}
if
(
GROUP_FILTER_SIZE
(
gsf
->
gf_numsrc
)
<
GROUP_FILTER_SIZE
(
0
)
||
/* numsrc >= (4G-140)/128 overflow in 32 bits */
GROUP_FILTER_SIZE
(
gsf
->
gf_numsrc
)
>
optlen
)
{
if
(
gsf
->
gf_numsrc
>=
0x1ffffffU
||
gsf
->
gf_numsrc
>
sysctl_mld_max_msf
)
{
kfree
(
gsf
);
retv
=
-
ENOBUFS
;
break
;
}
if
(
GROUP_FILTER_SIZE
(
gsf
->
gf_numsrc
)
>
optlen
)
{
kfree
(
gsf
);
kfree
(
gsf
);
retv
=
-
EINVAL
;
retv
=
-
EINVAL
;
break
;
break
;
...
...
net/ipv6/mcast.c
View file @
23d54a89
...
@@ -166,6 +166,10 @@ int ip6_mc_leave_src(struct sock *sk, struct ipv6_mc_socklist *iml,
...
@@ -166,6 +166,10 @@ int ip6_mc_leave_src(struct sock *sk, struct ipv6_mc_socklist *iml,
#define MLDV2_QQIC(value) MLDV2_EXP(0x80, 4, 3, value)
#define MLDV2_QQIC(value) MLDV2_EXP(0x80, 4, 3, value)
#define MLDV2_MRC(value) MLDV2_EXP(0x8000, 12, 3, value)
#define MLDV2_MRC(value) MLDV2_EXP(0x8000, 12, 3, value)
#define IPV6_MLD_MAX_MSF 10
int
sysctl_mld_max_msf
=
IPV6_MLD_MAX_MSF
;
/*
/*
* socket join on multicast group
* socket join on multicast group
*/
*/
...
@@ -404,6 +408,10 @@ int ip6_mc_source(int add, int omode, struct sock *sk,
...
@@ -404,6 +408,10 @@ int ip6_mc_source(int add, int omode, struct sock *sk,
}
}
/* else, add a new source to the filter */
/* else, add a new source to the filter */
if
(
psl
&&
psl
->
sl_count
>=
sysctl_mld_max_msf
)
{
err
=
-
ENOBUFS
;
goto
done
;
}
if
(
!
psl
||
psl
->
sl_count
==
psl
->
sl_max
)
{
if
(
!
psl
||
psl
->
sl_count
==
psl
->
sl_max
)
{
struct
ip6_sf_socklist
*
newpsl
;
struct
ip6_sf_socklist
*
newpsl
;
int
count
=
IP6_SFBLOCK
;
int
count
=
IP6_SFBLOCK
;
...
...
net/ipv6/sysctl_net_ipv6.c
View file @
23d54a89
...
@@ -76,6 +76,14 @@ ctl_table ipv6_table[] = {
...
@@ -76,6 +76,14 @@ ctl_table ipv6_table[] = {
.
proc_handler
=
&
proc_dointvec_jiffies
,
.
proc_handler
=
&
proc_dointvec_jiffies
,
.
strategy
=
&
sysctl_jiffies
.
strategy
=
&
sysctl_jiffies
},
},
{
.
ctl_name
=
NET_IPV6_MLD_MAX_MSF
,
.
procname
=
"mld_max_msf"
,
.
data
=
&
sysctl_mld_max_msf
,
.
maxlen
=
sizeof
(
int
),
.
mode
=
0644
,
.
proc_handler
=
&
proc_dointvec
},
{
.
ctl_name
=
0
}
{
.
ctl_name
=
0
}
};
};
...
...
net/sched/sch_red.c
View file @
23d54a89
...
@@ -41,9 +41,6 @@
...
@@ -41,9 +41,6 @@
#include <net/pkt_sched.h>
#include <net/pkt_sched.h>
#include <net/inet_ecn.h>
#include <net/inet_ecn.h>
#define RED_ECN_ECT 0x02
#define RED_ECN_CE 0x01
/* Random Early Detection (RED) algorithm.
/* Random Early Detection (RED) algorithm.
=======================================
=======================================
...
@@ -165,28 +162,16 @@ static int red_ecn_mark(struct sk_buff *skb)
...
@@ -165,28 +162,16 @@ static int red_ecn_mark(struct sk_buff *skb)
switch
(
skb
->
protocol
)
{
switch
(
skb
->
protocol
)
{
case
__constant_htons
(
ETH_P_IP
):
case
__constant_htons
(
ETH_P_IP
):
{
if
(
!
INET_ECN_is_capable
(
skb
->
nh
.
iph
->
tos
))
u8
tos
=
skb
->
nh
.
iph
->
tos
;
if
(
!
(
tos
&
RED_ECN_ECT
))
return
0
;
return
0
;
if
(
INET_ECN_is_not_ce
(
skb
->
nh
.
iph
->
tos
))
if
(
!
(
tos
&
RED_ECN_CE
))
IP_ECN_set_ce
(
skb
->
nh
.
iph
);
IP_ECN_set_ce
(
skb
->
nh
.
iph
);
return
1
;
return
1
;
}
case
__constant_htons
(
ETH_P_IPV6
):
case
__constant_htons
(
ETH_P_IPV6
):
{
if
(
!
INET_ECN_is_capable
(
ip6_get_dsfield
(
skb
->
nh
.
ipv6h
)))
u32
label
=
*
(
u32
*
)
skb
->
nh
.
raw
;
if
(
!
(
label
&
__constant_htonl
(
RED_ECN_ECT
<<
20
)))
return
0
;
return
0
;
label
|=
__constant_htonl
(
RED_ECN_CE
<<
20
);
IP6_ECN_set_ce
(
skb
->
nh
.
ipv6h
);
return
1
;
return
1
;
}
default:
default:
return
0
;
return
0
;
}
}
...
...
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