2004-01-09 20:23:42

by Nigel Cunningham

[permalink] [raw]
Subject: Re: Swapfiles broken on XFS.

Hi again.

Perhaps I wasn't clear enough.

Both the page_io and Suspend can cope fine with block size < 4096. The
issue is where they get the information from as to how many blocks per
page they actually need to use when called brw_page. At the moment, they
both assume that i_sb->s_blocksize and blocksize_bits is the place to
go. What you're saying sounds right to me. They should both be looking
at i_blkbits and i_blksize in the struct inode, shouldn't they? I'll
make the change, test and submit a patch to LKML.

Regards,

Nigel

On Sat, 2004-01-10 at 05:16, Christoph Hellwig wrote:
> On Fri, Jan 09, 2004 at 04:55:09PM +1300, Nigel Cunningham wrote:
> > It appears to me that a swapfile on an XFS filesystem will not work, at
> > least some of the time.
>
> XFS sets s_blocksize to the filesystem blocksize and bdev->bd_block_size /
> i_blkbits to the XFS sector size. The first would be 4096 in your
> case and the latter 512. We cannot set a bigger device block size because
> XFS log writes are in 512b units.
>
> I don't think the swap code should do any assumptions about any relation
> of the above two.
--
My work on Software Suspend is graciously brought to you by
LinuxFund.org.


Attachments:
signature.asc (189.00 B)
This is a digitally signed message part

2004-01-09 21:49:16

by Nigel Cunningham

[permalink] [raw]
Subject: Re: Swapfiles broken on XFS.

Hi.

Actually, i_sb->s_blocksize and blocksize_bits both reflect a block size
of 4096 too, so that didn't help. What does help is using blksize_size.
I'll prepare a patch for Karol and I to try before submitting it to
LKML.

Regards,

Nigel

On Sat, 2004-01-10 at 22:13, Nigel Cunningham wrote:
> Hi again.
>
> Perhaps I wasn't clear enough.
>
> Both the page_io and Suspend can cope fine with block size < 4096. The
> issue is where they get the information from as to how many blocks per
> page they actually need to use when called brw_page. At the moment, they
> both assume that i_sb->s_blocksize and blocksize_bits is the place to
> go. What you're saying sounds right to me. They should both be looking
> at i_blkbits and i_blksize in the struct inode, shouldn't they? I'll
> make the change, test and submit a patch to LKML.
>
> Regards,
>
> Nigel
>
> On Sat, 2004-01-10 at 05:16, Christoph Hellwig wrote:
> > On Fri, Jan 09, 2004 at 04:55:09PM +1300, Nigel Cunningham wrote:
> > > It appears to me that a swapfile on an XFS filesystem will not work, at
> > > least some of the time.
> >
> > XFS sets s_blocksize to the filesystem blocksize and bdev->bd_block_size /
> > i_blkbits to the XFS sector size. The first would be 4096 in your
> > case and the latter 512. We cannot set a bigger device block size because
> > XFS log writes are in 512b units.
> >
> > I don't think the swap code should do any assumptions about any relation
> > of the above two.
--
My work on Software Suspend is graciously brought to you by
LinuxFund.org.


Attachments:
signature.asc (189.00 B)
This is a digitally signed message part