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
67f3362a
Commit
67f3362a
authored
Mar 23, 2004
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge davem@nuts.davemloft.net:/disk1/BK/net-2.6
into kernel.bkbits.net:/home/davem/net-2.6
parents
6f48c4da
726dab74
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
153 additions
and
111 deletions
+153
-111
fs/jfs/jfs_dmap.c
fs/jfs/jfs_dmap.c
+11
-5
fs/jfs/jfs_dtree.c
fs/jfs/jfs_dtree.c
+12
-4
fs/jfs/jfs_imap.c
fs/jfs/jfs_imap.c
+7
-0
fs/jfs/jfs_logmgr.c
fs/jfs/jfs_logmgr.c
+6
-2
fs/jfs/jfs_txnmgr.c
fs/jfs/jfs_txnmgr.c
+1
-5
fs/jfs/jfs_xtree.c
fs/jfs/jfs_xtree.c
+116
-95
No files found.
fs/jfs/jfs_dmap.c
View file @
67f3362a
...
@@ -1526,6 +1526,7 @@ dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb, s64 * results)
...
@@ -1526,6 +1526,7 @@ dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb, s64 * results)
if
(
n
==
4
)
{
if
(
n
==
4
)
{
jfs_error
(
bmp
->
db_ipbmap
->
i_sb
,
jfs_error
(
bmp
->
db_ipbmap
->
i_sb
,
"dbAllocAG: failed descending stree"
);
"dbAllocAG: failed descending stree"
);
release_metapage
(
mp
);
return
-
EIO
;
return
-
EIO
;
}
}
}
}
...
@@ -3310,7 +3311,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
...
@@ -3310,7 +3311,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
int
i
,
i0
=
TRUE
,
j
,
j0
=
TRUE
,
k
,
n
;
int
i
,
i0
=
TRUE
,
j
,
j0
=
TRUE
,
k
,
n
;
s64
newsize
;
s64
newsize
;
s64
p
;
s64
p
;
struct
metapage
*
mp
,
*
l2mp
,
*
l1mp
,
*
l0mp
;
struct
metapage
*
mp
,
*
l2mp
,
*
l1mp
=
NULL
,
*
l0mp
=
NULL
;
struct
dmapctl
*
l2dcp
,
*
l1dcp
,
*
l0dcp
;
struct
dmapctl
*
l2dcp
,
*
l1dcp
,
*
l0dcp
;
struct
dmap
*
dp
;
struct
dmap
*
dp
;
s8
*
l0leaf
,
*
l1leaf
,
*
l2leaf
;
s8
*
l0leaf
,
*
l1leaf
,
*
l2leaf
;
...
@@ -3513,6 +3514,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
...
@@ -3513,6 +3514,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
*/
*/
*
l1leaf
=
dbInitDmapCtl
(
l0dcp
,
0
,
++
i
);
*
l1leaf
=
dbInitDmapCtl
(
l0dcp
,
0
,
++
i
);
write_metapage
(
l0mp
);
write_metapage
(
l0mp
);
l0mp
=
NULL
;
if
(
nblocks
)
if
(
nblocks
)
l1leaf
++
;
/* continue for next L0 */
l1leaf
++
;
/* continue for next L0 */
...
@@ -3536,6 +3538,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
...
@@ -3536,6 +3538,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
*/
*/
*
l2leaf
=
dbInitDmapCtl
(
l1dcp
,
1
,
++
j
);
*
l2leaf
=
dbInitDmapCtl
(
l1dcp
,
1
,
++
j
);
write_metapage
(
l1mp
);
write_metapage
(
l1mp
);
l1mp
=
NULL
;
if
(
nblocks
)
if
(
nblocks
)
l2leaf
++
;
/* continue for next L1 */
l2leaf
++
;
/* continue for next L1 */
...
@@ -3554,17 +3557,20 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
...
@@ -3554,17 +3557,20 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
jfs_error
(
ipbmap
->
i_sb
,
jfs_error
(
ipbmap
->
i_sb
,
"dbExtendFS: function has not returned as expected"
);
"dbExtendFS: function has not returned as expected"
);
errout:
if
(
l0mp
)
release_metapage
(
l0mp
);
if
(
l1mp
)
release_metapage
(
l1mp
);
release_metapage
(
l2mp
);
return
-
EIO
;
return
-
EIO
;
/*
/*
* finalize bmap control page
* finalize bmap control page
*/
*/
finalize:
finalize:
return
0
;
return
0
;
errout:
return
-
EIO
;
}
}
...
...
fs/jfs/jfs_dtree.c
View file @
67f3362a
...
@@ -1423,8 +1423,10 @@ static int dtSplitPage(tid_t tid, struct inode *ip, struct dtsplit * split,
...
@@ -1423,8 +1423,10 @@ static int dtSplitPage(tid_t tid, struct inode *ip, struct dtsplit * split,
*/
*/
if
(
nextbn
!=
0
)
{
if
(
nextbn
!=
0
)
{
DT_GETPAGE
(
ip
,
nextbn
,
mp
,
PSIZE
,
p
,
rc
);
DT_GETPAGE
(
ip
,
nextbn
,
mp
,
PSIZE
,
p
,
rc
);
if
(
rc
)
if
(
rc
)
{
discard_metapage
(
rmp
);
return
rc
;
return
rc
;
}
BT_MARK_DIRTY
(
mp
,
ip
);
BT_MARK_DIRTY
(
mp
,
ip
);
/*
/*
...
@@ -2235,8 +2237,10 @@ static int dtDeleteUp(tid_t tid, struct inode *ip,
...
@@ -2235,8 +2237,10 @@ static int dtDeleteUp(tid_t tid, struct inode *ip,
pxdlock
->
index
=
1
;
pxdlock
->
index
=
1
;
/* update sibling pointers */
/* update sibling pointers */
if
((
rc
=
dtRelink
(
tid
,
ip
,
fp
)))
if
((
rc
=
dtRelink
(
tid
,
ip
,
fp
)))
{
BT_PUTPAGE
(
fmp
);
return
rc
;
return
rc
;
}
xlen
=
lengthPXD
(
&
fp
->
header
.
self
);
xlen
=
lengthPXD
(
&
fp
->
header
.
self
);
ip
->
i_blocks
-=
LBLK2PBLK
(
ip
->
i_sb
,
xlen
);
ip
->
i_blocks
-=
LBLK2PBLK
(
ip
->
i_sb
,
xlen
);
...
@@ -2307,8 +2311,10 @@ static int dtDeleteUp(tid_t tid, struct inode *ip,
...
@@ -2307,8 +2311,10 @@ static int dtDeleteUp(tid_t tid, struct inode *ip,
pxdlock
->
index
=
1
;
pxdlock
->
index
=
1
;
/* update sibling pointers */
/* update sibling pointers */
if
((
rc
=
dtRelink
(
tid
,
ip
,
p
)))
if
((
rc
=
dtRelink
(
tid
,
ip
,
p
)))
{
DT_PUTPAGE
(
mp
);
return
rc
;
return
rc
;
}
xlen
=
lengthPXD
(
&
p
->
header
.
self
);
xlen
=
lengthPXD
(
&
p
->
header
.
self
);
ip
->
i_blocks
-=
LBLK2PBLK
(
ip
->
i_sb
,
xlen
);
ip
->
i_blocks
-=
LBLK2PBLK
(
ip
->
i_sb
,
xlen
);
...
@@ -2621,8 +2627,10 @@ static int dtSearchNode(struct inode *ip, s64 lmxaddr, pxd_t * kpxd,
...
@@ -2621,8 +2627,10 @@ static int dtSearchNode(struct inode *ip, s64 lmxaddr, pxd_t * kpxd,
/*
/*
* descend down to leftmost child page
* descend down to leftmost child page
*/
*/
if
(
p
->
header
.
flag
&
BT_LEAF
)
if
(
p
->
header
.
flag
&
BT_LEAF
)
{
DT_PUTPAGE
(
mp
);
return
-
ESTALE
;
return
-
ESTALE
;
}
/* get the leftmost entry */
/* get the leftmost entry */
stbl
=
DT_GETSTBL
(
p
);
stbl
=
DT_GETSTBL
(
p
);
...
...
fs/jfs/jfs_imap.c
View file @
67f3362a
...
@@ -1546,6 +1546,7 @@ int diAlloc(struct inode *pip, boolean_t dir, struct inode *ip)
...
@@ -1546,6 +1546,7 @@ int diAlloc(struct inode *pip, boolean_t dir, struct inode *ip)
0
);
0
);
if
(
rem
>=
INOSPEREXT
)
{
if
(
rem
>=
INOSPEREXT
)
{
IREAD_UNLOCK
(
ipimap
);
IREAD_UNLOCK
(
ipimap
);
release_metapage
(
mp
);
AG_UNLOCK
(
imap
,
agno
);
AG_UNLOCK
(
imap
,
agno
);
jfs_error
(
ip
->
i_sb
,
jfs_error
(
ip
->
i_sb
,
"diAlloc: can't find free bit "
"diAlloc: can't find free bit "
...
@@ -1840,6 +1841,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
...
@@ -1840,6 +1841,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
*/
*/
if
(
!
iagp
->
nfreeinos
)
{
if
(
!
iagp
->
nfreeinos
)
{
IREAD_UNLOCK
(
imap
->
im_ipimap
);
IREAD_UNLOCK
(
imap
->
im_ipimap
);
release_metapage
(
mp
);
jfs_error
(
ip
->
i_sb
,
jfs_error
(
ip
->
i_sb
,
"diAllocIno: nfreeinos = 0, but iag on freelist"
);
"diAllocIno: nfreeinos = 0, but iag on freelist"
);
return
-
EIO
;
return
-
EIO
;
...
@@ -1851,6 +1853,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
...
@@ -1851,6 +1853,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
for
(
sword
=
0
;;
sword
++
)
{
for
(
sword
=
0
;;
sword
++
)
{
if
(
sword
>=
SMAPSZ
)
{
if
(
sword
>=
SMAPSZ
)
{
IREAD_UNLOCK
(
imap
->
im_ipimap
);
IREAD_UNLOCK
(
imap
->
im_ipimap
);
release_metapage
(
mp
);
jfs_error
(
ip
->
i_sb
,
jfs_error
(
ip
->
i_sb
,
"diAllocIno: free inode not found in summary map"
);
"diAllocIno: free inode not found in summary map"
);
return
-
EIO
;
return
-
EIO
;
...
@@ -1866,6 +1869,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
...
@@ -1866,6 +1869,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
rem
=
diFindFree
(
le32_to_cpu
(
iagp
->
inosmap
[
sword
]),
0
);
rem
=
diFindFree
(
le32_to_cpu
(
iagp
->
inosmap
[
sword
]),
0
);
if
(
rem
>=
EXTSPERSUM
)
{
if
(
rem
>=
EXTSPERSUM
)
{
IREAD_UNLOCK
(
imap
->
im_ipimap
);
IREAD_UNLOCK
(
imap
->
im_ipimap
);
release_metapage
(
mp
);
jfs_error
(
ip
->
i_sb
,
"diAllocIno: no free extent found"
);
jfs_error
(
ip
->
i_sb
,
"diAllocIno: no free extent found"
);
return
-
EIO
;
return
-
EIO
;
}
}
...
@@ -1876,6 +1880,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
...
@@ -1876,6 +1880,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
rem
=
diFindFree
(
le32_to_cpu
(
iagp
->
wmap
[
extno
]),
0
);
rem
=
diFindFree
(
le32_to_cpu
(
iagp
->
wmap
[
extno
]),
0
);
if
(
rem
>=
INOSPEREXT
)
{
if
(
rem
>=
INOSPEREXT
)
{
IREAD_UNLOCK
(
imap
->
im_ipimap
);
IREAD_UNLOCK
(
imap
->
im_ipimap
);
release_metapage
(
mp
);
jfs_error
(
ip
->
i_sb
,
"diAllocIno: free inode not found"
);
jfs_error
(
ip
->
i_sb
,
"diAllocIno: free inode not found"
);
return
-
EIO
;
return
-
EIO
;
}
}
...
@@ -2839,12 +2844,14 @@ diUpdatePMap(struct inode *ipimap,
...
@@ -2839,12 +2844,14 @@ diUpdatePMap(struct inode *ipimap,
* and should be free in persistent map;
* and should be free in persistent map;
*/
*/
if
(
!
(
le32_to_cpu
(
iagp
->
wmap
[
extno
])
&
mask
))
{
if
(
!
(
le32_to_cpu
(
iagp
->
wmap
[
extno
])
&
mask
))
{
release_metapage
(
mp
);
jfs_error
(
ipimap
->
i_sb
,
jfs_error
(
ipimap
->
i_sb
,
"diUpdatePMap: the inode is not allocated in "
"diUpdatePMap: the inode is not allocated in "
"the working map"
);
"the working map"
);
return
-
EIO
;
return
-
EIO
;
}
}
if
((
le32_to_cpu
(
iagp
->
pmap
[
extno
])
&
mask
)
!=
0
)
{
if
((
le32_to_cpu
(
iagp
->
pmap
[
extno
])
&
mask
)
!=
0
)
{
release_metapage
(
mp
);
jfs_error
(
ipimap
->
i_sb
,
jfs_error
(
ipimap
->
i_sb
,
"diUpdatePMap: the inode is not free in the "
"diUpdatePMap: the inode is not free in the "
"persistent map"
);
"persistent map"
);
...
...
fs/jfs/jfs_logmgr.c
View file @
67f3362a
...
@@ -979,7 +979,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
...
@@ -979,7 +979,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
* We need to make sure all of the "written" metapages
* We need to make sure all of the "written" metapages
* actually make it to disk
* actually make it to disk
*/
*/
down
(
&
jfs_log_sem
);
list_for_each_entry
(
sbi
,
&
log
->
sb_list
,
log_list
)
{
list_for_each_entry
(
sbi
,
&
log
->
sb_list
,
log_list
)
{
filemap_fdatawrite
(
sbi
->
ipbmap
->
i_mapping
);
filemap_fdatawrite
(
sbi
->
ipbmap
->
i_mapping
);
filemap_fdatawrite
(
sbi
->
ipimap
->
i_mapping
);
filemap_fdatawrite
(
sbi
->
ipimap
->
i_mapping
);
...
@@ -990,7 +989,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
...
@@ -990,7 +989,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
filemap_fdatawait
(
sbi
->
ipimap
->
i_mapping
);
filemap_fdatawait
(
sbi
->
ipimap
->
i_mapping
);
filemap_fdatawait
(
sbi
->
sb
->
s_bdev
->
bd_inode
->
i_mapping
);
filemap_fdatawait
(
sbi
->
sb
->
s_bdev
->
bd_inode
->
i_mapping
);
}
}
up
(
&
jfs_log_sem
);
lrd
.
logtid
=
0
;
lrd
.
logtid
=
0
;
lrd
.
backchain
=
0
;
lrd
.
backchain
=
0
;
...
@@ -1151,8 +1149,10 @@ int lmLogOpen(struct super_block *sb)
...
@@ -1151,8 +1149,10 @@ int lmLogOpen(struct super_block *sb)
goto
shutdown
;
goto
shutdown
;
journal_found:
journal_found:
LOG_LOCK
(
log
);
list_add
(
&
sbi
->
log_list
,
&
log
->
sb_list
);
list_add
(
&
sbi
->
log_list
,
&
log
->
sb_list
);
sbi
->
log
=
log
;
sbi
->
log
=
log
;
LOG_UNLOCK
(
log
);
up
(
&
jfs_log_sem
);
up
(
&
jfs_log_sem
);
return
0
;
return
0
;
...
@@ -1237,8 +1237,10 @@ static int open_dummy_log(struct super_block *sb)
...
@@ -1237,8 +1237,10 @@ static int open_dummy_log(struct super_block *sb)
}
}
}
}
LOG_LOCK
(
dummy_log
);
list_add
(
&
JFS_SBI
(
sb
)
->
log_list
,
&
dummy_log
->
sb_list
);
list_add
(
&
JFS_SBI
(
sb
)
->
log_list
,
&
dummy_log
->
sb_list
);
JFS_SBI
(
sb
)
->
log
=
dummy_log
;
JFS_SBI
(
sb
)
->
log
=
dummy_log
;
LOG_UNLOCK
(
dummy_log
);
up
(
&
jfs_log_sem
);
up
(
&
jfs_log_sem
);
return
0
;
return
0
;
...
@@ -1469,7 +1471,9 @@ int lmLogClose(struct super_block *sb)
...
@@ -1469,7 +1471,9 @@ int lmLogClose(struct super_block *sb)
jfs_info
(
"lmLogClose: log:0x%p"
,
log
);
jfs_info
(
"lmLogClose: log:0x%p"
,
log
);
down
(
&
jfs_log_sem
);
down
(
&
jfs_log_sem
);
LOG_LOCK
(
log
);
list_del
(
&
sbi
->
log_list
);
list_del
(
&
sbi
->
log_list
);
LOG_UNLOCK
(
log
);
sbi
->
log
=
NULL
;
sbi
->
log
=
NULL
;
/*
/*
...
...
fs/jfs/jfs_txnmgr.c
View file @
67f3362a
...
@@ -1356,9 +1356,6 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
...
@@ -1356,9 +1356,6 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
lrd
->
log
.
redopage
.
fileset
=
cpu_to_le32
(
JFS_IP
(
ip
)
->
fileset
);
lrd
->
log
.
redopage
.
fileset
=
cpu_to_le32
(
JFS_IP
(
ip
)
->
fileset
);
lrd
->
log
.
redopage
.
inode
=
cpu_to_le32
(
ip
->
i_ino
);
lrd
->
log
.
redopage
.
inode
=
cpu_to_le32
(
ip
->
i_ino
);
if
(
tlck
->
mp
)
hold_metapage
(
tlck
->
mp
,
0
);
/* write log record of page from the tlock */
/* write log record of page from the tlock */
switch
(
tlck
->
type
&
tlckTYPE
)
{
switch
(
tlck
->
type
&
tlckTYPE
)
{
case
tlckXTREE
:
case
tlckXTREE
:
...
@@ -1384,8 +1381,6 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
...
@@ -1384,8 +1381,6 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
default:
default:
jfs_err
(
"UFO tlock:0x%p"
,
tlck
);
jfs_err
(
"UFO tlock:0x%p"
,
tlck
);
}
}
if
(
tlck
->
mp
)
release_metapage
(
tlck
->
mp
);
}
}
return
rc
;
return
rc
;
...
@@ -1535,6 +1530,7 @@ static int dataLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
...
@@ -1535,6 +1530,7 @@ static int dataLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
* the last entry, so don't bother logging this
* the last entry, so don't bother logging this
*/
*/
mp
->
lid
=
0
;
mp
->
lid
=
0
;
hold_metapage
(
mp
,
0
);
atomic_dec
(
&
mp
->
nohomeok
);
atomic_dec
(
&
mp
->
nohomeok
);
discard_metapage
(
mp
);
discard_metapage
(
mp
);
tlck
->
mp
=
0
;
tlck
->
mp
=
0
;
...
...
fs/jfs/jfs_xtree.c
View file @
67f3362a
This diff is collapsed.
Click to expand it.
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