mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Hugang <hugang@soulinfo.com>
To: Nikita Danilov <Nikita@Namesys.COM>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] laptop-mode for 2.6, version 2
Date: Thu, 25 Dec 2003 17:40:33 +0800	[thread overview]
Message-ID: <20031225174033.1abb5401.hugang@soulinfo.com> (raw)
In-Reply-To: <16362.43831.569086.825899@laputa.namesys.com>

[-- Attachment #1: Type: text/plain, Size: 1265 bytes --]

On Thu, 25 Dec 2003 12:17:43 +0300
Nikita Danilov <Nikita@Namesys.COM> wrote:

> >    unsigned long blocks;
> >    unsigned long mount_options = REISERFS_SB(s)->s_mount_opt;
> >    unsigned long safe_mask = 0;
> > +  unsigned int commit_max_age = -1;
> 
> Assigning -1 to the unsigned int looks strange. Let's use 0, it is
> invalid anyway.
Yes, must change to -1, fixed.

> I think that it would be better to first
> 
> SB_JOURNAL_MAX_COMMIT_AGE(p_s_sb) = val
> 
> in the parse_options() (after checking for validity), and in
> journal_init() do something like
> 
> if (SB_JOURNAL_MAX_COMMIT_AGE(p_s_sb) == 0) {
>   SB_JOURNAL_MAX_COMMIT_AGE(p_s_sb) = le32_to_cpu (jh->jh_journal.jp_journal_max_commit_age);
> }
> 
> This will also get rid of
> 
> +  if(commit_max_age != -1) {
> +	  SB_JOURNAL_MAX_COMMIT_AGE(s) = commit_max_age;
> +  }
> +
> 
> piece in reiserfs_remount.
> 
> Otherwise patch looks ok. Have you tested it?
> 
In the parse_options() can not assigning commit max age to super block, 
the journal memory not malloc, so I pass a it to journal_init.

Yes, It works in my laptop for 1 days. Every thinks is fine.

Thanks.
-- 
Hu Gang / Steve
RLU#          : 204016 [1999] (Registered Linux user)
GPG Public Key: http://soulinfo.com/~hugang/HuGang.asc

[-- Attachment #2: reiserfs_laptop_mode --]
[-- Type: application/octet-stream, Size: 5479 bytes --]

Index: linux-2.6.0/include/linux/reiserfs_fs.h
===================================================================
--- linux-2.6.0/include/linux/reiserfs_fs.h	(revision 94)
+++ linux-2.6.0/include/linux/reiserfs_fs.h	(working copy)
@@ -1719,7 +1719,7 @@
 void reiserfs_check_lock_depth(char *caller) ;
 void reiserfs_prepare_for_journal(struct super_block *, struct buffer_head *bh, int wait) ;
 void reiserfs_restore_prepared_buffer(struct super_block *, struct buffer_head *bh) ;
-int journal_init(struct super_block *, const char * j_dev_name, int old_format) ;
+int journal_init(struct super_block *, const char * j_dev_name, int old_format, unsigned int) ;
 int journal_release(struct reiserfs_transaction_handle*, struct super_block *) ;
 int journal_release_error(struct reiserfs_transaction_handle*, struct super_block *) ;
 int journal_end(struct reiserfs_transaction_handle *, struct super_block *, unsigned long) ;
Index: linux-2.6.0/fs/reiserfs/super.c
===================================================================
--- linux-2.6.0/fs/reiserfs/super.c	(revision 94)
+++ linux-2.6.0/fs/reiserfs/super.c	(working copy)
@@ -645,7 +645,8 @@
 				      collection of bitflags defining what
 				      mount options were selected. */
 				   unsigned long * blocks, /* strtol-ed from NNN of resize=NNN */
-				   char ** jdev_name)
+				   char ** jdev_name, 
+				   unsigned int * commit_max_age)
 {
     int c;
     char * arg = NULL;
@@ -662,6 +663,7 @@
 	{"resize", 'r', 0, 0, 0},
 	{"jdev", 'j', 0, 0, 0},
 	{"nolargeio", 'w', 0, 0, 0},
+	{"commit", 'c', 0, 0, 0},
 	{NULL, 0, 0, 0, 0}
     };
 	
@@ -690,6 +692,19 @@
 	    }
 	}
 
