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
215211de
Commit
215211de
authored
Mar 03, 2004
by
Dave Kleikamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
JFS: Support sharing of journal by multiple volumes
parent
db8d295b
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
316 additions
and
210 deletions
+316
-210
fs/jfs/jfs_incore.h
fs/jfs/jfs_incore.h
+4
-2
fs/jfs/jfs_logmgr.c
fs/jfs/jfs_logmgr.c
+296
-185
fs/jfs/jfs_logmgr.h
fs/jfs/jfs_logmgr.h
+7
-10
fs/jfs/jfs_mount.c
fs/jfs/jfs_mount.c
+3
-7
fs/jfs/jfs_txnmgr.c
fs/jfs/jfs_txnmgr.c
+2
-2
fs/jfs/jfs_umount.c
fs/jfs/jfs_umount.c
+3
-4
fs/jfs/super.c
fs/jfs/super.c
+1
-0
No files found.
fs/jfs/jfs_incore.h
View file @
215211de
/*
/*
* Copyright (
c) International Business Machines Corp., 2000-2003
* Copyright (
C) International Business Machines Corp., 2000-2004
* Portions Copyright (
c
) Christoph Hellwig, 2001-2002
* Portions Copyright (
C
) Christoph Hellwig, 2001-2002
*
*
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* it under the terms of the GNU General Public License as published by
...
@@ -133,12 +133,14 @@ enum cflags {
...
@@ -133,12 +133,14 @@ enum cflags {
* JFS-private superblock information.
* JFS-private superblock information.
*/
*/
struct
jfs_sb_info
{
struct
jfs_sb_info
{
struct
super_block
*
sb
;
/* Point back to vfs super block */
unsigned
long
mntflag
;
/* aggregate attributes */
unsigned
long
mntflag
;
/* aggregate attributes */
struct
inode
*
ipbmap
;
/* block map inode */
struct
inode
*
ipbmap
;
/* block map inode */
struct
inode
*
ipaimap
;
/* aggregate inode map inode */
struct
inode
*
ipaimap
;
/* aggregate inode map inode */
struct
inode
*
ipaimap2
;
/* secondary aimap inode */
struct
inode
*
ipaimap2
;
/* secondary aimap inode */
struct
inode
*
ipimap
;
/* aggregate inode map inode */
struct
inode
*
ipimap
;
/* aggregate inode map inode */
struct
jfs_log
*
log
;
/* log */
struct
jfs_log
*
log
;
/* log */
struct
list_head
log_list
;
/* volumes associated with a journal */
short
bsize
;
/* logical block size */
short
bsize
;
/* logical block size */
short
l2bsize
;
/* log2 logical block size */
short
l2bsize
;
/* log2 logical block size */
short
nbperpage
;
/* blocks per page */
short
nbperpage
;
/* blocks per page */
...
...
fs/jfs/jfs_logmgr.c
View file @
215211de
This diff is collapsed.
Click to expand it.
fs/jfs/jfs_logmgr.h
View file @
215211de
/*
/*
* Copyright (
c) International Business Machines Corp., 2000-2003
* Copyright (
C) International Business Machines Corp., 2000-2004
* Portions Copyright (
c
) Christoph Hellwig, 2001-2002
* Portions Copyright (
C
) Christoph Hellwig, 2001-2002
*
*
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* it under the terms of the GNU General Public License as published by
...
@@ -367,11 +367,10 @@ struct lvd {
...
@@ -367,11 +367,10 @@ struct lvd {
*/
*/
struct
jfs_log
{
struct
jfs_log
{
struct
super_block
*
sb
;
/* 4: This is used to sync metadata
struct
list_head
sb_list
;
/* This is used to sync metadata
* before writing syncpt. Will
* before writing syncpt.
* need to be a list if we share
* the log between fs's
*/
*/
struct
list_head
journal_list
;
/* Global list */
struct
block_device
*
bdev
;
/* 4: log lv pointer */
struct
block_device
*
bdev
;
/* 4: log lv pointer */
s32
serial
;
/* 4: log mount serial number */
s32
serial
;
/* 4: log mount serial number */
...
@@ -419,8 +418,6 @@ struct jfs_log {
...
@@ -419,8 +418,6 @@ struct jfs_log {
char
uuid
[
16
];
/* 16: 128-bit uuid of log device */
char
uuid
[
16
];
/* 16: 128-bit uuid of log device */
int
no_integrity
;
/* 3: flag to disable journaling to disk */
int
no_integrity
;
/* 3: flag to disable journaling to disk */
int
ni_page
;
/* 4: backup of page for nointegrity option */
int
ni_eor
;
/* 4: backup of eor for nointegrity option */
};
};
/*
/*
...
@@ -506,8 +503,8 @@ struct logsyncblk {
...
@@ -506,8 +503,8 @@ struct logsyncblk {
diff += (log)->logsize;\
diff += (log)->logsize;\
}
}
extern
int
lmLogOpen
(
struct
super_block
*
sb
,
struct
jfs_log
**
log
);
extern
int
lmLogOpen
(
struct
super_block
*
sb
);
extern
int
lmLogClose
(
struct
super_block
*
sb
,
struct
jfs_log
*
log
);
extern
int
lmLogClose
(
struct
super_block
*
sb
);
extern
int
lmLogSync
(
struct
jfs_log
*
log
,
int
nosyncwait
);
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
);
...
...
fs/jfs/jfs_mount.c
View file @
215211de
/*
/*
* Copyright (
c) International Business Machines Corp., 2000-2003
* Copyright (
C) International Business Machines Corp., 2000-2004
*
*
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* it under the terms of the GNU General Public License as published by
...
@@ -242,7 +242,6 @@ int jfs_mount(struct super_block *sb)
...
@@ -242,7 +242,6 @@ int jfs_mount(struct super_block *sb)
int
jfs_mount_rw
(
struct
super_block
*
sb
,
int
remount
)
int
jfs_mount_rw
(
struct
super_block
*
sb
,
int
remount
)
{
{
struct
jfs_sb_info
*
sbi
=
JFS_SBI
(
sb
);
struct
jfs_sb_info
*
sbi
=
JFS_SBI
(
sb
);
struct
jfs_log
*
log
;
int
rc
;
int
rc
;
/*
/*
...
@@ -272,18 +271,15 @@ int jfs_mount_rw(struct super_block *sb, int remount)
...
@@ -272,18 +271,15 @@ int jfs_mount_rw(struct super_block *sb, int remount)
/*
/*
* open/initialize log
* open/initialize log
*/
*/
if
((
rc
=
lmLogOpen
(
sb
,
&
log
)))
if
((
rc
=
lmLogOpen
(
sb
)))
return
rc
;
return
rc
;
JFS_SBI
(
sb
)
->
log
=
log
;
/*
/*
* update file system superblock;
* update file system superblock;
*/
*/
if
((
rc
=
updateSuper
(
sb
,
FM_MOUNT
)))
{
if
((
rc
=
updateSuper
(
sb
,
FM_MOUNT
)))
{
jfs_err
(
"jfs_mount: updateSuper failed w/rc = %d"
,
rc
);
jfs_err
(
"jfs_mount: updateSuper failed w/rc = %d"
,
rc
);
lmLogClose
(
sb
,
log
);
lmLogClose
(
sb
);
JFS_SBI
(
sb
)
->
log
=
0
;
return
rc
;
return
rc
;
}
}
...
...
fs/jfs/jfs_txnmgr.c
View file @
215211de
/*
/*
* Copyright (C) International Business Machines Corp., 2000-200
3
* Copyright (C) International Business Machines Corp., 2000-200
4
* Portions Copyright (C) Christoph Hellwig, 2001-2002
* Portions Copyright (C) Christoph Hellwig, 2001-2002
*
*
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
...
@@ -1354,7 +1354,7 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
...
@@ -1354,7 +1354,7 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
/* initialize lrd common */
/* initialize lrd common */
ip
=
tlck
->
ip
;
ip
=
tlck
->
ip
;
lrd
->
aggregate
=
cpu_to_le32
(
new_encode_dev
(
ip
->
i_sb
->
s_bdev
->
bd_dev
)
);
lrd
->
aggregate
=
cpu_to_le32
(
JFS_SBI
(
ip
->
i_sb
)
->
aggregate
);
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
);
...
...
fs/jfs/jfs_umount.c
View file @
215211de
/*
/*
* Copyright (
c) International Business Machines Corp., 2000-2002
* Copyright (
C) International Business Machines Corp., 2000-2004
*
*
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* it under the terms of the GNU General Public License as published by
...
@@ -128,7 +128,7 @@ int jfs_umount(struct super_block *sb)
...
@@ -128,7 +128,7 @@ int jfs_umount(struct super_block *sb)
*
*
* remove file system from log active file system list.
* remove file system from log active file system list.
*/
*/
rc
=
lmLogClose
(
sb
,
log
);
rc
=
lmLogClose
(
sb
);
}
}
jfs_info
(
"UnMount JFS Complete: rc = %d"
,
rc
);
jfs_info
(
"UnMount JFS Complete: rc = %d"
,
rc
);
return
rc
;
return
rc
;
...
@@ -167,7 +167,6 @@ int jfs_umount_rw(struct super_block *sb)
...
@@ -167,7 +167,6 @@ int jfs_umount_rw(struct super_block *sb)
filemap_fdatawait
(
bdev_mapping
);
filemap_fdatawait
(
bdev_mapping
);
updateSuper
(
sb
,
FM_CLEAN
);
updateSuper
(
sb
,
FM_CLEAN
);
sbi
->
log
=
NULL
;
return
lmLogClose
(
sb
,
log
);
return
lmLogClose
(
sb
);
}
}
fs/jfs/super.c
View file @
215211de
...
@@ -381,6 +381,7 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
...
@@ -381,6 +381,7 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
return
-
ENOSPC
;
return
-
ENOSPC
;
memset
(
sbi
,
0
,
sizeof
(
struct
jfs_sb_info
));
memset
(
sbi
,
0
,
sizeof
(
struct
jfs_sb_info
));
sb
->
s_fs_info
=
sbi
;
sb
->
s_fs_info
=
sbi
;
sbi
->
sb
=
sb
;
/* initialize the mount flag and determine the default error handler */
/* initialize the mount flag and determine the default error handler */
flag
=
JFS_ERR_REMOUNT_RO
;
flag
=
JFS_ERR_REMOUNT_RO
;
...
...
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