Liu Bo
2012-Apr-03 01:56 UTC
[PATCH] Btrfs: do not mount when we have a sectorsize unequal to PAGE_SIZE
Our code is not ready to cope with a sectorsize that''s not equal to PAGE_SIZE. It will lead to hanging-on while writing something. Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com> --- fs/btrfs/disk-io.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 20196f4..b9866f2 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -2254,9 +2254,9 @@ int open_ctree(struct super_block *sb, goto fail_sb_buffer; } - if (sectorsize < PAGE_SIZE) { - printk(KERN_WARNING "btrfs: Incompatible sector size " - "found on %s\n", sb->s_id); + if (sectorsize != PAGE_SIZE) { + printk(KERN_WARNING "btrfs: Incompatible sector size(%lu) " + "found on %s\n", (unsigned long)sectorsize, sb->s_id); goto fail_sb_buffer; } -- 1.6.5.2 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Karel Zak
2012-Apr-03 08:06 UTC
Re: [PATCH] Btrfs: do not mount when we have a sectorsize unequal to PAGE_SIZE
On Tue, Apr 03, 2012 at 09:56:53AM +0800, Liu Bo wrote:> Our code is not ready to cope with a sectorsize that''s not equal to PAGE_SIZE. > It will lead to hanging-on while writing something. > > Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com> > --- > fs/btrfs/disk-io.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c > index 20196f4..b9866f2 100644 > --- a/fs/btrfs/disk-io.c > +++ b/fs/btrfs/disk-io.c > @@ -2254,9 +2254,9 @@ int open_ctree(struct super_block *sb, > goto fail_sb_buffer; > } > > - if (sectorsize < PAGE_SIZE) { > - printk(KERN_WARNING "btrfs: Incompatible sector size " > - "found on %s\n", sb->s_id); > + if (sectorsize != PAGE_SIZE) { > + printk(KERN_WARNING "btrfs: Incompatible sector size(%lu) " > + "found on %s\n", (unsigned long)sectorsize, sb->s_id);That''s strange. Does it mean that if I create the filesystem and then reboot to another kernel with different PAGE_SIZE then the filesystem is unaccessible for me? Karel -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Liu Bo
2012-Apr-03 08:35 UTC
Re: [PATCH] Btrfs: do not mount when we have a sectorsize unequal to PAGE_SIZE
On 04/03/2012 04:06 PM, Karel Zak wrote:> On Tue, Apr 03, 2012 at 09:56:53AM +0800, Liu Bo wrote: >> Our code is not ready to cope with a sectorsize that''s not equal to PAGE_SIZE. >> It will lead to hanging-on while writing something. >> >> Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com> >> --- >> fs/btrfs/disk-io.c | 6 +++--- >> 1 files changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c >> index 20196f4..b9866f2 100644 >> --- a/fs/btrfs/disk-io.c >> +++ b/fs/btrfs/disk-io.c >> @@ -2254,9 +2254,9 @@ int open_ctree(struct super_block *sb, >> goto fail_sb_buffer; >> } >> >> - if (sectorsize < PAGE_SIZE) { >> - printk(KERN_WARNING "btrfs: Incompatible sector size " >> - "found on %s\n", sb->s_id); >> + if (sectorsize != PAGE_SIZE) { >> + printk(KERN_WARNING "btrfs: Incompatible sector size(%lu) " >> + "found on %s\n", (unsigned long)sectorsize, sb->s_id); > > That''s strange. Does it mean that if I create the filesystem and then > reboot to another kernel with different PAGE_SIZE then the filesystem > is unaccessible for me? > > Karel >I''m afraid yes until we can deal with sectorsize and PAGE_SIZE gracefully. For now, I didn''t test if a read will cause oops or not, but if it''s ok, an alternative way is to make FS readonly. thanks, liubo -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
David Sterba
2012-Apr-03 13:18 UTC
Re: [PATCH] Btrfs: do not mount when we have a sectorsize unequal to PAGE_SIZE
On Tue, Apr 03, 2012 at 04:35:28PM +0800, Liu Bo wrote:> > That''s strange. Does it mean that if I create the filesystem and then > > reboot to another kernel with different PAGE_SIZE then the filesystem > > is unaccessible for me? > > I''m afraid yes until we can deal with sectorsize and PAGE_SIZE > gracefully. > > For now, I didn''t test if a read will cause oops or not, but if it''s > ok, an alternative way is to make FS readonly.Writes will cause hang. I have tested that read-only mount of a 64k sectorsize is ok, file reads do not hang, but any file larger than the inline limit is empty due to failed csums. Example read of 65483 ./drivers/scsi/qla2xxx/qla_isr.c leads to [ 9249.370133] btrfs csum failed ino 13837 off 0 csum 4169121208 private 3722900035 while reading 65471 ./arch/powerpc/platforms/cell/spufs/file.c is just fine. So for now even forcing a read-only mount is not good option, though we may try to enhance the csum verification. david -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html