Re: [PATCH 1/2] fstests: generic test for directory fsync after rename operation

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



On Thu, Feb 18, 2016 at 4:43 PM, Darrick J. Wong
<darrick.wong@xxxxxxxxxx> wrote:
> On Thu, Feb 18, 2016 at 01:38:41PM +0000, Filipe Manana wrote:
>> On Thu, Feb 18, 2016 at 1:30 AM, Dave Chinner <david@xxxxxxxxxxxxx> wrote:
>> > On Mon, Feb 15, 2016 at 10:54:23AM +0000, fdmanana@xxxxxxxxxx wrote:
>> >> From: Filipe Manana <fdmanana@xxxxxxxx>
>> >>
>> >> Test that if we move one file between directories, fsync the parent
>> >> directory of the old directory, power fail and remount the filesystem,
>> >> the file is not lost and it's located at the destination directory.
>> >>
>> >> This is motivated by a bug found in btrfs, which is fixed by the patch
>> >> (for the linux kernel) titled:
>> >>
>> >>   "Btrfs: fix file loss on log replay after renaming a file and fsync"
>> >>
>> >> Tested against ext3, ext4, xfs, f2fs and reiserfs.
>> >>
>> >> Signed-off-by: Filipe Manana <fdmanana@xxxxxxxx>
>> > ....
>> >> +# We expect our file foo to exist, have an entry in the new parent
>> >> +# directory (c/) and not have anymore an entry in the old parent directory
>> >> +# (a/b/).
>> >> +[ -e $SCRATCH_MNT/a/b/foo ] && echo "File foo is still at directory a/b/"
>> >> +[ -e $SCRATCH_MNT/c/foo ] || echo "File foo is not at directory c/"
>> >> +
>> >> +# The new file named bar should also exist.
>> >> +[ -e $SCRATCH_MNT/a/bar ] || echo "File bar is missing"
>> >
>> > This can all be replaced simply by:
>> >
>> > ls -R $SCRATCH_MNT | _filter_scratch
>> >
>> > Because the golden image match will tell us if files are missing or
>> > in the wrong place.
>>
>> The problem with that is ext3/4 have the lost+found directory that
>> xfs, btrfs, etc don't have.
>
> XFS can have lost+found too, though this seems unlikely on the scratch mount.
>
>> Do you mind about something like this:
>>
>> # exclude lost+found directory specific to some filesystems (ext3/4)
>> ls -R $SCRATCH_MNT | grep -v 'lost+found' | tr -s '\n' | _filter_scratch
>
> Why not put "a" and "c" under $SCRATCH_MNT/test-335/?

Would work as well. I was thinking earlier of just doing two ls -R
calls, one for a/ and other for c/.
Thanks Darrick.

>
> --D
>
>>
>> (since you usually dislike generic tests having any specific logic for
>> specific filesystems)
>>
>> Also do I need to remove _need_to_be_root for the 3 tests I submitted?
>> I only noticed there was a submitted patch that kills that function
>> after sending them.
>>
>> thanks
>>
>>
>> >
>> > Cheers,
>> >
>> > Dave.
>> > --
>> > Dave Chinner
>> > david@xxxxxxxxxxxxx
>> --
>> To unsubscribe from this list: send the line "unsubscribe fstests" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux