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
2b0c7536
Commit
2b0c7536
authored
Jul 23, 2002
by
Dave Kleikamp
Browse files
Options
Browse Files
Download
Plain Diff
Merge jfs@jfs.bkbits.net:linux-2.5
into kleikamp.austin.ibm.com:/home/shaggy/bk/jfs-2.5
parents
1da3174f
adaee16f
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
92 additions
and
196 deletions
+92
-196
Documentation/filesystems/jfs.txt
Documentation/filesystems/jfs.txt
+20
-118
fs/jfs/file.c
fs/jfs/file.c
+10
-10
fs/jfs/inode.c
fs/jfs/inode.c
+7
-7
fs/jfs/jfs_dtree.c
fs/jfs/jfs_dtree.c
+3
-2
fs/jfs/jfs_logmgr.c
fs/jfs/jfs_logmgr.c
+1
-1
fs/jfs/jfs_mount.c
fs/jfs/jfs_mount.c
+7
-7
fs/jfs/jfs_txnmgr.c
fs/jfs/jfs_txnmgr.c
+2
-8
fs/jfs/namei.c
fs/jfs/namei.c
+12
-12
fs/jfs/super.c
fs/jfs/super.c
+24
-20
fs/jfs/symlink.c
fs/jfs/symlink.c
+6
-11
No files found.
Documentation/filesystems/jfs.txt
View file @
2b0c7536
IBM's Journaled File System (JFS) for Linux version 1.0.15
IBM's Journaled File System (JFS) for Linux
JFS Homepage: http://oss.software.ibm.com/jfs/
Team members
------------
Steve Best sbest@us.ibm.com
Dave Kleikamp shaggy@austin.ibm.com
Barry Arndt barndt@us.ibm.com
Christoph Hellwig hch@caldera.de
Release February 15, 2002 (version 1.0.15)
This is our fifty-third release of IBM's Enterprise JFS technology port to Linux.
Beta 1 was release 0.1.0 on 12/8/2000, Beta 2 was release 0.2.0 on 3/7/2001,
Beta 3 was release 0.3.0 on 4/30/2001, and release 1.0.0 on 6/28/2001.
The changelog.jfs file contains detailed information of changes done in each source
code drop.
JFS has a source tree that can be built on 2.4.3 - 2.4.17 and 2.5.4 kernel.org
source trees.
Our current goal on the 2.5.x series of the kernel is to update to the latest
2.5.x version and only support the latest version of this kernel.
This will change when the distros start shipping the 2.5.x series of the kernel.
Our current goal on the 2.4.x series of the kernel is to continue to support
all of the kernels in this series as we do today.
There is an anonymous cvs access available for the JFS tree. The steps below are
what is needed to pull the JFS cvs tree from the oss.software.ibm.com server.
id anoncvs
password anoncvs
To checkout 2.4.x series of the JFS files do the following:
CVSROOT should be set to :pserver:anoncvs@oss.software.ibm.com:/usr/cvs/jfs
cvs checkout linux24
To checkout 2.5.2 series of the JFS files do the following:
CVSROOT should be set to :pserver:anoncvs@oss.software.ibm.com:/usr/cvs/jfs
cvs checkout linux25
To checkout the JFS utilities do the following:
CVSROOT should be set to :pserver:anoncvs@oss.software.ibm.com:/usr/cvs/jfs
cvs checkout jfsutils
The cvs tree contains the latest changes being done to JFS. To receive notification
of commits to the cvs tree, please send e-mail to linuxjfs@us.ibm.com stating that
you would like notifications sent to you.
The jfs-2.4-1.0.15-patch.tar.gz is the easiest way to get the latest file system
source code on your system. There are also patch files that can move your jfs source
code from one release to another. If you have release 1.0.14 and would like to move
to release 1.0.15 the patch file named jfs-2.4-1_0_14-to-1_0_15-patch.gz will do that.
The jfs-2.4-1.0.15-patch.tar.gz file contains a readme and patch files for different
levels of the 2.4 kernel. Please see the README in the jfs-2.4-1.0.15-patch.tar.gz
file for help on applying the two patch files.
The following files in the kernel source tree have been changed so JFS can be built.
The jfs-2.4-1.0.15.tar.gz source tar ball contains each of the files below with
the extension of the kernel level it is associated with. As an example, there are now
four Config.in files named Config.in-2.4.0, Config.in-2.4.5, Config.in-2.4.7 and
Config.in-2.4.17.
If you use the jfs-2.4-1.0.15.tar.gz to build JFS you must rename each of the
kernel files to the file names listed below. The standard kernel from www.kernel.org
is the source of the kernel files that are included in the jfs tar file.
In sub dir fs Config.in, Makefile
In sub dir fs/nls Config.in
In sub dir Documentation Configure.help, Changes
In sub dir Documentation/filesystems 00-INDEX
In sub dir linux MAINTAINERS
Christoph Hellwig hch@infradead.org
Please backup the above files before the JFS tar file is added to the kernel source
tree. All JFS files are located in the include/linux/jfs or fs/jfs sub dirs.
The following mount options are supported:
Our development team has used the Linux kernel levels 2.4.3 - 2.4.17 kernels
with gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
for our port so far. A goal of the JFS team is to have JFS run on all architectures
that Linux supports, there is no architecture specific code in JFS. JFS has been run
on the following architectures (x86, PowerPC, Alpha, s/390, ARM) so far.
To make JFS build, during the "make config" step of building the kernel answer y to
the Prompt for development and/or incomplete code/drivers in the Code maturity level
options section. In the Filesystems section use the m for the answer to
JFS filesystem support (experimental) (CONFIG_JFS_FS) [Y/m/n?]
Build in /usr/src/linux with the command:
make modules
make modules_install
If you rebuild jfs.o after having mounted and unmounted a partition, "modprobe -r jfs"
will unload the old module.
For the file system debugging messages are being written to /var/log/messages.
Please see the readme in the utilities package for information about building
the JFS utilities.
iocharset=name Character set to use for converting from Unicode to
ASCII. The default is compiled into the kernel as
CONFIG_NLS_DEFAULT. Use iocharset=utf8 for UTF8
translations. This requires CONFIG_NLS_UTF8 to be set
in the kernel .config file.
JFS TODO list:
Plans for our near term development items
- get defrag capabilities operational in the FS
- get extendfs capabilities operational in the FS
- test EXTENDFS utility, for growing JFS partitions
- test defrag utility, calls file system to defrag the file system.
- add support for block sizes (512,1024,2048)
- add support for logfile on dedicated partition
- implement online resize for extending JFS volumes
- enhance support for logfile on dedicated partition
- get access control list functionality operational
- get extended attributes functionality operational
Longer term work items
- get access control list functionality operational
- get extended attributes functionality operational
- implement defrag utility, for online defragmenting
- add quota support
- add support for block sizes (512,1024,2048)
Please send bugs, comments, cards and letters to linuxjfs@us.ibm.com.
The JFS mailing list can be subscribed to by using the link labeled "Mail list Subscribe"
at our web page http://oss.software.ibm.com/jfs/.
The JFS mailing list can be subscribed to by using the link labeled
"Mail list Subscribe" at our web page http://oss.software.ibm.com/jfs/.
fs/jfs/file.c
View file @
2b0c7536
...
...
@@ -45,15 +45,6 @@ int jfs_fsync(struct file *file, struct dentry *dentry, int datasync)
return
rc
?
-
EIO
:
0
;
}
struct
file_operations
jfs_file_operations
=
{
open:
generic_file_open
,
llseek:
generic_file_llseek
,
write:
generic_file_write
,
read:
generic_file_read
,
mmap:
generic_file_mmap
,
fsync:
jfs_fsync
,
};
/*
* Guts of jfs_truncate. Called with locks already held. Can be called
* with directory for truncating directory index table.
...
...
@@ -98,5 +89,14 @@ static void jfs_truncate(struct inode *ip)
}
struct
inode_operations
jfs_file_inode_operations
=
{
truncate:
jfs_truncate
,
.
truncate
=
jfs_truncate
,
};
struct
file_operations
jfs_file_operations
=
{
.
open
=
generic_file_open
,
.
llseek
=
generic_file_llseek
,
.
write
=
generic_file_write
,
.
read
=
generic_file_read
,
.
mmap
=
generic_file_mmap
,
.
fsync
=
jfs_fsync
,
};
fs/jfs/inode.c
View file @
2b0c7536
...
...
@@ -300,11 +300,11 @@ static int jfs_direct_IO(int rw, struct inode *inode, char *buf,
}
struct
address_space_operations
jfs_aops
=
{
readpage:
jfs_readpage
,
writepage:
jfs_writepage
,
sync_page:
block_sync_page
,
prepare_write:
jfs_prepare_write
,
commit_write:
generic_commit_write
,
bmap:
jfs_bmap
,
direct_IO:
jfs_direct_IO
,
.
readpage
=
jfs_readpage
,
.
writepage
=
jfs_writepage
,
.
sync_page
=
block_sync_page
,
.
prepare_write
=
jfs_prepare_write
,
.
commit_write
=
generic_commit_write
,
.
bmap
=
jfs_bmap
,
.
direct_IO
=
jfs_direct_IO
,
};
fs/jfs/jfs_dtree.c
View file @
2b0c7536
...
...
@@ -2368,7 +2368,7 @@ int dtRelocate(tid_t tid, struct inode *ip, s64 lmxaddr, pxd_t * opxd,
xlen
=
lengthPXD
(
opxd
);
jEVENT
(
0
,
(
"dtRelocate: lmxaddr:%Ld xaddr:%Ld:%Ld xlen:%d
\n
"
,
lmxaddr
,
oxaddr
,
nxaddr
,
xlen
));
(
long
long
)
lmxaddr
,
(
long
long
)
oxaddr
,
(
long
long
)
nxaddr
,
xlen
));
/*
* 1. get the internal parent dtpage covering
...
...
@@ -3044,7 +3044,7 @@ int jfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
if
(
d_namleft
==
0
)
{
jERROR
(
1
,(
"JFS:Dtree error: "
"ino = %ld, bn=%Ld, index = %d
\n
"
,
ip
->
i_ino
,
bn
,
i
));
(
long
)
ip
->
i_ino
,
(
long
long
)
bn
,
i
));
updateSuper
(
ip
->
i_sb
,
FM_DIRTY
);
goto
skip_one
;
}
...
...
@@ -3101,6 +3101,7 @@ int jfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
out:
kfree
(
d_name
);
DT_PUTPAGE
(
mp
);
return
rc
;
}
...
...
fs/jfs/jfs_logmgr.c
View file @
2b0c7536
...
...
@@ -1080,8 +1080,8 @@ int lmLogOpen(struct super_block *sb, log_t ** logptr)
* file system to log have 1-to-1 relationship;
*/
log
->
bdev
=
sb
->
s_bdev
;
log
->
flag
=
JFS_INLINELOG
;
log
->
bdev
=
sb
->
s_bdev
;
log
->
base
=
addressPXD
(
&
JFS_SBI
(
sb
)
->
logpxd
);
log
->
size
=
lengthPXD
(
&
JFS_SBI
(
sb
)
->
logpxd
)
>>
(
L2LOGPSIZE
-
sb
->
s_blocksize_bits
);
...
...
fs/jfs/jfs_mount.c
View file @
2b0c7536
...
...
@@ -426,14 +426,15 @@ static int chkSuper(struct super_block *sb)
*/
int
updateSuper
(
struct
super_block
*
sb
,
uint
state
)
{
int
rc
;
metapage_t
*
mp
;
struct
jfs_superblock
*
j_sb
;
struct
jfs_sb_info
*
sbi
=
JFS_SBI
(
sb
);
metapage_t
*
mp
;
int
rc
;
/*
* Only fsck can fix dirty state
*/
if
(
JFS_SBI
(
sb
)
->
state
==
FM_DIRTY
)
if
(
sbi
->
state
==
FM_DIRTY
)
return
0
;
if
((
rc
=
readSuper
(
sb
,
&
mp
)))
...
...
@@ -442,13 +443,12 @@ int updateSuper(struct super_block *sb, uint state)
j_sb
=
(
struct
jfs_superblock
*
)
(
mp
->
data
);
j_sb
->
s_state
=
cpu_to_le32
(
state
);
JFS_SBI
(
sb
)
->
state
=
state
;
sbi
->
state
=
state
;
if
(
state
==
FM_MOUNT
)
{
/* record log's dev_t and mount serial number */
j_sb
->
s_logdev
=
cpu_to_le32
(
JFS_SBI
(
sb
)
->
log
->
bdev
->
bd_dev
);
j_sb
->
s_logserial
=
cpu_to_le32
(
JFS_SBI
(
sb
)
->
log
->
serial
);
j_sb
->
s_logdev
=
cpu_to_le32
(
sbi
->
log
->
bdev
->
bd_dev
);
j_sb
->
s_logserial
=
cpu_to_le32
(
sbi
->
log
->
serial
);
}
else
if
(
state
==
FM_CLEAN
)
{
/*
* If this volume is shared with OS/2, OS/2 will need to
...
...
fs/jfs/jfs_txnmgr.c
View file @
2b0c7536
...
...
@@ -2824,10 +2824,7 @@ int jfs_lazycommit(void)
* We can be running indefinately if other processors
* are adding transactions to this list
*/
if
(
need_resched
())
{
current
->
state
=
TASK_RUNNING
;
schedule
();
}
cond_resched
();
LAZY_LOCK
(
flags
);
}
...
...
@@ -2945,10 +2942,7 @@ int jfs_sync(void)
* Just to be safe. I don't know how
* long we can run without blocking
*/
if
(
need_resched
())
{
current
->
state
=
TASK_RUNNING
;
schedule
();
}
cond_resched
();
TXN_LOCK
();
}
else
{
/* We can't get the write lock. It may
...
...
fs/jfs/namei.c
View file @
2b0c7536
...
...
@@ -1437,19 +1437,19 @@ struct dentry *jfs_get_parent(struct dentry *dentry)
}
struct
inode_operations
jfs_dir_inode_operations
=
{
create:
jfs_create
,
lookup:
jfs_lookup
,
link:
jfs_link
,
unlink:
jfs_unlink
,
symlink:
jfs_symlink
,
mkdir:
jfs_mkdir
,
rmdir:
jfs_rmdir
,
mknod:
jfs_mknod
,
rename:
jfs_rename
,
.
create
=
jfs_create
,
.
lookup
=
jfs_lookup
,
.
link
=
jfs_link
,
.
unlink
=
jfs_unlink
,
.
symlink
=
jfs_symlink
,
.
mkdir
=
jfs_mkdir
,
.
rmdir
=
jfs_rmdir
,
.
mknod
=
jfs_mknod
,
.
rename
=
jfs_rename
,
};
struct
file_operations
jfs_dir_operations
=
{
read:
generic_read_dir
,
readdir:
jfs_readdir
,
fsync:
jfs_fsync
,
.
read
=
generic_read_dir
,
.
readdir
=
jfs_readdir
,
.
fsync
=
jfs_fsync
,
};
fs/jfs/super.c
View file @
2b0c7536
...
...
@@ -36,6 +36,10 @@ MODULE_LICENSE("GPL");
static
kmem_cache_t
*
jfs_inode_cachep
;
static
struct
super_operations
jfs_super_operations
;
static
struct
export_operations
jfs_export_operations
;
static
struct
file_system_type
jfs_fs_type
;
int
jfs_stop_threads
;
static
pid_t
jfsIOthread
;
static
pid_t
jfsCommitThread
;
...
...
@@ -223,21 +227,6 @@ int jfs_remount(struct super_block *sb, int *flags, char *data)
return
0
;
}
static
struct
super_operations
jfs_super_operations
=
{
alloc_inode:
jfs_alloc_inode
,
destroy_inode:
jfs_destroy_inode
,
dirty_inode:
jfs_dirty_inode
,
write_inode:
jfs_write_inode
,
delete_inode:
jfs_delete_inode
,
put_super:
jfs_put_super
,
statfs:
jfs_statfs
,
remount_fs:
jfs_remount
,
};
static
struct
export_operations
jfs_export_operations
=
{
get_parent:
jfs_get_parent
,
};
static
int
jfs_fill_super
(
struct
super_block
*
sb
,
void
*
data
,
int
silent
)
{
struct
jfs_sb_info
*
sbi
;
...
...
@@ -362,12 +351,27 @@ static struct super_block *jfs_get_sb(struct file_system_type *fs_type,
return
get_sb_bdev
(
fs_type
,
flags
,
dev_name
,
data
,
jfs_fill_super
);
}
static
struct
super_operations
jfs_super_operations
=
{
.
alloc_inode
=
jfs_alloc_inode
,
.
destroy_inode
=
jfs_destroy_inode
,
.
dirty_inode
=
jfs_dirty_inode
,
.
write_inode
=
jfs_write_inode
,
.
delete_inode
=
jfs_delete_inode
,
.
put_super
=
jfs_put_super
,
.
statfs
=
jfs_statfs
,
.
remount_fs
=
jfs_remount
,
};
static
struct
export_operations
jfs_export_operations
=
{
.
get_parent
=
jfs_get_parent
,
};
static
struct
file_system_type
jfs_fs_type
=
{
owner:
THIS_MODULE
,
name:
"jfs"
,
get_sb:
jfs_get_sb
,
kill_sb:
kill_block_super
,
fs_flags:
FS_REQUIRES_DEV
,
.
owner
=
THIS_MODULE
,
.
name
=
"jfs"
,
.
get_sb
=
jfs_get_sb
,
.
kill_sb
=
kill_block_super
,
.
fs_flags
=
FS_REQUIRES_DEV
,
};
extern
int
metapage_init
(
void
);
...
...
fs/jfs/symlink.c
View file @
2b0c7536
...
...
@@ -19,17 +19,6 @@
#include <linux/fs.h>
#include "jfs_incore.h"
static
int
jfs_readlink
(
struct
dentry
*
,
char
*
buffer
,
int
buflen
);
static
int
jfs_follow_link
(
struct
dentry
*
dentry
,
struct
nameidata
*
nd
);
/*
* symlinks can't do much...
*/
struct
inode_operations
jfs_symlink_inode_operations
=
{
readlink:
jfs_readlink
,
follow_link:
jfs_follow_link
,
};
static
int
jfs_follow_link
(
struct
dentry
*
dentry
,
struct
nameidata
*
nd
)
{
char
*
s
=
JFS_IP
(
dentry
->
d_inode
)
->
i_inline
;
...
...
@@ -41,3 +30,9 @@ static int jfs_readlink(struct dentry *dentry, char *buffer, int buflen)
char
*
s
=
JFS_IP
(
dentry
->
d_inode
)
->
i_inline
;
return
vfs_readlink
(
dentry
,
buffer
,
buflen
,
s
);
}
struct
inode_operations
jfs_symlink_inode_operations
=
{
.
readlink
=
jfs_readlink
,
.
follow_link
=
jfs_follow_link
,
};
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