+	if ( c == 'c' ) {
+		char *p = 0;
+		int val = simple_strtoul (arg, &p, 0);
+
+		if ( *p != '\0') {
+			printk ("reiserfs_parse_options: bad value %s\n", arg);
+			return 0;
+		}
+		if ( val > 0 ) {
+			*commit_max_age = val;
+		}
+	}
+
 	if ( c == 'w' ) {
 		char *p=0;
 		int val = simple_strtoul (arg, &p, 0);
@@ -743,10 +758,11 @@
   unsigned long blocks;
   unsigned long mount_options = REISERFS_SB(s)->s_mount_opt;
   unsigned long safe_mask = 0;
+  unsigned int commit_max_age = 0;
 
   rs = SB_DISK_SUPER_BLOCK (s);
 
-  if (!reiserfs_parse_options(s, arg, &mount_options, &blocks, NULL))
+  if (!reiserfs_parse_options(s, arg, &mount_options, &blocks, NULL, &commit_max_age))
     return -EINVAL;
   
   handle_attrs(s);
@@ -764,6 +780,10 @@
    * the bits we're not allowed to change here */
   REISERFS_SB(s)->s_mount_opt = (REISERFS_SB(s)->s_mount_opt & ~safe_mask) |  (mount_options & safe_mask);
 
+  if(commit_max_age != 0) {
+	  SB_JOURNAL_MAX_COMMIT_AGE(s) = commit_max_age;
+  }
+
   if(blocks) {
     int rc = reiserfs_resize(s, blocks);
     if (rc != 0)
@@ -1213,6 +1233,7 @@
     struct reiserfs_transaction_handle th ;
     int old_format = 0;
     unsigned long blocks;
+	unsigned int commit_max_age = 0;
     int jinit_done = 0 ;
     struct reiserfs_iget_args args ;
     struct reiserfs_super_block * rs;
@@ -1237,7 +1258,7 @@
     REISERFS_SB(s)->s_alloc_options.preallocsize = 9;
 
     jdev_name = NULL;
-    if (reiserfs_parse_options (s, (char *) data, &(sbi->s_mount_opt), &blocks, &jdev_name) == 0) {
+    if (reiserfs_parse_options (s, (char *) data, &(sbi->s_mount_opt), &blocks, &jdev_name, &commit_max_age) == 0) {
 	goto error;
     }
 
@@ -1279,7 +1300,7 @@
 #endif
 
     // set_device_ro(s->s_dev, 1) ;
-    if( journal_init(s, jdev_name, old_format) ) {
+    if( journal_init(s, jdev_name, old_format, commit_max_age) ) {
 	printk("sh-2022: reiserfs_fill_super: unable to initialize journal space\n") ;
 	goto error ;
     } else {
Index: linux-2.6.0/fs/reiserfs/journal.c
===================================================================
--- linux-2.6.0/fs/reiserfs/journal.c	(revision 94)
+++ linux-2.6.0/fs/reiserfs/journal.c	(working copy)
@@ -1967,7 +1967,7 @@
 /*
 ** must be called once on fs mount.  calls journal_read for you
 */
-int journal_init(struct super_block *p_s_sb, const char * j_dev_name, int old_format) {
+int journal_init(struct super_block *p_s_sb, const char * j_dev_name, int old_format, unsigned int commit_max_age) {
     int num_cnodes = SB_ONDISK_JOURNAL_SIZE(p_s_sb) * 2 ;
     struct buffer_head *bhjh;
     struct reiserfs_super_block * rs;
@@ -2032,7 +2032,11 @@
      
   SB_JOURNAL_TRANS_MAX(p_s_sb)      = le32_to_cpu (jh->jh_journal.jp_journal_trans_max);
   SB_JOURNAL_MAX_BATCH(p_s_sb)      = le32_to_cpu (jh->jh_journal.jp_journal_max_batch);
-  SB_JOURNAL_MAX_COMMIT_AGE(p_s_sb) = le32_to_cpu (jh->jh_journal.jp_journal_max_commit_age);
+  if (commit_max_age != 0) {
+	  SB_JOURNAL_MAX_COMMIT_AGE(p_s_sb) = commit_max_age;
+  } else {
+	  SB_JOURNAL_MAX_COMMIT_AGE(p_s_sb) = le32_to_cpu (jh->jh_journal.jp_journal_max_commit_age);
+  }
   SB_JOURNAL_MAX_TRANS_AGE(p_s_sb)  = JOURNAL_MAX_TRANS_AGE;
 
   if (SB_JOURNAL_TRANS_MAX(p_s_sb)) {
Index: linux-2.6.0/fs/reiserfs/procfs.c
===================================================================
--- linux-2.6.0/fs/reiserfs/procfs.c	(revision 94)
+++ linux-2.6.0/fs/reiserfs/procfs.c	(working copy)
@@ -401,7 +401,7 @@
                         DJP( jp_journal_trans_max ),
                         DJP( jp_journal_magic ),
                         DJP( jp_journal_max_batch ),
-                        DJP( jp_journal_max_commit_age ),
+                        SB_JOURNAL_MAX_COMMIT_AGE(sb), 
                         DJP( jp_journal_max_trans_age ),
 
 			JF( j_1st_reserved_block ),			

  parent reply	other threads:[~2003-12-25  9:49 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-24  5:33 Bart Samwel
2003-12-24 11:16 ` Jens Axboe
2003-12-24 15:25   ` [PATCH] laptop-mode for 2.6, version 3 Bart Samwel
2003-12-25 10:06     ` Arnaldo Carvalho de Melo
2003-12-25 15:12       ` [PATCH] laptop-mode for 2.6, version 4 + smart_spindown Bart Samwel
2003-12-25 17:04         ` John Bradford
2003-12-25 21:39           ` Bart Samwel
2003-12-27 10:57         ` A couple of questions about laptop-mode for 2.6, version 4 Kiko Piris
2003-12-24 13:51 ` [PATCH] laptop-mode for 2.6, version 2 Hugang
2003-12-24 14:24   ` Nikita Danilov
2003-12-25  2:59     ` Hugang
     [not found]       ` <16362.43831.569086.825899@laputa.namesys.com>
2003-12-25  9:40         ` Hugang [this message]
2003-12-25 10:27           ` Nikita Danilov
2003-12-25 10:59             ` Hugang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031225174033.1abb5401.hugang@soulinfo.com \
    --to=hugang@soulinfo.com \
    --cc=Nikita@Namesys.COM \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome