Patchwork ext3: Remove the obsolete broken EXT3_IOC32_WAIT_FOR_READONLY.

login
register
mail settings
Submitter Tao Ma
Date Oct. 7, 2011, 3:21 p.m.
Message ID <1318000878-2928-1-git-send-email-tm@tao.ma>
Download mbox | patch
Permalink /patch/118332/
State Not Applicable
Headers show

Comments

Tao Ma - Oct. 7, 2011, 3:21 p.m.
From: Tao Ma <boyu.mt@taobao.com>

There are no user of EXT3_IOC32_WAIT_FOR_READONLY and also it is
broken. No one set the set_ro_timer, no one wake up us and our
state is set to TASK_INTERRUPTIBLE not RUNNING. So remove it.

Cc: Jan Kara <jack@suse.cz>
Signed-off-by: Tao Ma <boyu.mt@taobao.com>
---
 fs/ext3/ioctl.c            |   24 ------------------------
 include/linux/ext3_fs_sb.h |    4 ----
 2 files changed, 0 insertions(+), 28 deletions(-)
Jan Kara - Oct. 7, 2011, 10:12 p.m.
On Fri 07-10-11 23:21:18, Tao Ma wrote:
> From: Tao Ma <boyu.mt@taobao.com>
> 
> There are no user of EXT3_IOC32_WAIT_FOR_READONLY and also it is
> broken. No one set the set_ro_timer, no one wake up us and our
> state is set to TASK_INTERRUPTIBLE not RUNNING. So remove it.
  Hmm, I vaguely recall Andrew had some debugging patches which were using
turn_ro_timer and this functionality. But I'm not sure if they are still
usable or if they still make sense when one can easily test crashing using
virtual machines... Andrew?

								Honza
> 
> Cc: Jan Kara <jack@suse.cz>
> Signed-off-by: Tao Ma <boyu.mt@taobao.com>
> ---
>  fs/ext3/ioctl.c            |   24 ------------------------
>  include/linux/ext3_fs_sb.h |    4 ----
>  2 files changed, 0 insertions(+), 28 deletions(-)
> 
> diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c
> index c7f4394..ba1b54e 100644
> --- a/fs/ext3/ioctl.c
> +++ b/fs/ext3/ioctl.c
> @@ -150,30 +150,6 @@ setversion_out:
>  		mnt_drop_write(filp->f_path.mnt);
>  		return err;
>  	}
> -#ifdef CONFIG_JBD_DEBUG
> -	case EXT3_IOC_WAIT_FOR_READONLY:
> -		/*
> -		 * This is racy - by the time we're woken up and running,
> -		 * the superblock could be released.  And the module could
> -		 * have been unloaded.  So sue me.
> -		 *
> -		 * Returns 1 if it slept, else zero.
> -		 */
> -		{
> -			struct super_block *sb = inode->i_sb;
> -			DECLARE_WAITQUEUE(wait, current);
> -			int ret = 0;
> -
> -			set_current_state(TASK_INTERRUPTIBLE);
> -			add_wait_queue(&EXT3_SB(sb)->ro_wait_queue, &wait);
> -			if (timer_pending(&EXT3_SB(sb)->turn_ro_timer)) {
> -				schedule();
> -				ret = 1;
> -			}
> -			remove_wait_queue(&EXT3_SB(sb)->ro_wait_queue, &wait);
> -			return ret;
> -		}
> -#endif
>  	case EXT3_IOC_GETRSVSZ:
>  		if (test_opt(inode->i_sb, RESERVATION)
>  			&& S_ISREG(inode->i_mode)
> diff --git a/include/linux/ext3_fs_sb.h b/include/linux/ext3_fs_sb.h
> index 258088a..6436525 100644
> --- a/include/linux/ext3_fs_sb.h
> +++ b/include/linux/ext3_fs_sb.h
> @@ -76,10 +76,6 @@ struct ext3_sb_info {
>  	struct mutex s_resize_lock;
>  	unsigned long s_commit_interval;
>  	struct block_device *journal_bdev;
> -#ifdef CONFIG_JBD_DEBUG
> -	struct timer_list turn_ro_timer;	/* For turning read-only (crash simulation) */
> -	wait_queue_head_t ro_wait_queue;	/* For people waiting for the fs to go read-only */
> -#endif
>  #ifdef CONFIG_QUOTA
>  	char *s_qf_names[MAXQUOTAS];		/* Names of quota files with journalled quota */
>  	int s_jquota_fmt;			/* Format of quota to use */
> -- 
> 1.7.1
>
Theodore Ts'o - Oct. 8, 2011, 8:52 p.m.
On Sat, Oct 08, 2011 at 12:12:33AM +0200, Jan Kara wrote:
> On Fri 07-10-11 23:21:18, Tao Ma wrote:
> > From: Tao Ma <boyu.mt@taobao.com>
> > 
> > There are no user of EXT3_IOC32_WAIT_FOR_READONLY and also it is
> > broken. No one set the set_ro_timer, no one wake up us and our
> > state is set to TASK_INTERRUPTIBLE not RUNNING. So remove it.
>   Hmm, I vaguely recall Andrew had some debugging patches which were using
> turn_ro_timer and this functionality. But I'm not sure if they are still
> usable or if they still make sense when one can easily test crashing using
> virtual machines... Andrew?

That's why I decided to accept the corresponding patch for ext4; if
the rest of debugging patch is out-of-tree, then might as well have it
all out-of-tree --- and killall qemu is probably a better way of
testing this anyway.

							- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jan Kara - Oct. 10, 2011, 4:27 p.m.
On Sat 08-10-11 16:52:35, Ted Tso wrote:
> On Sat, Oct 08, 2011 at 12:12:33AM +0200, Jan Kara wrote:
> > On Fri 07-10-11 23:21:18, Tao Ma wrote:
> > > From: Tao Ma <boyu.mt@taobao.com>
> > > 
> > > There are no user of EXT3_IOC32_WAIT_FOR_READONLY and also it is
> > > broken. No one set the set_ro_timer, no one wake up us and our
> > > state is set to TASK_INTERRUPTIBLE not RUNNING. So remove it.
> >   Hmm, I vaguely recall Andrew had some debugging patches which were using
> > turn_ro_timer and this functionality. But I'm not sure if they are still
> > usable or if they still make sense when one can easily test crashing using
> > virtual machines... Andrew?
> 
> That's why I decided to accept the corresponding patch for ext4; if
> the rest of debugging patch is out-of-tree, then might as well have it
> all out-of-tree --- and killall qemu is probably a better way of
> testing this anyway.
  OK. I've merged the patch in my tree. If Andrew shouts loudly, I can
always revert it :)

								Honza

Patch

diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c
index c7f4394..ba1b54e 100644
--- a/fs/ext3/ioctl.c
+++ b/fs/ext3/ioctl.c
@@ -150,30 +150,6 @@  setversion_out:
 		mnt_drop_write(filp->f_path.mnt);
 		return err;
 	}
