Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
49302d0c
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
49302d0c
编写于
7月 27, 2005
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge head 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/shaggy/jfs-2.6
上级
839c5d25
18190cc0
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
42 addition
and
31 deletion
+42
-31
fs/jfs/jfs_dmap.c
fs/jfs/jfs_dmap.c
+30
-16
fs/jfs/jfs_dtree.c
fs/jfs/jfs_dtree.c
+9
-4
fs/jfs/jfs_logmgr.c
fs/jfs/jfs_logmgr.c
+2
-1
fs/jfs/jfs_metapage.c
fs/jfs/jfs_metapage.c
+1
-10
未找到文件。
fs/jfs/jfs_dmap.c
浏览文件 @
49302d0c
...
@@ -75,7 +75,7 @@ static void dbAllocBits(struct bmap * bmp, struct dmap * dp, s64 blkno,
...
@@ -75,7 +75,7 @@ static void dbAllocBits(struct bmap * bmp, struct dmap * dp, s64 blkno,
int
nblocks
);
int
nblocks
);
static
void
dbSplit
(
dmtree_t
*
tp
,
int
leafno
,
int
splitsz
,
int
newval
);
static
void
dbSplit
(
dmtree_t
*
tp
,
int
leafno
,
int
splitsz
,
int
newval
);
static
void
dbBackSplit
(
dmtree_t
*
tp
,
int
leafno
);
static
void
dbBackSplit
(
dmtree_t
*
tp
,
int
leafno
);
static
void
dbJoin
(
dmtree_t
*
tp
,
int
leafno
,
int
newval
);
static
int
dbJoin
(
dmtree_t
*
tp
,
int
leafno
,
int
newval
);
static
void
dbAdjTree
(
dmtree_t
*
tp
,
int
leafno
,
int
newval
);
static
void
dbAdjTree
(
dmtree_t
*
tp
,
int
leafno
,
int
newval
);
static
int
dbAdjCtl
(
struct
bmap
*
bmp
,
s64
blkno
,
int
newval
,
int
alloc
,
static
int
dbAdjCtl
(
struct
bmap
*
bmp
,
s64
blkno
,
int
newval
,
int
alloc
,
int
level
);
int
level
);
...
@@ -98,8 +98,8 @@ static int dbExtend(struct inode *ip, s64 blkno, s64 nblocks, s64 addnblocks);
...
@@ -98,8 +98,8 @@ 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
);
static
void
dbFreeBits
(
struct
bmap
*
bmp
,
struct
dmap
*
dp
,
s64
blkno
,
static
int
dbFreeBits
(
struct
bmap
*
bmp
,
struct
dmap
*
dp
,
s64
blkno
,
int
nblocks
);
int
nblocks
);
static
int
dbFreeDmap
(
struct
bmap
*
bmp
,
struct
dmap
*
dp
,
s64
blkno
,
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
);
...
@@ -378,6 +378,7 @@ int dbFree(struct inode *ip, s64 blkno, s64 nblocks)
...
@@ -378,6 +378,7 @@ int dbFree(struct inode *ip, s64 blkno, s64 nblocks)
/* free the blocks. */
/* free the blocks. */
if
((
rc
=
dbFreeDmap
(
bmp
,
dp
,
blkno
,
nb
)))
{
if
((
rc
=
dbFreeDmap
(
bmp
,
dp
,
blkno
,
nb
)))
{
jfs_error
(
ip
->
i_sb
,
"dbFree: error in block map
\n
"
);
release_metapage
(
mp
);
release_metapage
(
mp
);
IREAD_UNLOCK
(
ipbmap
);
IREAD_UNLOCK
(
ipbmap
);
return
(
rc
);
return
(
rc
);
...
@@ -2020,7 +2021,7 @@ static int dbFreeDmap(struct bmap * bmp, struct dmap * dp, s64 blkno,
...
@@ -2020,7 +2021,7 @@ static int dbFreeDmap(struct bmap * bmp, struct dmap * dp, s64 blkno,
int
nblocks
)
int
nblocks
)
{
{
s8
oldroot
;
s8
oldroot
;
int
rc
,
word
;
int
rc
=
0
,
word
;
/* save the current value of the root (i.e. maximum free string)
/* save the current value of the root (i.e. maximum free string)
* of the dmap tree.
* of the dmap tree.
...
@@ -2028,11 +2029,11 @@ static int dbFreeDmap(struct bmap * bmp, struct dmap * dp, s64 blkno,
...
@@ -2028,11 +2029,11 @@ static int dbFreeDmap(struct bmap * bmp, struct dmap * dp, s64 blkno,
oldroot
=
dp
->
tree
.
stree
[
ROOT
];
oldroot
=
dp
->
tree
.
stree
[
ROOT
];
/* free the specified (blocks) bits */
/* free the specified (blocks) bits */
dbFreeBits
(
bmp
,
dp
,
blkno
,
nblocks
);
rc
=
dbFreeBits
(
bmp
,
dp
,
blkno
,
nblocks
);
/* if the root has not changed, done. */
/* if
error or
the root has not changed, done. */
if
(
dp
->
tree
.
stree
[
ROOT
]
==
oldroot
)
if
(
rc
||
(
dp
->
tree
.
stree
[
ROOT
]
==
oldroot
)
)
return
(
0
);
return
(
rc
);
/* root changed. bubble the change up to the dmap control pages.
/* root changed. bubble the change up to the dmap control pages.
* if the adjustment of the upper level control pages fails,
* if the adjustment of the upper level control pages fails,
...
@@ -2221,15 +2222,16 @@ static void dbAllocBits(struct bmap * bmp, struct dmap * dp, s64 blkno,
...
@@ -2221,15 +2222,16 @@ static void dbAllocBits(struct bmap * bmp, struct dmap * dp, s64 blkno,
* blkno - starting block number of the bits to be freed.
* blkno - starting block number of the bits to be freed.
* nblocks - number of bits to be freed.
* nblocks - number of bits to be freed.
*
*
* RETURN VALUES:
none
* RETURN VALUES:
0 for success
*
*
* serialization: IREAD_LOCK(ipbmap) or IWRITE_LOCK(ipbmap) held on entry/exit;
* serialization: IREAD_LOCK(ipbmap) or IWRITE_LOCK(ipbmap) held on entry/exit;
*/
*/
static
void
dbFreeBits
(
struct
bmap
*
bmp
,
struct
dmap
*
dp
,
s64
blkno
,
static
int
dbFreeBits
(
struct
bmap
*
bmp
,
struct
dmap
*
dp
,
s64
blkno
,
int
nblocks
)
int
nblocks
)
{
{
int
dbitno
,
word
,
rembits
,
nb
,
nwords
,
wbitno
,
nw
,
agno
;
int
dbitno
,
word
,
rembits
,
nb
,
nwords
,
wbitno
,
nw
,
agno
;
dmtree_t
*
tp
=
(
dmtree_t
*
)
&
dp
->
tree
;
dmtree_t
*
tp
=
(
dmtree_t
*
)
&
dp
->
tree
;
int
rc
=
0
;
int
size
;
int
size
;
/* determine the bit number and word within the dmap of the
/* determine the bit number and word within the dmap of the
...
@@ -2278,8 +2280,10 @@ static void dbFreeBits(struct bmap * bmp, struct dmap * dp, s64 blkno,
...
@@ -2278,8 +2280,10 @@ static void dbFreeBits(struct bmap * bmp, struct dmap * dp, s64 blkno,
/* update the leaf for this dmap word.
/* update the leaf for this dmap word.
*/
*/
dbJoin
(
tp
,
word
,
rc
=
dbJoin
(
tp
,
word
,
dbMaxBud
((
u8
*
)
&
dp
->
wmap
[
word
]));
dbMaxBud
((
u8
*
)
&
dp
->
wmap
[
word
]));
if
(
rc
)
return
rc
;
word
+=
1
;
word
+=
1
;
}
else
{
}
else
{
...
@@ -2310,7 +2314,9 @@ static void dbFreeBits(struct bmap * bmp, struct dmap * dp, s64 blkno,
...
@@ -2310,7 +2314,9 @@ static void dbFreeBits(struct bmap * bmp, struct dmap * dp, s64 blkno,
/* update the leaf.
/* update the leaf.
*/
*/
dbJoin
(
tp
,
word
,
size
);
rc
=
dbJoin
(
tp
,
word
,
size
);
if
(
rc
)
return
rc
;
/* get the number of dmap words handled.
/* get the number of dmap words handled.
*/
*/
...
@@ -2357,6 +2363,8 @@ static void dbFreeBits(struct bmap * bmp, struct dmap * dp, s64 blkno,
...
@@ -2357,6 +2363,8 @@ static void dbFreeBits(struct bmap * bmp, struct dmap * dp, s64 blkno,
}
}
BMAP_UNLOCK
(
bmp
);
BMAP_UNLOCK
(
bmp
);
return
0
;
}
}
...
@@ -2464,7 +2472,9 @@ dbAdjCtl(struct bmap * bmp, s64 blkno, int newval, int alloc, int level)
...
@@ -2464,7 +2472,9 @@ dbAdjCtl(struct bmap * bmp, s64 blkno, int newval, int alloc, int level)
}
}
dbSplit
((
dmtree_t
*
)
dcp
,
leafno
,
dcp
->
budmin
,
newval
);
dbSplit
((
dmtree_t
*
)
dcp
,
leafno
,
dcp
->
budmin
,
newval
);
}
else
{
}
else
{
dbJoin
((
dmtree_t
*
)
dcp
,
leafno
,
newval
);
rc
=
dbJoin
((
dmtree_t
*
)
dcp
,
leafno
,
newval
);
if
(
rc
)
return
rc
;
}
}
/* check if the root of the current dmap control page changed due
/* check if the root of the current dmap control page changed due
...
@@ -2689,7 +2699,7 @@ static void dbBackSplit(dmtree_t * tp, int leafno)
...
@@ -2689,7 +2699,7 @@ static void dbBackSplit(dmtree_t * tp, int leafno)
*
*
* RETURN VALUES: none
* RETURN VALUES: none
*/
*/
static
void
dbJoin
(
dmtree_t
*
tp
,
int
leafno
,
int
newval
)
static
int
dbJoin
(
dmtree_t
*
tp
,
int
leafno
,
int
newval
)
{
{
int
budsz
,
buddy
;
int
budsz
,
buddy
;
s8
*
leaf
;
s8
*
leaf
;
...
@@ -2729,7 +2739,9 @@ static void dbJoin(dmtree_t * tp, int leafno, int newval)
...
@@ -2729,7 +2739,9 @@ static void dbJoin(dmtree_t * tp, int leafno, int newval)
if
(
newval
>
leaf
[
buddy
])
if
(
newval
>
leaf
[
buddy
])
break
;
break
;
assert
(
newval
==
leaf
[
buddy
]);
/* It shouldn't be less */
if
(
newval
<
leaf
[
buddy
])
return
-
EIO
;
/* check which (leafno or buddy) is the left buddy.
/* check which (leafno or buddy) is the left buddy.
* the left buddy gets to claim the blocks resulting
* the left buddy gets to claim the blocks resulting
...
@@ -2761,6 +2773,8 @@ static void dbJoin(dmtree_t * tp, int leafno, int newval)
...
@@ -2761,6 +2773,8 @@ static void dbJoin(dmtree_t * tp, int leafno, int newval)
/* update the leaf value.
/* update the leaf value.
*/
*/
dbAdjTree
(
tp
,
leafno
,
newval
);
dbAdjTree
(
tp
,
leafno
,
newval
);
return
0
;
}
}
...
...
fs/jfs/jfs_dtree.c
浏览文件 @
49302d0c
...
@@ -381,9 +381,12 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot)
...
@@ -381,9 +381,12 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot)
* It's time to move the inline table to an external
* It's time to move the inline table to an external
* page and begin to build the xtree
* page and begin to build the xtree
*/
*/
if
(
DQUOT_ALLOC_BLOCK
(
ip
,
sbi
->
nbperpage
)
||
if
(
DQUOT_ALLOC_BLOCK
(
ip
,
sbi
->
nbperpage
))
dbAlloc
(
ip
,
0
,
sbi
->
nbperpage
,
&
xaddr
))
goto
clean_up
;
goto
clean_up
;
/* No space */
if
(
dbAlloc
(
ip
,
0
,
sbi
->
nbperpage
,
&
xaddr
))
{
DQUOT_FREE_BLOCK
(
ip
,
sbi
->
nbperpage
);
goto
clean_up
;
}
/*
/*
* Save the table, we're going to overwrite it with the
* Save the table, we're going to overwrite it with the
...
@@ -397,13 +400,15 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot)
...
@@ -397,13 +400,15 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot)
xtInitRoot
(
tid
,
ip
);
xtInitRoot
(
tid
,
ip
);
/*
/*
* A
llocate the first block & add it
to the xtree
* A
dd the first block
to the xtree
*/
*/
if
(
xtInsert
(
tid
,
ip
,
0
,
0
,
sbi
->
nbperpage
,
&
xaddr
,
0
))
{
if
(
xtInsert
(
tid
,
ip
,
0
,
0
,
sbi
->
nbperpage
,
&
xaddr
,
0
))
{
/* This really shouldn't fail */
/* This really shouldn't fail */
jfs_warn
(
"add_index: xtInsert failed!"
);
jfs_warn
(
"add_index: xtInsert failed!"
);
memcpy
(
&
jfs_ip
->
i_dirtable
,
temp_table
,
memcpy
(
&
jfs_ip
->
i_dirtable
,
temp_table
,
sizeof
(
temp_table
));
sizeof
(
temp_table
));
dbFree
(
ip
,
xaddr
,
sbi
->
nbperpage
);
DQUOT_FREE_BLOCK
(
ip
,
sbi
->
nbperpage
);
goto
clean_up
;
goto
clean_up
;
}
}
ip
->
i_size
=
PSIZE
;
ip
->
i_size
=
PSIZE
;
...
...
fs/jfs/jfs_logmgr.c
浏览文件 @
49302d0c
...
@@ -1030,7 +1030,8 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
...
@@ -1030,7 +1030,8 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
* starting until all current transactions are completed
* starting until all current transactions are completed
* by setting syncbarrier flag.
* by setting syncbarrier flag.
*/
*/
if
(
written
>
LOGSYNC_BARRIER
(
logsize
)
&&
logsize
>
32
*
LOGPSIZE
)
{
if
(
!
test_bit
(
log_SYNCBARRIER
,
&
log
->
flag
)
&&
(
written
>
LOGSYNC_BARRIER
(
logsize
))
&&
log
->
active
)
{
set_bit
(
log_SYNCBARRIER
,
&
log
->
flag
);
set_bit
(
log_SYNCBARRIER
,
&
log
->
flag
);
jfs_info
(
"log barrier on: lsn=0x%x syncpt=0x%x"
,
lsn
,
jfs_info
(
"log barrier on: lsn=0x%x syncpt=0x%x"
,
lsn
,
log
->
syncpt
);
log
->
syncpt
);
...
...
fs/jfs/jfs_metapage.c
浏览文件 @
49302d0c
...
@@ -561,7 +561,6 @@ static int metapage_releasepage(struct page *page, int gfp_mask)
...
@@ -561,7 +561,6 @@ static int metapage_releasepage(struct page *page, int gfp_mask)
dump_mem
(
"page"
,
page
,
sizeof
(
struct
page
));
dump_mem
(
"page"
,
page
,
sizeof
(
struct
page
));
dump_stack
();
dump_stack
();
}
}
WARN_ON
(
mp
->
lsn
);
if
(
mp
->
lsn
)
if
(
mp
->
lsn
)
remove_from_logsync
(
mp
);
remove_from_logsync
(
mp
);
remove_metapage
(
page
,
mp
);
remove_metapage
(
page
,
mp
);
...
@@ -641,7 +640,7 @@ struct metapage *__get_metapage(struct inode *inode, unsigned long lblock,
...
@@ -641,7 +640,7 @@ struct metapage *__get_metapage(struct inode *inode, unsigned long lblock,
}
else
{
}
else
{
page
=
read_cache_page
(
mapping
,
page_index
,
page
=
read_cache_page
(
mapping
,
page_index
,
(
filler_t
*
)
mapping
->
a_ops
->
readpage
,
NULL
);
(
filler_t
*
)
mapping
->
a_ops
->
readpage
,
NULL
);
if
(
IS_ERR
(
page
))
{
if
(
IS_ERR
(
page
)
||
!
PageUptodate
(
page
)
)
{
jfs_err
(
"read_cache_page failed!"
);
jfs_err
(
"read_cache_page failed!"
);
return
NULL
;
return
NULL
;
}
}
...
@@ -783,14 +782,6 @@ void release_metapage(struct metapage * mp)
...
@@ -783,14 +782,6 @@ void release_metapage(struct metapage * mp)
if
(
test_bit
(
META_discard
,
&
mp
->
flag
)
&&
!
mp
->
count
)
{
if
(
test_bit
(
META_discard
,
&
mp
->
flag
)
&&
!
mp
->
count
)
{
clear_page_dirty
(
page
);
clear_page_dirty
(
page
);
ClearPageUptodate
(
page
);
ClearPageUptodate
(
page
);
#ifdef _NOT_YET
if
(
page
->
mapping
)
{
/* Remove from page cache and page cache reference */
remove_from_page_cache
(
page
);
page_cache_release
(
page
);
metapage_releasepage
(
page
,
0
);
}
#endif
}
}
#else
#else
/* Try to keep metapages from using up too much memory */
/* Try to keep metapages from using up too much memory */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录