patch-2.4.21 linux-2.4.21/fs/jfs/super.c
Next file: linux-2.4.21/fs/lockd/svc.c
Previous file: linux-2.4.21/fs/jfs/resize.c
Back to the patch index
Back to the overall index
- Lines: 227
- Date:
2003-06-13 07:51:37.000000000 -0700
- Orig file:
linux-2.4.20/fs/jfs/super.c
- Orig date:
2002-11-28 15:53:15.000000000 -0800
diff -urN linux-2.4.20/fs/jfs/super.c linux-2.4.21/fs/jfs/super.c
@@ -20,6 +20,7 @@
#include <linux/config.h>
#include <linux/fs.h>
#include <linux/module.h>
+#include <linux/blkdev.h>
#include <linux/completion.h>
#include <asm/uaccess.h>
#include "jfs_incore.h"
@@ -44,7 +45,7 @@
DECLARE_COMPLETION(jfsIOwait);
#ifdef CONFIG_JFS_DEBUG
-int jfsloglevel = 1;
+int jfsloglevel = JFS_LOGLEVEL_WARN;
MODULE_PARM(jfsloglevel, "i");
MODULE_PARM_DESC(jfsloglevel, "Specify JFS loglevel (0, 1 or 2)");
#endif
@@ -82,7 +83,7 @@
s64 maxinodes;
struct inomap *imap = JFS_IP(sbi->ipimap)->i_imap;
- jFYI(1, ("In jfs_statfs\n"));
+ jfs_info("In jfs_statfs");
buf->f_type = JFS_SUPER_MAGIC;
buf->f_bsize = sbi->bsize;
buf->f_blocks = sbi->bmap->db_mapsize;
@@ -113,17 +114,34 @@
struct jfs_sb_info *sbi = JFS_SBI(sb);
int rc;
- jFYI(1, ("In jfs_put_super\n"));
+ jfs_info("In jfs_put_super");
rc = jfs_umount(sb);
- if (rc) {
- jERROR(1, ("jfs_umount failed with return code %d\n", rc));
- }
+ if (rc)
+ jfs_err("jfs_umount failed with return code %d", rc);
unload_nls(sbi->nls_tab);
sbi->nls_tab = NULL;
kfree(sbi);
}
+s64 jfs_get_volume_size(struct super_block *sb)
+{
+ uint blocks = 0;
+ s64 bytes;
+ kdev_t dev = sb->s_dev;
+ int major = MAJOR(dev);
+ int minor = MINOR(dev);
+
+ if (blk_size[major]) {
+ blocks = blk_size[major][minor];
+ if (blocks) {
+ bytes = ((s64)blocks) << BLOCK_SIZE_BITS;
+ return bytes >> sb->s_blocksize_bits;
+ }
+ }
+ return 0;
+}
+
static int parse_options(char *options, struct super_block *sb, s64 *newLVSize)
{
void *nls_map = NULL;
@@ -152,8 +170,7 @@
}
} else if (!strcmp(this_char, "resize")) {
if (!value || !*value) {
- *newLVSize = sb->s_bdev->bd_inode->i_size >>
- sb->s_blocksize_bits;
+ *newLVSize = jfs_get_volume_size(sb);
if (*newLVSize == 0)
printk(KERN_ERR
"JFS: Cannot determine volume size\n");
@@ -222,9 +239,8 @@
int rc;
s64 newLVSize = 0;
- jFYI(1,
- ("In jfs_read_super s_dev=0x%x s_flags=0x%lx\n", sb->s_dev,
- sb->s_flags));
+ jfs_info("In jfs_read_super s_dev=0x%x s_flags=0x%lx", sb->s_dev,
+ sb->s_flags);
sbi = kmalloc(sizeof (struct jfs_sb_info), GFP_KERNEL);
if (!sbi)
@@ -255,8 +271,7 @@
rc = jfs_mount(sb);
if (rc) {
if (!silent) {
- jERROR(1,
- ("jfs_mount failed w/return code = %d\n", rc));
+ jfs_err("jfs_mount failed w/return code = %d", rc);
}
goto out_kfree;
}
@@ -266,9 +281,8 @@
rc = jfs_mount_rw(sb, 0);
if (rc) {
if (!silent) {
- jERROR(1,
- ("jfs_mount_rw failed w/return code = %d\n",
- rc));
+ jfs_err("jfs_mount_rw failed, return code = %d",
+ rc);
}
goto out_no_rw;
}
@@ -299,14 +313,14 @@
return sb;
out_no_root:
- jEVENT(1, ("jfs_read_super: get root inode failed\n"));
+ jfs_err("jfs_read_super: get root inode failed");
if (inode)
iput(inode);
out_no_rw:
rc = jfs_umount(sb);
if (rc) {
- jERROR(1, ("jfs_umount failed with return code %d\n", rc));
+ jfs_err("jfs_umount failed with return code %d", rc);
}
out_kfree:
if (sbi->nls_tab)
@@ -334,14 +348,24 @@
if (!(sb->s_flags & MS_RDONLY)) {
if ((rc = lmLogInit(log)))
- jERROR(1,
- ("jfs_unlock failed with return code %d\n", rc));
+ jfs_err("jfs_unlock failed with return code %d", rc);
else
txResume(sb);
}
}
+static int jfs_sync_fs(struct super_block *sb)
+{
+ struct jfs_log *log = JFS_SBI(sb)->log;
+
+ /* log == NULL indicates read-only mount */
+ if (log)
+ jfs_flush_journal(log, 1);
+
+ return 0;
+}
+
static struct super_operations jfs_super_operations = {
.read_inode = jfs_read_inode,
.dirty_inode = jfs_dirty_inode,
@@ -349,6 +373,7 @@
.clear_inode = jfs_clear_inode,
.delete_inode = jfs_delete_inode,
.put_super = jfs_put_super,
+ .sync_fs = jfs_sync_fs,
.write_super_lockfs = jfs_write_super_lockfs,
.unlockfs = jfs_unlockfs,
.statfs = jfs_statfs,
@@ -374,7 +399,6 @@
if ((flags & (SLAB_CTOR_VERIFY | SLAB_CTOR_CONSTRUCTOR)) ==
SLAB_CTOR_CONSTRUCTOR) {
INIT_LIST_HEAD(&jfs_ip->anon_inode_list);
- INIT_LIST_HEAD(&jfs_ip->mp_list);
init_rwsem(&jfs_ip->rdwrlock);
init_MUTEX(&jfs_ip->commit_sem);
jfs_ip->atlhead = 0;
@@ -397,7 +421,7 @@
*/
rc = metapage_init();
if (rc) {
- jERROR(1, ("metapage_init failed w/rc = %d\n", rc));
+ jfs_err("metapage_init failed w/rc = %d", rc);
goto free_slab;
}
@@ -406,7 +430,7 @@
*/
rc = txInit();
if (rc) {
- jERROR(1, ("txInit failed w/rc = %d\n", rc));
+ jfs_err("txInit failed w/rc = %d", rc);
goto free_metapage;
}
@@ -416,8 +440,7 @@
jfsIOthread = kernel_thread(jfsIOWait, 0,
CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
if (jfsIOthread < 0) {
- jERROR(1,
- ("init_jfs_fs: fork failed w/rc = %d\n", jfsIOthread));
+ jfs_err("init_jfs_fs: fork failed w/rc = %d", jfsIOthread);
goto end_txmngr;
}
wait_for_completion(&jfsIOwait); /* Wait until thread starts */
@@ -425,9 +448,7 @@
jfsCommitThread = kernel_thread(jfs_lazycommit, 0,
CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
if (jfsCommitThread < 0) {
- jERROR(1,
- ("init_jfs_fs: fork failed w/rc = %d\n",
- jfsCommitThread));
+ jfs_err("init_jfs_fs: fork failed w/rc = %d", jfsCommitThread);
goto kill_iotask;
}
wait_for_completion(&jfsIOwait); /* Wait until thread starts */
@@ -435,8 +456,7 @@
jfsSyncThread = kernel_thread(jfs_sync, 0,
CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
if (jfsSyncThread < 0) {
- jERROR(1,
- ("init_jfs_fs: fork failed w/rc = %d\n", jfsSyncThread));
+ jfs_err("init_jfs_fs: fork failed w/rc = %d", jfsSyncThread);
goto kill_committask;
}
wait_for_completion(&jfsIOwait); /* Wait until thread starts */
@@ -466,7 +486,7 @@
static void __exit exit_jfs_fs(void)
{
- jFYI(1, ("exit_jfs_fs called\n"));
+ jfs_info("exit_jfs_fs called");
jfs_stop_threads = 1;
txExit();
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)