-#ifdef CONFIG_JBD_DEBUG
-	case EXT3_IOC_WAIT_FOR_READONLY:
-		/*
-		 * This is racy - by the time we're woken up and running,
-		 * the superblock could be released.  And the module could
-		 * have been unloaded.  So sue me.
-		 *
-		 * Returns 1 if it slept, else zero.
-		 */
-		{
-			struct super_block *sb = inode->i_sb;
-			DECLARE_WAITQUEUE(wait, current);
-			int ret = 0;
-
-			set_current_state(TASK_INTERRUPTIBLE);
-			add_wait_queue(&EXT3_SB(sb)->ro_wait_queue, &wait);
-			if (timer_pending(&EXT3_SB(sb)->turn_ro_timer)) {
-				schedule();
-				ret = 1;
-			}
-			remove_wait_queue(&EXT3_SB(sb)->ro_wait_queue, &wait);
-			return ret;
-		}
-#endif
 	case EXT3_IOC_GETRSVSZ:
 		if (test_opt(inode->i_sb, RESERVATION)
 			&& S_ISREG(inode->i_mode)
diff --git a/include/linux/ext3_fs_sb.h b/include/linux/ext3_fs_sb.h
index 258088a..6436525 100644
--- a/include/linux/ext3_fs_sb.h
+++ b/include/linux/ext3_fs_sb.h
@@ -76,10 +76,6 @@  struct ext3_sb_info {
 	struct mutex s_resize_lock;
 	unsigned long s_commit_interval;
 	struct block_device *journal_bdev;
-#ifdef CONFIG_JBD_DEBUG
-	struct timer_list turn_ro_timer;	/* For turning read-only (crash simulation) */
-	wait_queue_head_t ro_wait_queue;	/* For people waiting for the fs to go read-only */
-#endif
 #ifdef CONFIG_QUOTA
 	char *s_qf_names[MAXQUOTAS];		/* Names of quota files with journalled quota */
 	int s_jquota_fmt;			/* Format of quota to use */