Ticket #117 (closed bug: fixed)

Opened 2 months ago

Last modified 2 months ago

no such file or directory on concurrent dd to new directory

Reported by: carns Owned by: carns
Priority: major Component: kmod
Version: 2.8.1 Keywords: revalidate
Cc:

Description

Reported by David Metheny. Use two separate PVFS clients. Alternate running the following two scripts:

#!/bin/bash

sudo dmesg -c
dd if=/dev/zero of=/mnt/pvfs2/dir/subdir/subsubdir/foo1 bs=10M count=2 &
dd if=/dev/zero of=/mnt/pvfs2/dir/subdir/subsubdir/foo2 bs=10M count=2 &
dd if=/dev/zero of=/mnt/pvfs2/dir/subdir/subsubdir/foo3 bs=10M count=2 &
dd if=/dev/zero of=/mnt/pvfs2/dir/subdir/subsubdir/foo4 bs=10M count=2 &

wait
#!/bin/bash
rm -rf /mnt/pvfs2/dir
mkdir -p /mnt/pvfs2/dir/subdir/subsubdir

The ampersands are important. If the dd's are not run in the background, then everything works fine. If they are run in the background, then at least one of them will occasionally get "no such file or directory" errors.

The issue appears to be handling the case in which two processes are simultaneously trying to revalidate the same dentry?

Change History

Changed 2 months ago by carns

  • status changed from new to accepted

Changed 2 months ago by carns

  • status changed from accepted to closed
  • resolution set to fixed

Added d_put() call in the revalidation failure path to try to make sure that dentry is flushed. Appears to work. Committed to cvs.

Will reopen ticket if anything turns up in testing or nightlies.

Changed 2 months ago by carns

previous comment should have said "d_drop()" rather than "d_put()".

Note: See TracTickets for help on using tickets.