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
5153f7e6
Commit
5153f7e6
authored
Aug 16, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge head 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/shaggy/jfs-2.6
parents
ca27ea48
2d610b80
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
34 additions
and
24 deletions
+34
-24
fs/jfs/inode.c
fs/jfs/inode.c
+4
-0
fs/jfs/jfs_logmgr.c
fs/jfs/jfs_logmgr.c
+19
-17
fs/jfs/jfs_logmgr.h
fs/jfs/jfs_logmgr.h
+1
-1
fs/jfs/jfs_txnmgr.c
fs/jfs/jfs_txnmgr.c
+7
-5
fs/jfs/super.c
fs/jfs/super.c
+3
-1
No files found.
fs/jfs/inode.c
View file @
5153f7e6
...
...
@@ -128,6 +128,10 @@ void jfs_delete_inode(struct inode *inode)
{
jfs_info
(
"In jfs_delete_inode, inode = 0x%p"
,
inode
);
if
(
is_bad_inode
(
inode
)
||
(
JFS_IP
(
inode
)
->
fileset
!=
cpu_to_le32
(
FILESYSTEM_I
)))
return
;
if
(
test_cflag
(
COMMIT_Freewmap
,
inode
))
jfs_free_zero_link
(
inode
);
...
...
fs/jfs/jfs_logmgr.c
View file @
5153f7e6
...
...
@@ -191,7 +191,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
);
static
int
lmLogSync
(
struct
jfs_log
*
log
,
int
hard_sync
);
...
...
@@ -915,19 +915,17 @@ static void lmPostGC(struct lbuf * bp)
* if new sync address is available
* (normally the case if sync() is executed by back-ground
* process).
* if not, explicitly run jfs_blogsync() to initiate
* getting of new sync address.
* calculate new value of i_nextsync which determines when
* this code is called again.
*
* PARAMETERS: log - log structure
*
nosyncwait - 1 if called asynchronously
*
hard_sync - 1 to force all metadata to be written
*
* RETURN: 0
*
* serialization: LOG_LOCK() held on entry/exit
*/
static
int
lmLogSync
(
struct
jfs_log
*
log
,
int
nosyncwait
)
static
int
lmLogSync
(
struct
jfs_log
*
log
,
int
hard_sync
)
{
int
logsize
;
int
written
;
/* written since last syncpt */
...
...
@@ -941,11 +939,18 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
unsigned
long
flags
;
/* push dirty metapages out to disk */
list_for_each_entry
(
sbi
,
&
log
->
sb_list
,
log_list
)
{
filemap_flush
(
sbi
->
ipbmap
->
i_mapping
);
filemap_flush
(
sbi
->
ipimap
->
i_mapping
);
filemap_flush
(
sbi
->
direct_inode
->
i_mapping
);
}
if
(
hard_sync
)
list_for_each_entry
(
sbi
,
&
log
->
sb_list
,
log_list
)
{
filemap_fdatawrite
(
sbi
->
ipbmap
->
i_mapping
);
filemap_fdatawrite
(
sbi
->
ipimap
->
i_mapping
);
filemap_fdatawrite
(
sbi
->
direct_inode
->
i_mapping
);
}
else
list_for_each_entry
(
sbi
,
&
log
->
sb_list
,
log_list
)
{
filemap_flush
(
sbi
->
ipbmap
->
i_mapping
);
filemap_flush
(
sbi
->
ipimap
->
i_mapping
);
filemap_flush
(
sbi
->
direct_inode
->
i_mapping
);
}
/*
* forward syncpt
...
...
@@ -1021,10 +1026,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
/* next syncpt trigger = written + more */
log
->
nextsync
=
written
+
more
;
/* return if lmLogSync() from outside of transaction, e.g., sync() */
if
(
nosyncwait
)
return
lsn
;
/* if number of bytes written from last sync point is more
* than 1/4 of the log size, stop new transactions from
* starting until all current transactions are completed
...
...
@@ -1049,11 +1050,12 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
*
* FUNCTION: write log SYNCPT record for specified log
*
* PARAMETERS: log - log structure
* PARAMETERS: log - log structure
* hard_sync - set to 1 to force metadata to be written
*/
void
jfs_syncpt
(
struct
jfs_log
*
log
)
void
jfs_syncpt
(
struct
jfs_log
*
log
,
int
hard_sync
)
{
LOG_LOCK
(
log
);
lmLogSync
(
log
,
1
);
lmLogSync
(
log
,
hard_sync
);
LOG_UNLOCK
(
log
);
}
...
...
fs/jfs/jfs_logmgr.h
View file @
5153f7e6
...
...
@@ -510,6 +510,6 @@ extern int lmLogFormat(struct jfs_log *log, s64 logAddress, int logSize);
extern
int
lmGroupCommit
(
struct
jfs_log
*
,
struct
tblock
*
);
extern
int
jfsIOWait
(
void
*
);
extern
void
jfs_flush_journal
(
struct
jfs_log
*
log
,
int
wait
);
extern
void
jfs_syncpt
(
struct
jfs_log
*
log
);
extern
void
jfs_syncpt
(
struct
jfs_log
*
log
,
int
hard_sync
);
#endif
/* _H_JFS_LOGMGR */
fs/jfs/jfs_txnmgr.c
View file @
5153f7e6
...
...
@@ -552,6 +552,11 @@ void txEnd(tid_t tid)
* synchronize with logsync barrier
*/
if
(
test_bit
(
log_SYNCBARRIER
,
&
log
->
flag
))
{
TXN_UNLOCK
();
/* write dirty metadata & forward log syncpt */
jfs_syncpt
(
log
,
1
);
jfs_info
(
"log barrier off: 0x%x"
,
log
->
lsn
);
/* enable new transactions start */
...
...
@@ -560,11 +565,6 @@ void txEnd(tid_t tid)
/* wakeup all waitors for logsync barrier */
TXN_WAKEUP
(
&
log
->
syncwait
);
TXN_UNLOCK
();
/* forward log syncpt */
jfs_syncpt
(
log
);
goto
wakeup
;
}
}
...
...
@@ -657,7 +657,9 @@ struct tlock *txLock(tid_t tid, struct inode *ip, struct metapage * mp,
/* only anonymous txn.
* Remove from anon_list
*/
TXN_LOCK
();
list_del_init
(
&
jfs_ip
->
anon_inode_list
);
TXN_UNLOCK
();
}
jfs_ip
->
atlhead
=
tlck
->
next
;
}
else
{
...
...
fs/jfs/super.c
View file @
5153f7e6
...
...
@@ -114,6 +114,8 @@ static void jfs_destroy_inode(struct inode *inode)
{
struct
jfs_inode_info
*
ji
=
JFS_IP
(
inode
);
BUG_ON
(
!
list_empty
(
&
ji
->
anon_inode_list
));
spin_lock_irq
(
&
ji
->
ag_lock
);
if
(
ji
->
active_ag
!=
-
1
)
{
struct
bmap
*
bmap
=
JFS_SBI
(
inode
->
i_sb
)
->
bmap
;
...
...
@@ -531,7 +533,7 @@ static int jfs_sync_fs(struct super_block *sb, int wait)
/* log == NULL indicates read-only mount */
if
(
log
)
{
jfs_flush_journal
(
log
,
wait
);
jfs_syncpt
(
log
);
jfs_syncpt
(
log
,
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