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
8d7d9915
Commit
8d7d9915
authored
Mar 08, 2004
by
Dave Kleikamp
Browse files
Options
Browse Files
Download
Plain Diff
Merge jfs@jfs.bkbits.net:linux-2.5
into austin.ibm.com:/shaggy/bk/jfs-2.5
parents
d456c644
16ecfdb9
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
101 additions
and
94 deletions
+101
-94
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
No files found.
fs/jfs/acl.c
View file @
8d7d9915
...
...
@@ -24,7 +24,7 @@
#include "jfs_xattr.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
;
char
*
ea_name
;
...
...
@@ -74,7 +74,7 @@ struct posix_acl *jfs_get_acl(struct inode *inode, int type)
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
;
struct
jfs_inode_info
*
ji
=
JFS_IP
(
inode
);
...
...
@@ -247,7 +247,7 @@ int jfs_init_acl(struct inode *inode, struct inode *dir)
return
rc
;
}
int
jfs_acl_chmod
(
struct
inode
*
inode
)
static
int
jfs_acl_chmod
(
struct
inode
*
inode
)
{
struct
posix_acl
*
acl
,
*
clone
;
int
rc
;
...
...
fs/jfs/jfs_acl.h
View file @
8d7d9915
...
...
@@ -22,8 +22,6 @@
#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_init_acl
(
struct
inode
*
,
struct
inode
*
);
int
jfs_setattr
(
struct
dentry
*
,
struct
iattr
*
);
...
...
fs/jfs/jfs_dmap.c
View file @
8d7d9915
...
...
@@ -124,7 +124,7 @@ static int dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb,
s64
*
results
);
static
int
dbAllocCtl
(
struct
bmap
*
bmp
,
s64
nblocks
,
int
l2nb
,
s64
blkno
,
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
dbFindCtl
(
struct
bmap
*
bmp
,
int
l2nb
,
int
level
,
s64
*
blkno
);
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,
int
nblocks
);
static
int
dbMaxBud
(
u8
*
cp
);
s64
dbMapFileSizeToMapSize
(
struct
inode
*
ipbmap
);
int
blkstol2
(
s64
nb
);
static
int
blkstol2
(
s64
nb
);
int
cntlz
(
u32
value
);
int
cnttz
(
u32
word
);
static
int
cntlz
(
u32
value
);
static
int
cnttz
(
u32
word
);
static
int
dbAllocDmapBU
(
struct
bmap
*
bmp
,
struct
dmap
*
dp
,
s64
blkno
,
int
nblocks
);
...
...
@@ -155,7 +155,7 @@ static int dbGetL2AGSize(s64 nblocks);
* into the table, with the table elements yielding the maximum
* 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
,
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)
return
(
rc
);
}
#ifdef _NOTYET
/*
* NAME: dbAllocExact()
*
...
...
@@ -1009,7 +1009,7 @@ int dbAllocExact(struct inode *ip, s64 blkno, int nblocks)
return
(
rc
);
}
#endif
/* _NOTYET */
/*
* NAME: dbReAlloc()
...
...
@@ -1092,7 +1092,7 @@ dbReAlloc(struct inode *ip,
* -ENOSPC - insufficient disk resources
* -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
);
s64
lblkno
,
lastblkno
,
extblkno
;
...
...
@@ -3022,7 +3022,7 @@ static int dbMaxBud(u8 * cp)
* RETURN VALUES:
* count of trailing zeros
*/
int
cnttz
(
u32
word
)
static
int
cnttz
(
u32
word
)
{
int
n
;
...
...
@@ -3047,7 +3047,7 @@ int cnttz(u32 word)
* RETURN VALUES:
* count of leading zeros
*/
int
cntlz
(
u32
value
)
static
int
cntlz
(
u32
value
)
{
int
n
;
...
...
fs/jfs/jfs_dmap.h
View file @
8d7d9915
...
...
@@ -286,8 +286,6 @@ extern int dbNextAG(struct inode *ipbmap);
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
,
s64
blkno
,
s64
nblocks
,
s64
addnblocks
,
s64
*
results
);
...
...
fs/jfs/jfs_dtree.c
View file @
8d7d9915
...
...
@@ -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
,
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
dtReadFirst
(
struct
inode
*
ip
,
struct
btstack
*
btstack
);
...
...
@@ -2380,7 +2377,7 @@ static int dtDeleteUp(tid_t tid, struct inode *ip,
return
0
;
}
#ifdef _NOTYET
/*
* NAME: dtRelocate()
*
...
...
@@ -2575,7 +2572,6 @@ int dtRelocate(tid_t tid, struct inode *ip, s64 lmxaddr, pxd_t * opxd,
return
rc
;
}
/*
* NAME: dtSearchNode()
*
...
...
@@ -2677,7 +2673,7 @@ static int dtSearchNode(struct inode *ip, s64 lmxaddr, pxd_t * kpxd,
goto
loop
;
}
#endif
/* _NOTYET */
/*
* dtRelink()
...
...
@@ -2933,7 +2929,7 @@ struct jfs_dirent {
/*
* 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
*
)
((
char
*
)
dirent
+
...
...
fs/jfs/jfs_dtree.h
View file @
8d7d9915
...
...
@@ -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
,
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
,
ino_t
*
orig_ino
,
ino_t
new_ino
,
int
flag
);
...
...
fs/jfs/jfs_extent.c
View file @
8d7d9915
...
...
@@ -35,7 +35,6 @@ static s64 extRoundDown(s64 nb);
/*
* external references
*/
extern
int
dbExtend
(
struct
inode
*
,
s64
,
s64
,
s64
);
extern
int
jfs_commit_inode
(
struct
inode
*
,
int
);
...
...
fs/jfs/jfs_incore.h
View file @
8d7d9915
...
...
@@ -114,7 +114,6 @@ struct jfs_inode_info {
* cflag
*/
enum
cflags
{
COMMIT_New
,
/* never committed inode */
COMMIT_Nolink
,
/* inode committed with zero link count */
COMMIT_Inlineea
,
/* commit inode inline EA */
COMMIT_Freewmap
,
/* free WMAP at iClose() */
...
...
fs/jfs/jfs_inode.c
View file @
8d7d9915
...
...
@@ -72,7 +72,6 @@ struct inode *ialloc(struct inode *parent, umode_t mode)
inode
->
i_generation
=
JFS_SBI
(
sb
)
->
gengen
++
;
jfs_inode
->
cflag
=
0
;
set_cflag
(
COMMIT_New
,
inode
);
/* Zero remaining fields */
memset
(
&
jfs_inode
->
acl
,
0
,
sizeof
(
dxd_t
));
...
...
fs/jfs/jfs_logmgr.c
View file @
8d7d9915
...
...
@@ -196,6 +196,7 @@ static int lbmIOWait(struct lbuf * bp, int flag);
static
bio_end_io_t
lbmIODone
;
static
void
lbmStartIO
(
struct
lbuf
*
bp
);
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)
* NOTE:
* This routine is called a interrupt time by lbmIODone
*/
void
lmPostGC
(
struct
lbuf
*
bp
)
static
void
lmPostGC
(
struct
lbuf
*
bp
)
{
unsigned
long
flags
;
struct
jfs_log
*
log
=
bp
->
l_log
;
...
...
@@ -933,7 +934,7 @@ void lmPostGC(struct lbuf * bp)
*
* 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
written
;
/* written since last syncpt */
...
...
fs/jfs/jfs_logmgr.h
View file @
8d7d9915
...
...
@@ -505,7 +505,6 @@ struct logsyncblk {
extern
int
lmLogOpen
(
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
lmLogInit
(
struct
jfs_log
*
log
);
extern
int
lmLogFormat
(
struct
jfs_log
*
log
,
s64
logAddress
,
int
logSize
);
...
...
fs/jfs/jfs_txnmgr.c
View file @
8d7d9915
...
...
@@ -168,25 +168,23 @@ extern struct completion jfsIOwait;
/*
* forward references
*/
int
diLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
,
struct
commit
*
cd
);
int
dataLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
void
dtLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
void
inlineLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
void
mapLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
static
int
diLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
,
struct
commit
*
cd
);
static
int
dataLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
static
void
dtLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
static
void
mapLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
lrd
*
lrd
,
struct
tlock
*
tlck
);
static
void
txAbortCommit
(
struct
commit
*
cd
);
static
void
txAllocPMap
(
struct
inode
*
ip
,
struct
maplock
*
maplock
,
struct
tblock
*
tblk
);
void
txForce
(
struct
tblock
*
tblk
);
static
int
txLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
commit
*
cd
);
int
txMoreLock
(
voi
d
);
struct
tblock
*
tblk
);
static
void
txForce
(
struct
tblock
*
tblk
);
static
int
txLog
(
struct
jfs_log
*
log
,
struct
tblock
*
tblk
,
struct
commit
*
c
d
);
static
void
txUpdateMap
(
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
);
static
void
LogSyncRelease
(
struct
metapage
*
mp
);
...
...
@@ -1240,8 +1238,8 @@ int txCommit(tid_t tid, /* transaction identifier */
* Ensure that inode isn't reused before
* lazy commit thread finishes processing
*/
if
(
tblk
->
xflag
&
(
COMMIT_CREATE
|
COMMIT_DELETE
)
)
{
atomic_inc
(
&
tblk
->
ip
->
i_count
);
if
(
tblk
->
xflag
&
COMMIT_DELETE
)
{
atomic_inc
(
&
tblk
->
u
.
ip
->
i_count
);
/*
* Avoid a rare deadlock
*
...
...
@@ -1252,13 +1250,13 @@ int txCommit(tid_t tid, /* transaction identifier */
* commit the transaction synchronously, so the last iput
* 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
;
}
ASSERT
((
!
(
tblk
->
xflag
&
COMMIT_DELETE
))
||
((
tblk
->
ip
->
i_nlink
==
0
)
&&
!
test_cflag
(
COMMIT_Nolink
,
tblk
->
ip
)));
((
tblk
->
u
.
ip
->
i_nlink
==
0
)
&&
!
test_cflag
(
COMMIT_Nolink
,
tblk
->
u
.
ip
)));
/*
* write COMMIT log record
...
...
@@ -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;
*/
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
)
{
int
rc
=
0
;
...
...
@@ -1514,7 +1512,7 @@ int diLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
*
* 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
metapage
*
mp
;
...
...
@@ -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;
*/
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
metapage
*
mp
;
...
...
@@ -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;
*/
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
inode
*
ip
;
...
...
@@ -2360,23 +2358,17 @@ static void txUpdateMap(struct tblock * tblk)
* unlock mapper/write lock
*/
if
(
tblk
->
xflag
&
COMMIT_CREATE
)
{
ip
=
tblk
->
ip
;
ASSERT
(
test_cflag
(
COMMIT_New
,
ip
));
clear_cflag
(
COMMIT_New
,
ip
);
diUpdatePMap
(
ipimap
,
ip
->
i_ino
,
FALSE
,
tblk
);
diUpdatePMap
(
ipimap
,
tblk
->
ino
,
FALSE
,
tblk
);
ipimap
->
i_state
|=
I_DIRTY
;
/* update persistent block allocation map
* for the allocation of inode extent;
*/
pxdlock
.
flag
=
mlckALLOCPXD
;
pxdlock
.
pxd
=
JFS_IP
(
ip
)
->
ixpxd
;
pxdlock
.
pxd
=
tblk
->
u
.
ixpxd
;
pxdlock
.
index
=
1
;
txAllocPMap
(
ip
,
(
struct
maplock
*
)
&
pxdlock
,
tblk
);
iput
(
ip
);
txAllocPMap
(
ipimap
,
(
struct
maplock
*
)
&
pxdlock
,
tblk
);
}
else
if
(
tblk
->
xflag
&
COMMIT_DELETE
)
{
ip
=
tblk
->
ip
;
ip
=
tblk
->
u
.
ip
;
diUpdatePMap
(
ipimap
,
ip
->
i_ino
,
TRUE
,
tblk
);
ipimap
->
i_state
|=
I_DIRTY
;
iput
(
ip
);
...
...
@@ -2725,7 +2717,7 @@ static void txAbortCommit(struct commit * cd)
* allocation maps are updated in order. For synchronous transactions,
* 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
;
...
...
fs/jfs/jfs_txnmgr.h
View file @
8d7d9915
...
...
@@ -62,7 +62,11 @@ struct tblock {
* ready transactions wait on this
* 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 */
...
...
fs/jfs/jfs_unicode.c
View file @
8d7d9915
...
...
@@ -34,6 +34,8 @@ int jfs_strfromUCS_le(char *to, const wchar_t * from, /* LITTLE ENDIAN */
{
int
i
;
int
outlen
=
0
;
static
int
warn_again
=
5
;
/* Only warn up to 5 times total */
int
warn
=
!!
warn_again
;
/* once per string */
if
(
codepage
)
{
for
(
i
=
0
;
(
i
<
len
)
&&
from
[
i
];
i
++
)
{
...
...
@@ -48,8 +50,22 @@ int jfs_strfromUCS_le(char *to, const wchar_t * from, /* LITTLE ENDIAN */
to
[
outlen
++
]
=
'?'
;
}
}
else
{
for
(
i
=
0
;
(
i
<
len
)
&&
from
[
i
];
i
++
)
to
[
i
]
=
(
char
)
(
le16_to_cpu
(
from
[
i
]));
for
(
i
=
0
;
(
i
<
len
)
&&
from
[
i
];
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
;
}
to
[
outlen
]
=
0
;
...
...
@@ -62,8 +78,8 @@ int jfs_strfromUCS_le(char *to, const wchar_t * from, /* LITTLE ENDIAN */
* FUNCTION: Convert character string to unicode string
*
*/
int
jfs_strtoUCS
(
wchar_t
*
to
,
const
char
*
from
,
int
len
,
struct
nls_table
*
codepage
)
static
int
jfs_strtoUCS
(
wchar_t
*
to
,
const
char
*
from
,
int
len
,
struct
nls_table
*
codepage
)
{
int
charlen
;
int
i
;
...
...
fs/jfs/jfs_xtree.c
View file @
8d7d9915
...
...
@@ -1736,7 +1736,7 @@ int xtExtend(tid_t tid, /* transaction id */
return
rc
;
}
#ifdef _NOTYET
/*
* xtTailgate()
*
...
...
@@ -1918,7 +1918,7 @@ printf("xtTailgate: xoff:0x%lx xlen:0x%x xaddr:0x%lx\n",
return
rc
;
}
#endif
/* _NOTYET */
/*
* xtUpdate()
...
...
fs/jfs/jfs_xtree.h
View file @
8d7d9915
...
...
@@ -117,8 +117,10 @@ extern int xtInsert(tid_t tid, struct inode *ip,
int
xflag
,
s64
xoff
,
int
xlen
,
s64
*
xaddrp
,
int
flag
);
extern
int
xtExtend
(
tid_t
tid
,
struct
inode
*
ip
,
s64
xoff
,
int
xlen
,
int
flag
);
#ifdef _NOTYET
extern
int
xtTailgate
(
tid_t
tid
,
struct
inode
*
ip
,
s64
xoff
,
int
xlen
,
s64
xaddr
,
int
flag
);
#endif
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
,
int
flag
);
...
...
fs/jfs/namei.c
View file @
8d7d9915
...
...
@@ -44,7 +44,7 @@ extern int jfs_init_acl(struct inode *, struct inode *);
struct
inode_operations
jfs_dir_inode_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)
...
...
@@ -60,7 +60,7 @@ s64 commitZeroLink(tid_t, struct inode *);
* 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
)
{
int
rc
=
0
;
...
...
@@ -104,7 +104,8 @@ int jfs_create(struct inode *dip, struct dentry *dentry, int mode,
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
ip
=
ip
;
tblk
->
ino
=
ip
->
i_ino
;
tblk
->
u
.
ixpxd
=
JFS_IP
(
ip
)
->
ixpxd
;
iplist
[
0
]
=
dip
;
iplist
[
1
]
=
ip
;
...
...
@@ -181,7 +182,7 @@ int jfs_create(struct inode *dip, struct dentry *dentry, int mode,
* note:
* 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
;
tid_t
tid
;
/* transaction id */
...
...
@@ -230,7 +231,8 @@ int jfs_mkdir(struct inode *dip, struct dentry *dentry, int mode)
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
ip
=
ip
;
tblk
->
ino
=
ip
->
i_ino
;
tblk
->
u
.
ixpxd
=
JFS_IP
(
ip
)
->
ixpxd
;
iplist
[
0
]
=
dip
;
iplist
[
1
]
=
ip
;
...
...
@@ -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
* 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
;
tid_t
tid
;
/* transaction id */
...
...
@@ -346,7 +348,7 @@ int jfs_rmdir(struct inode *dip, struct dentry *dentry)
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
ip
=
ip
;
tblk
->
u
.
ip
=
ip
;
/*
* delete the entry of target directory from parent directory
...
...
@@ -437,7 +439,7 @@ int jfs_rmdir(struct inode *dip, struct dentry *dentry)
* 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
;
tid_t
tid
;
/* transaction id */
...
...
@@ -505,7 +507,7 @@ int jfs_unlink(struct inode *dip, struct dentry *dentry)
}
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
ip
=
ip
;
tblk
->
u
.
ip
=
ip
;
}
/*
...
...
@@ -590,7 +592,7 @@ int jfs_unlink(struct inode *dip, struct dentry *dentry)
*
* 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
;
struct
tblock
*
tblk
;
...
...
@@ -758,7 +760,7 @@ int freeZeroLink(struct inode *ip)
* EXDEV: target object and new link are on different file systems and
* 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
)
{
int
rc
;
...
...
@@ -838,7 +840,8 @@ int jfs_link(struct dentry *old_dentry,
* 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
;
tid_t
tid
;
...
...
@@ -889,7 +892,8 @@ int jfs_symlink(struct inode *dip, struct dentry *dentry, const char *name)
tblk
=
tid_to_tblock
(
tid
);
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
...
...
@@ -1042,7 +1046,7 @@ int jfs_symlink(struct inode *dip, struct dentry *dentry, const char *name)
*
* 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
btstack
btstack
;
...
...
@@ -1151,7 +1155,7 @@ int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
}
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
ip
=
new_ip
;
tblk
->
u
.
ip
=
new_ip
;
}
else
if
(
new_ip
->
i_nlink
==
0
)
{
assert
(
!
test_cflag
(
COMMIT_Nolink
,
new_ip
));
/* free block resources */
...
...
@@ -1162,7 +1166,7 @@ int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
}
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_DELETE
;
tblk
->
ip
=
new_ip
;
tblk
->
u
.
ip
=
new_ip
;
}
else
{
new_ip
->
i_ctime
=
CURRENT_TIME
;
mark_inode_dirty
(
new_ip
);
...
...
@@ -1310,7 +1314,8 @@ int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
*
* 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
btstack
btstack
;
...
...
@@ -1347,7 +1352,8 @@ int jfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev)
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
ip
=
ip
;
tblk
->
ino
=
ip
->
i_ino
;
tblk
->
u
.
ixpxd
=
JFS_IP
(
ip
)
->
ixpxd
;
ino
=
ip
->
i_ino
;
if
((
rc
=
dtInsert
(
tid
,
dir
,
&
dname
,
&
ino
,
&
btstack
)))
...
...
fs/jfs/super.c
View file @
8d7d9915
...
...
@@ -321,7 +321,7 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
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
;
int
rc
=
0
;
...
...
fs/jfs/xattr.c
View file @
8d7d9915
...
...
@@ -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_ctime
=
CURRENT_TIME
;
rc
=
txCommit
(
tid
,
1
,
&
inode
,
0
);
txEnd
(
tid
);
up
(
&
ji
->
commit_sem
);
...
...
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