summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/test-cow-fuse.yml81
-rw-r--r--src/fuse/cowfile.c5
-rw-r--r--src/fuse/main.c26
-rw-r--r--src/fuse/main.h1
4 files changed, 53 insertions, 60 deletions
diff --git a/.github/workflows/test-cow-fuse.yml b/.github/workflows/test-cow-fuse.yml
index c0313fb..9b42532 100644
--- a/.github/workflows/test-cow-fuse.yml
+++ b/.github/workflows/test-cow-fuse.yml
@@ -51,12 +51,13 @@ jobs:
- name: Setup cow_merger_service
working-directory: ${{ github.workspace }}/../cow_server/
run: |
- mkdir /home/runner/work/WorkingDirectory
- mkdir /home/runner/work/OriginalImageDirectory
- mkdir /home/runner/work/Output
- sed -i 's/^ "WorkingDirectory":.*/ "WorkingDirectory": "\/home\/runner\/work\/WorkingDirectory",/g' cow_merger_service/publish/appsettings.json
- sed -i 's/^ "OriginalImageDirectory":.*/ "OriginalImageDirectory": "\/home\/runner\/work\/OriginalImageDirectory",/g' cow_merger_service/publish/appsettings.json
- sed -i 's/^ "DestinationDirectory":.*/ "DestinationDirectory": "\/home\/runner\/work\/Output",/g' cow_merger_service/publish/appsettings.json
+ sudo mkdir -m 777 /mnt/work
+ mkdir /mnt/work/WorkingDirectory
+ mkdir /mnt/work/OriginalImageDirectory
+ mkdir /mnt/work/Output
+ sed -i 's/^ "WorkingDirectory":.*/ "WorkingDirectory": "\/mnt\/work\/WorkingDirectory",/g' cow_merger_service/publish/appsettings.json
+ sed -i 's/^ "OriginalImageDirectory":.*/ "OriginalImageDirectory": "\/mnt\/work\/OriginalImageDirectory",/g' cow_merger_service/publish/appsettings.json
+ sed -i 's/^ "DestinationDirectory":.*/ "DestinationDirectory": "\/mnt\/work\/Output",/g' cow_merger_service/publish/appsettings.json
while read line; do echo $line; done < cow_merger_service/publish/appsettings.json
cd cow_merger_service/publish/
FILENAME=cow_merger_service
@@ -65,54 +66,55 @@ jobs:
./cow_merger_service &> log.out &
- name: Generate test file
working-directory: ${{ github.workspace }}/build/src/cowtest
- run: ./dnbd3-fuse-cow-test -c /home/runner/work/OriginalImageDirectory/test.r1
+ run: ./dnbd3-fuse-cow-test -c /mnt/work/OriginalImageDirectory/test.r1
- name: Setup dnbd3 server
working-directory: ${{ github.workspace }}
run: |
- mkdir /home/runner/work/dnbd3-server-config/
- cp pkg/config/server.conf /home/runner/work/dnbd3-server-config/
- sed -i "s/^basePath=.*/basePath=\/home\/runner\/work\/OriginalImageDirectory/g" /home/runner/work/dnbd3-server-config/server.conf
+ mkdir /mnt/work/dnbd3-server-config/
+ cp pkg/config/server.conf /mnt/work/dnbd3-server-config/
+ sed -i "s/^basePath=.*/basePath=\/mnt\/work\/OriginalImageDirectory/g" /mnt/work/dnbd3-server-config/server.conf
cd build/src/server
- ./dnbd3-server --config /home/runner/work/dnbd3-server-config/
+ ./dnbd3-server --config /mnt/work/dnbd3-server-config/
sleep 5
- name: Run standard test
working-directory: ${{ github.workspace }}/build/src
run: |
- mkdir /home/runner/work/mount
- mkdir /home/runner/work/tmp
- mkdir /home/runner/work/logs
- ./fuse/dnbd3-fuse "/home/runner/work/mount" -f -h localhost -i test -c "/home/runner/work/tmp" -C localhost:5000 --cow-stats-stdout --cow-stats-file &> /home/runner/work/logs/standardLog1.out &
+ mkdir /mnt/work/mount
+ mkdir /mnt/work/tmp
+ mkdir /mnt/work/logs
+ ./fuse/dnbd3-fuse "/mnt/work/mount" -f -h localhost -i test -c "/mnt/work/tmp" -C localhost:5000 --cow-stats-stdout --cow-stats-file &> /mnt/work/logs/standardLog1.out &
PID=$!
sleep 5
echo PID: $PID
- ./cowtest/dnbd3-fuse-cow-test -t "/home/runner/work/mount/img"
+ ./cowtest/dnbd3-fuse-cow-test -t "/mnt/work/mount/img"
echo unmounting: $PID
- sudo umount /home/runner/work/mount
+ sudo umount /mnt/work/mount
wait $PID
echo unmounted
- ./fuse/dnbd3-fuse "/home/runner/work/mount" -f -h localhost -i test -L "/home/runner/work/tmp" -C localhost:5000 --merge --cow-stats-stdout --cow-stats-file &> /home/runner/work/logs/standardLog2.out &
+ ./fuse/dnbd3-fuse "/mnt/work/mount" -f -h localhost -i test -L "/mnt/work/tmp" -C localhost:5000 --merge --cow-stats-stdout --cow-stats-file &> /mnt/work/logs/standardLog2.out &
PID=$!
sleep 5
echo PID: $PID
- ./cowtest/dnbd3-fuse-cow-test -v "/home/runner/work/mount/img"
+ ./cowtest/dnbd3-fuse-cow-test -v "/mnt/work/mount/img"
echo unmounting: $PID
- sudo umount /home/runner/work/mount
+ sudo umount /mnt/work/mount
wait $PID
echo unmounted
sleep 30
- echo Output: $(ls /home/runner/work/Output)
- ./cowtest/dnbd3-fuse-cow-test -v /home/runner/work/Output/test.r2
+ echo Output: $(ls /mnt/work/Output)
+ ./cowtest/dnbd3-fuse-cow-test -v /mnt/work/Output/test.r2
+ rm /mnt/work/Output/test.r2
+ rm -rf /mnt/work/tmp
- name: Run random test
working-directory: ${{ github.workspace }}/build/src
run: |
- cp /home/runner/work/OriginalImageDirectory/test.r1 /home/runner/work/
- rm -rf /home/runner/work/tmp
- mkdir /home/runner/work/tmp
- ./fuse/dnbd3-fuse "/home/runner/work/mount" -f -h localhost -i test -c "/home/runner/work/tmp" -C localhost:5000 --cow-stats-stdout --cow-stats-file &> /home/runner/work/logs/randomLog1.out &
+ cp /mnt/work/OriginalImageDirectory/test.r1 /mnt/work/
+ mkdir /mnt/work/tmp
+ ./fuse/dnbd3-fuse "/mnt/work/mount" -f -h localhost -i test -c "/mnt/work/tmp" -C localhost:5000 --cow-stats-stdout --cow-stats-file &> /mnt/work/logs/randomLog1.out &
PIDFUSE=$!
sleep 5
echo PIDFUSE : $PIDFUSE
- ./cowtest/dnbd3-fuse-cow-test --randomTest "/home/runner/work/mount/img" "/home/runner/work/test.r1" &> /home/runner/work/logs/randomTestLog1.out &
+ ./cowtest/dnbd3-fuse-cow-test --randomTest "/mnt/work/mount/img" "/mnt/work/test.r1" &> /mnt/work/logs/randomTestLog1.out &
PIDTEST=$!
sleep 60
echo "stopping test"
@@ -120,31 +122,30 @@ jobs:
wait $PIDTEST
echo "testStopped"
echo unmounting: $PIDFUSE
- sudo umount /home/runner/work/mount
+ sudo umount /mnt/work/mount
echo unmounted
wait $PIDFUSE
- ./fuse/dnbd3-fuse "/home/runner/work/mount" -f -h localhost -i test -L "/home/runner/work/tmp" -C localhost:5000 --merge --cow-stats-stdout --cow-stats-file &> /home/runner/work/logs/randomLog2.out &
+ ./fuse/dnbd3-fuse "/mnt/work/mount" -f -h localhost -i test -L "/mnt/work/tmp" -C localhost:5000 --merge --cow-stats-stdout --cow-stats-file &> /mnt/work/logs/randomLog2.out &
PIDFUSE=$!
sleep 5
echo PIDFUSE : $PIDFUSE
- ./cowtest/dnbd3-fuse-cow-test --compare "/home/runner/work/mount/img" "/home/runner/work/test.r1" &> /home/runner/work/logs/randomTestLog2.out &
+ ./cowtest/dnbd3-fuse-cow-test --compare "/mnt/work/mount/img" "/mnt/work/test.r1"
echo unmounting: $PIDFUSE
- sudo umount /home/runner/work/mount
+ sudo umount /mnt/work/mount
echo unmounted
wait $PIDFUSE
sleep 30
- echo Output: $(ls /home/runner/work/Output)
- ./cowtest/dnbd3-fuse-cow-test --compare "/home/runner/work/Output/test.r3" "/home/runner/work/test.r1"
+ echo Output: $(ls /mnt/work/Output)
+ ./cowtest/dnbd3-fuse-cow-test --compare "/mnt/work/Output/test.r2" "/mnt/work/test.r1"
- name: Print logs
if: always()
run: |
tail -n+0 \
- /home/runner/work/logs/standardLog1.out \
- /home/runner/work/logs/standardLog2.out \
- /home/runner/work/logs/randomLog1.out \
- /home/runner/work/logs/randomTestLog1.out \
- /home/runner/work/logs/randomLog2.out \
- /home/runner/work/logs/randomTestLog2.out \
- /home/runner/work/tmp/status.txt \
+ /mnt/work/logs/standardLog1.out \
+ /mnt/work/logs/standardLog2.out \
+ /mnt/work/logs/randomLog1.out \
+ /mnt/work/logs/randomTestLog1.out \
+ /mnt/work/logs/randomLog2.out \
+ /mnt/work/tmp/status.txt \
${{ github.workspace }}/build/src/server/dnbd3.log \
${{ github.workspace }}/../cow_server/cow_merger_service/publish/log.out
diff --git a/src/fuse/cowfile.c b/src/fuse/cowfile.c
index 82c7af7..ed370c2 100644
--- a/src/fuse/cowfile.c
+++ b/src/fuse/cowfile.c
@@ -810,7 +810,6 @@ void quitSigHandler( int sig UNUSED )
{
uploadCancelled = true;
uploadLoop = false;
- main_shutdown();
}
/**
@@ -1023,7 +1022,7 @@ bool cowfile_init( char *path, const char *image_Name, uint16_t imageVersion,
}
if ( cowUuid != NULL ) {
- snprintf( metadata->uuid, UUID_STRLEN, "%s", cowUuid );
+ snprintf( metadata->uuid, sizeof(metadata->uuid), "%s", cowUuid );
logadd( LOG_INFO, "Using provided upload session id" );
} else if ( !createSession( image_Name, imageVersion ) ) {
return false;
@@ -1142,7 +1141,7 @@ bool cowfile_load( char *path, atomic_uint_fast64_t **imageSizePtr, char *server
if ( cowUuid != NULL ) {
logadd( LOG_INFO, "Overriding stored upload session id with provided one" );
- snprintf( metadata->uuid, UUID_STRLEN, "%s", cowUuid );
+ snprintf( metadata->uuid, sizeof(metadata->uuid), "%s", cowUuid );
}
*imageSizePtr = &metadata->imageSize;
diff --git a/src/fuse/main.c b/src/fuse/main.c
index 7be34bd..f76cfb6 100644
--- a/src/fuse/main.c
+++ b/src/fuse/main.c
@@ -307,8 +307,10 @@ static void image_ll_setattr( fuse_req_t req, fuse_ino_t ino, struct stat *attr,
return;
}
if (to_set & FUSE_SET_ATTR_SIZE) {
- cowfile_setSize( req, attr->st_size, ino, fi);
+ cowfile_setSize( req, attr->st_size, ino, fi);
+ return;
}
+ fuse_reply_error( req, EACCES );
}
/* map the implemented fuse operations */
@@ -402,7 +404,6 @@ int main( int argc, char *argv[] )
char *cow_server_address = NULL;
char *image_Name = NULL;
char *log_file = NULL;
- cow_merge_after_upload = false;
uint16_t rid = 0;
char **newArgv;
int newArgc;
@@ -547,13 +548,14 @@ int main( int argc, char *argv[] )
struct sigaction newHandler = { .sa_handler = &noopSigHandler };
sigemptyset( &newHandler.sa_mask );
sigaction( SIGHUP, &newHandler, NULL );
+ sigaction( SIGQUIT, &newHandler, NULL );
} while ( 0 );
- if ( useCow ) {
- sigset_t sigmask;
- sigemptyset( &sigmask );
- sigaddset( &sigmask, SIGQUIT ); // Block here and unblock in cow as abort signal
- pthread_sigmask( SIG_BLOCK, &sigmask, NULL );
- }
+ if ( useCow ) {
+ sigset_t sigmask;
+ sigemptyset( &sigmask );
+ sigaddset( &sigmask, SIGQUIT ); // Block here and unblock in cow as abort signal
+ pthread_sigmask( SIG_BLOCK, &sigmask, NULL );
+ }
if ( !connection_init( server_address, image_Name, rid, learnNewServers ) ) {
logadd( LOG_ERROR, "Could not connect to any server. Bye.\n" );
@@ -642,11 +644,3 @@ int main( int argc, char *argv[] )
logadd( LOG_DEBUG1, "Terminating. FUSE REPLIED: %d\n", fuse_err );
return fuse_err;
}
-
-void main_shutdown(void)
-{
- fuse_session_exit( _fuseSession );
- // TODO: Figure out why this doesn't wake up the fuse mainloop.
- // For now, just send SIGQUIT followed by SIGTERM....
- kill( 0, SIGINT );
-}
diff --git a/src/fuse/main.h b/src/fuse/main.h
index 53d81e4..bf21805 100644
--- a/src/fuse/main.h
+++ b/src/fuse/main.h
@@ -8,6 +8,5 @@
extern bool useCow;
extern bool cow_merge_after_upload;
void image_ll_getattr( fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi );
-void main_shutdown(void);
#endif /* main_H_ */