Re: [PATCH v2] xfs: fix assertion failure in xfs_vm_write_failed()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Looks good in limited testing.  I set some extra debug code somewhere,
causing every failed mount in xfstests #078 to show up, so the
original test cases were double-checked, both on the main partition
(mid-upgrade) and on a backup boot partition:

Before Liu Patch v2:

#078, 32-bit Linux, larger partitions: PASS
#078, 32-bit Linux, smaller partitions: soft oops before test could fail

After Liu Patch v2:

#078, 32-bit Linux, larger partitions: PASS
#078, 32-bit Linux, smaller partitions: FAIL, no space left on device (CORRECT)

64-bit cases were not tested.  Additionally, tests 001-005 were run
(for my sake), and test 112 was run (pass).

The main partition on this PC for / is XFS, and I still have a file
system, so that's a good sign.  A gcc compile was left running because
I had to go to work, and I'll let you know if I don't have a file
system when I get back home.

Conclusion: Success on 32-bit, and failure is not seen for the near
future.  Testing in the next 24 hours may change this conclusion.

Thanks!

Michael

On Mon, Mar 18, 2013 at 12:48 AM, Jeff Liu <jeff.liu@xxxxxxxxxx> wrote:
> Hello,
>
> Here is the v2 patch for fixing ASSERTION failed at xfs_vm_write_failed() according
> to Dave's comments, so I added Dave as SOB for credit.
>
> Hi Michael,
> Please kindly try at your at your convenience.
>
> Thanks,
> -Jeff

> This patch fix the block_offset evaluation to clear the lower 12 bits as:
> block_offset = pos >> PAGE_CACHE_SHIFT) << PAGE_CACHE_SHIFT
> Hence, the ASSERTION should be correct because the from offset in a page
> is evaluated to have the lower 12 bits only.
>
> Thanks Dave Chinner for pointing this out.
>
> Reported-by: Michael L. Semon <mlsemon35@xxxxxxxxx>
> Signed-off-by: Jie Liu <jeff.liu@xxxxxxxxxx>
> Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
> ---
>  fs/xfs/xfs_aops.c |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
> index 5f707e5..a418e17 100644
> --- a/fs/xfs/xfs_aops.c
> +++ b/fs/xfs/xfs_aops.c
> @@ -1494,7 +1494,8 @@ xfs_vm_write_failed(
>         loff_t                  pos,
>         unsigned                len)
>  {
> -       loff_t                  block_offset = pos & PAGE_MASK;
> +       loff_t                  block_offset = (pos >> PAGE_CACHE_SHIFT) <<
> +                                               PAGE_CACHE_SHIFT;
>         loff_t                  block_start;
>         loff_t                  block_end;
>         loff_t                  from = pos & (PAGE_CACHE_SIZE - 1);
> --
> 1.7.9.5

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux