On Wed, 14 Jan 2009 22:06:17 -0600 Eric Sandeen <sandeen@xxxxxxxxxx> wrote: > Now that the filesystem freeze operation has been elevated > to the VFS, and is just an ioctl away, some sort of safety net > for unintentionally frozen root filesystems may be in order. > > The timeout thaw originally proposed did not get merged, but > perhaps something like this would be useful in emergencies. > > This doesn't have to piggyback on the existing emergency sync > sysrq, but it seems like a reasonable, simple addition to me. > > I've tested this on a non-root fs with multiple (nested) freezers, > as well as on a system rendered unresponsive due to a frozen > root fs. Worried. Under what operational scenarios is ths feature actually needed/used? > Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> > --- > > Index: linux-2.6/drivers/char/sysrq.c > =================================================================== > --- linux-2.6.orig/drivers/char/sysrq.c > +++ linux-2.6/drivers/char/sysrq.c > @@ -151,6 +151,7 @@ static struct sysrq_key_op sysrq_reboot_ > > static void sysrq_handle_sync(int key, struct tty_struct *tty) > { > + emergency_thaw(); > emergency_sync(); > } Kind of weird. The thaw will happen after/during the sync(). I guess that if the sync is blocked on a frozen fs then things will sort themselves out. otoh, if all the pdflush threads are blocked on frozen filesystems (possible?) then the emergency_thaw() simply won't do anything. > =================================================================== > --- linux-2.6.orig/fs/buffer.c > +++ linux-2.6/fs/buffer.c > @@ -258,6 +258,29 @@ struct super_block *freeze_bdev(struct b > } > EXPORT_SYMBOL(freeze_bdev); > > +void do_thaw(unsigned long unused) > +{ > + struct super_block *sb; > + char b[BDEVNAME_SIZE]; > + > + list_for_each_entry(sb, &super_blocks, s_list) { > + while (sb->s_bdev && !thaw_bdev(sb->s_bdev, sb)) > + printk(KERN_WARNING "Emergency Thaw on %s\n", > + bdevname(sb->s_bdev, b)); hm, I made the args to bdevname() backwards. Bad me. > + } > + printk(KERN_WARNING "Emergency Thaw complete\n"); > +} -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html