Message ID | 20111107154759.GB24234@thunk.org |
---|---|
State | New, archived |
Headers | show |
On 11/07/2011 07:47 AM, Ted Ts'o wrote: > On Sun, Nov 06, 2011 at 09:26:57PM -0800, Matt Parnell wrote: >> I figured it out. data=writeback isn't needed and is done by default >> if there's no journal, as per commit >> 373cd5c53d5ea6622c319ecd84e29e2737d488bd http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=373cd5c53d5ea6622c319ecd84e29e2737d488bd >> >> ...sorry about throwing you guys through loops over this, although >> I'm guessing there's still a bug in that the kernel should just warn >> the user about the option when it's used and otherwise ignore it >> instead of breaking if there's no journal. > Ah, OK. It wasn't clear to me that you were running without a year. > You're right, we shouldn't complain in that case, since we ignore the > messages when mounting the file system. Actually, we parse the > options when we are mounting the file system, but then we zero them > out when we discover that there's no journal; but in any case, we > should similarly ignore the pointless data=* mount options (for a file > system w/o a journal) on the remount operation as well. > > - Ted > > commit eb513689c97e3e73bb9b4459d490a8e894b4a546 > Author: Theodore Ts'o<tytso@mit.edu> > Date: Mon Nov 7 10:47:42 2011 -0500 > > ext4: ignore journalled data options on remount if fs has no journal > > This avoids a confusing failure in the init scripts when the > /etc/fstab has data=writeback or data=journal but the file system does > not have a journal. So check for this case explicitly, and warn the > user that we are ignoring the (pointless, since they have no journal) > data=* mount option. > > Signed-off-by: "Theodore Ts'o"<tytso@mit.edu> > > diff --git a/fs/ext4/super.c b/fs/ext4/super.c > index 9953d80..0435013 100644 > --- a/fs/ext4/super.c > +++ b/fs/ext4/super.c > @@ -1683,7 +1683,9 @@ static int parse_options(char *options, struct super_block *sb, > data_opt = EXT4_MOUNT_WRITEBACK_DATA; > datacheck: > if (is_remount) { > - if (test_opt(sb, DATA_FLAGS) != data_opt) { > + if (!sbi->s_journal) > + ext4_msg(sb, KERN_WARNING, "Remounting file system with no journal so ignoring journalled data option"); > + else if (test_opt(sb, DATA_FLAGS) != data_opt) { > ext4_msg(sb, KERN_ERR, > "Cannot change data mode on remount"); > return 0; Great! I'm glad we managed to track this one down. I'm not using the flags anymore, but I'll be glad when your patch there makes it into ext4 for other users. -- 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
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 9953d80..0435013 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -1683,7 +1683,9 @@ static int parse_options(char *options, struct super_block *sb, data_opt = EXT4_MOUNT_WRITEBACK_DATA; datacheck: if (is_remount) { - if (test_opt(sb, DATA_FLAGS) != data_opt) { + if (!sbi->s_journal) + ext4_msg(sb, KERN_WARNING, "Remounting file system with no journal so ignoring journalled data option"); + else if (test_opt(sb, DATA_FLAGS) != data_opt) { ext4_msg(sb, KERN_ERR, "Cannot change data mode on remount"); return 0;